《Long Short-Term Memory》翻译,Sepp Hochreiter, ¨urgen Schmidhuber.1997,9(8):1735-1780
目录
摘要
一.介绍
2.1问题
二.先前的工作
2.1梯度下降法变量
2.2时间延迟
2.3时间常数
2.4Ring的方法
2.5Bengio et al的方法
2.6卡尔曼滤波器
2.7Second Order Nets
2.8Simple Weight Guessing
2.9Adaptive Sequence Chunkers
三.常数误差反向传播
3.1指数衰减的错误
3.1.1传统BPTT(例如,Williams & Zipser, 1992)
3.1.2《Hochreiter分析大纲》(1991,第19-21页)
3.1.3直观解释3.2式。
3.1.4全局错误流
3.1.5比例因子的弱上界
3.2恒定的错误流:朴素的方法。
3.2.1 一个单元
3.2.2恒定误差通道
四.长、短时记忆的概念
4.1记忆单元和门单元
4.2为什么用门单元?
4.3网络拓扑
4.4存储单元块
4.5学习
4.6计算复杂度
4.7滥用问题与解决方案
4.8内部状态漂移和补救措施
五.实验
5.1实验一:嵌入雷伯语法。
5.1.1任务
5.1.2比较
5.1.3训练/测试
5.1.4构建网络
5.1.5结果
5.1.6输出门的重要性
5.2实验二:无噪声和有噪声序列
5.2.1任务2a:具有长时间滞后的无噪音序列
5.2.2任务2b:无本地规律
5.2.3任务2c:非常长的时间延迟-没有局部规律
5.3实验三:同一信道下的噪声与信号
5.3.1 任务3a (Two-Sequence问题)
5.3.2任务3b
5.3.3 问题3c
5.4实验4:添加问题
5.4.1任务
5.4.2构建网络
5.4.3状态漂移与初始偏差
5.4.4训练/测试
5.4.5结果
5.5实验五:乘法问题
5.5.1任务
5.5.2构造网络
5.5.3 Training/Testing
5.5.4结果
5.6实验六:时间顺序
5.6.1任务6a:两个相关的、广泛分离的符号
5.6.2任务6b:三个相关的、广泛分离的符号
5.7实验条件总结
六.讨论
6.1LSTM的局限性
6.2 LSTM的优点
七.结论
附录
A.1算法细节
A1.1向前传递
A.1.2截断反向传播的近似导数
A.1.3向后传递
A.1.4计算复杂度
A.2错误流
A.2.1无外部错误流
A.2.2内存单元内的错误流
摘要
在延长的时间间隔内通过循环反向传播学习存储信息需要很长时间,主要是因为不充足的、衰减的错误回流。我们简要回顾了Hochreiter(1991)对这个问题的分析,然后引入了一种新的、高效的、基于梯度的长短时记忆方法(LSTM)来解决这个问题。在不会造成损害的地方截去梯度,LSTM可以学会在超过1000个离散时间步骤中通过在特殊单元中通过常数误差通道执行常数误差流桥接最小时间滞后。乘法门单元学会打开和对恒定错误流的访问。LSTM在时间和空间上是局部的;其每时间步的计算复杂度和权重为O(1)。我们对人工数据的实验涉及局部、分布式、实值和噪声模式表示。与实时循环学习,基于时间的反向传播、递归级联相关、Elman网络和神经序列分块相比,LSTM带来了更多成功的运行,并且学习得更快。LSTM还解决了以前的递归网络算法从未解决的复杂的、人工的长时间滞后任务。
一.介绍
原则上,循环神经网络可以利用它们的反馈连接,以激活(短期记忆与长期记忆不同的是,长期记忆体现在慢慢改变的权重上)的形式存储最近输入事件的表示。这对于包括语音处理、非马尔可夫控制和音乐作曲(Mozer, 1992)在内的许多应用场景都具有潜在的重要意义。然而,用于学习短期记忆最广泛使用的算法要么花费太多的时间,要么根本不能很好地工作。特别是当输入和相应的教师信号之间的最小时间延迟很长的时候。虽然在理论上很迷人,现有的方法没有提供明显的实际优势,例如,在有限时间窗的前馈网络中反向传播。这篇文章回顾了这个问题的分析,并提出了补救的建议。
2.1问题
传统的基于时间的反向传播算法(BPTT;Williams & Zipser, 1992;Werbos, 1988)或实时重复学习(RTRL;1987年出版的《罗宾逊与法尔赛德》),在时间上反向流动的错误信号趋向于(1)爆炸、(2)消失;反向传播误差的时间演化指数取决于权重的大小(Hochreiter, 1991)。情况1可能导致权重振荡;在情况2中,学习克服长时间滞后需要大量的时间或根本不起作用(见第3节)。
本文介绍长短时记忆(LSTM),一种新的循环网络结构与适当的基于梯度的学习相结合的算法。LSTM的设计就是为了克服这些错误回流问题。它可以学习跨越超过1000步的时间间隔,即使在有噪声,存在不可压缩的输入序列的情况下,也不损失短时间延迟能力。这是通过一种高效的、基于梯度的算法实现的,该算法的架构强制常量(因此,既不爆炸也不消失)错误流通过特殊单元的内部状态(假设梯度计算在特定的架构点截断;但是,这不会影响长期的错误流)
第2节简要回顾了以前的工作。第3节开始概述了由Hochreiter(1991)引起的消失误差的详细分析。然后,它介绍了一个朴素的方法,常数误差反向传播的说教目的,并强调其有关信息存储和检索的问题。这些问题导致了第4节中描述的LSTM体系结构。第5节提出了大量的实验和比较与竞争的方法。LSTM的表现优于它们,而且还学会了解决其他递回网络算法无法解决的复杂人工任务。第6节讨论了LSTM的局限性和优点。附录中详细描述了算法(a .1)和显式的错误流公式(a .2)
二.先前的工作
本节重点讨论具有时变输入的递归网(相对于具有固定输入和基于固定点的梯度计算的网;例如,阿尔梅达,1987;皮内,1987)
2.1梯度下降法变量
Elman (1988), Fahlman (1991), Williams (1989), Schmidhuber (1992a), Pearlmutter(1989)的方法,以及Pearlmutter综合概述(1995)中的许多相关算法都遇到了与BPTT和RTRL相同的问题(见第1和第3节)。
2.2时间延迟
其他似乎只适用于短时间延迟的方法有时滞神经网络(Lang, Waibel, & Hinton, 1990)、基于旧激活的加权和(也见德弗里斯和普林西比,1991)的Plate的方法(Plate, 1993)。Lin等人(1996)提出了延迟网络的变种,称为NARX网络。
2.3时间常数
为了处理长时间滞后问题,Mozer(1992)使用时间常数来影响单位激活的变化(deVries和Principe 1991年的方法实际上可以被视为时滞神经网络和时间常数的混合)。然而,对于长时间滞后,时间常数需要外部微调(Mozer, 1992)。Sun, Chen和Lee的替代方法(1993)通过添加旧的激活和(比例缩放的)当前网络输入来更新一个循环单元的激活。然而,网络的输入往往会干扰存储的信息,这使得长期存储不切实际。
2.4Ring的方法
Ring(1993)也提出了一种桥接长滞后时间的方法。每当网络中的一个单元接收到相互冲突的错误信号时,他就会增加一个影响适当连接的高阶单元。尽管他的方法有时非常快,但要跨越100步的时间滞后,可能需要增加100个单元。同样,Ring的网也不能推广到看不见的延迟时间。
2.5Bengio et al的方法
Bengio、Simard和Frasconi(1994)研究了模拟退火、多重网格随机搜索、时间加权伪牛顿优化和离散误差传播等方法。他们的“锁存”和“双序列”问题与本文中的问题3a非常相似,其最小时滞为100(见实验3)。Bengio和Frasconi(1994)也提出了目标传播的期望最大化方法。对于n个所谓的状态网络,在给定的时间,它们的系统可以处于n种不同状态中的一种。(参见第5节的开头。)但是为了解决诸如添加问题(第5.4节)这样的连续问题,他们的系统将需要一个不可接受的状态数量(即,状态网络)。
2.6卡尔曼滤波器
Puskorius和Feldkamp(1994)使用卡尔曼滤波技术来提高循环网络性能,由于他们使用了“一个强加于过去动态导数的影响指数衰减的导数折现因子”,没有理由相信他们的卡尔曼滤波训练的递归网络对于非常长的最小时间延迟是有用的。
2.7Second Order Nets
我们将看到LSTM使用乘法单位(MUs)来保护错误流免受不必要的扰动。不过,这并不是第一个使用MUs的循环网络方法。例如,Watrous和Kuhn(1992)在二阶网中使用MUs。与LSTM有一些不同:(1)Watrous和Kuhn的架构没有强制执行恒定的错误流,并且不是用来解决长时间滞后问题的;(2)它具有完全连通的二阶sigma-pi单位,而LSTM体系结构的MUs只用于固定错误流的门访问;(3) Watrous和Kuhn算法每个时间步花费O(w2)次操作,我们的算法只有O(W),其中W是权重的数量。参见Miller和Giles(1993)关于MUs的更多工作。
2.8Simple Weight Guessing
为了避免基于梯度的方法的长时间滞后问题,我们可以简单地随机初始化所有网络权值,直到得到的网络恰好能正确地分类所有训练序列。事实上,最近我们发现(Schmidhuber & Hochreiter, 1996;Hochreiter & Schmidhuber, 1996, 1997),简单的重量猜测解决了Bengio等人的许多问题 (1994)。Bengio和Frasconi (1994), Miller和Giles(1993),以及Lin等人(1996)比这些作者提出的算法更快。这并不意味着权重猜测是一个好的算法。它只是意味着问题很简单。更现实的任务需要许多自由参数(例如,输入权重)或高权重精度(例如,连续值参数),这样猜测就变得完全不可行。
2.9Adaptive Sequence Chunkers
Schmidhuber的分层分块系统(1992b, 1993)确实具有弥合任意时间滞后的能力,但只有在导致时间滞后的子序列存在局部可预测性的情况下(另见Mozer, 1992)。例如,在他的博士后论文中,Schmidhuber(1993)使用分层循环网来快速解决某些语法学习任务,这些任务涉及最小的时间延迟,超过1000步。然而,分块系统的性能随着噪声水平的增加和输入序列的可压缩性降低而下降。LSTM没有这个问题。
三.常数误差反向传播
3.1指数衰减的错误
3.1.1传统BPTT(例如,Williams & Zipser, 1992)
输出单元k在t时刻的目标用dk(t)表示。采用均方误差,k的误差信号为
其中
是一个附带有差别激活函数fi的非输入单元i的激活,
为单位i的当前网络输入,wij为单位j到单位i连接上的权值。某非输出单位j的反向传播误差信号为
wjl的总权值更新对应的贡献为αϑj(t)yl(t−1),其中α为学习率,l表示与单位j相连的任意单位。
3.1.2《Hochreiter分析大纲》(1991,第19-21页)
假设我们有一个完全连通的网络,它的非输入单元指标从1到n。让我们关注从单位u到单位v的局部错误流(稍后我们将看到分析立即扩展到全局错误流)。在时间步长t时发生在任意单位u的误差,在q时间步长时传播回任意单位v,这将使误差按以下因素缩放:
当lq = v, l0 = u时,得到:
(用归纳法证明)。nq−1项Qq m=1 f 0lm (netlm (t−m))wlmlm−1的和决定了总的错误回流(注意,由于求和项可能有不同的符号,增加单位n的数量不一定会增加错误流)
3.1.3直观解释3.2式。
如果
对于所有m(可能发生的情况,例如线性flm),最大的乘积与q呈指数增长。也就是说,误差爆炸,到达单位v的相互冲突的误差信号会导致权值振荡和不稳定的学习(关于误差爆炸或分叉,也参见Pineda, 1988;巴尔迪和皮内达,1991;没有事情,1992)。另一方面,如果
对于所有m,最大的乘积随q呈指数下降。也就是说,误差消失了,在可接受的时间内什么也学不到。
如果flm是logistic sigmoid函数,那么f0lm的最大值为0.25。如果ylm−1是常数且不等于零,则| f 0lm (netlm)wlmlm−1|取最大值,其中
上式在|wlmlm−1|→∞时趋近于0,在|wlmlm−1| < 4.0(例如,最大权值wmax小于4.0)趋近于1.0。因此,对于传统的logistic sigmoid激活函数,只要权重的绝对值低于4.0,误差流就趋于消失,特别是在训练阶段的开始。一般来说,使用更大的初始权值不会有帮助,尽管如上所示,对于|wlmlm−1|→∞,相关导数比绝对权值的增长“更快”地趋于零(同时,一些权值将不得不通过越过零来改变其符号)。同样,提高学习率也没有帮助;它不会改变远程误差流和近程误差流的比值。BPTT对最近的干扰太敏感了。(1994年,Bengio等人提出了一个非常相似的、更近的分析。)
3.1.4全局错误流
上面的局部误差流分析立即表明全局误差流也消失了。要看这个,计算一下
3.1.5比例因子的弱上界
下面,略微扩展的消失误差分析也考虑了单位数n。对于q > 1,方程3.2可以改写为
其中权值矩阵W定义为[W]ij:= wij, v的出方向权值向量W v定义为[W v]i:= [W]iv = wiv, u的入方向权值向量W uT定义为[W uT]i:= [W]ui = wui,对于m = 1,…, q, F0(t−m)为一阶导数的对角矩阵,定义为[F0(t−m)]ij:= 0i fi 6= j,否则为[F0(t−m)]ij:= f 0i (neti(t−m))。这里T是转置算子,[A]ij是矩阵A的第i列第j行元素,[x]i是向量x的第i个分量。
利用与向量范数k·kx相容的矩阵范数k·kA,我们定义
得到如下不等式:
这种不平等源于
以及
其中ek为单位向量,除KTH分量为1外,其余分量均为0。注意,这是一个弱的、极端的上界;只有当所有kF0(t−m)kA都取最大值,并且错误从单位u回流到单位v的所有路径的贡献都有相同的符号时,才会达到。然而,大的kW kA通常会导致kF0(t−m)kA的小值,这已被实验证实(如Hochreiter, 1991)。
例如,规范
以及
我们有f0max = 0.25的logistic s型方程。我们观察到如果
则kW kA≤nwmax < 4.0将导致指数衰减。设τ:=±wmax4.0ⅳ< 1.0,得到
我们参考Hochreiter(1991)的其他结果。
3.2恒定的错误流:朴素的方法。
3.2.1 一个单元
为了避免消失的错误信号,我们如何实现恒定的错误流通过一个单一的单元j与自己的单一单元连接?根据上述规则,在t时刻,j的局部错误回流为ϑj(t) = f 0j (netj(t))ϑj(t + 1)wjj。要强制恒定的错误流通过j,我们需要
请注意与Mozer的固定时间常数系统(1992)的相似之处——时间常数1.0适用于潜在的无限时间延迟。
3.2.2恒定误差通道
对上面的微分方程积分,得到
对于任意netj (t)。这意味着fj必须是线性的,单位j的激活必须保持不变:
在实验中,通过使用恒等函数fj: fj(x) = x,∀x,设置wjj = 1.0来保证这一点。我们称之为恒定误差通道(CEC)。CEC将是LSTM的核心特征(见第4节)。
当然,单位j不仅会与自身相连,还会与其他单位相连。这引发了两个明显的相关问题(也是所有其他基于梯度的方法所固有的):
1.输入权值冲突
为了简单起见,我们只关注一个额外的输入权值wji。假设可以通过打开单位j来响应某个输入并使其长时间处于激活状态(直到它有助于计算出所需的输出)来减少总误差。假设i非零,由于必须使用相同的传入权值来存储某些输入和忽略其他输入,wji在这段时间内经常会收到冲突的权值更新信号(回想一下j是线性的)。
这些信号将试图使wji参与(1)存储输入(通过打开j)和(2)保护输入(通过防止j被不相关的后续输入关闭)。这种冲突使学习变得困难,并需要一种更上下文敏感的机制来通过输入权重控制写操作。
2.输出权值冲突
假设j被打开,并且当前存储了一些以前的输入。为了简单起见,让我们关注一个额外的输出权值wkj。必须使用相同的wkj在某些时候检索j的内容,并在其他时候防止j干扰k。只要单元j不为零,wkj就会吸引序列处理过程中产生的冲突权值更新信号。这些信号会试图使wkj参与访问存储在j中的信息,并在不同的时间保护单元k不受j的干扰。例如,在许多任务中,存在某些短时间延迟的错误,可以在早期训练阶段减少。然而,在后来的训练阶段,j可能突然开始在已经被控制的情况下,通过试图参与减少更困难的长时间滞后错误,造成可避免的错误。同样,这种冲突使学习变得困难,需要一种更上下文敏感的机制来通过输出权重控制读操作。
当然,输入和输出权重冲突不是针对长时间滞后的;它们发生的时间也很短。然而,它们的影响在长时间滞后的情况下特别明显。随着时间滞后的增加,存储的信息必须在越来越长的时间内免受干扰,而且,特别是在高级学习阶段,越来越多已经正确的输出也需要免受干扰。
由于所提出的问题,朴素的方法不能很好地工作,除非是在某些涉及局部输入-输出表示和非重复输入模式的简单问题的情况下(参见Hochreiter, 1991;Silva, Amarel, Langlois, & Almeida, 1996)。下一节将展示如何正确地做到这一点。
四.长、短时记忆的概念
4.1记忆单元和门单元
为了构建一个允许通过特殊的自连接单元进行恒定误差流的体系结构,而不存在原始方法的缺点,我们通过引入额外的特性,扩展了3.2节中自连接线性单元j所体现的CEC。引入乘法输入门单元来保护存储在j中的存储内容不受无关输入的干扰,引入乘法输出门单元通过存储在j中的当前无关存储内容来保证其他单元不受干扰。
由此产生的更复杂的单元被称为存储单元(参见图1)。第j个存储单元记为cj。每个存储单元围绕一个具有固定自连接(CEC)的中央线性单元构建。除了netcj之外,cj从一个乘性单元outj(输出门)和另一个乘性单元inj(输入门)获得输入。Inj在t时刻的激活用yinj(t)表示,outj用youtj(t)表示。我们有
其中
而
图1:存储单元cj(盒子)及其门单元inj, outj的结构。自循环连接(权重为1.0)表示延迟为1个时间步长的反馈。它奠定了CEC的基础。门单元打开和关闭进入CEC的通道。详见正文和附录A.1。
我们也能得出
求和索引u可以代表输入单元、门单元、存储单元,甚至传统的隐藏单元(如果有的话)(参见4.3节)。所有这些不同类型的单元都可以传递有关网络当前状态的有用信息。例如,一个输入门(输出门)可以使用来自其他存储单元的输入来决定是否在其存储单元中存储(访问)某些信息。甚至可能会有像wcjcj这样反复出现的自我连接。网络拓扑由用户定义。参见图2中的示例。
在时刻t, cj的输出ycj(t)计算为
其中内态scj(t)在
可微函数g压制netcj;可微函数h从内部状态scj计算内存单元输出。
思考:引入乘法输入门单元来保护存储在j中的存储内容不受无关输入的干扰,引入乘法输出门单元通过存储在j中的当前无关存储内容来保证其他单元不受干扰。是如何实现不受干扰的?
分析结果:
g和yin构成对存储单元cj的修改函数,训练后yin变得智能,可以筛选g的数据。输出门训练后yout可以决定是否输出存储的内容。
4.2为什么用门单元?
为了避免输入权值冲突,inj控制到内存单元cj的输入连接wcji的错误流。为了避免cj的输出权重冲突,outj控制单位j输出的错误流连接。也就是说,网络可以通过inj来决定何时保留或覆盖记忆细胞cj中的信息,通过outj来决定何时访问记忆细胞cj,以及何时防止其他单元被cj干扰(见图1)。
图2:有八个输入单元,四个输出单元和两个大小为2的存储单元块的网络示例。In1标记输入门,out1标记输出门,cell1/block1标记块1的第一存储单元。cell1/block1的架构与图1相同,门单元在1和出1(注意,将图1逆时针旋转90度,它将与图2对应的部分匹配)。该示例假设密集连接:每个门单元和每个存储单元看到所有非输出单元。然而,为了简单起见,每一层只显示一种单元的输出权值。使用高效的截断更新规则,错误仅通过连接到输出单元,并通过单元块内固定的自连接(此处未显示;一旦错误流“想”离开存储单元或门单元,错误流就会被截断。因此,上面所示的连接不会将错误传播回连接产生的单元(除了输出单元的连接),尽管连接本身是可以修改的。这就是为什么截断LSTM算法如此高效的原因,尽管它能够弥合很长时间的滞后。详见正文和附录。图2显示了实验6a使用的体系结构;只有非输入单元的偏差被忽略。
存储单元CEC中的错误信号不能改变,但是不同的错误信号(在不同的时间)通过输出门进入存储单元可能会被叠加。输出门必须知道是哪一个错误陷阱在其CEC通过适当的缩放。输入门必须学会何时释放错误,同样是通过适当地缩放它们。本质上,乘法门单元打开和关闭通过CEC的恒定错误流。
分布式输出表示通常需要输出门。然而,这两种门类型并不总是必要的;一个就够了。例如,在第5节的实验2a和2b中,可能只使用输入门。事实上,在本地输出编码的情况下,输出门是不需要的;通过简单地将相应的权值设置为零,可以防止存储单元干扰已经学习的输出。然而,即使在这种情况下,输出门也是有益的:它们可以防止网络试图存储长时间滞后的记忆(这些记忆通常很难学习),而干扰表示容易学习的短时间滞后记忆的激活。(例如,这将在实验1中被证明是非常有用的。)
4.3网络拓扑
我们使用的网络有一个输入层、一个隐藏层和一个输出层。(完全)自连接隐藏层包含存储单元和相应的门单元(为了方便起见,我们将存储单元和门单元都称为位于隐藏层)。所述隐藏层还可以包含提供到门单元和存储单元的输入的常规隐藏单元。所有层中的所有单元(门单元除外)都有直接连接(作为输入)到上面层中的所有单元(或所有更高的层;参见实验2a和2b)。
4.4存储单元块
共享相同的输入门和相同的输出门的S存储单元形成一种称为S大小的存储单元块的结构。与传统的神经网络一样,在单个细胞内对分布式输入进行编码并不是那么容易。由于每个存储单元块与单个存储单元(即两个)具有相同数量的门单元,因此块结构甚至可以更高效一些。大小为1的存储单元块只是一个简单的存储单元。在第5节的实验中,我们将使用不同大小的存储单元块。
4.5学习
我们使用RTRL的一种变体(例如,Robinson & Fallside, 1987),它考虑了由输入和输出门引起的改变的乘法动力学。为了确保通过内存细胞内部状态的非衰减误差反向传播,就像使用被truncated的BPTT(例如,Williams & Peng, 1990),到达内存细胞网络输入(对于细胞cj,这包括netcj, netinj, netoutj)的误差不会在时间上进一步向后传播(尽管它们确实会改变传入的权重)。只有在记忆细胞内,错误通过以前的内部状态scj.2传播回来可视化。一旦错误信号到达存储单元的输出,它将被输出门激活和h0缩放。然后它在内存单元的CEC中,在那里它可以无限地回流而不需要缩放。当它通过输入门和g离开存储单元时,它被输入门激活和g0再次缩放。然后,它用于在截断之前改变传入的权重(公式见附录)。
4.6计算复杂度
与Mozer的聚焦循环反向传播算法(Mozer, 1989)一样,只有导数∂scj/∂需要存储和更新。因此LSTM算法非常高效,更新复杂度为O(W),其中W表示权重数(详见附录)。因此,完全循环网络的LSTM和BPTT在每个时间步上都有相同的更新复杂度(而RTRL的更糟)。然而,与完全BPTT不同的是,LSTM在空间和时间上是局部的:3不需要将序列处理期间观察到的激活值存储在一个潜在的无限大小的堆栈中。
4.7滥用问题与解决方案
在学习阶段的开始阶段,减少错误是可能的,而不需要长期存储信息。因此,网络将倾向于滥用记忆细胞,例如,作为偏差细胞(它可能使它们的激活恒定,并使用传出连接作为其他单位的适应阈值)。潜在的困难在于,释放被滥用的记忆细胞可能需要很长时间,使它们能够用于进一步的学习。如果两个存储单元存储相同(冗余)的信息,就会出现类似的“滥用问题”。对于滥用问题,至少有两种解决方案:(1)顺序网络构造(例如,Fahlman, 1991):当错误停止减少时,在网络中添加一个记忆单元和相应的门单元(见第5节的实验2);(2)输出门偏置:每个输出门得到一个负的初始偏置,使初始记忆单元激活趋近于零。带有更多负面偏见的记忆细胞会在稍后自动被“分配”(参见第5节的实验1、3、4、5和6)。
4.8内部状态漂移和补救措施
如果记忆细胞cj的输入主要是正的或负的,那么它的内部状态sj将会随着时间的推移而漂移。这是潜在的危险,因为h0(sj)将采用非常小的值,梯度将消失。解决这个问题的一种方法是选择一个合适的函数h。但是,例如h(x) = x,其缺点是存储单元输出范围不受限制。在学习之初解决漂移问题的简单而有效方法是将输入门的输入偏置为零。虽然在h0(sj)与yinj和f0inj的大小之间存在权衡,但与漂移效应相比,输入栅偏置的潜在负面影响可以忽略不计。对于logistic s型激活函数,初始偏差似乎不需要微调,这在5.4节的实验4和实验5中得到了证实。
五.实验
哪些任务适合演示一个新的长时间延迟算法的质量?首先,对于所有的训练序列,相关输入信号和相应的教师信号之间的最小时间滞后必须很长。
事实上,许多以前的递归网络算法有时设法从非常短的训练序列推广到非常长的测试序列(参见,例如,Pollack, 1991)。但是一个真正的长时间滞后问题在训练集中没有任何短时间滞后的例子。例如,Elman的培训程序,BPTT,离线RTRL,在线RTRL,以及其他在真正的长时间滞后问题上失败得很惨。(参见Hochreiter, 1991;不好,1992)。第二个重要要求是,任务应该足够复杂,以至于不能通过随机权重猜测等简单策略快速解决。
最近我们发现(Schmidhuber & Hochreiter, 1996;Hochreiter & Schmidhuber, 1996, 1997),在以前的工作中使用的许多长时间滞后的任务,可以通过简单的随机权重猜测比提出的算法更快地解决。例如,猜谜法解决了本吉奥和弗拉斯科尼的平价问题(1994)的变体,比本吉奥等人(1994)和本吉奥和弗拉斯科尼(1994)测试的七种方法要快得多。米勒和贾尔斯的一些问题(1993)也是如此。当然,这并不意味着猜测是一个好的算法。这只是意味着以前使用过的一些问题并不是非常适合用来证明以前提出的算法的质量。
我们所有的实验(实验1除外)都涉及较长的最小时间延迟;没有短时间滞后的训练范例来促进学习。
我们大多数任务的解在权重空间中是稀疏的。它们要么需要很多参数和输入,要么需要很高的权重精度,这样随机的权重猜测就变得不可行的了。
我们总是使用在线学习(而不是批量学习)和逻辑s型函数作为激活函数。对于实验1和2,初始权值选择在[−0.2,0.2]范围内,其他实验选择在[−0.1,0.1]范围内。训练序列是根据各种任务描述随机生成的。与附录A.1的表示法略有不同的是,每个输入序列的每个离散时间步骤涉及三个处理步骤:(1)利用电流输入设置输入单元,(2)计算隐藏单元(包括输入门、输出门、记忆单元)的激活,(3)计算输出单元的激活。除实验1、2a、2b外,序列元素均为在线随机生成,仅在序列末端产生误差信号。网络激活在每个被处理的输入序列之后被重置。
对于与由梯度下降法教授的递归网的比较,我们只给出RTRL的结果,除了比较2a,其中也包括BPTT。
但是请注意,未截断的BPTT(参见Williams & Peng, 1990)计算的梯度与脱机RTRL完全相同。由于长时间滞后的问题,离线RTRL(或BPTT)和在线版本的RTRL(没有激活重置,在线体重变化)会导致几乎相同的阴性结果(Hochreiter, 1991;参见Mozer, 1992)。这是因为离线RTRL、在线RTRL和全BPTT都严重遭受指数误差衰减。
我们的LSTM体系结构的选择相当随意。如果对一个给定问题的复杂性一无所知,一个更系统的方法将是:从一个由一个存储单元组成的非常小的网络开始。如果这不起作用,可以尝试两个单元格,以此类推。或者,使用顺序网络构造(例如,Fahlman, 1991)。
以下是实验大纲:
实验1关注循环网的标准基准测试:嵌入Reber语法。由于它允许有短时间滞后的训练序列,所以它不是一个长时间滞后的问题。我们之所以包含它,是因为它提供了一个很好的示例,其中LSTM的输出门是真正有益的,而且它是许多作者使用过的循环网的流行基准。我们希望至少包括一个实验,其中传统的BPTT和RTRL不会完全失败(然而,LSTM明显优于它们)。嵌入的Reber语法的最小时间延迟代表了一种边界情况,在这种意义上,它仍然有可能学会用传统算法连接它们。只要稍微长一点的最小时间延迟,这几乎是不可能的。然而,本文中更有趣的任务是RTRL、BPTT和其他方法根本无法解决的任务。
实验2侧重于无噪声和噪声序列,涉及大量的输入符号,从少数重要的符号分心。最困难的任务(任务2c)包括数百个随机位置的干扰符号和最小的1000步时间延迟。LSTM解决它;BPTT和RTRL在10步最小时间延迟的情况下已经失败(另见Hochreiter, 1991;不好,1992)。因此,在剩下的更复杂的实验中,RTRL和BPTT被省略了,这些实验都涉及到更长的时间延迟。
实验3解决了噪声和信号在同一输入线上的长时间滞后问题。实验3a和3b集中于Bengio等人1994年的两序列问题。由于这个问题可以通过随机权重猜测快速解决,我们还包括一个难度大得多的两序列问题(实验3c),该问题需要学习给定输入的噪声目标的实值条件期望。
实验4和5涉及分布式的连续值输入表示,并要求学习在很长一段时间内存储精确的实值。相关的输入信号可以出现在输入序列中相当不同的位置。同样,最小的时间延迟包含数百个步骤。类似的任务从来没有解决其他递归网络算法。
实验6涉及到一种不同的复杂类型的任务,这也是其他递归网络算法无法解决的。同样,相关的输入信号可以出现在输入序列中完全不同的位置。实验表明,LSTM能够提取出广泛分离输入的时间顺序所传递的信息。
第5.7节提供了两个表中实验条件的详细总结,以供参考。
5.1实验一:嵌入雷伯语法。
5.1.1任务
我们的第一个任务是学习嵌入的Reber语法(Smith & Zipser, 1989;cleeremanans, Servan-Schreiber, & McClelland, 1989;Fahlman, 1991)。由于它允许具有短时间延迟(只有9步)的训练序列,所以它不是一个长时间延迟问题。我们包含它有两个原因:(1)它是许多作者使用的流行的循环净基准测试,我们希望至少有一个RTRL和BPTT不会完全失败的实验,(2)它很好地展示了输出门是如何有益的。
从图3中有向图最左边的节点开始,符号字符串通过跟随边(并将相关的符号附加到当前字符串)顺序生成(从空字符串开始),直到到达最右边的节点(Reber语法子字符串类似地从图4中生成)。如果有选择,则随机选择边(概率为0.5)。网络的任务是读取字符串,每次一个符号,并预测下一个符号(错误信号在每个时间步骤发生)。要预测前一个符号,网络必须记住第二个符号。
5.1.2比较
我们将LSTM与Elman训练程序(ELM)训练的Elman网进行比较(结果来自Cleeremans等人,1989年),Fahlman的循环级联相关(RCC)(结果来自Fahlman,(1991)和RTRL(结果来自Smith & Zipser, 1989),其中只列出了少数成功的试验)。Smith和Zipser通过增加短时间滞后例子的概率,实际上使任务变得更容易。我们没有为LSTM这样做。
图3:Reber语法的转换图。
图4:嵌入Reber语法的转换图。每个框代表Reber语法的一个副本(参见图3)。
5.1.3训练/测试
我们使用本地输入-输出表示(七个输入单元,七个输出单元)。在Fahlman之后,我们使用了256个训练字符串和256个单独的测试字符串。训练集随机生成;训练范例是从训练集中随机选取的。测试序列也是随机生成的,但是训练集中已经使用的序列不用于测试。字符串显示之后,所有激活都用零重新初始化。如果测试集和训练集中所有序列的所有字符串符号都被正确预测,即,如果与可能的下一个符号相对应的输出单元总是最活跃的,则认为试验成功。
5.1.4构建网络
RTRL、ELM和RCC的架构在上面列出的参考文献中有报告。对于LSTM,我们使用3(4)个存储单元块。每个块有两个(一个)存储单元。输出层的唯一传入连接来自于存储单元。每个存储单元和每个门单元接收来自所有存储单元和门单元的传入连接(隐藏层完全连接;更少的连通性也可以)。输入层与隐藏层中的所有单元都有转发连接。门单元是有偏差的。这些体系结构参数使存储至少三个输入信号变得容易(使用体系结构3-2和4-1来获得两个体系结构的可比较权重数:264用于4-1和276用于3-2)。不过,其他参数也可能是合适的。所有的sigmoid函数都是逻辑的,输出范围[0,1],除了h,它的范围是[−1,1],g,它的范围是[−2,2]。所有的权值都初始化为[−0.2,0.2],除了输出门偏差,它们分别初始化为−1,−2和−3(参见滥用问题,第4节的解决方案2)。我们尝试了0.1,0.2和0.5的学习率。
5.1.5结果
我们使用三种不同的、随机生成的训练集和测试集。对于每一对这样的组合,我们用不同的初始权重进行10次试验。结果见表1(30次试验平均值)。与其他方法不同,LSTM总是学会解决任务。即使我们忽略了其他方法的失败试验,LSTM学习的速度也要快得多。
5.1.6输出门的重要性
实验提供了一个很好的例子,输出门是真正有益的。学习存储第一个T或P不应该干扰表示原始Reber语法更容易学习的转换的激活。这是输出门的工作。没有输出门,我们无法实现快速学习。
表1:实验1:嵌入Reber语法。
注:RTRL成功前的成功试验百分比和序列呈现数(结果来自Smith & Zipser, 1989), Elman程序训练的Elman网络(结果来自Cleeremans等人,1989),循环级联相关(结果来自Fahlman, 1991),以及我们的新方法(LSTM)。前四行的权重数字为估算值,相应的论文没有提供所有的技术细节。
只有LSTM几乎总是学会解决任务(150次试验中只有2次失败)。即使我们忽略了其他方法的失败试验,LSTM的学习速度也要快得多(最下面一行所需的训练示例数量在3800到24100之间变化)。
5.2实验二:无噪声和有噪声序列
5.2.1任务2a:具有长时间滞后的无噪音序列
有p + 1个可能的输入符号表示a1,…, ap−1,ap = x, ap+1 = y ai由p+1维向量局部表示,其第i个分量为1(所有其他分量均为0)。一个有p+1输入单元和p+1输出单元的网络依次观察输入符号序列,每次一个,永久地试图预测下一个符号;错误信号发生在每个时间步。为了强调长时间滞后问题,我们使用一个只由两个非常相似的序列组成的训练集:(y, a1, a2,…, ap−1,y)和(x, a1, a2,…), ap−1,x),每一个都以0.5的概率被选择。为了预测最后一个元素,网络必须学会存储p个时间步的第一个元素的表示。
我们比较了全循环网络(RTRL)、时间反向传播(BPTT)、有时非常成功的两网神经序列分块(CH;Schmidhuber, 1992b)和我们的新方法(LSTM)。在所有情况下,权重初始化为[−0.2,0.2]。由于计算时间有限,500万序列演示后停止训练。一个成功的运行是满足以下条件:训练后,在连续的10000个随机选择的输入序列中,所有输出单元的最大绝对误差始终低于0.25。
表2:任务2a:成功试验的百分比和直到成功的训练序列的数量。
注:表项为18次试验平均值。在100个时间步延迟的情况下,只有CH和LSTM获得了成功的试验。即使我们忽略了其他方法的失败试验,LSTM学习的速度也要快得多。
架构
RTRL:一个自循环隐藏单元,p + 1个非循环输出单元。
每一层与下面的所有层都有连接。所有单位使用逻辑斯蒂激活函数sigmoid在[0,1]。
BPTT:与RTRL培训的体系结构相同。
CH:两个网络架构都像RTRL的,但是一个有一个额外的输出来预测另一个的隐藏单元(详见Schmidhuber, 1992b)。
LSTM:与RTRL一样,但是隐藏单元被一个存储单元和一个输入门(不需要输出门)取代。G为logistic s型函数,h为恒等函数h: h(x) = x,∀x。一旦错误停止减少,存储单元和输入门就被添加(参见滥用问题:第4节中的解决方案1)。
结果。使用RTRL和较短的四步延迟(p = 4), 7/9的试验是成功的。当p = 10时,没有试验成功。由于时间滞后较长,只有神经序列chunker和LSTM获得了成功的试验;BPTT和RTRL失败。当p = 100时,两净序列分块器仅在三分之一的试验中解决了这个问题。然而,LSTM总是学会解决这个问题。仅比较成功的试验,LSTM学习得更快。
详见表2。然而,应该提到的是,分层分块器也总是可以快速解决这个任务(Schmidhuber, 1992c, 1993)。
5.2.2任务2b:无本地规律
在任务2a中,分块器有时会学习正确预测最后一个元素,但仅仅因为输入流中允许压缩序列的可预测局部规则。在一个更困难的任务中,涉及到更多不同的可能序列,我们通过替换确定性子序列(a1, a2,…)来消除可压缩性。, ap−1)的随机子序列(长度为p−1)按字母表a1, a2,…ap−1。我们得到两个类(两组序列){(y, ai1, ai2,…, aip−1,y) | 1≤i1, i2,…, ip−1≤p−1}和{(x, ai1, ai2,…), aip−1,x) | 1≤i1, i2,…, ip−1≤p−1}。同样,每一个序列元素都必须被预测。然而,唯一完全可预测的目标是发生在序列末端的x和y。训练样本从两个类中随机抽取。结构和参数与实验2a相同。一个成功的运行是满足以下条件:训练后,在连续的10000个随机选择的输入序列中,所有输出单元在序列末端的最大绝对误差小于0.25。
结果。正如预期的那样,分块程序未能解决这个任务(当然,BPTT和RTRL也是如此)。然而,LSTM总是成功的。平均而言(18次试验的平均值),在5680次序列展示后,p = 100获得成功。这表明LSTM不需要序列规律就能很好地工作。
5.2.3任务2c:非常长的时间延迟-没有局部规律
这是本小节中最困难的任务。据我们所知,没有其他的递归网络算法可以解决这个问题。现在有p + 4种可能的输入符号表示a1,…,ap−1,ap,ap + 1 = e, ap + 2 = b, ap + 3 = x, ap + 4 = y a1,。ap也被称为分心符号。同样,ai由p + 4维向量局部表示,其第i个分量为1(其他所有分量均为0)。带有p + 4个输入单元和2个输出单元的网络依次观察输入符号序列,每次观察一个。训练序列从两个非常相似的序列子集{(b, y, ai1, ai2,…)的并集中随机选择。, aiq+k, e, y) | 1≤i1, i2,…, iq+k≤q}和{(b, x, ai1, ai2,…, aiq+k, e, x) | 1≤i1, i2,…, iq+k≤q}。为了生成训练序列,我们随机生成长度为q + 2的序列前缀,随机生成概率为9/10的附加元素(6= b, e, x, y)的序列后缀,或者随机生成概率为1/10的e。在后一种情况下,我们用x或y结束序列,这取决于第二个元素。对于给定的k,这导致长度为q + k + 4的可能序列的均匀分布。最小序列长度为q + 4;期望长度为
元素ai 1≤i≤p在序列中出现的期望次数为(q + 10)/p≈q p。目标是预测最后一个符号,它总是出现在“触发符号”e之后。错误信号只早序列末尾产生。为了预测最后一个元素,网络必须学会存储第二个元素的表示,至少q + 1个时间步(直到它看到触发符号e)。成功定义为两个输出单元的预测误差(对于最终序列元素)始终低于0.2,对于连续的10,000个随机选择的输入序列。
表3:任务2c:具有V非常长的最小时间延迟q + 1和大量噪声的LSTM。
注:p为可用的干扰符号数(p + 4为输入单元数)。Q /p是给定的干扰符号在序列中出现的预期次数。最右边的一列列出了LSTM所需的训练序列的数量(BPTT、RTRL和其他竞争者没有机会解决这个任务)。如果我们让干扰符号(和权重)的数量与时间延迟成比例增长,学习时间增长非常缓慢。下面的方块说明了由于分心符号的频率增加而导致的预期放缓。
架构/学习。网络有p + 4个输入单元和2个输出单元。权重在[−0.2,0.2]中初始化。为了避免由于不同的权值初始化带来的太多学习时间方差,隐藏层获得两个存储单元(两个大小为1的单元块,尽管一个单元块就足够了)。没有其他隐藏单位。输出层只接收来自存储单元的连接。存储单元和门单元接收来自输入单元、存储单元和门单元的连接(隐藏层完全连接)。不使用偏置权重。H和g是逻辑s型,输出范围分别为[−1,1]和[−2,2]。学习率为0.01。注意最小时间延迟是q+ 1;网络中永远看不到短训练序列有助于长测试序列的分类。
结果。对所有测试对进行了20次试验(p, q)。表3列出了LSTM获得成功所需的训练序列数的平均值(BPTT和RTRL没有机会在最小时间延迟1000步的情况下解决非平凡任务)。
扩展。表3显示,如果我们让输入符号(和权重)的数量与时滞成比例增加,学习时间的增加非常缓慢。这是LSTM的另一个显著特性,我们所知道的任何其他方法都不具有这个特性。事实上,RTRL和BPTT远没有达到合理的规模;相反,当时间滞后超过10步时,它们似乎会呈指数级增长,并显得非常无用。
错误选择的影响。在表3中,以q/p开头的列表示期望的干扰符号频率。增加这个频率会降低学习速度,这是由于频繁观察到的输入符号引起的权值振荡造成的。
5.3实验三:同一信道下的噪声与信号
这个实验表明,如果噪声和信号在同一输入线上混合,LSTM不会遇到基本的问题。我们最初关注的是Bengio等人简单的1994年两序列问题。在实验3c中,我们提出了一个更具挑战性的两序列问题。
5.3.1 任务3a (Two-Sequence问题)
任务是观察输入序列,然后对输入序列进行分类。有两类,每一类发生的概率为0.5。只有一个输入行。只有前N个实值序列元素传达了类的相关信息。位于t >n位置的序列元素由一个均值为0,方差为0.2的高斯函数生成。情形N = 1:第一个序列元素对于第1类是1.0,对于第2类是1.0。情形N = 3:第1类前三个元素为1.0,第2类为−1.0。序列末端的目标是1.0(类1)和0.0(类2)。
正确的分类定义为序列端小于0.2的输出绝对误差。给定一个常数T,序列长度在T和T + T/10之间随机选择(与Bengio等人的问题不同的是,他们也允许长度为T/2的更短的序列)。
猜测。Bengio et al.(1994)和Bengio and Frasconi(1994)对两序列问题测试了七种不同的方法。然而,我们发现,随机权重猜测很容易超过所有这些方法,因为问题太简单了参见Schmidhuber和Hochreiter(1996)以及Hochreiter和Schmidhuber(1996、1997)获得这方面的其他结果。
LSTM架构。我们使用一个三层网络,一个输入单元,一个输出单元,三个大小为1的单元块。输出层只接收来自存储单元的连接。存储单元和门单元接收来自输入单元、存储单元和门单元的输入,并具有偏置权重。门单元与输出单元[0,1]为logistic sigmoid,[−1,1]为h,[−2,2]为g。
表4:任务3a: Bengio等人的两序列问题。
注:T为最小序列长度。N是序列开始时传递信息的元素个数。以ST1 (ST2)为首的列给出了实现停止准则ST1 (ST2)所需的序列表示数。最右边的一列列出了一个由2560个序列组成的测试集中错误分类的训练后序列的分数(绝对误差> 0.2)(在达到ST2后测试)。所有值都是10次试验的平均值。然而,我们发现这个问题是如此简单,以至于随机权重猜测比LSTM和任何其他有公布结果的方法更快地解决了它。
训练/测试。所有权值(除了对门单元的偏置权值)在[−0.1,0.1]范围内随机初始化。第一个输入门偏置初始化为−1.0,第二个初始化为−3.0,第三个初始化为−5.0。第一输出门偏置初始化为−2.0,第二输出门偏置初始化为−4.0,第三输出门偏置初始化为−6.0。然而,精确的初始化值几乎无关紧要,这一点得到了其他实验的证实。学习率为1.0。在新的序列开始时,所有激活都被重置为零。
我们根据以下条件停止训练(并判断任务已解决):ST1:随机选择的测试集中的256个序列中没有一个是错分类的;ST2: ST1满足,平均绝对测试集误差小于0.01。对于ST2,使用一个额外的由2560个随机选择的序列组成的测试集来确定误分类序列的比例。
结果。见表4。结果是在[−0.1,0.1]范围内具有不同权重初始化的10次试验的平均值。LSTM能够解决这个问题,尽管到目前为止还没有随机权重猜测那么快(参见上面的“猜测”)。显然,这个平凡的问题并不能提供一个很好的测试平台来比较各种非平凡算法的性能。尽管如此,它仍然证明了LSTM在同一信道上面对信号和噪声时不会遇到根本的问题。
5.3.2任务3b
架构、参数和其他元素与任务3a相同,但现在带有加入到信息传递元素(t <= N)的高斯噪声(平均值为0,方差为0.2)。我们根据以下稍微重新定义的标准停止训练(并判断任务正在解决):ST1:从随机选择的测试集的256个序列中少于6个被错误分类;ST2:满足ST1,平均绝对测试集误差小于0.04。对于ST2,使用一个额外的由2560个随机选择的序列组成的测试集来确定误分类序列的比例。
表5:任务3b:修改的双序列问题。
注:与表4相同,但现在传递信息的元素也受到噪声的干扰。
结果。见表5。结果代表了10个不同权重初始化试验的平均值。LSTM很容易地解决了这个问题。
5.3.3 问题3c
架构、参数和其他元素与任务3a一样,但有一些基本的变化,使任务不平凡:对于类1和类2,目标分别是0.2和0.8,目标上有高斯噪声(均值0和方差0.1;标准差0.32)。为了最小化均方误差,系统必须学习给定输入的目标的条件期望。误分类定义为输出与无噪声目标的绝对差(第1类为0.2,第2类为0.8)> 0.1。如果无噪声目标与输出之间的平均绝对差低于0.015,则认为网络输出是可接受的。由于这需要很高的权重精度,任务3c(不同于任务3a和3b)无法通过随机猜测快速解决。
训练/测试。学习率为0.1。我们根据以下准则停止训练:随机选择的测试集中的256个序列没有一个被误分类,无噪声目标与输出的平均绝对差小于0.015。另外使用一个由2560个随机选择的序列组成的测试集来确定错误分类序列的比例。
结果。见表6所示。结果代表了10个不同权重初始化试验的平均值。尽管有噪声目标,LSTM仍然可以通过学习期望目标值来解决问题。
表6:任务3c:修改,更具有挑战性的两序列问题。
注:同表4,但有噪声实值目标。系统必须学习给定输入的目标的条件期望。最右边的列提供了网络输出与预期目标之间的平均差值。与3a和3b任务不同,这个任务不能通过随机猜测权重快速解决。
5.4实验4:添加问题
本节中困难的任务是其他递归网络算法从未解决过的类型。它表明LSTM可以解决涉及分布连续值表示的长滞后问题。
5.4.1任务
每个输入序列的每个元素都是一对组件。第一个分量是从区间[−1,1]中随机选取的实值;第二个是1.0、0.0或−1.0,用作标记。在每个序列的末尾,任务是输出那些被第二个组件标记的对的第一个组件的和等于1.0。序列的长度在最小序列长度T和T + T/10之间。在给定的序列中,只有两对被标记,如下所示:我们首先随机选择并标记前10对中的1对(其第一个组成部分称为x1)。
然后,我们随机选择第一个T/2−1未标记对中的一个进行标记(其第一个分量称为x2)。除了第一个和最后一个分量为−1外,其余所有对的第二个分量均为零。(在第一对序列被标记的罕见情况下,我们将x1设为0。)错误信号只在序列末端产生:目标是0.5 + (x1 + x2)/4.0 (x1 + x2的和按区间[0,1]缩放)。如果序列末端的绝对误差小于0.04,则序列被正确处理。
5.4.2构建网络
我们使用一个三层网络,有两个输入单元,一个输出单元和两个大小为2的单元块。输出层只接收来自存储单元的连接。存储单元和门单元接收来自存储单元和门单元的输入(所述隐藏层完全连接;更少的连通性也可以)。输入层与隐藏层中的所有单元都有转发连接。所有非输入单元都有偏置权值。这些架构参数使存储至少两个输入信号变得容易(单元块大小为1也可以)。除h的输出范围为[−1,1]和g的输出范围为[−2,2]外,所有激活函数的输出范围都是logistic的。
表7:实验4:加法问题的结果。
注:T为最小序列长度,T/2为最小延时。“错误预测的数量”是包含2560个序列的测试集中处理错误序列的数量(错误> 0.04)。最右边的一列给出了实现停止准则所需的训练序列的数量。所有值都是10次试验的平均值。对于T = 1000,所需训练示例的数量在370,000到2,020,000之间变化,只有三种情况下超过700,000
5.4.3状态漂移与初始偏差
注意,该任务需要在长时间内存储精确的实数值;系统必须学会保护存储单元的内容不受微小的内部状态漂移的影响(见第4节)。为了研究漂移问题的重要性,我们通过对所有非输入单元进行偏置,从而人为地诱导内部状态漂移,使这项任务变得更加困难。所有权重(包括偏置权重)在[−0.1,0.1]范围内随机初始化。接下来的第4节对状态漂移的补救,第一输入门偏置初始化为−3.0,第二输入门偏置初始化为−6.0(尽管精确值几乎无关紧要,通过额外的实验证实)。
5.4.4训练/测试
学习率为0.5。一旦平均训练误差低于0.01,就停止训练,并正确处理最近的2000个序列。
5.4.5结果
随机选择2560个序列组成的测试集,平均测试集误差始终低于0.01,错误处理的序列从不超过3个。表7显示了详细信息。
实验表明,LSTM能够很好地处理分布式表示,LSTM能够学习执行涉及连续值的计算,而且由于系统能够存储连续值而不会因T/2时间步的最小延迟而恶化,因此不存在显著的有害内部状态漂移。
5.5实验五:乘法问题
有人可能会说LSTM有点偏向于上一小节中的添加问题。添加问题的解决方案可以利用CEC的内置集成功能。虽然这种CEC属性可以被视为特性而不是缺点(集成似乎是现实世界中发生的许多任务的一个自然子任务),那么问题就来了,LSTM是否也可以用固有的非集成解决方案来解决任务。为了测试这一点,我们改变了问题,要求最终目标等于先前标记的输入的乘积(而不是总和)。
Table 8: Experiment 5: Results for the Multiplication Problem.
注:T为最小序列长度,T/2为最小延时。我们在包含2560个序列的测试集上进行测试,只要小于2000个最新训练序列的nseq,就会导致错误> 0.04。“错误预测的数量”是错误> 0.04的测试序列的数量。MSE是测试集上的均方误差。最右边的一列列出了实现停止标准所需的训练序列的数目。所有值都是10次试验的平均值。
5.5.1任务
这类似于5.4节中的任务,只是每对的第一个分量是从区间[0,1]中随机选择的实值。
在标记第一对输入序列的罕见情况下,我们将x1设置为1.0。序列末端的目标是x1 × x2的乘积。
5.5.2构造网络
这与第5.4节相同。所有权重(包括偏置权重)在[−0.1,0.1]范围内随机初始化。
5.5.3 Training/Testing
学习率为0.1。我们对性能进行了两次测试:在2000个最近的训练序列中,只要小于nseq,就会导致绝对误差超过0.04,其中nseq = 140和nseq = 13。为什么这些值?Nseq = 140足以学习相关输入的存储。但是,仅仅调整精确的最终输出是不够的。然而,Nseq = 13会导致相当令人满意的结果。
5.5.4结果
对于随机选取2560个序列组成的测试集,当nseq = 140 (nseq = 13)时,测试集平均误差始终低于0.026(0.013),错误处理的序列从不超过170(15)个。表8显示了详细信息。(带有额外的标准隐藏单元或在存储单元上方有隐藏层的网络可以更快地学习微调部分。)
实验表明,LSTM可以解决包含连续值表示和非综合信息处理的任务。
5.6实验六:时间顺序
在本小节中,LSTM解决了以前的递归网络算法从未解决的其他困难(但人为的)任务。实验表明,LSTM能够提取广泛分离输入的时间顺序所传递的信息。
5.6.1任务6a:两个相关的、广泛分离的符号
目标是对序列进行分类。元素和目标是局部表示的(输入向量只有一个非零位)。序列以E开始,以B(“触发符号”)结束,其他的由集合{a, B, c, d}中随机选择的符号组成,除了t1和t2位置的两个元素是X或y。序列长度在100到110之间随机选择,t1在10到20之间随机选择,t2在50到60之间随机选择。序列有四类,分别为Q、R、S、U,它们与X、y的时间顺序有关,规则为:X、X→Q;X, y→r;Y x→s;Y, Y→u。
5.6.2任务6b:三个相关的、广泛分离的符号
同样,我们的目标是对序列进行分类。元素和目标在本地表示。序列以E开始,以B(触发符号)结束,其他的由{a, B, c, d}中随机选择的符号组成,除了t1, t2, t3位置的三个元素是X或y。序列长度在100到110之间随机选择,t1在10到20之间随机选择,t2在33到43之间随机选择,t3在66到76之间随机选择。有8个序列类- Q, R, S, U, V, A, B, c,它们取决于x和y的时间顺序。规则是:X、X、X→Q;X, X, y→r;X, y, X→s;X, y, y→u;Y x x→v;Y, x, Y→a;Y Y x→b;Y, Y, Y→c。
有多少类,就有多少输出单元。每个类由一个具有一个非零分量的二元目标向量局部表示。对于这两个任务,错误信号只发生在序列的末尾。如果所有输出单元的最终绝对误差小于0.3,则序列分类正确。
体系结构。对于任务6a (6b),我们使用一个包含八个输入单元、两个(3)大小为2的单元块和四个(8)输出单元的三层网络。同样,所有非输入单元都有偏置权值,输出层只接收来自存储单元的连接。存储单元和门单元接收来自输入单元、存储单元和门单元的输入(隐藏层完全连接;更少的连通性也可以)。任务6a (6b)的体系结构参数使存储至少两(三)个输入信号变得容易。除h的输出范围为[−1,1]和g的输出范围为[−2,2]外,所有激活函数的输出范围都是logistic的。
表9:实验6:时间顺序问题的结果。
注:“错误预测的数量”是一个包含2560个序列的测试集中错误分类序列的数量(至少一个输出单元的错误> 0.3)。最右边的一列给出了实现停止准则所需的训练序列的数量。任务6a的结果是20次试验的平均值;10次实验中任务6b的人。
训练/测试。实验6a (6b)的学习率为0.5(0.1)。一旦平均训练误差低于0.1,并且2000个最近的序列被正确分类,训练就停止。所有权值在[−0.1,0.1]范围内初始化。第一输入门偏置初始化为−2.0,第二输入门偏置初始化为−4.0,(实验6b)第三输入门偏置初始化为−6.0(我们再次通过附加实验确认,精确值几乎无关紧要)。
结果。随机选择2560个序列组成的测试集,平均测试集误差始终低于0.1,错误分类的序列从不超过3个。表9显示了详细信息。
实验表明,LSTM能够提取广泛分离输入的时间顺序所传递的信息。例如,在任务6a中,第一相关输入与第二相关输入之间以及第二相关输入与序列端之间的延迟至少为30个时间步。
典型的解决方案。在实验6a中,LSTM如何区分时间顺序(X, Y)和(Y, X)?许多可能的解决方案之一是将第一个X或Y存储在单元格block 1中,而将第二个X/Y存储在单元格block 2中。
在第一个X/Y出现之前,block 1通过它的循环连接可以看到它仍然是空的。在第一个X/Y之后,block 1可以关闭它的输入门。一旦模块1被填满并关闭,模块2就会看到这一事实(回想一下,所有门单元和所有存储单元都从所有非输出单元接收连接)。
然而,典型的解决方案只需要一个存储单元块。块存储第一个X或Y;一旦第二个X/Y出现,它会根据存储的第一个符号改变它的状态。解决方案类型1利用存储单元输出和输入门单元之间的连接。以下事件导致不同的输入门激活:X发生在一个填充块;X与空块一起出现。解决方案2是基于存储单元输出和存储单元输入之间强的、正的连接。X (Y)之前的出现用a表示正(负)内状态。一旦输入门第二次打开,输出门也打开,存储单元的输出被反馈到自己的输入。这导致(X, Y)用一个正的内部状态来表示,因为X两次贡献了新的内部状态(通过当前的内部状态和细胞输出反馈)。类似地,(Y, X)用一个负的内部状态表示。
表10:LSTM实验条件总结,第一部分。
注:Col1:任务编号。Col. 2:最小序列长度p. Col. 3:最近相关输入信息与教师信号之间的最小步数。Col. 4:单元格块的数量b. Col. 5:块大小s. Col. 6:输入单元的数量。输出单元的数量。Col. Col. 9: c表示连接:F表示“输出层接收来自存储单元的连接;存储单元和门单元接收来自输入单元、存储单元和门单元的连接”;B表示“每一层接收来自下面所有层的连接”。初始输出门偏置ogb,其中r表示“从区间[−0.1,0.1]随机选择”,no og表示“不使用输出门”。Col. 11:初始输入门偏置igb(见10)。Col. 12哪些单位有偏差权重?b1代表“所有隐藏单元”,ga代表“仅门单元”,all代表“所有非输入单元”。Col. 13:函数h,其中id为恒等函数,h1为[−2,2]中的logistic sigmoid。Col. 14: logistic函数g,其中g1位于[0,1]中为sigmoid, g2 位于[−1,1]。学习速率α。
5.7实验条件总结
表10和11提供了实验1到6中最重要的LSTM参数和架构细节的概述。由于历史原因,简单实验条件2a、2b与其他更系统的实验稍有不同。
六.讨论
6.1LSTM的局限性
特别有效的截断反向传播LSTM算法不会轻易解决类似于强延迟异或问题的问题,其中的目标是计算两个广泛分离的输入的异或,这两个输入之前出现在一个有噪声的序列中。原因是,只存储一个输入将无助于减少预期的错误;这个任务是不可分解的,因为它不可能通过先解决一个更容易的子目标来逐步减少误差。
理论上,这种限制可以通过使用全梯度来规避(也许可以使用额外的传统隐藏单元接收来自存储单元的输入)。但我们不建议计算全梯度,原因如下:(1)它增加了计算复杂度;(2)只有截断的LSTM才能通过CECs得到恒定的误差流;(3)实际上我们确实对未截断的LSTM进行了一些实验。截断的LSTM没有显著差异,正是因为在CECs之外,错误流往往迅速消失:迅速消失出于同样的原因,完全的BPTT并不优于截断的BPTT。
每个存储单元块需要两个额外的单元(输入和输出门)。然而,与标准的循环网相比,这不会增加超过9倍的权值:在LSTM架构中,每个传统的隐藏单元最多被3个单元取代,在全连接情况下,权值增加了32倍。但是请注意,我们的实验对LSTM的体系结构和其他方法使用了相当相似的权重数。
由于LSTM在内存单元的cec中不断地出现错误流,所以它通常会遇到类似于前馈网络一次性看到整个输入字符串的问题。例如,有些任务可以通过随机的权值猜测来快速解决,但不能通过具有小权值初始化的截短LSTM算法来快速解决,例如500步奇偶校验问题(参见第5节的介绍)。在这里,LSTM的问题类似于有500个输入的前导网络,试图解决500位奇偶校验问题。事实上,LSTM通常表现得很像一个由反向传播训练的前馈网络,它可以看到整个输入。但这也正是为什么它在许多具有显著搜索空间的重要任务上明显优于以前的方法的原因。
LSTM在近因性的概念上没有任何问题,这一点超越了其他方法。然而,所有基于梯度的方法都无法精确计算离散时间步长。如果某个信号发生在99步前还是100步前有区别,那么额外的计数机制似乎是必要的。但是,更简单的任务,比如只需要区分3个步骤和11个步骤的任务,不会给LSTM带来任何问题。例如,通过在记忆单元的输出和输入之间产生适当的负连接,LSTM可以给予最近的输入更多的权重,并在必要的地方学习衰减。
6.2 LSTM的优点
在存储单元内的恒定误差反向传播导致LSTM能够在类似上述问题的情况下桥接非常长的时间滞后。
对于像本文中讨论的那些长时间滞后问题,LSTM可以处理噪声、分布式表示和连续值。与有限状态自动机或隐马尔可夫模型相比,LSTM不需要有限状态数的先验选择。原则上,它可以处理无限的状态数。
对于本文讨论的问题,LSTM的推广效果很好,即使输入序列的位置分离得很广,输入序列中的相关输入也不重要。与以前的方法不同,我们很快学会区分输入序列中某个特定元素的两次或更多次出现,而不需要依赖适当的短时间滞后训练示例。
似乎不需要对参数进行微调。LSTM可以很好地处理各种参数,如学习率、输入门偏置和输出门偏置。例如,对一些读者来说,我们实验中使用的学习率似乎很大。然而,较大的学习率会将输出门推向零,从而自动抵消其自身的负面影响。
LSTM算法的每个权值和时间步的更新复杂度本质上是BPTT算法的复杂度,即O(1)。与RTRL等其他方法相比,这是非常优秀的。然而,与完全BPTT不同,LSTM在空间和时间上都是局部的。
七.结论
每个内存单元的内部架构保证其CEC内的错误流不变,前提是截断反向传播切断试图从内存单元泄漏的错误流。这是弥合很长时间滞后的基础。两个门单元学习打开和关闭每个存储单元CEC内的错误流的访问。乘性输入门保护CEC不受无关输入的干扰。类似地,乘法输出门保护其他单元不受当前无关内存内容的干扰。
为了找出LSTM的实际限制,我们打算将其应用于真实世界的数据。应用领域将包括时间序列预测、音乐创作和语音处理。通过LSTM来增强序列chunkers (Schmidhuber, 1992b, 1993)以结合两者的优点也很有趣。
附录
A.1算法细节
接下来,索引k在输出单元范围内,i在隐藏单元范围内,cj表示第j个存储单元块,cvj表示第vth个存储单元块cj, u, l, m表示任意单位,t在给定输入序列的所有时间步长范围内。
实验中使用的门单元逻辑斯蒂s型(范围[0,1])为
实验中使用的函数h(取值范围[−1,1])为
实验中使用的函数g(取值范围[−2,2])为
A1.1向前传递
隐单元i的网络输入和激活量为
inj的网络投入和激活量为
网络输入和outj的激活量为
记忆细胞块cj第vth记忆细胞的网络输入netcv j、内部状态scv j和输出激活ycv j分别为:
网络输入和输出单位k的激活量为
后面要描述的反向传递基于以下截断的反向传播公式。
A.1.2截断反向传播的近似导数
截断的版本(见第4节)仅近似于偏导数,这在下面的符号中体现为≈tr符号。一旦错误流离开存储单元或门单元,它就会截断错误流。截断确保没有环路,其中通过输入或输入门留下一些内存单元的错误可以通过其输出或输出门重新进入单元。
这反过来确保了通过存储单元的CEC的恒定错误流。在截断后的反向传播版本中,以下导数被替换为零:
式中δ为Kronecker δ (δab = 1 i f a = b,否则为0),Sj为存储单元块cj的大小。不属于存储单元的隐藏单元i的截断导数为:
(这里可以使用完全梯度,而不影响内存单元内部状态的恒定错误流。)细胞块cj的截短衍生物为:
为了在t时刻高效地更新系统,只需要在t−1时刻存储(截断)导数即可。
A.1.3向后传递
我们将只描述LSTM算法中特别有效的截断梯度版本的向后传递。为了简单起见,我们将使用等号,即使在根据上述截断反向传播方程所作的近似。
t时刻的平方误差由
式中tk(t)为输出单元k在时刻t的目标。
时间t对学习率α下wlm梯度更新的贡献为
我们定义某个单位l在时间步长t处的误差
使用(几乎)标准反向传播,我们首先计算输出单元(l = k)的权值更新,隐藏单元(l = i)的权值更新和权值更新输出门(l = outj)。我们得到(比较公式A.8, A.9和A.11):
对于所有可能的l时间t对wlm更新的贡献为
对输入门(l = inj)和单元单元(l = cvj)权重的其余更新就不那么传统了。我们定义了一些内部状态scv j的误差:
我们得到对于l = inj或l = cvj, v = 1,…, Sj
内部状态对权值的导数和相应的权值更新如下(比较表达式A.12):
因此,时间t对winjm更新的贡献为(比较表达式A.8):
类似地,我们得到(比较表达式A.12):
因此时间t对wcv j m更新的贡献为(比较表达式A.8):
我们所需要实现的向后传递是方程A.17到A.21和方程A.23到A.26。每个权重的总更新是所有时间步贡献的总和。
A.1.4计算复杂度
LSTM每时间步的更新复杂度为
其中K是输出单元的数量,C是存储单元块的数量,S > 0是存储单元块的大小,H是隐藏单元的数量,I是前向连接到存储单元、门单元和隐藏单元的(最大)单元数量,以及
是权重的个数。考虑到所有的逆向过程计算,得到表达式A.27:方程A.17需要K步;A.18需要KH步骤;A.19需要KSC步骤;A.20需要K(H +C)步为输出单元,HI步为隐藏单元,CI步为输出门;A.21需要KCS步骤;A.23需要CSI步骤;A.24需要CSI步骤;A.25需要CSI步骤;A.26需要CSI步骤。总共是K + 2KH + KC + 2KSC + HI + CI + 4CSI步骤,或O(KH + KSC + HI + CSI)步骤。我们的结论是,LSTM算法每时间步的更新复杂度与BPTT算法对于完全循环网的更新复杂度相同。
在给定的时间步上,只需要存储方程a .23和a .25中2CSI最近的∂scv j /∂wlm值。因此LSTM的存储复杂度也是O(W);它不依赖于输入序列的长度。
A.2错误流
我们计算了一个误差信号在通过一个存储单元倒流q时间步时被缩放了多少。作为副产品,该分析再次确认了内存单元CEC内的错误流确实是恒定的,前提是被截断的反向传播切断了试图离开内存单元的错误流(也见第3.2节)。分析还强调了一个scj的潜在不良长期漂移,以及负偏置输入门的有益的反指令影响。
利用截断反向传播学习规则,得到
≈tr符号表示相等,因为截断的反向传播将以下导数替换为零:
在接下来的过程中,一个错误ϑj(t)开始在cj的输出处返回。我们重新定义
按照3.1节的定义和约定,我们计算截断反向传播学习规则的错误流。输出门发生的错误是
在内部状态发生的错误为
因为我们使用截断反向传播
因此,我们得到
方程A.31和A.32表示通过存储单元内部状态的恒定错误流:
在存储单元输入处发生的错误为
在输入门处发生的错误是
A.2.1无外部错误流
误差通过权值wlv从单位l传播到单位v。t时刻的“外部错误”(注意,对于常规单位,除了外部错误什么都没有)为
我们观察到,错误ϑj到达存储单元输出不是反向传播到单位v通过外部连接inj, outj, cj。
A.2.2内存单元内的错误流
我们现在重点讨论存储单元CEC中的错误回流。这实际上是唯一一种可以跨越多个时间步骤的错误流。假设错误ϑj(t)到达cj在时间t和传播回q步的输出,直到到达inj或内存单元输入g(netcj)。它是按比例缩放的
考虑上一个方程的最后一个表达式中的因子。显然,错误流只在t(当它进入细胞)和t - q(当它离开细胞)时刻缩放,而不是在两者之间(恒定的错误流通过CEC)。我们观察到:
1. 输出门的作用是youtj(t)缩小了那些可以在训练早期减少的错误,而不使用记忆单元。它还减少了在以后的训练阶段使用(激活/停用)记忆细胞所导致的错误。例如,如果没有输出门,存储单元可能会突然开始在看似已经可控的情况下造成可避免的错误(因为没有存储单元就很容易减少相应的错误)。参见第3节中的“输出权重冲突”和“滥用问题与解决方案”(第4.7节)。
2. 如果存在较大的正或负scj(t)值(因为scj从时间步长t−q开始漂移),那么h0(scj(t))可能很小(假设h是logistic sigmoid)。看到第四节。存储器单元内部状态scj的漂移可以通过负偏置输入门inj来抵消(参见第4节和下一点)。回顾第4节,准确的偏差值并不重要。
3.如果输入门是负偏的(假设finj是logistic sigmoid),则Yinj (t−q)和f0inj (netinj(t−q))很小。然而,与内态scj漂移的潜在意义相比,这一潜在意义可以忽略不计。
上面的一些因素可能会降低LSTM的整体误差流,但不是以依赖于时滞长度的方式。该流仍将比没有存储单元的指数(q阶)衰减流有效得多。
《Long Short-Term Memory》翻译,Sepp Hochreiter, ¨urgen Schmidhuber.1997,9(8):1735-1780相关推荐
- 有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程?
知乎用户,阿里巴巴数据应用部门长期招聘「算法,分- 500 人赞同 刚好毕设相关,论文写完顺手就答了 先给出一个最快的了解+上手的教程: 直接看theano官网的LSTM教程+代码:LSTM Netw ...
- 递归神经网络变形之 (Long Short Term Memory,LSTM)
1.长短期记忆网络LSTM简介 在RNN 计算中,讲到对于传统RNN水平方向进行长时刻序列依赖时可能会出现梯度消失或者梯度爆炸的问题.LSTM 特别适合解决这种需要长时间依赖的问题. LSTM(Lon ...
- Stanford NLP 第六课: Long Short Term Memory
RNN存在着梯度消失的问题, 难以学习长期的依赖关系.如何解决RNN的梯度消失问题? Long Short Term Memory (LSTM) 就是解决这个问题的. 上图是LSTM的一个整体结构. ...
- 简单聊聊Long Short Term Memory Network (LSTM)和 Gated Recurrent Unit (GRU)两种强大的RNN变体
上一篇关于RNN的文章最后,我们提到过由于梯度消失和梯度爆炸问题,使得RNN很难处理长距离的依赖.本文我们介绍两种改进后的RNN:LSTM(Long Short Term Memory Network ...
- LSTM(long short term memory)长短期记忆网络
bags of word(WOE) 它的基本思想是假定对于一个文本,忽略其词序和语法.句法,仅仅将其看做是一些词汇的集合,而文本中的每个词汇都是独立的 循环神经网络(recurrent neural ...
- 详细讲解RNN+LSTM+Tree_LSTM(Tree-Long Short Term Memory)基于树状长短期记忆网络
14天阅读挑战赛 详细讲解RNN+LSTM+Tree_LSTM(Tree-Long Short Term Memory)基于树状长短期记忆网络 一.RNN 要讲解Tree_LSTM,这必须得从RNN开 ...
- Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Paths
Classifying Relations via Long Short Term Memory Networks along Shortest Dependency Paths 概述 论文提出了一种 ...
- 3_Long Short Term Memory (LSTM)
文章目录 一.LSTM核心思想 1.1 Conveyor Belt(传输带) 二.LSTM分布指南 2.1 Forget Gate(遗忘门) 2.2 Input Gate(输入门) 2.3 New v ...
- Long Short Term Memory networks(LSTMs)
背景:在我之前的一篇博客中说了一下对RNN的理解,RNN对于长句子表示的不是很好,超过六七层的网络之后就很难获得之前内容的信息了,目前的框架是基于梯度的,多层网络很容易出现梯度弥散的情况.但是对于NL ...
最新文章
- C#接口(Interface)理解
- centos7下安全访问远程服务器
- 关于python 中的 sys.argv 的使用方法
- 关于Qt、Qt/E、Qtopia、qvfb、framebuffer、qpe等概念的对比介绍
- 网管心得:优化网络性能给局域网提速[好文章]
- 开源软件的安全性风险_您的开源安全软件是否安全性较低?
- redis主从,哨兵回忆手册
- nyoj-488-素数环
- Visio2016激活工具
- Java开发需要的官方文档
- 科研必备:LaTeX论文排版软件的简介,安装与使用教程
- 开源直播推流sdk_携程移动直播探索
- Linux指纹识别程序,指纹识别系统的安装
- 支付宝小程序开发笔记
- 2.6.4 调色板技术
- java安装cab破损,Visual Studio 2005 Professional Edition损坏的CAB文件
- Client network socket disconnected before secure TLS connection was established
- 2021年12月13日面试题网络知识基础
- 主机宝iis版_主机宝IIS版|IIS网站宝(IIS科技主机管理系统)下载 v3.0 官方免费版 - 比克尔下载...
- ale插件 vim_vim 撸码必备插件之 autoformat 与 ale[视频]