深度学习之长短期记忆网络LSTM
LSTM(Long Short-Term Memory networks)是一种时间递归神经网络,是RNN的改进之一,解决了RNN不易处理的远距离信息上下文依赖、梯度消失或梯度爆炸等问题。LSTM的结构类似RNN,区别在于将传统神经元用记忆单元代替,这个单元由遗忘门、输入门和输出门组成,根据规则判断信息期限,长期记忆信息可以传到很深的层,短期记忆信息将很快被遗忘。
所有的递归神经网络都由重复的链式模块组成,标准RNN的重复模块只包含一个tanh;LSTM的重复模块包含3个sigmoid和一个tanh。
一、LSTM的结构
LSTM的记忆单元由上下两条线构成,每条线表示向量的传递,上面的线表示隐状态中的细胞状态 (cell state),类似传送带,直接在整个链上传递,只有少量的线性交互,信息在上面的流传保持不变很容易。
下面的线为门控结构(gate)计算,门是一种让信息选择式通过的方法,可以增加或减少细胞状态的信息,LSTM中主要有3个门结构来控制细胞状态。
1、遗忘门
决定上一时刻的细胞状态 有多少保留到当前时刻
,可以保存很久之前的信息。例如语言模型中预测下一个词时,细胞状态可能包含了当前主语的性别信息(“他”或者“她”)因此可以选出正确的代词;当遇到新的主语时,希望忘记旧的主语选出新的代词。
sigmoid层输出0到1之间的数字,表示信息可以通过门限的比例:0表示不让任何信息通过,1表示让所有信息通过。
2、输入门
决定当前时刻的输入 有多少保存到细胞状态
,可以避免当前无关紧要的内容进入记忆,分为生成临时新状态、更新旧状态两个步骤。sigmoid层决定哪些值需要更新,tanh层创建一个新的候选向量
,为状态更新做准备。
由于遗忘门和输入门都会作用于细胞状态,将长期记忆 与
相乘,去掉不需要的信息;再加上新的记忆
,得到最终更新后的细胞状态,*为Hadamard积:
3、输出门
控制细胞状态 有多少成为LSTM的输出
,
由两部分组成:第一部分由
、
进行sigmoid**得到,第二部分由细胞状态经过tanh**得到,二者再求Hadamard乘积。
二、LSTM的前向传播
Forget Gate:
Input Gate:
Cell State:
Output Gate:
Final Output:
假设,每个细胞内有d个门结构,上面公式中的W*、U*分别为
维。W为总权重,I为总输入,则模型预测输出为:
三、LSTM的反向传播
类似RNN中定义δ,LSTM的前向、后向传播如下所示,为了简化表示隐藏了门的结构。
Output:
Cell update:
Input:
四、LSTM结构的变体
1、增加窥视孔层peephole connections
让门层也接受细胞状态的输入,增加了下图中标注的线(许多论文会加入部分的peephole而不是所有的都加)。
2、coupled遗忘门和输入门
通过耦合忘记门和输入门,不再单独考虑信息的遗忘或增加,而是一起进行考虑。我们仅在要输入信息时遗忘旧的信息,仅在要遗忘旧信息时输入新信息。
3、Gated Recurrent Unit(GRU)
Cho, et al. (2014)将遗忘门和输入门合并成为一个单一的更新门,同时合并了细胞状态和隐藏状态,结构比LSTM更加简单,是非常流行的LSTM变体。
参考资料
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
http://arunmallya.github.io/writeups/nn/lstm/index.html#/
https://www.cnblogs.com/pinard/p/6519110.html
https://www.jianshu.com/p/dcec3f07d3b5