长短期记忆网络LSTM(Long Short Term Memory)本身不是一个完整的模型,主要是对RNN隐含层的改进。因此,
RNN网络即使用LSTM单元的RNN网络。LSTM非常适合用于处理与时间序列高度相关的问题,例如机器翻译、对话
生成、编码解码、图文转换等。
1. LSTM基本原理
(1)RNN和LSTM网络
所有的循环网络都具有链式的重复模块神经网络。在标准的RNNs中,这种重复模块具有非常简单的结构,比如是一
个tanh层。LSTM同样具有链式结构,但是其重复模块却有着不同的结构。不同于单独的神经网络层,它具有4个以特
殊方式相互影响的神经网络层。如下所示:
LSTM模型为解决长期依赖问题而诞生,在原有的短期记忆单元的基础上,增加一个记忆单元来保持长期记忆。
(2)LSTM核心思想LSTM的关键在于元胞状态,在图中以水平线表示。元胞状态就像一个传送带,它顺着整个链条从头到尾运行,中间
只有少许线性的交互,信息很容易顺着它流动而保持不变。如下所示:
LSTM通过门(Gates)的结构来对细胞状态增加或者删除信息。门是选择性让信息通过的方式。它们的输出有一个
sigmoid层和逐点乘积操作。如下所示:
sigmoid层的输出在0到1之间,定义了各成分被放行通过的程度。0值意味着不让任何东西过去;1值意味着让所有东
西通过。一个LSTM具有3种门(输入门,遗忘门,输出门),用以保护和控制元胞状态。
(3)LSTM遗忘门
首先,LSTM决定要从元胞中抛弃何种信息。这个决定是由叫做遗忘门的sigmoid层决定的。它以和为输入,在
元胞输出一个介于0和1之间的数。其中1代表完全保留,0代表完全遗忘。如下所示:
(4)LSTM输入门
然后,LSTM决定元胞中要存储何种信息。它有2个组成部分:由一个叫做输入门的sigmoid层决定将要更新哪些
值;一个tanh层创建一个新的候选向量,它可以加在状态之中。在下一步将结合两者来生成状态的更新。如
下所示:
将旧元胞状态更新为。即把旧状态乘以,用以遗忘之前决定忘记的信息,然后加上。这是新的候选值,
根据决定更新状态的程度来作为放缩系数。如下所示:
(5)LSTM输出门
最后,LSTM决定输出哪些内容。输出取决于元胞状态,但是以一个过滤后的版本。使用sigmoid层来决定要输出元胞
状态的哪些部分;把用tanh处理元胞状态(将状态值映射到-1至1之间);将其与sigmoid门的输出值相乘,从而能够
输出决定输出的值。如下所示:
说明:循环神经网络中的状态是通过一个向量来表示的,这个向量的维度也称为循环神经网络隐藏层的大小。 参考文献: [1] The Unreasonable Effectiveness of Recurrent Neural Networks: http://karpathy.github.io/2015/05/21/rnn-
effectiveness/
[2] Understanding LSTM Networks:http://colah.github.io/posts/2015-08-Understanding-LSTMs/
