Understanding-LSTMs[中文翻译]

原文标题:Understanding-LSTMs
原文地址:https://colah.github.io/posts/2015-08-Understanding-LSTMs/
原作者:Christopher Olah
译者:Horcham


循环神经网络

每秒钟人类都不会从头开始思考。在阅读本文时,您可以根据您对以前单词的理解来理解每个单词。你不要把所有东西都扔掉,再从头开始思考。你的想法有持久性。

传统神经网络不能做到这一点,似乎是一个主要的缺点。例如,想象一下,您想要分析电影中每一点发生的事件。传统神经网络如何能够利用其关于电影中以前的事件的推理来通知以后的事情是不清楚的。

循环神经网络解决了这个问题。它们是具有循环的网络,允许信息持续存在。

这里写图片描述

在上图中,一大块神经网络, 一个看一些输入 xt 并输出一个值 ht 。循环允许信息从网络的一个步骤传递到下一个。

这些循环使得复发性神经网络似乎是神秘的。然而,如果你再想一点,结果是它们并不是一般的神经网络的不同。循环神经可以被认为是同一个网络的多个副本,每一个都传递一个信息给后继者。考虑如果我们展开循环会发生什么:

循环神经网络展开

这种链状特征揭示了循环神经网络与序列和列表密切相关。它们是用于此类数据的神经网络的自然结构。

而且他们肯定是用的!在过去几年里,将RNN应用于语音识别,语言建模,翻译,图像字幕等各种问题已经取得了令人难以置信的成功。我将讨论可以通过RNN实现的令人惊叹的专长,使Andrej Karpathy的优秀博客“循环神经网络的不合理的有效性”成为可能。但他们真的很神奇。

这些成功的关键在于使用“LSTM”,这是一种非常特殊的循环神经网络,对于许多任务来说,它们比标准版本好得多。几乎所有令人兴奋的结果基于循环神经网络是通过他们实现的。这篇文章将探讨这些LSTM。

长期依赖的问题

RNN的要求之一是他们可能能够将先前的信息连接到当前任务的想法,例如使用先前的视频帧可以通知对当前帧的理解。如果RNN可以做到这一点,他们将非常有用。但可以吗? 是的。

有时,我们只需要查看最近的信息来执行当前的任务。例如,考虑一种语言模型,尝试基于以前的单词来预测下一个单词。如果我们试图预测“the clouds are in the sky ”的最后一个字,我们不需要任何进一步的语境 - 下一个字将是 sky 很明显。在这种情况下,如果相关信息与所需地点之间的差距很小,则RNN可以学习使用过去的信息。

但也有需要更多上下文的情况。考虑尝试预测文本中的最后一个单词“I grew up in France… I speak fluent French ”。最近的信息表明下一个单词可能是一种语言的名称,但如果我们想缩小到时哪种语言,我们需要 France 的背景,从进一步回来。相关信息之间的差距和需要变得非常大的点是完全可能的。

不幸的是,随着差距的增加,RNN无法学会连接信息。

在理论上,RNN绝对有能力处理这样的“长期依赖”。人们可以仔细挑选参数来解决这种形式的问题。可悲的是,实际上,RNN似乎无法学习。Hochreiter(1991)[German]和Bengio等人深入探讨了这个问题。(1994),他们发现了一些很可能是困难的根本原因。

幸运的是,LSTM没有这个问题!

LSTM网络

长短期记忆网络(Long Short Term Memory networks,通常称为“LSTM”)是一种特殊的RNN,能够学习长期的依赖关系。他们由Hochreiter&Schmidhuber(1997)介绍,并得到了许多人的好评和普及,在后续工作中。他们在各种各样的问题上工作得很好,现在被广泛使用。

LSTM是显式地设计以避免长期依赖问题的。记住长时间的信息实际上是他们的属性,而不是要尽力才能得到的效果!

所有循环神经网络都具有神经网络重复模块链的形式。在标准RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。

LSTM也具有这样的链结构,但重复模块具有不同的结构。没有一个单一的神经网络层,而是四层,且以非常特殊的方式进行交互。

LSTM中的重复模块包含四个交互层。

不要担心发生了什么的细节。我们将逐步介绍LSTM图。现在,让我们尽量适应我们将要使用的符号。

在上图中,实线代表一个向量,从一个节点的输出到其他节点的输入。粉色圆圈表示逐点的运算,如向量加法。黄色框是学习神经网络层。实线合并表示串联合并。实线分岔表示其内容正在复制,副本将转到不同的位置。

LSTMs背后的核心理念

LSTM的关键是cell state,水平线穿过图的顶部。cell state类似于输送带。它贯穿整条链,只有一些小的线性相互作用。这让信息可以流畅地传递下去且保持不变。

LSTM确实具有去除或添加信息到cell的能力,由称为gate的结构仔细调节。gate是一种可选地让信息通过的方式。它们由Sigmoid层和点乘运算组成。

Sigmoid函数输出一个介于0到1的值,描述每个组件应该通过多少。值为0表示“没有任何通过”,而值为1意味着“让一切通过!”。一个LSTM可以包含三个gate,用来保护和控制cell的状态。

LSTMs的训练过程

我们的LSTM的第一步是决定我们要从cell中丢弃什么信息。这个决定是由一个被称为“遗忘门层(forget gate layer)”的Sigmoid函数构成的。它接受 ht1 xt ,并输出一个介于0到1的值传递给cell state Ct1 。1代表“完全保持信息”,而0代表“彻底忘记该信息”。

回到我们的一个语言模型的例子,试图根据所有以前的语料来预测下一个单词。在这样一个问题中,cell state可能包括当前受试者的性别,从而可以使用正确的代词。当我们看到一个新主题时,我们想要忘记这个老主题的性别。

