(译)理解LSTM网络 ----Understanding LSTM Networks by colah

目录

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


1. RNN的不足之处

在RNNs的网络中有一个循环的操作,使得它们能够保留之前学习到的内容。对于矩形块 A 的那部分,通过输入 \large X_{t} (t时刻的特征向量),它会输出一个结果 \large h_{t}(t时刻的隐状态或者输出)。

网络中的循环结构使得某个时刻的状态能够传到下一个时刻。可以把 RNNs 看成是一个普通的网络做了多次复制后叠加在一起组成的。每一网络会把它的输出传递到下一个网络中。

我们可以把 RNNs 在时间步上进行展开得到如图2

 RNN的结构及反向传播如下图所示: 

当所要预测的内容和相关信息之间的间隔很小(短期依赖)时 RNNs 就能够利用过去的信息来实现序列预测。但随着预测信息和相关信息间的间隔增大, RNNs 很难去把它们关联起来。

2. LSTM

长短期记忆网络(Long Short Term Memory networks)主要是为了避免长时期依赖 (long-term dependency )问题由Hochreiter & Schmidhuber (1997)提出的,它的本质就是能够记住并处理较长时期内的信息。LSTMs 与RNN结构唯一的区别就是中间部分:不再只是用一个单一的 tanh 层,而是用了四个相互作用的层。 

2.1 LSTM原理

RNN 与LSTM结构对比:

理解LSTM结构中的细胞状态需要先来定义一下用到的符号:  

在网络结构图中,每条线都传递着一个向量,从一个节点中输出,然后输入到另一个节点中。粉红色的圆圈表示逐点操作,比如向量相加;黄色的矩形框表示的是一个神经网络层(就是很多个神经节点);合并的线表示把两条线上所携带的向量进行合并concatenate , 比如一个带 \large h_{t-1}  ,另一个带 \large x_{t}  , 那么合并后的输出就是 \large \left [ h_{t-1},x_{t}\right ] ; 分开的线表示将线上传递的向量复制一份,传给两个地方。

LSTMs 最关键的地方在于 cell(整个绿色的框就是一个 cell) 的状态 和 结构图上面的那条横穿的水平线。cell 状态的传输就像一条传送带,向量从整个 cell 中穿过,只是做了少量的线性操作。这种结构能够很轻松地实现信息从整个 cell 中穿过而不做改变。 用门(gates)结构通过一个 sigmoid 的神经层和一个逐点相乘的操作来实现选择性地让信息通过,从而实现遗忘或记忆的功能。

 

 sigmoid 层输出一个向量,它的每个元素都是一个在 0 和 1 之间的实数,表示让对应信息通过的权重(或者占比)。比如0 表示“不让任何信息通过”, 1 表示“让所有信息通过”。

每个 LSTM 有三个门结构:forget gate layer遗忘门; input gate layer传入门; output gate layer输出门

3 逐步理解 LSTM

1. forget gate layer遗忘门

遗忘门决定让那些信息继续通过这个 cell,以上一单元的输出 \large h_{t-1} 和本单元的输入 \large x_{t} 为输入的sigmoid函数,为 \large C_{t-1} 中的每一项产生一个在[0,1]内的值,来控制上一单元状态被遗忘的程度。

2. input gate layer

传入门决定让多少新的信息加入到 cell 状态中来,再把cell 状态从 \large C_{t-1} 更新为 \large C_{t} 实现这个需要包括两个步骤:

首先input gate layer 的 sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个向量,也就是备选的用来更新的内容 \large \tilde{C_{t}}

 把cell 状态从 \large C_{t-1} 更新为 \large C_{t}:首先我们把旧的状态 \large C_{t-1} \large f_{t} 相乘, 就是遗忘后保留的部分信息;然后加上 \large i_{t}\ast \tilde{C_{t}}。这部分信息就是我们要添加的新内容。

 

 3. output gate layer

输出主要是依赖于 cell 的状态 \large C_{t} 和经过一个过滤的处理。首先用一个 sigmoid 层的计算结果决定将 \large C_{t} 中的哪部分信息输出。再把 \large C_{t} 用一个 tanh 层把数值都归到 -1 和 1 之间,最后把 tanh 层的输出和 sigmoid 层计算出来的权重相乘以得到输出结果。

LSTM 的变种 GRU

Cho, et al. (2014) 提出如 fig.13 所示,只有两个门:重置门(reset gate)和更新门(update gate)。它把LSTM中的细胞状态和隐藏状态进行了合并,最后模型比标准LSTM 结构简单。

其中, \large r_{t}  表示重置门, \large z_{t} 表示更新门。重置门决定是否将之前的状态忘记。(作用相当于合并了 LSTM 中的遗忘门和传入门)当 \large r_{t} 趋于 0 的时候,前一个时刻的状态信息 \large h_{t-1} 会被忘掉,隐藏状态 \large \tilde{h_{t}}  会被重置为当前输入的信息。更新门决定是否要将隐藏状态更新为新的状态 \large \tilde{h_{t}}(作用相当于 LSTM 中的输出门)。

4.1. GRU 与LSTM的对比

与 LSTM 相比:

(1) GRU 少一个门,同时少了细胞状态 \large C_{t} 

(2) 在 LSTM 中,通过遗忘门和传入门控制信息的保留和传入;GRU 则通过重置门来控制是否要保留原来隐藏状态的信息,但是不再限制当前信息的传入。

(3) 在 LSTM 中,虽然得到了新的细胞状态 Ct,但是还不能直接输出,而是需要经过一个过滤的处理: \large h_{t}=o_{t}\ast tanh\left ( C_{t} \right ); 同样,在 GRU 中, 虽然 (2) 中我们也得到了新的隐藏状态 \large \tilde{h_{t}} , 但是还不能直接输出,而是通过更新门来控制最后的输出: \large h_{t}=\left ( 1-z_{t} \right )\ast h_{t-1}+z_{t}\ast h_{t}

5. 其它变种

5.1. peephole connections

还有一种比较流行的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

猜你喜欢

转载自blog.csdn.net/qq_29831163/article/details/88992503