LSTM网络是循环神经网络的一种特殊类型,它可以学习长期以来的信息,它是一种拥有三个“门”结构的特殊网络结构。
1.LSTM网络结构
原始RNN的隐藏层只有一个状态h,如图1(a),它对于短期的输入非常敏感。LSTM网络增加一个状态c,让它保存长期的状态,如图1(b)。
图1
新增状态c,称为单元状态。把图1(b)按照时间维度展开,如图2所示。
图2
由上图可以看出:在t时刻,LSTM网络的输入有三个,即当前时刻网络的、上一时刻LSTM网络的输出值以及上一时刻的单元状态;LSTM的输出有两个,即当前时刻LSTM网络输出值和当前时刻的单元状态。注意、、都是向量。
LSTM网络的关键就是怎么控制长期状态c。LSTM的思路:使用三个控制开关:第一个开关,控制继续保持长期状态c;第二个开关,控制把即时状态输入到长期状态c;第三个开关,控制是否把长期状态c作为当前的LSTM网络的输出。
2.LSTM前向计算
门实际上是一层全连接层,它的输入是一个向量,输出是一个0~1之间的实数向量。假设W是门的权重向量,b是偏置项,门可以表示为:。门的使用就是用门的输出两项按元素乘以需要控制的向量。当门的输出为0时什么都不能通过,当输出为1时什么都能通过,因为sigmoid函数值域是(0,1),使用门的状态是半开半闭的。
LSTM网络用两个门来控制单元状态c的内容,一个是遗忘门(Forget Gate),它决定上一时刻的单元状态有多少保留到当前时刻的单元状态;另一个是输出门(Input Gate)它决定了当前时刻网络的输入有多少保存到单元状态