文章目录
0 前言
循环神经网络工作的关键点就是使用历史信息来帮助当前的决策,但同时也带来更大的技术挑战-长期依赖问题(long-term dependencies)。长短期记忆网络(Long Short Term Memory, LSTM)的设计就是为了解决这个问题。
1 LSTM与RNN的异同
如果对RNN的结构及其实现方式不太了解的话,可以先看看我前一篇关于RNN的学习笔记:循环神经网络(RNN)学习笔记 。LSTM是RNN的一种变体,其内部结构相较于RNN多了很多结构。下图是RNN的结构:
在RNN中,只有一个tanh层,即输入 x t x_t xt与上一时刻的状态 h t − 1 h_{t-1} ht−1组成本时刻的RNN层的输入: [ x t , h t − 1 ] [x_t, h_{t-1}] [xt,ht−1]。运算之后的结果经过激励函数 t a n h = e x − e − x e x + e − x tanh=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh=ex+e−xex−e−x,得到下一时刻的状态 h t h_t ht。与之相对应的,LSTM中的结构就比较复杂了:
2 LSTM结构细节
2.1 细胞状态
从计算流程上看,它先与遗忘门的输出进行乘法运算,然后再加上输入门的输出。这种运算方式理解起来就是将上一时刻的一些信息进行压缩或更新,然后再加上本时刻的信息,通过这种方式来记住长期的信息。
2.2 遗忘门
2.3 输入门
2.4 输出门
3 总结
在一个lstm cell中,所有的sigmoid层都是在做一个权值的计算。在遗忘门中表示遗忘的程度,在输入门中表示当前信息在细胞状态中的更新程度,而在输出门中则作为细胞状态激励后的输出层度。
4 LSTM的变体
4.1 Adding “Peephole Connections”
这是Gers & Schmidhuber (2000)提出来的一种LSTM的变体,他将细胞状态输入每个Sigmoid之前,与 x t , h t − 1 x_t, h_{t-1} xt,ht−1共同影响权值的生成。这个图中是将其加到所有的门中,而在论文中只将其加入到部分门里。
4.2 耦合遗忘门和输入门
相较于正常的LSTM,在这个变体中,输入门的输出信息加入到细胞状态中的权值由遗忘门的输出得到 1 − f t 1-f_t 1−ft。这个式子表示我们遗忘多少信息,就更新多少信息。
4.3 GRU(Gated Recurrent Unit)
有个更加有意思的LSTM变体是Cho, et al. (2014)提出来的。他不仅将遗忘门和输入门统一为更新门,而且将状态h和细胞状态C也一起合并了,从整个外观上看比较像简单的RNN结构了。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。
参考资料
Understanding LSTM Networks
理解 LSTM 网络
LSTMs/#disqus_thread)
理解 LSTM 网络
理解LSTM