理解LSTM网络

今天看到一篇不错的英文文章介绍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的输出,这样就可以只输出我们决定输出的内容了。

在语言模型中,由于模型刚刚发现了一个主体,它可能想要输出一个动词相关的信息,因为那个动词可能就是下一个输出。比如它可能输出主体是单数还是复数,这样就可以知道如果这就是输出的话,动词应该用什么形式。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值