『NLP学习笔记』长短期记忆网络LSTM介绍

时间:2022-11-25 07:13:16


Sklearn计算准确率、精确率、召回率及F1 Score!

文章目录

  • ​​一. 循环神经网络​​
  • ​​二. 长期依赖问题​​
  • ​​三. LSTM 网络​​
  • ​​四. LSTM 背后的核心理念​​
  • ​​4.1 忘记门​​
  • ​​4.2 输入门​​
  • ​​4.3 输出门​​
  • ​​五. LSTM总结(李沐老师动手深度学习)​​
  • ​​5.1. 输入门 It​、忘记门 Ft​ 和输出门 Ot​
  • ​​5.2. 候选记忆门 C~t​
  • ​​5.3. 记忆元 Ct​
  • ​​5.3. 隐状态 Ht​
  • ​​六. 代码实战​​
  • ​​七. 参考文献​​

一. 循环神经网络

  • 人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。
  • 传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如,假设你希望对电影中的每个时间点的事件类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推断后续的事件。RNN 解决了这个问题。RNN 是包含循环的网络,允许信息的持久化。



『NLP学习笔记』长短期记忆网络LSTM介绍

  • 在上面的示例图中,神经网络的模块 『NLP学习笔记』长短期记忆网络LSTM介绍,正在读取某个输入 『NLP学习笔记』长短期记忆网络LSTM介绍,并输出一个值 『NLP学习笔记』长短期记忆网络LSTM介绍。循环可以使得信息可以从当前步传递到下一步。
  • 这些循环使得 RNN 看起来非常神秘。然而,如果你仔细想想,这样也不比一个正常的神经网络难于理解。RNN 可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个。所以,如果我们将这个循环展开:



『NLP学习笔记』长短期记忆网络LSTM介绍

  • 这种链状性质表明循环神经网络与序列和列表密切相关。它们是用于此类数据的神经网络的自然架构。并且 RNN 也已经被人们应用了!在过去几年中,应用 RNN 在语音识别,语言建模,翻译,图片描述等问题上已经取得一定成功,并且这个列表还在增长。而这些成功应用的关键之处就是 LSTM 的使用,这是一种特别的 RNN,比标准的 RNN 在很多的任务上都表现得更好。几乎所有的令人振奋的关于 RNN 的结果都是通过 LSTM 达到的。这篇博文也会就 LSTM 进行展开。

二. 长期依赖问题

  • RNN 的关键点之一就是他们可以用来连接 先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果 RNN 可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。
  • 有时候,我们仅仅需要查看最近的信息来执行当前的任务。例如,考虑一个语言模型试图根据之前的单词预测下一个单词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何进一步的上下文——下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息



『NLP学习笔记』长短期记忆网络LSTM介绍

  • 但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France… I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。
  • 不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。



『NLP学习笔记』长短期记忆网络LSTM介绍

  • 在理论上,RNN 绝对可以处理这样的长期依赖问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN 肯定不能够成功学习到这些知识。Bengio, et al. (1994)等人对该问题进行了深入的研究,他们发现一些使训练 RNN 变得非常困难的相当根本的原因。幸运的是,LSTM 没有这个问题!

三. LSTM 网络

  • LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力!
  • 所有循环神经网络都具有神经网络的重复模块链的形式。在标准 RNN 中,此重复模块将具有非常简单的结构,例如单个 tanh 层。



『NLP学习笔记』长短期记忆网络LSTM介绍

  • LSTM也有这种链状结构,但重复模块有不同的结构。不是只有一个神经网络层,而是有四个,以一种非常特殊的方式进行交互。



『NLP学习笔记』长短期记忆网络LSTM介绍

  • 其中各种元素图片所表达的意思:



『NLP学习笔记』长短期记忆网络LSTM介绍

四. LSTM 背后的核心理念

  • LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。细胞状态有点像传送带。它直接沿着整个链条运行,只有一些较小的线性相互作用。信息很容易沿着它不变地流动。



『NLP学习笔记』长短期记忆网络LSTM介绍

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



