循环神经⽹网络(RNN )在实际应⽤用中很难处理理⻓长距离依赖的问题。imbd
有的时候,我们仅仅需要知道先前的信息来完成预测任务。例例如,我们有⼀一个语⾔言模型⽤用来基于先前的词来预测下⼀一个词,⽐比如我们预测“the clouds are in the sky”最后的词的时候,我们不不需要任何其他的上下⽂文,很显然下⼀一个词就是sky 。在这种情况下,相关的信息与需要预测的词位置之间的间隔很⼩小,⽽而RNN 可以学会使⽤用较近距离的信息。
但是到了了⼀一个更更加复杂的场景,假设我们试着预测“I grew up I speak fluent French”
bend
中最后的词,从这句句话的信息来看,下⼀一个词很有可能是⼀一种语⾔言的名字,但具体到是哪种语⾔言,我们就需要在与之距离较远的“I grew up in France”中得到。这说明相关信息与当前预测位置之间的间隔就肯定变得相当的⼤大。
不不幸的是,在这个间隔不不断增⼤大时,RNN 会丧失学习到连接如此远的信息的能⼒力力。
深度学习系列列(5):⻓长短时记忆⽹网络(LSTM )
be interested in⼀一、⻓长期依赖问题(Long-Term Dependencies )
当然,在理理论上,RNN绝对可以处理理这样的⻓长期依赖问题。⼈人们可以通过调参来解决,但是
在实践中,RNN肯定不不能够成功学习到这些知识。Bengio, et al. (1994)等⼈人对该问题进⾏行行了了深⼊入的研究,它们发现⼀一些使训练RNN变得⾮非常困难的相当根本的原因。
既然找到了了问题的原因,那我们就能解决它。从问题的定位到解决,科学家们⼤大概花了了7、8年年的时间。终于有⼀一天,Hochreiter和Schmidhuber两位科学家发明出⻓长短时记忆⽹网络,⼀一举解决了了这个问题。
⼆二、LSTM的核⼼心思想
韩国语翻译器Long Short Term⽹网络,⼀一般就叫做LSTM,是⼀一种特殊的RNN变体,它可以学习⻓长期依赖信息。LSTM由Hochreiter和Schmidhuber在1997年年提出,并在近期被Alex Graves进⾏行行了了改良和推⼴广。在很多问题上,LSTM都取得了了相当巨⼤大的成功,并得到了了⼴广泛的使⽤用。
LSTM通过刻意的设计来避免⻓长期依赖问题。记住⻓长期的信息在实践中是LSTM的默认属性,⽽而⾮非需要付出很⼤大的代价才能获得的能⼒力力!
所有的RNN都具有⼀一种重复神经⽹网络模块的链式的形式。在标准的RNN中,这个重复的模块只有⼀一个⾮非常简单的结构,例例如⼀一个tanh层。
LSTM同样是这样的结构,但是其中重复的模块拥有⼀一个不不同的结构。不不同于单⼀一神经⽹网络层,
这⾥里里有四个以⾮非常特殊的⽅方式进⾏行行交互的⼩小器器件。
图中每⼀一条⿊黑线传输着⼀一整个向量量,从⼀一个节点的输出到其他节点的输⼊入。粉⾊色的圈代表pointwi的操作,⽐比如向量量的和,⽽而⻩黄⾊色的矩阵就是学习到的神经⽹网络层。
圣诞节快乐英文LSTM的关键在于细胞(Cell),⽔水平线在细胞内贯穿运⾏行行。细胞类似于传送带。直接在整个链上运⾏行行,只有⼀一些少量量的线性交互。信息在⽔水平线上很容易易保持不不变。
LSTM通过精⼼心设计“⻔门”结构来去除或者增加信息到Cell上。⻔门是⼀一种让信息选择式通过的⽅方法(过滤器器)。它们包含⼀一个sigmoid神经⽹网络层和⼀一个pointwi乘法操作。
Sigmoid层输出0到1之间的数值,描述每个部分有多少量量可以通过。0代表“不不许任何量量通过”,1就指“允许任意量量通过”
LSTM ⽤用两个⻔门来控制单元状态Cell 的内容,⼀一个是遗忘⻔门(forget gate ),它决定了了上⼀一时刻的单元状态有多少保留留到当前时刻;另⼀一个是输⼊入⻔门(input gate ),他决定了了当前时刻⽹网络的输⼊入有多少保存到单元状态。LSTM ⽤用输出⻔门(output gate )来控制单元状态有多七年级上册英语书电子书
少输出到LSTM 的当前输出值。我们先看⼀一下遗忘⻔门:
上式中,是遗忘⻔门的权重矩阵,表示把两个向量量连接成⼀一个更更⻓长的向量量,是遗忘⻔门的偏置项,是sigmoid 函数。若输⼊入的维度是,隐藏层的维度是,单元状态的维度是(通常),则遗忘⻔门的权重矩阵维度是。事实上,权重矩阵都是两个矩阵拼接⽽而成的:⼀一个是,它对应着输⼊入项,其维度为;⼀一个是,它对应着输⼊入项,其维度为。可以写为:
所以总结⼀一下,遗忘⻔门的作⽤用为控制有多少上⼀一时刻的memory cell 中的信息可以累积到当前时刻的memory cell 中。其数学公式可以写作:
daren其计算图示如下:后来日语歌词
三、LSTM 的前向计算
在线翻译有道
−1c t c t x t c t c t h t 3.1 遗忘⻔门
=σ(·[]+)
f t W f h t −1,x t b f W f [,]h t −1x t b f σd x d h d c =d c d h W f ×(+)d c d h d x W f W fh h t −1×d c d h W fx x t ×d c d x W f [][]=[][]
=·+W f h t −1x t W fh W fx h t −1x t W fh h t −1W fx x t =sigmoid (·+·+)
f t W fx x t W fh h t −1b i
接下来看输⼊入⻔门:
上式中,是输⼊入们的权重矩阵,是输⼊入⻔门的偏置项。下图表示了了输⼊入⻔门的计算:
接下来,我们计算⽤用于描述当前输⼊入的单元状态,它是根据上⼀一次的输出和本次输⼊入来计算的:3.2 输⼊入⻔门=σ(·[,]+)
smirk什么意思i t W i h t −1x t b i W i b i c t