LSTM理解

  • Post author:
  • Post category:其他


LSTM理解

RNN结构:

在这里插入图片描述



激活函数 Tanh 作用在于帮助调节流经网络的值,使得数值始终限制在 -1 和 1 之间。

在这里插入图片描述

LSTM

LSTM同样是这样的结构,但是重复的模块拥有一个不同的结构。具体来说,RNN是重复单一的神经网络层,LSTM中的重复模块则包含四个交互的层,三个Sigmoid 和一个tanh层,并以一种非常特殊的方式进行交互。

在这里插入图片描述

上图中,σ表示的Sigmoid 激活函数与 tanh 函数类似,不同之处在于 sigmoid 是把值压缩到0~1 之间而不是 -1~1 之间。这样的设置有助于更新或忘记信息:

  • 因为任何数乘以 0 都得 0,这部分信息就会剔除掉;
  • 同样的,任何数乘以 1 都得到它本身,这部分信息就会完美地保存下来。

相当于要么是1则记住,要么是0则忘掉,所以还是这个原则:

因记忆能力有限,记住重要的,忘记无关紧要的



在这里插入图片描述

此外,对于图中使用的各种元素的图标中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表pointwise的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。

在这里插入图片描述

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

如此,0代表“不许任何量通过”,1就指“允许任意量通过”!从而使得网络就能了解哪些数据是需要遗忘,哪些数据是需要保存。

在这里插入图片描述

LSTM拥有三种类型的门结构:遗忘门/忘记门、输入门和输出门,来保护和控制细胞状态。下面,我们来介绍这三个门。



忘记门


在我们LSTM中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为“忘记门”的结构完成。该忘记门会读取上一个输出和当前输入,做一个Sigmoid 的非线性映射,然后输出一个向量(该向量每一个维度的值都在0到1之间,1表示完全保留,0表示完全舍弃,相当于记住了重要的,忘记了无关紧要的),最后与细胞状态相乘。

类比到语言模型的例子中,则是基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语,进而决定丢弃信息。

在这里插入图片描述

大部分初学的读者看到这,可能会有所懵逼,没关系,我们分以下两个步骤理解:

  • 对于上图右侧公式中的权值,准确的说其实是不共享,即是不一样的。有的同学可能第一反应是what?别急,我展开下你可能就瞬间清晰了,即:
    在这里插入图片描述
  • 至于右侧公式和左侧的图是怎样的一个一一对应关系呢?如果是用有方向的水流表示计算过程则将一目了然,上动图!红圈表示Sigmoid 激活函数,篮圈表示tanh 函数:

    在这里插入图片描述


输入门


下一步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分:

  • 第一,sigmoid层称“输入门层”决定什么值我们将要更新;
  • 第二,一个tanh层创建一个新的候选值向量,会被加入到状态中。

    下一步,我们会讲这两个信息来产生对状态的更新。

在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语,进而确定更新的信息。

在这里插入图片描述

继续分两个步骤来理解:

  1. 首先,为便于理解图中右侧的两个公式,我们展开下计算过程,即
    在这里插入图片描述
  2. 在这里插入图片描述
  3. 其次,上动图!

    在这里插入图片描述


细胞状态


现在是更新旧细胞状态的时间了,ct-t更新为ct。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。

我们把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息。接着加上it*ct_hat。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。

在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方,类似更新细胞状态。

在这里插入图片描述



在这里插入图片描述


输出门


最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。

首先,我们运行一个sigmoid层来确定细胞状态的哪个部分将输出出去。

接着,我们把细胞状态通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

在语言模型的例子中,因为他就看到了一个代词,可能需要输出与一个动词相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化,进而输出信息。

在这里插入图片描述

依然分两个步骤来理解:

  1. 展开图中右侧第一个公式,
    在这里插入图片描述
    [
  2. 最后一个动图:

    在这里插入图片描述



版权声明:本文为weixin_40479663原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。