LSTM笔记

背景知识

  • 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
  • 在普通的RNN中,重复模块结构非常简单,例如只有一个tanh层。LSTM也有这种链状结构,不过其重复模块的结构不同。LSTM的重复模块中有4个神经网络层,并且他们之间的交互非常特别。

网络结构

LSTM的关键是元胞状态(Cell State),也就是下图中横穿整个元胞顶部的水平线:

14585507601229.jpg-61.5kB

LSTM有能力对元胞状态添加或者删除信息,这种能力通过一种叫门的结构来控制。门是一种选择性让信息通过的方法。它们由一个Sigmoid函数和一个逐元素元素相乘的操作组成。

Sigmoid输出0~1之间的值,每个值表示对应的部分信息是否应该通过。0值表示不允许信息通过,1值表示让所有信息通过。一个LSTM有3个这种门,来保护和控制元胞状态。

遗忘门

遗忘门决定元胞状态将丢弃哪些信息,它的输入是(h_{t-1})(x_t)。来自先前隐藏状态的信息和来自当前输入的信息通过sigmoid函数传递。值介于0和1之间,越接近0意味着忘记,越接近1意味着要保持。

14585517843913.jpg-74.3kB

这里的([h_{t-1},x_t])表示把两个向量连接成一个更长的向量

输入门

输入门决定哪些信息会进入到元胞状态中。首先,我们需要计算两个值:(i_t)( ilde{C_t}),它们的计算方法如图所示:

14585522130400.jpg-96.7kB

接下来,我们把旧状态(C_{t-1})逐项乘以(f_t),忘掉我们已经决定忘记的内容。然后我们再加上(i_tigodot ilde{C_t})(这里(igodot)代表逐元素相乘),从而得到新的元胞状态(C_t)

14585647039038.jpg-80.9kB

输出门

输出门计算网络的最终输出(o_t)以及网络继续运行所需的隐层单元(h_t),其计算方法如下:

14585652046323.jpg-96.3kB

总结

用一张图来概况整个过程:

v2-6a97bbf66211569a33c38c8e255ed6c8_r.jpg-104.5kB


参考:

  1. 人人都能看懂的LSTM
  2. 理解 LSTM 网络
  3. Understanding LSTM Networks
  4. 一文了解LSTM和GRU背后的秘密(绝对没有公式)
  5. LSTM以及三重门,遗忘门,输入门,输出门
  6. 三次简化一张图:一招理解LSTM/GRU门控机制(公式非常清晰)
原文地址:https://www.cnblogs.com/lokvahkoor/p/12249784.html