理解 LSTM 网络

本文详细介绍了循环神经网络(RNN)及其局限性,特别是传统RNN在处理长期依赖问题上的不足。循环神经网络无法有效地传递和利用长期信息,而长短期记忆网络(LSTM)通过其门控机制解决了这一问题,能够学习并保持长期依赖。LSTM由输入门、遗忘门和输出门组成,允许模型选择性地存储和检索信息。文章还提及了LSTM的各种变体,如门控循环单元(GRU),并指出注意力机制是RNN领域的下一步发展重点。
摘要由CSDN通过智能技术生成

人们的每次思考并不都是从零开始的。比如你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始。你的记忆是有持久性的。

传统的神经网络并不能如此,这似乎是一个主要的缺点。例如,假设你在看一场电影,你想对电影里的每一个场景进行分类。传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类。

循环神经网络(Recurrent Neural Networks)解决了这个问题。这种神经网络带有环,可以将信息持久化。

None

在上图所示的神经网络[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SZTnXHiN-1638514528527)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-25b206f25506e6d6f46be832f7119ffa_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-74GJmIp6-1638514528528)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-e7ff213ae3ac7102ea50143656c95eb4_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6nLrBbs4-1638514528529)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-2476c2d53a90b010c018013e346af170_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fb2jVv17-1638514528529)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-25b206f25506e6d6f46be832f7119ffa_l3.svg)]

这种链式结构展示了RNN与序列和列表的密切关系。RNN的这种结构能够非常自然地使用这类数据。而且事实的确如此。在过去的几年里,RNN在一系列的任务中都取得了令人惊叹的成就,比如语音识别,语言建模,翻译,图片标题等等。关于RNN在各个领域所取得的令人惊叹的成就,参见这篇文章

LSTM是这一系列成功中的必要组成部分。LSTM(Long Short Term Memory)是一种特殊的循环神经网络,在许多任务中,LSTM表现得比标准的RNN要出色得多。几乎所有基于RNN的令人赞叹的结果都是LSTM取得的。本文接下来将着重介绍LSTM。

RNN的一个核心思想是将以前的信息连接到当前的任务中来,例如,通过前面的视频帧来帮助理解当前帧。如果RNN真的能够这样做的话,那么它们将会极其有用。但是事实真是如此吗?未必。

有时候,我们只需要看最近的信息,就可以完成当前的任务。比如,考虑一个语言模型,通过前面的单词来预测接下来的单词。如果我们想预测句子“the clouds are in the sky

None

然而,有时候我们需要更多的上下文信息。比如,我们想预测句子“I grew up in France… I speak fluent French

不幸的是,随着距离的增大,RNN对于如何将这样的信息连接起来无能为力

None

理论上说,RNN是有能力来处理这种长期依赖(Long Term Dependencies)的。人们可以通过精心调参来构建模型处理一个这种玩具问题(Toy Problem)。不过,在实际问题中,RNN并没有能力来学习这些。Hochreiter (1991) GermanBengio, et al. (1994)

幸运的是,LSTM并没有上述问题!

LSTM,全称为长短期记忆网络(Long Short Term Memory networks),是一种特殊的RNN,能够学习到长期依赖关系。LSTM由Hochreiter & Schmidhuber (1997)

LSTM在设计上明确地避免了长期依赖的问题。记住长期信息是小菜一碟!所有的循环神经网络都有着重复的神经网络模块形成链的形式。在普通的RNN中,重复模块结构非常简单,例如只有一个tanh层。

LSTM也有这种链状结构,不过其重复模块的结构不同。LSTM的重复模块中有4个神经网络层,并且他们之间的交互非常特别。

None

现在暂且不必关心细节,稍候我们会一步一步地对LSTM的各个部分进行介绍。开始之前,我们先介绍一下将用到的标记。

在上图中,每条线表示向量的传递,从一个结点的输出传递到另外结点的输入。粉红圆表示向量的元素级操作,比如相加或者相乘。黄色方框表示神经网络的层。线合并表示向量的连接,线分叉表示向量复制。

LSTM的关键是元胞状态(Cell State),下图中横穿整个元胞顶部的水平线。

元胞状态有点像是传送带,它直接穿过整个链,同时只有一些较小的线性交互。上面承载的信息可以很容易地流过而不改变。

LSTM有能力对元胞状态添加或者删除信息,这种能力通过一种叫门的结构来控制。

门是一种选择性让信息通过的方法。它们由一个Sigmoid神经网络层和一个元素级相乘操作组成。

None

Sigmoid层输出0~1之间的值,每个值表示对应的部分信息是否应该通过。0值表示不允许信息通过,1值表示让所有信息通过。一个LSTM有3个这种门,来保护和控制元胞状态。