『NLP学习笔记』长短期记忆网络LSTM介绍

  • Sigmoid 层输出 0 到 1 之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1 就指“允许任意量通过”!
  • LSTM 拥有三个门,来保护和控制细胞状态。



『NLP学习笔记』长短期记忆网络LSTM介绍

4.1 忘记门

  • 在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为忘记门层完成。该门会读取 『NLP学习笔记』长短期记忆网络LSTM介绍『NLP学习笔记』长短期记忆网络LSTM介绍,输出一个在 0 到 1 之间的数值给每个在细胞状态 『NLP学习笔记』长短期记忆网络LSTM介绍 中的数字。1 表示“完全保留”,0 表示“完全舍弃”
  • 让我们回到语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语



『NLP学习笔记』长短期记忆网络LSTM介绍

『NLP学习笔记』长短期记忆网络LSTM介绍

4.2 输入门

  • 下一步是 确定什么样的新信息被存放在细胞状态中。这里包含两个部分。第一,​​sigmoid​​ 层称 “输入门层” 决定什么值我们将要更新。然后,一个 ​​tanh​​​ 层创建一个新的候选值向量,『NLP学习笔记』长短期记忆网络LSTM介绍
  • 在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语。



『NLP学习笔记』长短期记忆网络LSTM介绍

『NLP学习笔记』长短期记忆网络LSTM介绍『NLP学习笔记』长短期记忆网络LSTM介绍

  • 现在是更新旧细胞状态的时间了,『NLP学习笔记』长短期记忆网络LSTM介绍 更新为 『NLP学习笔记』长短期记忆网络LSTM介绍。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。
  • 我们把旧状态与 『NLP学习笔记』长短期记忆网络LSTM介绍 相乘,丢弃掉我们确定需要丢弃的信息。接着加上 『NLP学习笔记』长短期记忆网络LSTM介绍 * 『NLP学习笔记』长短期记忆网络LSTM介绍。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。
  • 在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。



『NLP学习笔记』长短期记忆网络LSTM介绍

『NLP学习笔记』长短期记忆网络LSTM介绍

4.3 输出门

  • 最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 ​​sigmoid​​​ 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 ​​tanh​​​ 进行处理(得到一个在 ​​-1 到 1​​​ 之间的值)并将它和 ​​sigmoid​​ 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
  • 在语言模型的例子中,因为他就看到了一个 代词,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。



『NLP学习笔记』长短期记忆网络LSTM介绍

『NLP学习笔记』长短期记忆网络LSTM介绍『NLP学习笔记』长短期记忆网络LSTM介绍

五. LSTM总结(李沐老师动手深度学习)

  • 长短期记忆网络的设计灵感来自于 计算机的逻辑门。 长短期记忆网络引入了 记忆元(memory cell),或简称为 单元(cell)
  • 有些文献认为 记忆元是隐状态的一种特殊类型, 它们与 隐状态 具有相同的形状,其设计目的是用于记录附加的信息。
  • 为了控制记忆元,我们需要许多门。 其中一个门用来从单元中输出条目,我们将其称为 输出门(output gate)。 另外一个门用来决定何时将数据读入单元,我们将其称为 输入门(input gate)。 我们还需要一种机制来重置单元的内容,由 遗忘门(forget gate) 来管理, 这种设计的动机与门控循环单元相同, 能够通过专用机制决定什么时候记忆或忽略隐状态中的输入。 让我们看看这在实践中是如何运作的。

5.1. 输入门 It​、忘记门 Ft​ 和输出门 Ot​

  • 就如在门控循环单元中一样, 当前 时间步的输入『NLP学习笔记』长短期记忆网络LSTM介绍前一个时间步的隐状态 『NLP学习笔记』长短期记忆网络LSTM介绍 作为数据送入长短期记忆网络的门中,

