五、LSTM(Long Short-Term Memory,长短时记忆网络))

1、长期依赖(Long-Term Dependencies)问题

    RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果 RNN 可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。

    有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。如图,不太长的相关信息和位置间隔:

    深度学习(DL)-- LSTM长短时记忆网络算法详解
    但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France… I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

    不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。如图,相当长的相关信息和位置间隔:

    深度学习(DL)-- LSTM长短时记忆网络算法详解

2、LSTM 网络

    Long Short Term 网络一般就叫做LSTM是一种 RNN 特殊的类型,可以学习长期依赖信息。

    LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力!

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

    如图,标准 RNN 中的重复模块包含单一的层:

    深度学习(DL)-- LSTM长短时记忆网络算法详解
    LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于 单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

    如图,LSTM 中的重复模块包含四个交互的层:

    深度学习(DL)-- LSTM长短时记忆网络算法详解
    一步一步地剖析 LSTM 解析图。现在,我们先来熟悉一下图中使用的各种元素的图标。

    深度学习(DL)-- LSTM长短时记忆网络算法详解
    在上面的图例中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表按位 pointwise 的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。

3、LSTM 的核心思想

    LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。

    细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。

    深度学习(DL)-- LSTM长短时记忆网络算法详解
    LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个 sigmoid 神经网络层和一个按位的乘法操作。
    深度学习(DL)-- LSTM长短时记忆网络算法详解
    Sigmoid 层输出0到1之间的数值,描述每个部分有多少量可以通过。0 代表“不许任何量通过”,1就指“允许任意量通过”!

    LSTM 拥有三个门,来保护和控制细胞状态。

4、逐步理解 LSTM

  • 忘记门层:

    遗忘门是以上一层的输出深度学习(DL)-- LSTM长短时记忆网络算法详解和本层要输入的序列数据深度学习(DL)-- LSTM长短时记忆网络算法详解作为输入,通过一个**函数sigmoid,得到输出为。![1深度学习(DL)-- LSTM长短时记忆网络算法详解的输出取值在[0,1]区间,表示上一层细胞状态被遗忘的概率,1是“完全保留”,0是“完全舍弃”
    语言模型的例子中来基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语
    如图,决定丢弃信息:
    深度学习(DL)-- LSTM长短时记忆网络算法详解

  • 输入门:

    输入门包含两个部分,第一部分使用sigmoid**函数,输出为深度学习(DL)-- LSTM长短时记忆网络算法详解,第二部分使用tanh**函数,输出为深度学习(DL)-- LSTM长短时记忆网络算法详解。【通俗理解:深度学习(DL)-- LSTM长短时记忆网络算法详解在RNN网络中就是本层的输出,深度学习(DL)-- LSTM长短时记忆网络算法详解是在[0,1]区间取值,表示深度学习(DL)-- LSTM长短时记忆网络算法详解中的信息被保留的程度,深度学习(DL)-- LSTM长短时记忆网络算法详解表示该层被保留的新信息】
    在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语。
    如图,确定更新的信息:
    深度学习(DL)-- LSTM长短时记忆网络算法详解
    到目前为止,深度学习(DL)-- LSTM长短时记忆网络算法详解是遗忘门的输出,控制着上一层细胞状态深度学习(DL)-- LSTM长短时记忆网络算法详解被遗忘的程度,深度学习(DL)-- LSTM长短时记忆网络算法详解为输入门的两个输出乘法运算,表示有多少新信息被保留,基于此,我们就可以把新信息更新这一层的细胞状态深度学习(DL)-- LSTM长短时记忆网络算法详解
    在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方。
    如图,更新细胞状态:

    深度学习(DL)-- LSTM长短时记忆网络算法详解

  • 输出门:

    输出门用来控制该层的细胞状态有多少被过滤。首先使用 sigmoid **函数得到一个[0,1]区间取值的深度学习(DL)-- LSTM长短时记忆网络算法详解,接着将细胞状态深度学习(DL)-- LSTM长短时记忆网络算法详解通过 tanh **函数处理后与深度学习(DL)-- LSTM长短时记忆网络算法详解相乘,即是本层的输出深度学习(DL)-- LSTM长短时记忆网络算法详解
    在语言模型的例子中,因为他就看到了一个 代词,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化。

    如图,输出信息图为:

    深度学习(DL)-- LSTM长短时记忆网络算法详解

5、LSTM 的变体

(1)双向LSTM

    双向RNN由两个普通的RNN所组成,一个正向的RNN,利用过去的信息,一个逆序的RNN,利用未来的信息,这样在时刻t,既能够使用t-1时刻的信息,又能够利用到t+1时刻的信息。一般来说,由于双向LSTM能够同时利用过去时刻和未来时刻的信息,会比单向LSTM最终的预测更加准确。下图为双向LSTM的结构。

    深度学习(DL)-- LSTM长短时记忆网络算法详解

  • 深度学习(DL)-- LSTM长短时记忆网络算法详解为正向的RNN,参与正向计算,t时刻的输入为t时刻的序列数据深度学习(DL)-- LSTM长短时记忆网络算法详解和t-1时刻的输出深度学习(DL)-- LSTM长短时记忆网络算法详解
  • 深度学习(DL)-- LSTM长短时记忆网络算法详解为逆向的RNN,参与反向计算,t时刻的输入为t时刻的序列数据深度学习(DL)-- LSTM长短时记忆网络算法详解和t+1时刻的输出深度学习(DL)-- LSTM长短时记忆网络算法详解
  • t时刻的最终输出值取决于深度学习(DL)-- LSTM长短时记忆网络算法详解深度学习(DL)-- LSTM长短时记忆网络算法详解
    (2)GRU(Gated Recurrent Unit)

    **GRU(Gated Recurrent Unit)**是LSTM最流行的一个变体,比LSTM模型要简单

    深度学习(DL)-- LSTM长短时记忆网络算法详解
    GRU包括两个门,一个重置门深度学习(DL)-- LSTM长短时记忆网络算法详解和更新门深度学习(DL)-- LSTM长短时记忆网络算法详解。这两个门的**函数为sigmoid函数,在[0,1]区间取值。

    候选隐含状态深度学习(DL)-- LSTM长短时记忆网络算法详解使用重置门深度学习(DL)-- LSTM长短时记忆网络算法详解来控制t-1时刻信息的输入,如果结果为0,那么上一个隐含状态的输出信息将被丢弃。也就是说,重置门决定过去有多少信息被遗忘,有助于捕捉时序数据中短期的依赖关系
    隐含状态使用更新门深度学习(DL)-- LSTM长短时记忆网络算法详解对上一时刻隐含状态深度学习(DL)-- LSTM长短时记忆网络算法详解和候选隐含状态深度学习(DL)-- LSTM长短时记忆网络算法详解进行更新。更新门控制过去的隐含状态在当前时刻的重要性,如果更新门一直趋近于1,t时刻之前的隐含状态将一直保存下来并全传递到t时刻,更新门有助于捕捉时序数据中中长期的依赖关系

相关文章:

  • 2021-09-27
  • 2021-11-29
  • 2022-12-23
  • 2021-10-27
  • 2022-12-23
  • 2021-05-14
猜你喜欢
  • 2021-09-23
  • 2021-08-28
  • 2021-06-11
  • 2021-05-29
  • 2022-01-13
  • 2021-06-28
相关资源
相似解决方案