LSTM的“前生今世”-阿里云开发者社区

开发者社区> 人工智能> 正文
登录阅读全文

LSTM的“前生今世”

简介: 本文介绍了LSTM的发展历史,并且深入浅出的介绍了LSTM的核心思想(无非就是几个高深莫测的公式),作者通过图形化的方法解释了公式,使得核心思想更加容易理解。

更多深度文章,请关注:https://yq.aliyun.com/cloud


循环神经网络(RNN

人脑因为某种机制的存在,从来不会从头开始思考。当你阅读这篇文章时,你会根据你对以前的词意的理解来理解每个单词。你从来不会把所有东西都扔掉,再从头开始思考。由于这种机制的存在,我们的大脑变得无比高效。算法其实就是模拟我们人类思维的一种真实映射。不管是RNN,还是LSTM它们都是基于人类思维的一种数学表现形式。

但传统神经网络不能做到这一点,这似乎是一个很大的缺陷。例如,想象一下你想要分析一个电影中每个点发生什么样的事件。传统的神经网络是不能够利用电影中以前的事件的来推理出以后的事件。但循环神经网络解决了这个问题。它是具有循环的网络,允许信息持续存在。

5febd36a6f59084cf2152cad8d3476f9332c5e70

在上图中,一个神经网络,A输入Xt并输出Ht。循环允许信息从网络的一个步骤传递到下一个。

这些循环使得循环神经网络看起来很神秘。然而,如果你在深入的思考一下,那就证明它们并不是一般的神经网络。一个循环的神经网络可以被认为是同一个网络的多个副本,它们每一个都会传递给后继者的消息。考虑如果我们展开循环神经网络会发生什么呢?请看下图:

dab0c7876e41f2ccd67aff0d289fa5529331195e

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

在过去的几年里,RNN应用于语音识别,语言建模,翻译,图像字幕等各种问题上,并且取得了巨大的成功。这些成功的基础是使用“LSTM”,这是一种非常特殊的循环神经网络,对于许多任务来说,它比标准版本要好的多。几乎所有基于循环神经网络的令人兴奋的结果都是通过它实现的。本文就着重探讨LSTM

长期依赖的问题

RNN的功能之一就是他们可以能够将先前的信息连接到当前任务,例如使用先前的视频帧可以增加对当前帧的理解。如果RNN可以做到这一点,他们将非常有用。

但有时,我们只需要查看最近的信息来执行当前的任务。例如,考虑一种语言模型,尝试基于以前的单词来预测下一个单词。例如我们试图预测云在天空 ”中的最后一个字,我们就不需要任何其他的语境。在这种情况下,如果相关信息与所需神经元之间的差距很小,则RNN可以使用过去的信息。

67211ffb3baf340bbabd4a34d8b97eea740f5228

但也有需要更多上下文的情况。考虑尝试预测文本中的最后一个单词我在法国长大…….我说流利的法语。最近的信息表明,下一个单词可能是一种语言的名称,但是如果我们想缩小范围确定是哪种语言,我们需要法国的背景,从而进一步的来确定。这时,相关信息之间的差距就变得非常大。不幸的是,随着距离的扩大,RNN无法学会使用过去信息。

2267a455ae7cd59d70a88417dcb14dc0076ebb55

理论上,RNN绝对有能力处理类似的长期依赖。人们可以仔细挑选参数来解决这种形式的玩具问题。不幸的是,在实践中,RNN似乎没有办法做到这些。Hochreiter1991[German]Bengio等人深入探讨了这个问题他们发现解决这个问题是非常困难的。幸运的是,LSTM成功的解决了这个问题!

LSTM网络

Long Short Term Memory(通常称为“LSTM”)是一种特殊的RNN,能够保存长期的依赖关系。在这个模型中,常规的神经元,即一个将S型激活应用于其输入线性组合的单位,被存储单元所代替。每个存储单元是与一个输入门,一个输出门和一个跨越时间步骤无干扰送入自身的内部状态相关联。它是由HochreiterSchmidhuber1997)介绍,并且许多人对它进行了精炼和普及。

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

59497a66c8ee8143e5dcd545325c7e37f3448767

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

c024344fc8d1c6ee33131243a335de218c49700f

不要担心改变了什么细节。接下来我们将逐步介绍LSTM。现在,先熟悉我们将要使用的符号。

在上图中,每一行都含有从一个节点的输出到其他节点的输入的整个向量。粉色圆圈表示点向运算,如向量加法,而黄色框是神经网络层。行合并表示连接,而行交叉表示其内容正在复制,副本将转送到不同的位置。

LSTM的核心思想

LSTM的关键是细胞状态,即水平线穿过图的顶部。

dfddc7c175e9e0a485e449a5a43d5429cf86e8d0

细胞状态类似于输送带。它直接在整个链上运行,只有一些小的线性相互作用。信息很容易的可以通过它并且保持不变。

f2b93e5f3950eadbc4d2f846128474331eb541b4

