目录
1 前言
1.1 RNN回忆与概览
1.2 LSTM回忆与概览
2 图解 LSTM 内部结构和数据流
2.1 简洁的结构图
2.2 LSTM的原理剖析图
?3 图解BiLSTM及其应用
3.1 看2层的 LSTM 是如何运转的
3.2 看1层的 BiLSTM 是如何运转的
3.3 看2层的 BiLSTM 是如何运转的
?
1 前言
本文对RNN、LSTM、BiLSTM的内部结构和输入输出做了透彻的剖析,目标是能够解答LSTM和BiLSTM的任何疑问。
- RNN:循环神经网络
- LSTM:长短期记忆网络
- BiLSTM:双向长短期记忆网络
重要的先验知识:
- 本质上单个RNN cell是在多个时间步上展开的形式,也可以理解为RNN是神经网络在时序上的权重共享(CNN相当于空间上的权重共享),LSTM也都是一样。
1.1 RNN回忆与概览
RNN的不足:它的记忆是短期的。
- 原因:在反向传播过程中,RNN中存在梯度消失问题。梯度是用于更新神经网络权重的值,梯度消失问题是指随着时间推移,梯度在传播时会下降,如果梯度值变得非常小,则不会继续学习。因此,在RNN中,梯度小幅更新的网络层会停止学习,这些通常是较早的层。由于这些层不学习,RNN无法记住它在较长序列中学习到的内容,因此它的记忆是短期的。
1.2 LSTM回忆与概览
LSTM内部结构相对RNN做了改进,BiLSTM中Bi指的是Bi-directional(双向的)的缩写,是由前向LSTM与后向LSTM组合而成,LSTM和BiLSTM如下图所示:
LSTM优点:
- LSTM是克服短期记忆问题提出的解决方案,它引入称作“门”的内部机制,可以调节信息流。
- 这些门结构可以学习序列中哪些数据是要保留的重要信息,哪些是要删除的。通过这样做,它可以沿着长链序列传递相关信息来执行预测。
2 图解 LSTM 内部结构和数据流
2.1 简洁的结构图
2.2 LSTM的原理剖析图
3 图解BiLSTM及其应用
3.1 看2层的 LSTM 是如何运转的
3.2 看1层的 BiLSTM 是如何运转的
用一个文本情感分析的例子来说明:
- 如下图,单层的BiLSTM其实就是2个LSTM,一个正向去处理序列,一个反向去处理序列,处理完后,两个LSTM的输出会拼接起来。
- 特别注意:所有时间步计算完后,才算是LSTM的结果,如下图,正向LSTM经过6个时间步得到一个结果向量,反向LSTM同样经过6个时间步后,得到另一个结果,然后这两个结果向量拼接起来,作为BiLSTM的最终输出。
3.3 看2层的 BiLSTM 是如何运转的
用OCR识别算法CRNN来说明,以下是CRNN算法的数据处理流程图:
?
?更详细的说,在CRNN算法中,输入BiLSTM的特征序列,它的维度是(26, 512),长下图这样:
?因为CRNN算法中,图像输入是固定为32(高) x 100(宽)的长条图,经过特征提取器后,高会下采样32倍,宽度方向下采样4倍(由于补边操作,导致w最终=(100/4+1)=26),所以,相当于32 x 100的图像信息,被裁剪成26份,每一份的信息用512个值表示,如下:
?重要解释归纳如下:
- 关于时间步:26个切片,也即26个序列,也就是26个时间步,即双层的BiLSTM(也就是4个LSTM,每层一个前向LSTM和一个反向LSTM)会自循环计算26次,从物理意义上说,相当于LSTM按顺序(从左往右同时从右往左)遍历计算了上图26个切片信息。
- 关于输入列向量Xt:每个序列由512个元素的向量组成,每个时间步,BiLSTM就是去取这512个元素的向量值丢到LSTM单元中去计算。形象的说,就是3.1节中,input_size也即Xt,变为512维向量。
- 关于全连接层:CRNN算法中,在上下两层BiLSTM中间,穿插了一个全连接层,来过度上下两层BiLSTM的输入输出关系。至于为什么要加全连接层,我目前也不是特别清楚,理论上,不加全连接层,两层BiLSTM也完全是可以轻松的衔接起来的。
CRNN算法中,双层BiLSTM代码实现如下:
|