1. http://colah.github.io/posts/2015-08-Understanding-LSTMs/
  2. https://github.com/exacity/deeplearningbook-chinese/releases
  3. 《TensorFlow实战Google深度学习框架》

1.LSTM(Long Short-Term Memory)长短期记忆网络原理

上一篇文章已经讲完RNN的原理及TensorFlow实现,但在实际应用中,RNN由于存在梯度消散(the vanishing gradient problem)等问题,所以出现了后续很多优化算法。

1.1 门控RNN

到目前为止,实际应用中最有效的序列模型称为门控RNN(gated RNN)。包括基于长短期记忆(long short-term memory)和基于门控循环单元(gated recurrent unit)的网络。门控RNN 想法是基于生成通过时间的路径,其中导数既不消失也不发生爆炸。门控RNN在每个时间步都可能改变的连接权重来达到这一目的。我们希望神经网络学会决定何时清除状态,而不是手动决定。这就是门控RNN 要做的事。

1.2 LSTM

长短期记忆(long short term memory, LSTM)模型的核心贡献是引入了循环以产生梯度长时间持续流动的路径。其中一个关键扩展是使自循环的权重视上下文而定,而不是固定的。门控此自循环(由另一个隐藏单元控制)的权重,累积的时间尺度可以动态地改变。在这种情况下,即使是具有固定参数的LSTM,累积的时间尺度也可以因输入序列而改变,因为时间常数是模型本身的输出。LSTM 已经在许多应用中取得重大成功,如无约束手写识别、语音识别、手写生成、机器翻译、为图像生成标题和解析。

LSTM 块如Fig.1 所示。在浅循环网络的架构下,相应的前向传播公式如下。LSTM 循环网络除了外部的RNN 循环外,还具有内部的“LSTM 细胞’’ 循环(自环),因此LSTM 不是简单地向输入和循环单元的仿射变换之后施加一个逐元素的非线性。与普通的循环网络类似,每个单元有相同的输入和输出,但也有更多的参数和控制信息流动的门控单元系统。最重要的组成部分是状态单元长短期记忆网络流程图 长短期记忆网络原理_github 。然而,此处自环的权重(或相关联的时间常数)由遗忘门(forget gate)长短期记忆网络流程图 长短期记忆网络原理_权重_02 控制(时刻t 和细胞i),由sigmoid 单元将权重设置为0 和1 之间的值:

长短期记忆网络流程图 长短期记忆网络原理_github_03


长短期记忆网络流程图 长短期记忆网络原理_长短期记忆网络流程图_04


Fig.1. LSTM 循环网络‘‘细胞’’ 的框图。细胞彼此循环连接,代替一般循环网络中普通的隐藏单元。这里使用常规的人工神经元计算输入特征。如果sigmoid 输入门允许,它的值可以累加到状态。状态单元具有线性自循环,其权重由遗忘门控制。细胞的输出可以被输出门关闭。所有门控单元都具有sigmoid 非线性,而输入单元可具有任意的压缩非线性。状态单元也可以用作门控单元的额外输入。黑色方块表示单个时间步的延迟。

其中长短期记忆网络流程图 长短期记忆网络原理_优化算法_05 是当前输入向量,长短期记忆网络流程图 长短期记忆网络原理_LSTM_06 是当前隐藏层向量,长短期记忆网络流程图 长短期记忆网络原理_LSTM_06 包含所有LSTM 细胞的输出。长短期记忆网络流程图 长短期记忆网络原理_github_08 ; 长短期记忆网络流程图 长短期记忆网络原理_LSTM_09 ; 长短期记忆网络流程图 长短期记忆网络原理_github_10分别是偏置、输入权重和遗忘门的循环权重。因此LSTM 细胞内部状态以如下方式更新,其中有一个条件的自环权重长短期记忆网络流程图 长短期记忆网络原理_权重_02

长短期记忆网络流程图 长短期记忆网络原理_LSTM_12


其中b; U; W 分别是LSTM 细胞中的偏置、输入权重和遗忘门的循环权重。外部输入门(external input gate) 单元 长短期记忆网络流程图 长短期记忆网络原理_github_13以类似遗忘门(使用sigmoid获得一个0 和1 之间的值)的方式更新,但有自身的参数:

长短期记忆网络流程图 长短期记忆网络原理_LSTM_14


LSTM 细胞的输出长短期记忆网络流程图 长短期记忆网络原理_github_15也可以由输出门(output gate) 长短期记忆网络流程图 长短期记忆网络原理_github_16 关闭(使用sigmoid单元作为门控)

长短期记忆网络流程图 长短期记忆网络原理_github_17


其中长短期记忆网络流程图 长短期记忆网络原理_优化算法_18分别是偏置、输入权重和遗忘门的循环权重。在这些变体中,可以选择使用细胞状态长短期记忆网络流程图 长短期记忆网络原理_github作为额外的输入(及其权重),输入到第i 个单元的三个门,如Fig.1所示。这将需要三个额外的参数。