LSTM确实具有删除或添加信息到细胞状态的能力,这种能力由被称为门的结构调节使用。门是一种可选择地让信息通过的方式。它们由S形的神经网络层和点向乘法运算组成。

7d90b25dff4dbf13cbc31963e3bce8e8088b1f47

SIGMOID函数输出值是0或者1,它描述每个组件应该通过多少数据。值为0表示如何都不能通过,而值为1意味着让一切通过!

LSTM有三个门,用于保护和控制细胞状态。

一步一步“走过”LSTM

LSTM的第一步就是决定我们要从单元格中丢弃什么信息。这一决定是由一个sigmoid layer控制的。它主要控制ht1xt之间的计算,输出0或者11代表完全保持,而0 代表彻底丢弃

我们回到一个语言模型的例子,试图根据所有以前的语料来预测下一个单词。在这样的问题中,细胞状态可能包括当前主题(subject)的词性的分析,从这些分析中,我们可以使用正确的代词或者动词。

2673f55dd26c0cb14ee3a9e179fdf4f2b576501f

下一步是决定我们要在单元格状态下存储的新信息。这有两部分,首先,称为输入门层S形层(sigmoid layer)决定了我们将更新哪些值。接下来,tanh层会创建新的候选值的向量。在下一步中,我们将结合这两个来创建对状态的更新。

在我们的语言模型的例子中,我们希望将新主题的词性可以添加到单元格状态,以替换我们忘记的旧词性。

98058bbf65a58984806959e5ef3a49f7ddab93ff

现在是更新旧细胞状态的时候了,我们把旧状态乘以ft忘记我们之前决定忘记的事情。然后我们加itCt,这是新的候选状态,按照我们决定更新每个状态值的程度来衡量。

在语言模型的情况下,我们实际上已经删除关于旧主题词性的信息,并添加了新信息,正如我们在之前的步骤中所做的。

e1aa2aff5dc659b9c7636de7ec1fc63e3fa0d415

最后,我们需要决定我们要输出什么。此输出将基于我们的单元格状态,但这将是一个过滤版本。首先,我们运行一个sigmoid层,它决定了我们要输出的单元格状态的哪些部分。然后,我们把细胞状态通过tanh,并将其乘以sigmoid门的输出,以便我们只输出我们需要的部分。

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

e9bb6a3e26b5029bc6867978b0fee6685ed08e4f

LSTM变异

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

GersSchmidhuber2000介绍的一种受欢迎的LSTM变体添加了窥视孔连接(peephole connections。这意味着我们让门层看着单元格状态。

fcc19044e4f1583ce1e547391573e331c1f9f05e

上面的图就是增加了所有的门的窥视。

另一种变异是使用耦合的忘记(coupled forget)和输入门。而不是单独决定要忘记什么,我们应该添加新信息,然后一起做出这些决定。

75e1d6001bda5ae875373b17988dcc5e58ca31c5

LSTM的更显著的变化是由Cho等人2014介绍的门控循环单元或GRU 。它将忘记和输入门组合成一个单一的更新门,还合并了单元格状态和隐藏状态,并进行了一些其他更改。所得到的模型比标准LSTM模型更简单,并且越来越受欢迎。

65f1a36ee933e430ae55f30d8bd500480d575c69

这些是最显著的LSTM变体。还有很多其他的,如Yao等人2015 Depth Gated RNNs 。还有一些完全不同的处理长期依赖的方法,例如Koutnik2014等人的 Clockwork RNNs

哪些变体最好?分歧是否重要?Greff等人 2015做了一个很好的比较流行的变种,发现这些变异都是一样的。Jozefowiczet al2015测试了一万多个RNN架构,发现在某些任务上它们的表现比LSTM更好。

结论

此前,我说人们通过RNN取得了显著的成果,这些成果基本上都是使用LSTM实现的。这足以表明LSTM的强大。可能写成一组方程式,会让LSTM看起来很吓人。但我希望在这篇文章中你会对它有一个认识,使他们变得更加平易近人。

LSTMRNN发展的一大步。很自然的想法:还有另一大步吗?研究人员的共同观点是:是的!还有下一步,值得关注!这个想法是让RNN的每个步骤从一些较大的信息集合中挑选信息。例如,如果您使用RNN创建描述图像的标题,则可能会选择图像的一部分来查看其输出的每个字。事实上,2015做到了这一点 ,如果你想要引起注意,这可能是一个有趣的起点!

致谢

我很感谢一些人帮助我更好地了解LSTM 我非常感谢Google的同事们有用的反馈,特别是Oriol VinyalsGreg CorradoJon ShlensLuke VilnisIlya Sutskever。我也感谢许多其他朋友和同事花时间帮助我,包括达里奥·阿莫德迪雅各布·斯坦哈特

本文由@阿里云云栖社区组织翻译。

文章原标题《Understanding LSTM Networks

作者:colah 博客:http://colah.github.io

译者:袁虎 审阅:

文章为简译,更为详细的内容,请查看原文



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章