台湾大学深度学习课程 学习笔记 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表示为 function
sequence
。
Deep RNN
上面说的方法只有一个隐藏层,RNN当然也可以是多个隐藏层的Deep RNN。如下图,输出的 function
Bidirectional RNN 双向
首先从
然后再从
最后将结果 function
基本单元
详细看一下RNN中的具体重复模块中的计算方法,首先得到 softmax
计算。其中参数
以上没有考虑bias
。
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 French
,France
与French
相距较远,但关系却很近。这里就引入了LSTM。
其实LSTM的整体框架结构与普通的RNN很相似,只不过具体到每个单元上时,结构稍微复杂一些(假设一个单元就是循环中的一个神经网络结构)。
首先的区别,LSTM将RNN中的
然后,LSTM每个单元由四个不同的
如下图,将
同样的方法处理 input gate
、forget gate
、output gate
。
需要注意的是
为了更好的理解上面的内容,引入一段话:
LSTM最核心的部分是
cell state
,即图中的ct 。ct 的信息贯穿整个LSTM, 在整个前向传播的过程中只在ct 上进行一些简单的线性操作,通过gate(门)
来控制ct 中信息的增减。LSTM中有三个门,分别是
forget gate
、input gate
和output gate
, 这三个门的计算方法公式一样,都是根据xt 与ht−1 来计算, 区别在于权重矩阵和偏置不同。 ——RNN隐藏层计算之GRU和LSTM
最后,就是下一层的计算了下面的公式承载了先辈们无穷的智慧,其中
s⊙t (Hadamard积)表示两个向量的对应元素相乘,例如:[12]⊙[34]=[1∗32∗4]=[38]
为什么要用
另外,从上面公式可以看出来,从
下面是多个单元之间的样子。
当然,LSTM还有很多变种,其中一个就是在 peephole
。这样的话,在后面的计算中,
GRU
当然,RNN循环中的每个单元除了LSTM的构造,还可以有其他设计。GRU(Gated Recurrent Units)就是另一种设计。
首先,GRU只有
-
xt 与ht−1 组成新的向量,将新向量乘以处理后生成reset gate
r 和update gate
z ; -
r 与ht−1 通过公式r⊙ht−1 生成结果后,与xt 进行整合得到h′ ; - 通过公式
ht=z⊙ht−1+(1−z)⊙h′ 最终得到ht 。最后由ht 得到yt 。
LSTM与GRU比较
- 从结构图中,输入端箭头来看,LSTM中共生成了4个
z 需要4份参数 。而GRU输入端少用1份分数; - 从公式比较来看,GRU中的
update gate
其实相当于LSTM中forget gate
与input gate
的结合;
文献解读
LSTM经过各种处理后效果
下面这张图是从文章 LSTM: A Search Space Odyssey 结果中整理做出的。
图中X轴是误差,Y轴是训练时间。位于图中右上角的点,是耗时较久但效果不好的,相对较差的点。
具体每个点指的是经过不同方式处理的LSTM,经过训练后,所需时间与表现效果的关系,V代表标准的LSTM。下面是简单介绍,具体请点击上面文章链接查看。
比如右边误差较大的青色的点,对应的是NOAF
,具体含义是 “没有输出**函数”,也就是没有上面介绍的
其中,CIFG
是将input gate
与forget gate
融合到了一起,其实就是GRU,效果还不错。
下面这张图可以比较容易进行查看,柱子高度代表参数数量(参数数量决定训练时间),箱型表示效果。可以得到以下结果:
- 标准的LSTM表现效果其实还挺好的;
-
CIFG
与NP
这种简单的处理,相较于标准LSTM,对结果影响不大; - 去掉
gate
影响比较大,文章中的影响大小为forget gate
>input gate
>output gate
; - 如果把
output activation function
去掉,会导致模型几乎无法使用。
后面效果较差的基本上都是缺少了某些gate
的处理方式。
另外还讲了两篇文献, An Empirical Exploration of Recurrent Network Architectures 其实内容结果与上面讲的文献相似。
谷歌的 Neural Architecture Search with Reinforcement Learning 使用的是另一套架构,如下图。左边是普通的LSTM,右边是强化学习(Reinforcement Learning)架构。
这里老师也没有展开讲,以后有机会单独写成文献分享吧。