Advertisement

<3>LSTM(Long Short-Term Memory)原文解读

阅读量:

原文:Long Short-T erm Memory,1997

作者:Sepp Hochreiter, Jürgen Schmidhuber

1.核心问题:

通过循环神经网络学习较长时间间隔的任务通常需要很长的时间,这是因为误差在反传的过程中表现了严重的不充分与衰减(常见就是误差爆炸或者消失,对应的训练结果就是出现严重的权重震荡或者需要很长时间也无法完成训练)。LSTM提出就是为了解决上述问题。

2.时变输入循环神经网络的相关研究(这部分描述的较为简略,细节难以把握):

2.1 Gradient-Descent Variants:与backpropagation through time (BPTT) or real-time recurrent learning (RTRL) 一样受到上述问题的影响。

2.2 Time Delays neural network:基于旧的激活值的加权和去更新节点单元,对于短时的记忆网络似乎是奏效的。

2.3 Time Constant:用上一次的激活值与新的输入去加权求和,输入到网络。作者认为新的输入会扰乱原存储内容,难以做到长期记忆的功能。

2.4 Ring’s Approach:当网络节点接收到不合理的误差信息时,就会增加一个与更高节点的连接。原文:Whenever a unit in his network receives conflicting error signals, he adds a higher-order unit influencing appropriate connections.

2.5 Bengio et al.’s Approach:有限状态的期望最大法。

...

3. 误差爆炸或指数衰减

3.1 传统的BPTT算法误差爆炸或指数衰减分析

首先回顾以下BP算法的误差传导机制,概括来说,权重W的更新主要由两部分组成,分别是需更新权重的前一个节点的激活值乘以权重后一个节点所收集的误差,该误差是后一层的加权和并通过激活函数的导数进行缩放。

在时序模型中,误差的收集可由以下公式表达:

权重的更新可由如下公式表示:

假设存在两个节点u和v,两个节点之间相差时间步为q步,根据上述式子很容易得到两个节点之间所收集的误差的关系(其中l代表同一层的所有节点),这个关系也很容易理解,共由q个时间步,每次与权重相连的后一个节点都会通过加权与缩放 收集误差,故公式如下第二式子所示,显然误差的传递也完全取决于加权与缩放,即

直觉地,加权与缩放 项具有以下两种情况,经过q次连乘的结果就是得到一个很大(梯度爆炸,训练震荡难以稳定)或者很小(梯度消失)的结果:

进一步,如果激活函数采用Sigmoid函数,则其求导值 f' ≤ 0.25,当且仅当权重W取得以下值时:

加权与缩放取得最大值,换个角度,当所有的W取值小于4时,加权与缩放<1,则表现出梯度消失,尤其在初始化权重比较小的训练阶段非常明显。那么增加初始化权重呢?也不会奏效,当权重W→∞,→0,因为相关倒数归零的速度比所有权重增加的速度还要快以及一些权重在增加时会从负数穿过0点。


以下:补充一下为什么 当权重W→∞,→0?

众所周知,sigmoid函数、图像及其倒数如下:

在网络中,sigmoid函数的自变量为net,net_j = \sum w_i_j y_i,所以当权重W很大时,加权求和的结果net也会很大,即:
f=1,f'=f=0


回到原文,作者参考Hochreiter (1991) 的思路通过求取上界的方法在另一个角度更加严格地证明了梯度消失、爆炸这一个现象(在此直接跳过了)。

3.2 恒定误差流动:一种天真的想法

为了保证误差的恒定性,以一个节点为例子 。回顾一下误差的传导公式如下:

需要强制保持误差在时刻的传导中不发生变化,即需要使得:

对以上微分方程进行积分,可得:

当下一个时刻没有其他输入时,误差恒定意味着此时刻与下一个时刻的输出是保持一致的,即:

上述公式成立,必须使得激活函数为线性f=net 且权值w_j_j=1,但是事实上节点不仅仅连到自身上,还会连到别的节点,这就显然会导致了两个严重的问题:

(1)输入权重冲突:假设输入权重为w_i_j,且权重会根据误差梯度下降进行更新,那么问题来了,在时间序列中对于不同的非0输入i,这个权重是随着输入而变化呢还是保存上一次记忆的结果呢?这是一个矛盾。

(2)输出权重冲突:与上述同理;

事实上,这种现象不仅发生在长距离延时的循环神经网络,在短距离也会发生,但是在长距离这种遗忘的现象更加的明显。

4.LSTM概念(这篇文章好长,主题终于来了!!!)

首先核心的想法是:能不能通过特别的自连接而不具备上述天真想法的缺点的结构,保持恒定的误差流动呢?

4.1结构介绍

输入门(左下):保护记忆单元所储存的内容不被不相干的输入内容所干扰;

输出门(右下): 保护其他单元不被不相干的记忆单元所存储的内容所干扰;

其中net为加权求和的结果(区别在于权重不同):

中心记忆单元:记忆的内容取决于输入门的内容、记忆单元的当下输入以及记忆单元上一个状态的结果,其状态State,简写s:

最后整个模块的输出为:

4.2 为什么选择记忆门?

这要回归到第3部分的天真想法导致的输入矛盾与输出矛盾问题:如何决定保留原有的内容或者是根据新的输入去修改权重?LSTM的方法是通过输入输出们的权重学习去决定!通过输入和输出门决定哪些误差对网络影响更重要,是需要留在记忆单元,重而实现误差的稳定流动。此外,输入输出门并不是都是必须的,尤其是输出门。因为输入门就能决定哪些内容会被记忆。但是输出门也是有益处的,它能减少网络在存储长时记忆时受短时记忆的影响。怎么理解呢?在某些需要短时输出的场合,输出门可以做到屏蔽记忆单元而直接输出结果。

我的思考:虽然说这种网络理论上能够记忆很久的内容,但是一旦忘记了,就无法挽回,所以某种跳跃性的相关这种网络应该还是不能很好地处理。

4.3 网络的学习(误差传导与参数的更新)

核心是确保误差在传到过程中不被衰减,具体反向传到过程见附录A2(推导过程好长...,下次再看)

4.4 两个核心问题:

(1)滥用问题:在学习的开始阶段,误差的减少可能与内部的状态无关。使得记忆内容为常数。这将导致需要大量的时间去释放滥用的记忆。解决方法:①顺序组建网络:当网络误差停止下降时,把记忆单元与门控加入到网络中。②输出门偏置:每个输出门设置一个负数偏置,去推动初始的记忆单元激活。

(2)内部状态飘移问题:如果记忆单元的大多数输入是正或者负,将导致记忆单元的状态难以稳定。其潜在的危害是:h’(s(t))→0,导致梯度消失。解决方法:选择合适的激活函数h(x),或者简单有效地把初始化输入门的偏置为0(这将导致记忆单元在大多数的正(或负)输入得到激活,从而减少波动)。

5. 实验(工作量太顶了!)

实验1:嵌入Reber语法

实验2:噪声和无噪声序列

实验3:噪声与信号同一个通道

实验4:加法问题

实验5:乘法问题

实验6:时序提取信息

6.讨论

LSTM的缺点:

(1)不善于解决类似于强烈延时的XOR(长延时异或问题),因为这个任务是不可分解的,保存异或问题中的一个输入并不能减少误差;

(2)比传统的RNN网络多了输入输出门,意味着一个节点将需要更大的计算量;

(3)LSTM的误差传导类似于传统的前馈神经网络,需要等所有的样本输入之后再进行梯度更新;

LSTM优点:

(1)有利于长延时的误差传导;

(2)LSTM可以处理噪声、分布式表示和连续值。对比于马尔可夫模型,不需要提前设置状态;

(3)可以处理序列中位置分离较远的相关输入;

(4)LSTM能够较大范围地超参数的选择,门控机制为其做出了保障;

(5)算法复杂度为常数复杂度;


文章太长:很多细节把握不太良好,实验部分和附录并没详细叙述,文章高达40+页,内容分量很足!

全部评论 (0)

还没有任何评论哟~