您的位置:首页 > 理论基础 > 计算机网络

理解LSTM网络

2016-06-12 18:09 441 查看
今天看到一篇不错的英文文章介绍LSTM,原文地址http://colah.github.io/posts/2015-08-Understanding-LSTMs/ ,觉得很有用就结合自己的理解部分翻译了一下。本人水平有限,有不足和错误的地方欢迎指正。

LSTM(Long ShortTerm Memory长短项记忆)网络是一种特殊的RNN,可以学习long-term中的依赖。Hochreiter& Schmidhuber (1997) 向世人介绍了它,然后在接下来的工作中不断被人们完善。它在很多问题上表现异常的好,现在也被人们广泛地使用。

所有递归神经网络结构都是链式的重复的神经网络,在标准RNN中,这些重复的模型只有一个简单的结构,例如一个tanh函数层。



LSTM同样有一个链式的结构,但是重复的模型却是不同的结构。它们内核有4个神经网络层,用一种特别的方式相互作用,而不是单个神经网络层。



图中的符号含义如下:



上图中,每一条线都携带了整个向量,从一个节点的输出,到另一个节点的输入;紫色圆圈表示逐点操作,比如向量相加;黄色矩形表示用来学习的神经网络层;线条相交表示级联,线条分叉表示内容复制,复制的部分流向了一个不同的位置。
 
LSTM背后的核心思想
LSTM的关键是cell state,即图中上方位置流过的水平直线。Cell state有点像是传输带,它直直地流过整个链,受到轻微的非线性相互作用影响。因此信息可以轻松地沿它流动而不发生改变。



LSTM确实有能力对cell state移除或者增加信息,由称作gate的结构小心地调控。Gate是一条让信息选择性通过的道路,它们由sigmoid神经网络层和一个逐点相乘操作组成。



Sigmoid层输出[0,1]之间的数字,表示每个部分有多少信息允许通过。0表示不然任何信息通过,而1表示所有信息都可以通过。一个LSTM有3个这样的gate,来保护和控制cell state。
 

LSTM的每步动作
第一步:

LSTM中的第一步是决定应该从cell state中丢弃哪些信息,这个决定是由叫做forget gate layer的sigmoid layer作出的。它检查ht-1和xt,并对cell state Ct-1中的每个数字输出一个[0, 1]之间的数字。0表示完全抛弃这些信息,而1表示所有信息全部保留。
回到语言模型的例子,即通过前面的词来推测下一个出现的单词。在这种情况下,cell state可能携带了当前主体的性别,因此可以推导出正确的代词。而当出现下一个主体时,我们想要遗忘上一主体的性别。



第二步:
接下来的一步是决定哪些新信息我们需要存储在cell state中。这主要有两部分:首先,一个称为input gate layer的sigmoid layer决定哪些值我们需要更新;然后,一个tanh layer创建了一个新的候选值向量,它可以被加在state上。在接下来的一步中,我们会结合这两者来创建一个update来更新 state。
在语言模型例子中可以这样解释,我们想要把新主体的性别加在cell state上,来替换应该被遗忘的旧的主体性别。



第三步:
现在是时候更新旧的cellstate 到新的cell state 了。我们将旧的 state乘上一个,遗忘掉之前决定遗忘的信息;然后加上,这是新的候选值,按照我们决定的更新方法进行缩放。
在语言模型例子,我们现在确实删掉了旧的主体性别,然后加入了新的信息。



第四步:
最后,我们需要决定输出什么。这个输出是基于cell state的,但是是一个过滤后的版本。首先,我们运行一个sigmoid layer,用来决定哪些部分的cell state我们将会输出;然后,将cell state通过tanh(为了将值变为[-1, 1]之间),并乘上sigmoid layer的输出,这样就可以只输出我们决定输出的内容了。
在语言模型中,由于模型刚刚发现了一个主体,它可能想要输出一个动词相关的信息,因为那个动词可能就是下一个输出。比如它可能输出主体是单数还是复数,这样就可以知道如果这就是输出的话,动词应该用什么形式。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息