LSTM的第一步是决定我们将要从元胞状态中扔掉哪些信息。该决定由一个叫做“遗忘门(Forget Gate)”的Sigmoid层控制。遗忘门观察[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TVgGowGe-1638514528530)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-2e36d45013d5377adc7ae884628e3b00_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M6cRsHs3-1638514528532)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-e95410b7a7a6a79cbcbdc56ca038a68e_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zo5AWhum-1638514528534)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-597ce7117fc467b45d0abb54b79e4d55_l3.svg)]

回到之前的预测下一个单词的例子。在这样的一个问题中,元胞状态可能包含当前主语的性别信息,以用来选择正确的物主代词。当我们遇到一个新的主语时,我们就需要把旧的性别信息遗忘掉。

下一步是决定我们将会把哪些新信息存储到元胞状态中。这步分为两部分。首先,有一个叫做“输入门(Input Gate)”的Sigmoid层决定我们要更新哪些信息。接下来,一个tanh层创造了一个新的候选值,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIvF4YR0-1638514528535)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-2936f04de039a47193b8acde527bf326_l3.svg)]

在语言模型的例子中,我们可能想要把新主语的性别加到元胞状态中,来取代我们已经遗忘的旧值。

现在我们该更新旧元胞状态[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUNnFDBT-1638514528537)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-597ce7117fc467b45d0abb54b79e4d55_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n20nUbF4-1638514528538)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-2936f04de039a47193b8acde527bf326_l3.svg)]

我们把旧状态[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5uPzdzN4-1638514528539)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-597ce7117fc467b45d0abb54b79e4d55_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kMPldaxG-1638514528540)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-c896a3b3c321503c4b789aa41db0bdf3_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nne72p1E-1638514528540)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-bf8b417e99ecf2cc5ea9b2289141928c_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X6zHIiFs-1638514528541)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-c73c77307452bec7dd52af1f13e46dd9_l3.svg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxwR32TV-1638514528542)(http://nooverfit.com/wp/wp-content/ql-cache/quicklatex.com-51f7de79577d1dc3a5243ff270cf096c_l3.svg)]构成。

还是语言模型的例子,在这一步,我们按照之前的决定,扔掉了旧的主语的性别信息,并且添加了新的信息。

最后,我们需要决定最终的输出。输出将会基于目前的元胞状态,并且会加入一些过滤。首先我们建立一个Sigmoid层的输出门(Output Gate),来决定我们将输出元胞的哪些部分。然后我们将元胞状态通过tanh之后(使得输出值在-1到1之间),与输出门相乘,这样我们只会输出我们想输出的部分。

对于语言模型的例子,由于刚刚只输出了一个主语,因此下一步可能需要输出与动词相关的信息。举例来说,可能需要输出主语是单数还是复数,以便于我们接下来选择动词时能够选择正确的形式。

None

本文前面所介绍的LSTM是最普通的LSTM,但并非所有的LSTM模型都与前面相同。事实上,似乎每一篇paper中所用到的LSTM都是稍微不一样的版本。不同之处很微小,不过其中一些值得介绍。

一个流行的LSTM变种,由Gers & Schmidhuber (2000)

None

上图中,对于所有的门都加入了“窥视孔”,不过也有一些paper中只加一部分。

另一种变种是使用对偶

None

另一个变化更大一些的LSTM变种叫做Gated Recurrent Unit,或者GRU,由Cho, et al. (2014)

None

另外还有很多其他的模型,比如Yao, et al. (2015)Koutnik, et al. (2014)

不同的模型中哪个最好?这其中的不同真的有关系吗?Greff, et al. (2015)Jozefowicz, et al. (2015)

前文中,我提到了人们使用RNN所取得的出色的成就。本质上,几乎所有的成就都是由LSTM取得的。对于大部分的任务,LSTM表现得非常好。

由于LSTM写在纸上是一堆公式,因此看起来很吓人。希望本文的分步讲解能让读者更容易接受和理解。

LSTM使得我们在使用RNN能完成的任务上迈进了一大步。很自然,我们会思考,还会有下一个一大步吗?研究工作者们的共同观点是:“是的!还有一个下一步,那就是注意力(Attention)!”注意力机制的思想是,在每一步中,都让RNN从一个更大的信息集合中去选择信息。举个例子,假如你使用RNN来生成一幅图片的说明文字,RNN可能在输出每一个单词时,都会去观察图片的一部分。事实上,Xu, et al.(2015)

注意力并不是RNN研究中唯一让人兴奋的主题。举例说,由Kalchbrenner, et al. (2015)Gregor, et al. (2015)Chung, et al. (2015)Bayer & Osendorfer (2015)

转自:http://www.yunaitong.cn/understanding-lstm-networks.html

Nonehttp://colah.github.io/posts/2015-08-Understanding-LSTMs/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ziix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值