递归神经网络(RNN)由于具有按照输入数据顺序递归学习的特性,目前已经成为处理序列数据的主流深度学习模型,而作为RNN的一种,长短期记忆网络(LSTM)自上世纪90年代提出以来,就一直是针对于序列问题的一个强有力的模型,其采用了门控机制(gating mechanisms),模型通过输入门和遗忘门来对历史数据进行有选择的学习,然而LSTM虽然可以“记忆”历史信息,但是却没有办法记住跨度很大的信息,这就使得它在长序列任务中的表现欠佳。
今天介绍的这篇论文Improving the Gating Mechanism of Recurrent Neural Networks,就是要让LSTM这类门控RNN能够更好地捕获长距离信息。为此,论文中提出了一种针对于门控机制的改进方法,使得改进后的门可以保留更长的记忆。特别地,由于改进的是门控机制,这就意味着它可以直接应用于各种RNN模型中,只要这些模型是采用门控机制方法来记忆信息的。该论文就将改进后的机制应用到了LSTM、GRU、ON-LSTM等模型中,特别是ON-LSTM,下文将会着重介绍这个模型与论文提出的门控机制之间的关联,建议不了解的同学可以先看一下我的这篇文章或其它相关资料,后面我就不再赘述ON-LSTM的具体细节了。
https://zhuanlan.zhihu.com/p/77086523zhuanlan.zhihu.com1. LSTM的"记忆"问题
在对LSTM进行改进之前,我们当然要先弄明白是什么原因导致了LSTM的长期“记忆”不好。LSTM的更新公式如下:
如果我们假设遗忘门的值保持在
这样看的话,似乎长期记忆的问题很好解决,我们只要通过某种方法让遗忘门
因此,对于原始LSTM模型来说,这是一个两难的问题,要想实现长期记忆,就会陷入梯度消失的困境,为了避开这个问题,就需要对模型做出一些改进,这方面的思路有很多,比如使用skip connections 和 dilations,或者加上一个额外的存储机制等等,还可以从常微分方程稳定性的角度出发,来寻找一个恰到好处的临界状态(具体可以看我这篇文章循环神经网络——反对称RNN模型介绍的论文)。而这篇论文就从改进门控机制的角度来解决这个问题,其名字中的UR分别代表了两种改进方法,分别是Uniform Gate Initialization(UGI) 和 Refine Gate,UGI解决的是第一步,它让遗忘门
2. Uniform Gate Initialization
从名字中就可以看出来,UGI做的事情其实就是对门控做初始化,从而令门控向量中值的分布符合我们的要求,通常的做法是初始化门控中线性函数
这种初始化偏置的办法并不新鲜,接下来就介绍一些相关的工作,然后再将UGI与它们做些对比。
首先是Chrono Initialization(CI) ,这是第一个用区间分布来初始化偏置的方法,CI的具体形式如下:
简单分析一下,我们知道sigmoid函数形式为
这样来看,CI做的事情其实很简单,就是让初始化后的遗忘门的衰减周期服从
为了避免超参数,也有研究者提出了下面的办法:
类似地,可以得到衰减周期D的分布为
现在计算一下UGI的衰减周期分布,若衰减周期
那么衰减周期的密度分布函数就为
总结一下,上面的这两种初始化办法都人为地引入了超参数或特定的分布,但是在对任务没有先验知识的情况下,相对来说还是UGI这种直接让
3. Refine Gate
接下来就是这篇论文的核心内容了,我们在第一节提到,只让
具体来说,论文是通过在
首先对于遗忘门
如下图所示,根据这几个条件,我们可以用图中的虚线来表示函数
这样一来,为了保证在
从这个表达式可以看出,
当然,我们也可以分别来计算上下界
将UGI和Refine Gate综合起来,我们就可以改进原有LSTM的门控机制,改进后的模型就被称为UR-LSTM,其更新公式和流程图如下所示:
图中的
将UGI和Refine Gate结合起来之后,我们需要再分析一下改进后的模型的衰减周期,根据前面的结论我们知道,
简单总结一下,通过上面的讨论可以发现,其实UGI和Refine Gate从分别两个角度对门控机制做了修改,U改变的是输入,通过增加一个偏置项来使得初始化后的门控能够兼顾到长期和短期记忆,而R修改的是输出,利用残差连接的思想,通过引入一个refine门来进行“微调”,这样就可以有效缓解“饱和”状态下的梯度消失问题。这里需要强调的一点是,U和R这两种方法,不止单单适用于遗忘门,它们可以用在任何门控函数上面,比如UGI也可以用在输入门、甚至是refine门上面,因此,UR机制对于LSTM、GRU等门控模型都是普遍适用的,而后面的实验也证实了这一点。
4. 与ON-LSTM的关系
为了表明UR机制的广泛适用性,论文还着重讨论了其与ON-LSTM之间的关联,发现其实ON-LSTM的改进方法也可以通过UR的思路(即控制分布+辅助门)来理解,接下来我们就详细讨论一下它们之间的关系。
关于ON-LSTM的推导这里就不再赘述了,直接放结果,该模型的更新公式为:
其中,我们称
首先来看ON-LSTM与UGI的相似之处,对于cummax这样的激活函数,我们知道它输出的向量是一定是从0到1单调递增的,而这其实就暗含了输出的门控向量是分布于[0,1]之间的,与UGI的直接产生[0,1]的均匀分布有类似之处。
其次来看与Refine Gate的相似之处,我们可以认为
这样一看就很清晰了,
稍微变一下ON-LSTM的公式,有
这样我们就能将
从式子中可以看出,这里的
同样,输入门也有类似的形式
另外,考虑“绑定”情况,我们有
因此,只要令
上面的讨论可以看出,ON-LSTM在很多地方都可以体现出UR机制的思想,只要对其稍作修改就可以和UR机制符合地很好,不过ON-LSTM只是隐式地涉及到了UR机制,并没有显式地表达出来,因此它也有一些不足之处:
- cummax激活函数:实验表明,当隐层比较大的时候,该激活函数似乎学习速率更慢、也更不稳定,这也是为什么ON-LSTM中引入超参数C来降低隐层的大小。不过,对于需要提取层级结构的任务(如分析句子的语法结构)来说,cummax还是有其可取之处的。
- 门控“绑定”:为了减少参数,目前比较流行的做法是将遗忘门与输入门“绑定”起来,使得
,即用来表示输入门,实验表明,这样做并不会明显降低模型性能,因此像GRU和论文的UR-LSTM都采用了这样的方式,但是ON-LSTM却并没有保证遗忘门和输入门之和接近于1(可以计算出初始化后的遗忘门与输入门平均值的期望都为,具体推导可见论文附录)。
5. 实验对比
为了证明UR机制可以有效改进门控模型的长期记忆能力,论文中做了许多对比实验,将U和R以及其它的baseline方法,做排列组合后加到了一些基础的递归核(如LSTM、GRU等)当中,由于构造的模型较多,因此用字母的组合来代表它们,具体如下表所示:
这里需要注意的是,为了符号规范,ON-LSTM改用字母组合OM-LSTM来表示,代表ordered gates + master gates,同时为了公平比较,所有模型的
- Synthetic memory 任务
这个实验比较简单直接,直接通过构造序列来考察模型的记忆能力,具体由由两个task组成:
实验结果如下图所示,其中Copy task的序列长度是500,Adding task的长度是2000
实验表明,除了标准LSTM之外的所有模型,都可以解决Adding task,但是只有OR-,UR-,O-, 和C-LSTM模型可以解决Copy task。为了进一步分析不同模型的记忆能力,论文还分析了在copy task中,这些模型的遗忘门在训练前和训练后的取值分布,具体如下所示:
从图中可以看出,虽然U-与UR-的初始化分布差不多,但是U-在在训练过程中却不能很好地令遗忘门的分布趋于1,这就使得其长期记忆能力不如UR-,另外再看标准的LSTM,可以发现它更难实现接近“饱和”的分布;而对于C-,它能解决copy task的主要原因是初始化的时候直接就是“饱和”分布了,因此很适合copy task这种需要长期记忆的任务,然而论文中也指出,如果不是这类长期记忆任务,C-的性能就会变差,因此其适用性并不广。
2. Pixel-by-Pixel Image Classification
这是一个图像分类实验,不过传统的任务不同,这里需要将图像先压成一个很长的向量,然后一个像素一个像素地输入到RNN模型当中,构造向量时可以按照直接顺序排列,如sequential CIFAR-10 (sCIFAR),也可以先按照固定的顺序打乱像素位置后再压成一个向量,如permuted MNIST (pMNIST) ;从实验设定里可以看出,为了较好地实现分类,RNN能够需要捕捉到像素之间的关联,这就要求模型要具有一定的长期记忆能力。不同模型的结果如下所示,由于很多模型的结果并不稳定,因此表中的数值代表其在最佳验证集的上的分数,数字上的星号代表模型出现发散情况的次数,越大代表发散次数越多(具体细节可见论文实验部分)
从实验结果可以看出,采用了U和R方法后,确实改进了模型的长期记忆能力。特别地,实验还发现如果采用GRU核作为递归核,模型性能还会更好,如果我们在UR-GRU的基础上, 再加上RNN中常用的Zoneout正则化技术,其性能甚至还会超过一些如Transformer之类的非递归的模型,如下图所示。
通过上面的实验,我们可以得到一些结论:首先是加上refine门的效果基本上都比加上master门的效果好;其次是CI虽然比较适合synthetic memory任务,但是在其它任务上却表现糟糕;还有cummax门确实有效,但代价是它在复杂任务上的速度比较慢;最后总的来看,还是UR-的性能最好也最稳定。
除了上面的两个实验以外,论文还做了语言模型和强化学习方面的实验,不过受限于篇幅,这里就不再介绍了,对于这些实验及其细节感兴趣的同学可以看论文的实验和附录部分,写的也很详细。
6. 总结
终于到结尾了,简单总结一下,这篇论文针对于RNN的长期记忆问题,提出了Uniform Gate Initialization 和 Refine Gate 两种改进门控机制方法,加入了UR机制之后,RNN模型既可以更好地实现长期记忆,又能够避免“饱和”状态所带来的梯度消失问题。不过更重要的是,UR机制是一种针对于门控模型的通用改进方法,它里面并没有那种针对具体任务而设置的超参数,因此在理论上采用门控机制的RNN模型都可以通过UR机制来改进,而这无疑为后续的研究提供了一个强有力的新工具。
参考资料
[1] Improving the Gating Mechanism of Recurrent Neural Networks