目录
1. RNN的不足之处
2. LSTM
2.1 LSTM原理
3 逐步理解 LSTM
1. forget gate layer遗忘门
2. input gate layer
3. output gate layer
4 LSTM 的变种 GRU
4.1. GRU 与LSTM的对比
5. 其它变种
5.1. peephole connections
在RNNs的网络中有一个循环的操作,使得它们能够保留之前学习到的内容。对于矩形块 A 的那部分,通过输入 (t时刻的特征向量),它会输出一个结果 (t时刻的隐状态或者输出)。
网络中的循环结构使得某个时刻的状态能够传到下一个时刻。可以把 RNNs 看成是一个普通的网络做了多次复制后叠加在一起组成的。每一网络会把它的输出传递到下一个网络中。
我们可以把 RNNs 在时间步上进行展开得到如图2
RNN的结构及反向传播如下图所示:
当所要预测的内容和相关信息之间的间隔很小(短期依赖)时 RNNs 就能够利用过去的信息来实现序列预测。但随着预测信息和相关信息间的间隔增大, RNNs 很难去把它们关联起来。
长短期记忆网络(Long Short Term Memory networks)主要是为了避免长时期依赖 (long-term dependency )问题由Hochreiter & Schmidhuber (1997)提出的,它的本质就是能够记住并处理较长时期内的信息。LSTMs 与RNN结构唯一的区别就是中间部分:不再只是用一个单一的 tanh 层,而是用了四个相互作用的层。
RNN 与LSTM结构对比:
理解LSTM结构中的细胞状态需要先来定义一下用到的符号:
在网络结构图中,每条线都传递着一个向量,从一个节点中输出,然后输入到另一个节点中。粉红色的圆圈表示逐点操作,比如向量相加;黄色的矩形框表示的是一个神经网络层(就是很多个神经节点);合并的线表示把两条线上所携带的向量进行合并concatenate , 比如一个带 ,另一个带 , 那么合并后的输出就是 ; 分开的线表示将线上传递的向量复制一份,传给两个地方。
LSTMs 最关键的地方在于 cell(整个绿色的框就是一个 cell) 的状态 和 结构图上面的那条横穿的水平线。cell 状态的传输就像一条传送带,向量从整个 cell 中穿过,只是做了少量的线性操作。这种结构能够很轻松地实现信息从整个 cell 中穿过而不做改变。 用门(gates)结构通过一个 sigmoid 的神经层和一个逐点相乘的操作来实现选择性地让信息通过,从而实现遗忘或记忆的功能。
sigmoid 层输出一个向量,它的每个元素都是一个在 0 和 1 之间的实数,表示让对应信息通过的权重(或者占比)。比如0 表示“不让任何信息通过”, 1 表示“让所有信息通过”。
每个 LSTM 有三个门结构:forget gate layer遗忘门; input gate layer传入门; output gate layer输出门
遗忘门决定让那些信息继续通过这个 cell,以上一单元的输出 和本单元的输入 为输入的sigmoid函数,为 中的每一项产生一个在[0,1]内的值,来控制上一单元状态被遗忘的程度。
传入门决定让多少新的信息加入到 cell 状态中来,再把cell 状态从 更新为 。实现这个需要包括两个步骤:
首先input gate layer 的 sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个向量,也就是备选的用来更新的内容
把cell 状态从 更新为 :首先我们把旧的状态 和 相乘, 就是遗忘后保留的部分信息;然后加上 。这部分信息就是我们要添加的新内容。
输出主要是依赖于 cell 的状态 和经过一个过滤的处理。首先用一个 sigmoid 层的计算结果决定将 中的哪部分信息输出。再把 用一个 tanh 层把数值都归到 -1 和 1 之间,最后把 tanh 层的输出和 sigmoid 层计算出来的权重相乘以得到输出结果。
由Cho, et al. (2014) 提出如 fig.13 所示,只有两个门:重置门(reset gate)和更新门(update gate)。它把LSTM中的细胞状态和隐藏状态进行了合并,最后模型比标准LSTM 结构简单。
其中, 表示重置门, 表示更新门。重置门决定是否将之前的状态忘记。(作用相当于合并了 LSTM 中的遗忘门和传入门)当 趋于 0 的时候,前一个时刻的状态信息 会被忘掉,隐藏状态 会被重置为当前输入的信息。更新门决定是否要将隐藏状态更新为新的状态 (作用相当于 LSTM 中的输出门)。
与 LSTM 相比:
(1) GRU 少一个门,同时少了细胞状态
(2) 在 LSTM 中,通过遗忘门和传入门控制信息的保留和传入;GRU 则通过重置门来控制是否要保留原来隐藏状态的信息,但是不再限制当前信息的传入。
(3) 在 LSTM 中,虽然得到了新的细胞状态 Ct,但是还不能直接输出,而是需要经过一个过滤的处理: ; 同样,在 GRU 中, 虽然 (2) 中我们也得到了新的隐藏状态 , 但是还不能直接输出,而是通过更新门来控制最后的输出:
还有一种比较流行的LSTM变种如下图所示,最早由Gers & Schmidhuber在2000年提出。这种方法增加了“peephole connections”,即每个门都可以“窥探”到单元状态,遗忘门和输入门是与上一单元状态建立连接,而输出门是与当前单元状态建立连接。
另有一个变种取消了输入门,将新信息加入的多少与旧状态保留的多少设为互补的两个值(和为1),即:只有当需要加入新信息时,我们才会去遗忘;只有当需要遗忘时,我们才会加入新信息。
【参考]
【1】(译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
【2】原文链接: Understanding LSTM Networks
【3】 RNN 原理可参考 AK 的博客:The Unreasonable Effectiveness of Recurrent Neural Networks
【4】 An Empirical Exploration of Recurrent Network Architectures,
【5】 LSTM学习笔记
【6】一文弄懂神经网络中的反向传播法 BackPropagation
【7】 LSTM: A Search Space Odyssey by Klaus Greff et al ,2015