这篇论文总结的太抽象了,只是翻译了一遍。
(我太笨了,如果把这个当我的入门读物,我觉着会把我折磨坏)
递归神经网络的一个重要优点是它们在映射输入和输出序列时使用上下文信息的能力。不幸的是,对于标准的RNN体系结构,实际可以访问的上下文范围非常有限。问题是,给定输入对隐藏层的影响,以及对网络输出的影响,在围绕网络的循环连接循环时,要么衰减,要么呈指数增长。这种效应在文献中通常被称为梯度消失问题(Hochreiter, 1991;Hochreiter et al., 2001;Bengio et al., 1994)。梯度消失问题如图4.1所示
图4.1 rnn的梯度消失问题。
未展开网络中节点的阴影表示它们在时刻1时对输入的灵敏度(阴影越深,灵敏度越高)。随着新的输入覆盖隐藏层的激活,灵敏度随着时间的推移而衰减,并且网络“忘记”了第一个输入。
在20世纪90年代,人们做了许多尝试来解决rnn的梯度消失问题。其中包括非梯度训练算法,如模拟退火和离散误差传播(Bengio et al., 1994),明确引入了时间延迟(Lang et al., 1990;Lin et al., 1996;Plate, 1993)或时间常数(Mozer, 1992),以及分层序列压缩(Schmidhuber, 1992)。本书推崇的方法是长短期记忆(LSTM)架构(Hochreiter和Schmidhuber, 1997)。
本章回顾LSTM的背景资料。第4.1节描述了LSTM的基本结构,并解释了它如何处理梯度消失问题。第4.3节讨论了计算LSTM误差梯度的近似和精确算法。第4.4节描述了对基本LSTM体系结构的一些增强。第4.2节讨论了预处理对远程依赖关系的影响。第4.6节提供了训练和应用LSTM网络所需的所有方程。
4.1 网络结构
LSTM体系结构由一组循环连接的子网(称为内存块)组成。这些块可以被认为是数字计算机中存储芯片的可微分版本。每个块包含一个或多个自连接的存储单元和三个乘法单元,输入、输出和遗忘门——为单元提供连续的类似的写、读和复位操作。
图4.2提供了一个LSTM内存块与单个单元的示例。LSTM网络与标准RNN相同,只是隐藏层中的求和单元被存储块取代,如图4.3所示。 LSTM块也可以与普通的求和单元混合使用,尽管这通常是不必要的。LSTM网络可以使用与标准rnn相同的输出层。
图4.2 单元LSTM内存块。
这三个门是非线性的求和单元,收集来自内部和外部块的激活,并通过乘法(小黑色圆圈)控制细胞的激活。输入和输出门将细胞的输入和输出相乘,而遗忘门将细胞的先前状态相乘。在单元格内不应用任何激活函数。门激活函数' f '通常是逻辑s型,因此门激活在0(门关闭)和1(门打开)之间。单元输入和输出激活函数(' g '和' h ')通常是tanh或逻辑s型,尽管在某些情况下' h '是恒等函数。从细胞到门的加权“窥视孔”连接用虚线表示。块内的所有其他连接都是未加权的(或者等价地,具有固定的权重1.0)。从区块到网络其余部分的唯一输出来自输出门乘法。
图4.3 LSTM网络。(抽象=_=)
该网络由四个输入单元、两个单细胞LSTM存储块的隐藏层和五个输出单元组成。并不是所有的连接都显示出来。注意,每个块有四个输入,但只有一个输出。
这是12年的论文,感觉现在的表现形式更加清晰易懂
首先LSTM有两个状态,
变化的比较慢
变化的比较快
那除了变化快慢还有什么区别呢
在了解 区别之前先了解一下两个输入和四个激活状态
两个输入:
四个激活状态包括3个sigmiod还有一个tanh,3个sigmoid表示不同的门,tanh表示输入的激活状态
三个门都有:
遗忘门:
记忆门:
输出门:
输入的激活状态:
然后就是利用得到的这4个状态求
首先由 得到 :
这一步的意思就是忘记之前不重要的,记住当前输入重要的
再由 得到 :
LSTM中的激活函数包括sigmiod和tanh,为什么不使用一个激活函数呢
sigmoid的使用是作为一个门的作用,他的取值是0-1,可以根据数据的重要性给予数值,这个无法代替,但是tanh就是一个简单的激活函数可以使用其他的激活函数代替。
乘法门允许LSTM存储单元长时间存储和访问信息,从而减轻了梯度消失的问题。例如,只要输入门保持关闭(即具有接近0的激活),单元的激活将不会被到达网络的新输入覆盖,因此可以通过打开输出门在序列的较晚时间内对网络可用。LSTM对梯度信息随时间的保存如图4.4所示。
图4.4 LSTM对梯度信息的保存。
如图4.1所示,节点的阴影表示它们在时刻1时对输入的敏感性;在这种情况下,黑色节点是最敏感的,而白色节点是完全不敏感的。输入门、遗忘门和输出门的状态分别显示在隐藏层的下方、左侧和上方。为简单起见,所有的门要么完全打开(' O '),要么完全关闭(' - ')。只要遗忘门打开,输入门关闭,记忆细胞就会“记住”第一个输入。输出层的灵敏度可以通过输出门打开和关闭而不影响电池。
在过去的十年中,LSTM在一系列需要远程记忆的合成任务中被证明是成功的,包括学习无上下文语言(Gers和Schmidhuber, 2001),在扩展的噪声序列上回忆高精度实数(Hochreiter和Schmidhuber, 1997)以及各种需要精确计时和计数的任务(Gers等,2002)。特别是,它解决了其他任何RNN架构都无法解决的几个人为问题。
此外,LSTM已应用于各种现实问题,如蛋白质二级结构预测(Hochreiter et al., 2007;Chen and Chaudhari, 2005),音乐生成(Eck and Schmidhuber, 2002),强化学习(Bakker, 2002),语音识别(Graves and Schmidhuber, 2005);Graves et al., 2006)和手写识别(Liwicki et al., 2007;Graves et al., 2008)。正如预期的那样,它的优势在需要使用远距离上下文信息的问题上最为明显。
4.2 预处理的影响
上述讨论提出了预处理影响的重要观点。如果我们能找到一种方法,在将包含长范围上下文依赖关系的任务呈现给序列学习算法之前,将其转换为只包含短范围依赖关系的任务,那么LSTM等架构就会变得有些多余。例如,原始语音信号通常具有超过40khz的采样率。显然,序列学习算法需要跨越大量的时间步,才能对以这种形式呈现的话语进行标记或建模。然而,当信号首先转换为100hz的梅尔频率倒谱系数序列时,使用上下文范围相对较短的算法(如隐马尔可夫模型)对数据进行建模就变得可行了。
尽管如此,如果这样的转换是困难的或未知的,或者如果我们只是希望得到一个好的结果而不必设计特定于任务的预处理方法,那么能够处理长时间依赖性的算法是必不可少的。
4.3 梯度计算
与上一章讨论的网络一样,LSTM是一个可微函数逼近器,通常使用梯度下降进行训练。最近,LSTM的非梯度训练方法也被考虑(Wierstra et al., 2005;Schmidhuber et al., 2007),但它们超出了本书的范围
最初的LSTM训练算法(Hochreiter和Schmidhuber, 1997)使用了一个近似的误差梯度,结合了实时循环学习(RTRL;Robinson and Fallside, 1987)和时间反向传播(BPTT;Williams and Zipser, 1995)。BPTT部分在一个时间步后被截断,因为人们认为长时间依赖性将由记忆块处理,而不是由循环连接周围的(消失的)激活流处理。截断梯度的好处是使算法完全在线,因为可以在每个时间步之后进行权重更新。对于连续控制或时间序列预测等任务来说,这是一个重要的特性。
然而,也可以使用未截断的BPTT计算精确的LSTM梯度(Graves和Schmidhuber, 2005b)。除了比截断梯度更精确外,精确梯度还具有更容易调试的优点,因为它可以使用第3.1.4.1节中描述的技术进行数值检查。本书中只使用了精确梯度,其公式在第4.6节中提供。
4.4 架构变体
在其原始形式中,LSTM只包含输入门和输出门。遗忘门(Gers et al., 2000),以及附加的窥视孔权重(Gers et al., 2002),将这些门连接到记忆单元,然后添加到扩展的LSTM中(Gers, 2001)。遗忘门的目的是为记忆细胞提供一种自我重置的方式,这对于需要网络“忘记”之前输入的任务很重要。与此同时,窥视孔连接提高了LSTM学习需要精确计时和计算内部状态的任务的能力。
由于LSTM完全由简单的乘法和求和单元以及它们之间的连接组成,因此可以直接创建块体系结构的进一步变体。事实上,研究表明,在诸如学习上下文无关语言和上下文敏感语言等玩具问题上具有同样良好性能的替代结构可以自动进化(Bayer et al., 2009)。然而,标准扩展形式似乎是序列标记的良好通用结构,并且在本书中专门使用。
4.5 双向长短期记忆
在双向递归神经网络(第3.2.4节)中使用LSTM作为网络架构可以得到双向LSTM (Graves and Schmidhuber, 2005 5a,b;Chen and Chaudhari, 2005;Thireou and Reczko, 2007)。双向LSTM在两个输入方向上都提供了对长范围上下文的访问,并将在后面的章节中广泛使用。
4.6 网络方程
本节提供了递归神经网络中LSTM隐藏层的激活(正向传递)和BPTT梯度计算(反向传递)的方程。
和前面一样,wij是从单元i到单元j的连接的权值,在t时刻网络对单元j的输入记为j,单元j在t时刻的激活记为bt j。LSTM方程仅针对单个内存块给出。对于多个区块,计算只是以任意顺序对每个区块重复。下标ι、φ、ω分别表示该模块的输入门、遗忘门、输出门。下标c表示一个c存储单元。从cell c到输入门、遗忘门和输出门的窥视孔权重分别记为wci、wcφ和wcω。St c是细胞c在时刻t的状态(即线性细胞单元的激活)。F是门的激活函数,g和h分别是细胞输入和输出的激活函数。
设I是输入的个数,K是输出的个数H是隐藏层的单元个数。请注意,只有c单元输出连接到层中的其他块。其他LSTM激活,例如状态、单元输入或门激活,仅在块中可见。我们使用索引h来引用隐藏层中其他块的单元输出,与标准隐藏单元完全相同。与标准rnn一样,对于长度为T的输入序列x,前向传递是通过从T = 1开始,递归地应用更新方程,同时增加T来计算的,BPTT后向传递是通过从T = T开始,递归地计算单位导数,同时将T减少到1来计算的(详细信息参见3.2节)。最终的权重导数是通过对每个时间步长的导数求和得到的,用Eqn表示。(3.35)。
在向前和向后传递过程中计算方程的顺序很重要,并应按照下面指定的顺序进行。与标准rnn一样,所有状态和激活在t =0时初始化为零,并且在t = T+1时所有δ项都为零