*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

以下内容和图片均来自*大学深度学习课程。
课程地址:https://www.csie.ntu.edu.tw/~yvchen/f106-adl/syllabus.html

Review

首先复习一下 lecture3-1 Recurrent Neural Network 讲过的RNN结构。

RNN

假设现在有3个sequence表示为 x1x2x3,设定的初始化向量 h0 ;将 x1h0放入function f 中,得到 y1h1h1是和h0 维度一样的;把 x2h1 放入与之前一样的 f 中,得到结果y2h2;继续直到完成全部的sequence
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

Deep RNN

上面说的方法只有一个隐藏层,RNN当然也可以是多个隐藏层的Deep RNN。如下图,输出的 y1 结果可以和另一个初始化的向量 b0 放到另一个function f2 中,得到 c1b1 ,然后继续……
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

Bidirectional RNN 双向

首先从 x1x3 正向跑出一个结果 a1,a2,a3
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)
然后再从 x3x1 反向跑出一个结果c1,c2,c3
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)
最后将结果 a1,a2,a3c1,c2,c3 对应地放入新function f3 中,得到最终的结果 y1,y2,y3
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

基本单元

详细看一下RNN中的具体重复模块中的计算方法,首先得到 h=σ(Whh+Wix) ,再计算得到 y=σ(Woh) 。如果 y 是输出层,需要经过softmax计算。其中参数 Wh,Wi,Wo 是循环*用的。
以上没有考虑bias
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

LSTM

长短期记忆(Long Short-Term Memory, LSTM)是一种时间递归神经网络(RNN),论文首次发表于1997年。由于独特的设计结构,LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。
LSTM的表现通常比时间递归神经网络及隐马尔科夫模型(HMM)更好。 ——*

之前讲过RNN的一个局限性,在RNN循环中,往往前面的word对后面word影响很小,但有时前面的word对后面的word却起着比较重要的作用。
比如I grew up in France... I speak fluent FrenchFranceFrench相距较远,但关系却很近。这里就引入了LSTM。

其实LSTM的整体框架结构与普通的RNN很相似,只不过具体到每个单元上时,结构稍微复杂一些(假设一个单元就是循环中的一个神经网络结构)。

首先的区别,LSTM将RNN中的 h 分成了两部分,chc 变化的慢, h 变化的快。
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

然后,LSTM每个单元由四个不同的 z 经过不同的计算组合而成 。
如下图,将 xtht1 两个向量进行合并,得到一个新的向量。然后与对应的权重相乘后,使用 tanh 当做**函数,进行非线性转换,最终得到 z
同样的方法处理 zf,zi,zo,分别对应input gateforget gateoutput gate

需要注意的是 zf,zi,zo 使用的**函数是 sigmoid ,与第一个不同。
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

为了更好的理解上面的内容,引入一段话:

LSTM最核心的部分是cell state,即图中的 ctct的信息贯穿整个LSTM, 在整个前向传播的过程中只在ct上进行一些简单的线性操作,通过gate(门)来控制 ct中信息的增减。

LSTM中有三个门,分别是forget gateinput gateoutput gate, 这三个门的计算方法公式一样,都是根据xtht1来计算, 区别在于权重矩阵和偏置不同。 ——RNN隐藏层计算之GRU和LSTM

最后,就是下一层的计算了下面的公式承载了先辈们无穷的智慧,其中 含义如下:

st (Hadamard积)表示两个向量的对应元素相乘,例如:

[12][34]=[1324]=[38]

*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

为什么要用 呢? 首先多个 z 的**函数是 sigmoid 函数,这就导致它们的数据结果是在0与1之间的值。上面说过这些 z 分别代表了input gate、forget gate、output gate。通过 这种方式正好可以近似实现是或否的gate作用。从而可以决定需要forget多少上一个word的信息。
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

另外,从上面公式可以看出来,从 ct1ct 是线性的转换关系,改变较小;而从 ht1ht 是一系列非线性的复杂转换,改变较大。

下面是多个单元之间的样子。
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

当然,LSTM还有很多变种,其中一个就是在 z 的计算中加入 ct1 。把 ct1xtht1 一起合并成一个新的向量。但是在与 W 中需要与 ct1 相乘的部分是对角矩阵的形式,这种方式称为peephole。这样的话,在后面的计算中, ct1 的一个维度只影响对应的 z 的一个维度,对结果的影响是比较小的,比较不容易造成过拟合。

*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

GRU

当然,RNN循环中的每个单元除了LSTM的构造,还可以有其他设计。GRU(Gated Recurrent Units)就是另一种设计。

首先,GRU只有 h,并没有分为hc。下图中,左下角是LSTM的结构,右边较大的图是GRU的结构。

  1. xtht1 组成新的向量,将新向量乘以处理后生成reset gate rupdate gate z
  2. rht1 通过公式 rht1 生成结果后,与 xt 进行整合得到 h ;
  3. 通过公式 ht=zht1+(1z)h 最终得到 ht 。最后由 ht 得到 yt
    *大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

LSTM与GRU比较

  1. 从结构图中,输入端箭头来看,LSTM*生成了4个 z 需要4份参数 。而GRU输入端少用1份分数;
  2. 从公式比较来看,GRU中的update gate其实相当于LSTM中 forget gateinput gate 的结合;

文献解读

LSTM经过各种处理后效果

下面这张图是从文章 LSTM: A Search Space Odyssey 结果中整理做出的。
图中X轴是误差,Y轴是训练时间。位于图中右上角的点,是耗时较久但效果不好的,相对较差的点。

*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

具体每个点指的是经过不同方式处理的LSTM,经过训练后,所需时间与表现效果的关系,V代表标准的LSTM。下面是简单介绍,具体请点击上面文章链接查看。
比如右边误差较大的青色的点,对应的是NOAF ,具体含义是 “没有输出**函数”,也就是没有上面介绍的 zo
其中,CIFG 是将input gateforget gate 融合到了一起,其实就是GRU,效果还不错。
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

下面这张图可以比较容易进行查看,柱子高度代表参数数量(参数数量决定训练时间),箱型表示效果。可以得到以下结果:

  • 标准的LSTM表现效果其实还挺好的;
  • CIFGNP 这种简单的处理,相较于标准LSTM,对结果影响不大;
  • 去掉 gate 影响比较大,文章中的影响大小为 forget gate > input gate > output gate
  • 如果把output activation function去掉,会导致模型几乎无法使用。

后面效果较差的基本上都是缺少了某些gate 的处理方式。
*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

另外还讲了两篇文献, An Empirical Exploration of Recurrent Network Architectures 其实内容结果与上面讲的文献相似。
谷歌的 Neural Architecture Search with Reinforcement Learning 使用的是另一套架构,如下图。左边是普通的LSTM,右边是强化学习(Reinforcement Learning)架构。

*大学深度学习课程 学习笔记 Lecture 5-1: Gated RNN(LSTM与GRU介绍)

这里老师也没有展开讲,以后有机会单独写成文献分享吧。