转载自 https://zhuanlan.zhihu.com/p/70873081

前言

之前的文章讲解了RNN的基本结构BPTT算法及梯度消失问题,说到了RNN无法解决长期依赖问题,本篇文章要讲的LSTM很好地解决了这个问题。本文部分内容翻译自Understanding LSTM Networks
文章分为四个部分:

  • RNN与LSTM的对比
  • LSTM的核心思想
  • LSTM公式和结构详解
  • LSTM变体介绍

    一. RNN与LSTM对比

    1.公式对比:
    RNN:
    2022-06-24-LSTM - 图1
    LSTM:
    2022-06-24-LSTM - 图2

    2.结构对比

    RNN的重复模块中,只有一个tanh层
    image.png

LSTM的重复模块中,有四个层,多了三个门(gate)
image.png
在上面两幅图中,每条黑线都代表一个向量,从上一个节点输出,输入到下一个节点。粉色圆圈代表对每个元素的操作(比如点乘),黄色方框代表神经网络层,两条黑线合并代表向量拼接,一条黑线分为两条代表复制。
image.png

二. LSTM的核心思想

原始RNN的隐藏单元只有个状态,即RNN详解中的 2022-06-24-LSTM - 图6,它对短期记忆敏感而对长期记忆不那么敏感。而LSTM增加了一个状态,即2022-06-24-LSTM - 图7,用它来保存长期记忆,我们称之为单元状态(cell state),下文中简称为cell。
LSTM的核心就是多出来的这个cell state,下图中的水平黑线代表cell state通过时间序列不断向前传送。传送图中只有少量的线性运算作用在cell state上,所以cell state可以存储着信息并保持它们不怎么变而传送得很远。这就是它能解决长期依赖问题的原因。
image.png

LSTM可以通过门(gate)来向cell state中添加信息或删除信息。
门可以选择性地让信息通过,门的结构是用一个sigmoid层来点乘cell state:
image.png

sigmoid层输出的值从0到1,这个值描述多少信息能通过。0表示啥也过不去,1表示啥都放过去。
LSTM一共有三个门,来帮助cell state遗忘、输入、输出。

三. 分四步详细讲解LSTM★

1.决定什么信息需要从cell中丢弃掉。
通过构建一个遗忘门(forget gate):输入当前时刻的 2022-06-24-LSTM - 图10和上一时刻的输出 2022-06-24-LSTM - 图11,输出一个和 2022-06-24-LSTM - 图12同维度的向量,矩阵中每一个值都代表 2022-06-24-LSTM - 图13中对应参数的去留情况,0代表彻底丢掉,1代表完全保留。
2022-06-24-LSTM - 图14
image.png

举个例子:比如一个语言模型,根据之前的所有词预测下一个词。在这个问题中,cell可能已经记住了当前人物的性别,以便下次预测人称代词(他、她)时使用。但是当我们遇到一个新人物时,我们需要将旧人物的性别忘掉。
2.决定要往cell中存储哪些新信息。
这一步有两个部分:
a.通过构建一个输入门(input gate),决定要更新哪些信息。

2022-06-24-LSTM - 图16
b.然后构建一个候选值向量(cell): 2022-06-24-LSTM - 图17 ,之后会用输入门点乘这个候选值向量,来选出要更新的信息。

2022-06-24-LSTM - 图18
image.png

在语言模型的例子中:这一步我们是想要把新人物的性别记住。
3.执行前两步:遗忘旧的、保存新的。
这一步我们对旧cell 2022-06-24-LSTM - 图20 进行更新,变成新cell 2022-06-24-LSTM - 图21

2022-06-24-LSTM - 图22
2022-06-24-LSTM - 图23 点乘 2022-06-24-LSTM - 图24 代表我们丢弃掉要遗忘的信息。 2022-06-24-LSTM - 图25点乘 2022-06-24-LSTM - 图26 代表我们从候选值向量中挑出要更新记住的信息。
image.png

在语言模型的例子中:这一步真正执行下面的操作:忘旧人物的性别,记住新人物的性别。
4.决定输出什么。
分为两步:
a.构建一个输出门(output gate):决定要输出哪些信息。

2022-06-24-LSTM - 图28
b.将cell 2022-06-24-LSTM - 图29 输入 2022-06-24-LSTM - 图30 函数将所有参数值压缩为-1到1之间的值。然后将其点乘输出门,输出我们想输出的部分。
2022-06-24-LSTM - 图31
image.png

在语言模型的例子中:比如刚看到一个人称代词he或they(cell状态已经存储),而下一个词可能是一个动词,那么我们从人称代词(cell状态)就可以看出下一个动词的形式,比如(makes, make),he对应makes,they对应make。

四. LSTM的变体

上述的LSTM是最原始的LSTM,还有很多变体。
第一种变体Gers & Schmidhuber (2000)提出,这种变体添加了窥视孔连接(peephole connections)。具体操作就是每个门(gate)的输入多加了cell state。
image.png
第二种变体是去掉输入门(input gate)。不去分开决定遗忘什么输入什么,而是一起做决定,只有要遗忘的值才去对它们输入更新。
image.png
第三种变体Cho, et al. (2014)提出,名为GRU。它将遗忘门和输入们简化为一个更新门,还将cell state和隐藏单元(hidden state)合并起来。结构相对LSTM更简单,也很流行。
image.png

References

[1] Understanding LSTM Networks
[2] 零基础入门深度学习(6) - 长短时记忆网络(LSTM)
[3] Bengio的深度学习(花书)