遗忘门层

下一步是决定我们要在cell state下存储的新信息。这有两部分。首先,称为“输入门层(input gate layer)”的sigmoid层决定了我们将更新哪些值。接下来,tanh层创建新的候选值向量 Ct~ ,可以添加到state。在下一步中,我们将结合这两个值来对状态的更新。

在我们的语言模型的例子中,我们希望将新对象的性别添加到cell state中,以替换我们将要忘记的旧对象。

现在是时候使用新的cell state Ct ,来更新旧的cell state Ct1 。以前的步骤已经决定了要做什么,我们只需要做到这一点。

旧state乘以 ft ,用来忘记我们在遗忘门层决定忘记的事情。然后加上 itCt~ 。这是新的候选值,按照我们决定更新每个state值的多少来缩放。

在语言模型的情况下,这个步骤就是用来放弃关于旧主题性别的信息,并添加新信息。

这里写图片描述

最后,我们需要决定我们要输出什么。此输出将基于我们的cell state,但将是一个过滤版本(filtered version)。首先,我们运行一个Sigmoid层来确定要输出cell state的哪些部分。然后,用tanh去作用cell state(将值映射到-1到1之间),并乘以Sigmoid层的输出,以便我们只输出我们决定的部分。

对于语言模型示例,由于它只是看到一个对象,它可能需要输出与动词相关的信息,以防下一步发生。例如,它可能会输出对象是单数还是复数,以便我们知道动词应该如何组合在一起,如果这是接下来的内容。

这里写图片描述

LSTM的变体

到目前为止,我所描述的是一个很正常的LSTM。但并不是所有的LSTM都与上述相同。事实上,似乎几乎每一篇涉及LSTM的论文都使用了一个略有不同的版本。差异很小,但其中一些值得提及。

Gers&Schmidhuber(2000)介绍的一种受欢迎的LSTM变体。它添加了“窥视孔连接(peephole connection)”。这意味着我们让门层(layer gate)可以接受cell state的数据。

这里写图片描述

上面的图表在所有的门都增加了窥视孔链接,但许多论文只使用了部分的窥视孔链接。

另一种变化是使用耦合的遗忘门和输入门。我们让遗忘门和输入门一起去做决定,而不是单独让遗忘门决定要忘记什么,或者是输入门要添加什么。只当我们要在输入内容时忘记。当我们忘记旧的东西时,我们只会向cell state中输入新的值。

LSTM的一个稍微更显着的变化是由Cho等人介绍的门控循环单元或GRU 。(2014)。它将遗忘门和输入门组合成一个单一的“更新门”,它还合并了cell state和hidden state,并进行了一些其他更改。所得到的模型比标准LSTM模型更简单,并且越来越受欢迎。

这里写图片描述

这些只是最显着的LSTM变体中的几个。还有很多其他的,如Yao等人的 Depth Gated RNNs 。(2015)。还有一些完全不同的处理长期依赖的方法,例如Koutnik等人的 Clockwork RNNs 。(2014)。

哪些变体最好?分歧是否重要?Greff等人 (2015)做一个很好的比较流行的变种,发现他们都是一样的。Jozefowicz等人 (2015年)测试了超过一万种RNN结构,发现某些工作在某些任务上比LSTM更好。

结论

此前,我提到了人们通过RNN实现的显着成果。基本上所有这些都是使用LSTM来实现的。他们真的为大多数工作做得更好!

写成一组方程式,LSTM看起来很吓人。希望在这篇文章中一步步走过他们,使他们变得更加平易近人。

LSTM是我们可以用RNN完成的一大步。很自然的想法:还有另一大步吗?研究人员的共同观点是:“是的!有一个下一步,值得关注!“这个想法是让RNN的每个步骤从一些较大的信息集合中挑选信息。例如,如果您使用RNN创建描述图像的标题,则可能会选择图像的一部分来查看其输出的每个字。其实,Xu等 (2015)做到这一点 - 如果你想要注意,可能是一个有趣的起点!有一些真正令人兴奋的结果使用注意力,似乎还有更多的是在角落…

注意力不是RNN研究中唯一令人兴奋的线索。例如,Kalchbrenner 等人的 Grid LSTM (2015)似乎非常有希望。在生殖模型中使用RNN进行工作 - 如Gregor 等 (2015),Chung,et al。(2015)或拜耳与奥桑多尔(2015) - 也似乎很有趣。最近几年对于卷积神经网络来说已经是一个激动人心的时刻了,下一个希望只有更加如此!

致谢

我很感谢一些人帮助我更好地了解LSTM,评论可视化,并提供关于这篇文章的反馈。

我非常感谢Google的同事提供有用的反馈意见,特别是Oriol Vinyals,Greg Corrado,Jon Shlens,Luke Vilnis和Ilya Sutskever。我也感谢许多其他朋友和同事花时间帮助我,包括达里奥·阿莫迪(Dario Amodei)和雅各布·斯坦哈特(Jacob Steinhardt)。我非常感谢Kyunghyun Cho对我的图表进行了深思熟虑的通信。

在这篇文章之前,我在两个我在神经网络上教授的研讨会系列中练习了解释LSTM。感谢所有参加这些活动的人,对他们的耐心和反馈。

  1. 除了原作者,很多人对现代LSTM做出了贡献。一个非全面的列表是:Felix Gers,Fred Cummins,Santiago Fernandez,Justin Bayer,Daan Wierstra,Julian Togelius,Faustino Gomez,Matteo Gagliolo和Alex Graves。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值