LSTM简介
LSTM(Long Short Term Memory)是在标准RNN基础上改进而来的一种网络结构,其出现的主要作用是为了解决标准RNN训练过程中的梯度消失问题,LSTM的结构如下图所示。因此其可以处理时间间隔和延迟较长的序列问题,近年来在语音识别,机器翻译,OCR等领域得到了广泛的应用并取得了比较可观的效果。
相比于标准RNN模型,LSTM主要是增加了三个控制门单元:遗忘门,输入门和输出门。如果去掉三个门控制单元(或者将三个门控制函数都设置为1),LSTM就会退化成标准的RNN模型。
细胞状态:LSTM的关键就是细胞状态(如下图所示的水平线),在图上方贯穿运行,它类似于一条传送带,只有少量的信息交互,很容易保存信息不变。
遗忘门:结构如下图所示,决定细胞状态的信息需要丢弃多少。其读取ht−1和xt的信息,输出一个0到1之间的数值个细胞状态Ct−1,1表示细胞状态完全保留,0表示细胞状态完全丢弃。
输入门:结构如下图所示,确定什么新的信息需要被添加到细胞状态中。这里包含两方面的内容:
1.sigmod
层决定了什么值需要被更新;
2.tanh
层用来生成新的候选信息向量C̃ t会被更新到细胞状态中。
接下来就要对细胞状态进行更新,将Ct−1更新为Ct,更新方法如下图所示。将旧状态Ct−1与ft相乘,可以丢弃到确定的需要丢弃的状态,然后加上新的需要加入的信息it∗C̃ t即可完成细胞状态的更新。
输出门:确定细胞状态的什么信息需要被输出,结构图如下所示。首先是需要一个sigmod
函数用来确定上一隐层和新输入信息有多少需要被保留,然后将更新后的细胞状态经过tanh
变到[-1,1]的区间后再进行相乘,这样就确定了最终的输出信息。
LSTM及其变种
Vanilla LSTM
,其结构如下图所示:
主要分析LSTM的八种变体形式,其各种表示分别如下:
其主要变化是在三个控制门的输入分别加入了细胞状态信息,这个连接被称为peephole connection
。
GRU:是一个改动比较大的变体版本,在2014年被提出。主要变化是将遗忘门和输入门合成为一个更新门,然后将细胞状态信息流和隐层状态信息流合并为一个信息流。它的结构相对于标准的LSTM来说要简单,也是现在应用的比较多的一个变体。
NIG:No Input Gate: it=1
NFG:No Forget Gate: ft=1
NOG:No Output Gate:ot=1
NIAG:No Input Activation Function:
g(x)=x
NOAG:No Output Activation Function: h(x)=x
CIFG(GRU):Coupled Input Forget Gate: ft=1−it
NP:No Peephole
FGR:Full Gate Recurrence:
ĩ t=Wixt+Riyt−1+pi∗ct−1+bi+Rii+Rfift−1+Roiot−1
f̃ t=Wfxt+Rfyt−1+pf∗ct−1+bf+Rif+Rffft−1+Rofot−1
õ t=Woxt+Royt−1+po∗ct−1+bo+Rio+Rfoft−1+Rooot−1
比较数据集
1.TIMIT数据集:来自美国630个人,每个人说十个给定的句子,每一个句子都有标记,标记分为两种方法,经过时间点对其的单词内容和经过时间点对其的音素内容。
2.TAM Online数据集:是一个手写体句子的数据集,每个样本包括一个多句话的手写体文本。其示例如下图所示:
3.JSB Chorales数据集:复调音乐数据集。
测试方法
共需要实现27种测试过程(9个LSTM变种,3个数据集),每个测试过程需要测试200组超参数(LSTM隐层数量,学习率,momentum,输入高斯噪声的标准差),因此一共需要进行5400次的测试。
测试结果
测试结果如下图所示:
第一行结果为所有测试数据综合后的结果,第二行为各个结构的前10%的结果综合后的结果。其中每个数据集中蓝色标注的为该结构在本数据集上的表现较差,对原模型的性能有较大幅度的降低。红色横线为该测试结果的中值,红色点为该测试结果的均值。灰色背景柱状图为该模型的参数量级。
更近上图的测试结果可以得出下面几个结论:
1.NFG和NOAF两个变体在三个数据集上的表现都比较差,对原始LSTM的性能影响比较大。主要原因是去掉遗忘门后,细胞状态的原始数据不会被很好的抑制,必然会导致结果边差;同理,去掉输出门后,输出块的信息会增长的比较大。
2.GRU在TIMIT数据集上的误差均值取得最好的结果,NP在TAM Online数据集上取得了字符错误率最低的结果,同事两个机构在其它数据集上都不会使得结果非常差,因此这两个模式在实际应用中可以使用(实际情况也是如此)。
3.FGR在TIMIT和IAM Online数据集上表现和标准LSTM差别不大,但在JSB Chorales数据集上表现不佳。由于该结构增加了循环层,导致其参数量也非常大,因此也不建议使用。
4.NIG,NOG和NIAF在TIMIT和IAM Online数据集上表现都不好,NIG和NIAF在JSB Chorales数据集上表现有小幅提升。因此这个三个结构也不建议使用。
综上所述可得:输入门、输出门和输入激活函数对结构的性能影响比较大。
LSTM与GRU
从上面的分析可以看出,原始LSTM和GRU在性能上基本相当,因此对这两个模型单独进行更全面的测试。测试在两个数据集,共六个数据上进行,单独对LSTM和GRU进行了性能和训练速度的比较,比较方法基本与上面的方法相同,只列出比较结果:
从上述测试结果很容易看出,LSTM和GRU的性能差异并不大,但是GRU明显在收敛速度上更胜一筹,因此可以作为一种RNN的结构来使用。
引用
LSTM: A Search Space OdysseyEmpirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling