Fork me on GitHub

LSTM(Long-Short Term Memory)长短期记忆网络

LSTM(Long-Short Term Memory)长短期记忆网络

一、LSTM结构

LSTM(Long-Short Term Memory),长短期记忆网络是RNN的一种变形结构。RNN因为梯度消失的原因只有短期记忆,LSTM网络通过精妙的Cell门控制将短期记忆与长期记忆结合起来,并在一定程度上解决了梯度消失的问题。

所有RNN都具有一种重复神经网络模块的链式形式。在标准的RNN中,重复的模块只有一个非常简单的结构,比如一个tanh层。

  • 标准的RNN:

img

  • LSTM的结构:

    LSTM同样的结构,但是重复的模块拥有一个不同的结构,不同于单一层,这里是由四个,以一种非常特殊的方式进行交互

img

  • LSTM解析图标:

img

  • 橙黄色矩形:学习得到的神经网络层
  • 粉色圆形:代表一些运算,比如加法,乘法
  • 黑色单箭头:向量的传输
  • 两个箭头合并:表示向量的连接
  • 一个箭头分开:表示向量的复制

二、LSTM的核心思想

  • LSTM的关键就是细胞Cell状态,水平线在图上方贯穿运行。
  • Cell细胞状态像传送带一样,直接在整个链上运行,只有一些少量的线性交互,信息在上线流传保持不变很容易。

img

  • LSTM有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择通过的方法。包含一个sigmoid神经网络层和一个按位的乘法操作

    img

sigmoid层输出0~1之间的数值,描述每个部分有多少量可以通过。0代表不允许

任何量通过,1代表允许任意量通过。LSTM拥有三个门,来保护和控制细胞状态。

三、LSTM的推理

  • LSTM中的第一步是决定我们会从细胞状态中丢弃什么信息。第一步的决定四通过一个叫做忘记门层完成。忘记门层会读ht-1和xt,输出一个0~1之间的数值给每个在细胞状态Ct-1中的数字,1表示完全保留,0表示完全舍弃img
  • 下一步是确定什么样的新信息被存放在细胞状态**中**,这里包含两个部分:

​ sigmoid层叫做输入门层,决定将要更新的值

​ tanh层创建一个新的候选值向量Ct,会被假如到状态中。

img

  • 更新旧细胞状态,把Ct-1更新为Ct。就是把旧状态与ft相乘,丢弃掉确定需要丢弃的信息,然后加上it*Ct,变成新的候选值。

img

最后一步,确定需要输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先是,运行一个sigmoid层来确定细胞状态的哪个部分将被输出。然后,把细胞状态通过tanh进行处理,得到一个-1~1之间的值,将它和sigmoid门的输出相乘。

img

四、LSTM的变体

  • 让门层也接受细胞状态的输入

    img

  • 使用coupled忘记和输入门

    区别于标准LSTM的分开确定忘记什么和需要添加什么新的信息,变体的LSTM是两者一同做出决定。

img

  • Gated Recurrent Unit(GRU)变体,是将忘记门和输入门合成了一个单一的更新门。还混合了细胞状态和隐藏状态的,也是非常流行的变体

img