『NLP学习笔记』长短期记忆网络LSTM介绍

  • 我们来细化一下长短期记忆网络的数学表达。 假设有 『NLP学习笔记』长短期记忆网络LSTM介绍 个隐藏单元,批量大小为 『NLP学习笔记』长短期记忆网络LSTM介绍,输入数为 『NLP学习笔记』长短期记忆网络LSTM介绍。 因此,输入为 『NLP学习笔记』长短期记忆网络LSTM介绍 , 前一时间步的隐状态为 『NLP学习笔记』长短期记忆网络LSTM介绍。 相应地,时间步 『NLP学习笔记』长短期记忆网络LSTM介绍 的门被定义如下: 输入门是 『NLP学习笔记』长短期记忆网络LSTM介绍, 遗忘门是 『NLP学习笔记』长短期记忆网络LSTM介绍, 输出门是 『NLP学习笔记』长短期记忆网络LSTM介绍。 它们的计算方法如下:
    『NLP学习笔记』长短期记忆网络LSTM介绍 『NLP学习笔记』长短期记忆网络LSTM介绍 『NLP学习笔记』长短期记忆网络LSTM介绍
  • 其中 『NLP学习笔记』长短期记忆网络LSTM介绍『NLP学习笔记』长短期记忆网络LSTM介绍 是权重参数, 『NLP学习笔记』长短期记忆网络LSTM介绍

5.2. 候选记忆门 C~t​

  • 由于还没有指定各种门的操作,所以先介绍 候选记忆元(candidate memory cell)『NLP学习笔记』长短期记忆网络LSTM介绍。 它的计算与上面描述的三个门的计算类似, 但是使用 tanh 函数作为激活函数,函数的值范围为 ​​​(−1,1)​​​ 。 下面导出在时间步 『NLP学习笔记』长短期记忆网络LSTM介绍 处的方程:
    『NLP学习笔记』长短期记忆网络LSTM介绍
  • 其中 『NLP学习笔记』长短期记忆网络LSTM介绍『NLP学习笔记』长短期记忆网络LSTM介绍是权重参数,『NLP学习笔记』长短期记忆网络LSTM介绍

『NLP学习笔记』长短期记忆网络LSTM介绍

5.3. 记忆元 Ct​

  • 在门控循环单元中,有一种机制来控制输入和遗忘(或跳过)。 类似地,在长短期记忆网络中,也有两个门用于这样的目的: 输入门 『NLP学习笔记』长短期记忆网络LSTM介绍 控制采用多少来自 『NLP学习笔记』长短期记忆网络LSTM介绍, 而 遗忘门 『NLP学习笔记』长短期记忆网络LSTM介绍 控制保留多少过去的 记忆元『NLP学习笔记』长短期记忆网络LSTM介绍的内容。 使用按 元素乘法,得出:
    『NLP学习笔记』长短期记忆网络LSTM介绍
  • 如果 遗忘门 始终为 1输入门 始终为 ​0​ , 则过去的记忆元 『NLP学习笔记』长短期记忆网络LSTM介绍 将随时间被保存并传递到当前时间步。 引入这种设计是 为了缓解梯度消失问题, 并更好地捕获序列中的长距离依赖关系。这样我们就得到了计算记忆元的流程图

『NLP学习笔记』长短期记忆网络LSTM介绍

5.3. 隐状态 Ht​

  • 最后,我们需要定义如何计算 隐状态 『NLP学习笔记』长短期记忆网络LSTM介绍, 这就是输出门发挥作用的地方。 在长短期记忆网络中,它仅仅是记忆元的 ​​tanh​​​ 的门控版本。 这就确保了 『NLP学习笔记』长短期记忆网络LSTM介绍 的值始终在区间 ​​​(−1,1)​​​ 内:
    『NLP学习笔记』长短期记忆网络LSTM介绍
  • 只要输出门接近 1 ,我们就能够有效地将所有记忆信息传递给预测部分, 而对于输出门接近 ​0​ ,我们只保留记忆元内的所有信息,而不需要更新隐状态。

『NLP学习笔记』长短期记忆网络LSTM介绍

六. 代码实战

七. 参考文献

  • 了解 LSTM 网络:https://colah.github.io/posts/2015-08-Understanding-LSTMs/
  • 李沐大神:长短期记忆网络(LSTM):https://zh-v2.d2l.ai/chapter_recurrent-modern/lstm.html