翻译:《Understanding LSTM Netword》,附原文

递归神经网络

人类并不是每一秒都从头开始思考。当你阅读这篇文章时,你会根据对前几个词的理解来理解每个词。你不会扔掉一切,然后再从头开始思考。你的思想是有持久性的。

传统的神经网络并不能做到这一点,这似乎是一个主要的缺点。例如,想象一下你要对影片中每个时间点发生的事件进行分类。目前传统的神经网络还不清楚如何利用其对电影中先前事件的推理来告知后来的事件。

递归神经网络解决了这个问题。它们是包含循环的网络,允许信息留存。

递归神经网络具有循环

在上图中,神经网络块A,查看一些输入x_{t}输出值h_{t}循环允许将信息从网络的一个步骤传递到下一个步骤

这些循环使递归神经网络看起来有点神秘。但是,如果你多想一点,事实证明它们并没有与正常的神经网络多么不同。递归神经网络可以看作是同一网络的多个副本,每个副本将消息传递给后续。请考虑如果我们展开循环会发生什么情况:

展开的递归神经网络

这种链状的性质揭示了递归神经网络与序列和列表密切相关。它们是用于此类数据的神经网络的自然体系结构。

而且他们确实是被使用了!在过去的几年,将 RNN 应用于各种问题取得了令人难以置信的成功:语音识别、语言建模、翻译、自动图像描述...还有很多。我将把关于使用 RNNs 可以实现的惊人壮举的讨论留在Andrej Karpathy的优秀博客文章:The Unreasonable Effectiveness of Recurrent Neural Networks(http://karpathy.githun.io/2015/05/21/rnn-effectiveness)。它们是真的很神奇。

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


长期依赖问题

       RNN 的吸引力之一是,它们也许能够将以前的信息连接到当前任务,例如使用以前的视频帧,可能有助于形成对当前帧的理解。如果  RNN 能够做到这一点,它们将非常有用。但是他们可以吗?这得看情况。

有时,我们只需要查看最近的信息来执行当前任务。例如,考虑一个尝试根据前面的词预测下一个词的语言模型。如果我们试图预测“the clouds are in the sky”的最后一个词,我们不需要任何更多的上下文——很明显,下一个词就是sky。在这种情况下,如果相关信息与所需位置之间的距离很小,RNNs 可以学习使用过去的信息。

扫描二维码关注公众号,回复: 10557426 查看本文章

但是,在某些情况下,我们需要更多的上下文。考虑尝试预测“I grew up in France… I speak fluent French.”文本中的最后一个词。最近的信息表明,下一个词可能是一种语言的名称,但如果我们想要缩小到具体是哪种语言,我们需要回溯很远距离找到的 France 上下文。相关信息与需要的点之间的差距变得非常大是完全可能的。

不幸的是,随着这种距离的扩大,RNNs 变得无法学会连接信息了。

从理论上讲,RNNs绝对能够处理此类“长期依赖关系”。人类可以仔细选择参数,以解决这种形式的小问题。可悲的是,在实践中, RNNs 似乎无法学习它们。Hochreiter(1991年)[德国](http://people.idsia.ch/~juergen/SeppHochreiter1991ThesisAdvisorSchmidhuber.pdf)和Bengio等人(1994年)(http://www.dsi.ing.unifi.it/~paolo/ps/tnn-94-gradient.pdf)已经深入探讨了这个问题,他们发现了一些为什么很难实现的最本质原因。

谢天谢地,LSTM 没有这个问题!


LSTM网络

长期短期记忆网络(通常称为“ LSTMs ”)是一种能够学习长期依赖关系的特殊 RNN 。它们由Hochreiter和Schmidhuber(1997年)(http://www.bioinf.jku.at/publications/older/2604.pdf)提出,并在后续工作中被许多人提炼和推广。它们在各种问题上表现非常出色,现已得到广泛应用。

LSTMs 被明确设计来避免长期依赖问题。长时间记住信息实际上是他们的默认行为,而不是他们难以学习的东西!

所有递归神经网络都有神经网络重复模块链的形式。在标准 RNNs 中,此重复模块将有一个非常简单的结构,例如一个单tanh层。

标准RNN中的重复模块包含一个单层

LSTMs 也有此类似的链式结构,但重复模块具有不同的结构。不是只有一个单神经网络层,而是有四个,它们以非常特殊的方式交互

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

不要担心事情的细节。稍后我们将逐步浏览 LSTM 关系图。现在,让我们试着熟悉一下我们将要使用的符号。

在上图中,每个连线都携带一个完整的矢量,从一个节点的输出到其他节点的输入。粉红色圆圈表示点操作(如矢量添加),而黄色框是训练好的神经网络层。合并的连线表示串联,而分叉的连线表示正在复制其内容,副本将复制到不同位置。


LSTM背后的核心理念

       LSTMs 的关键是细胞状态,即贯穿关系图顶部的水平线。

细胞状态有点像传送带。它沿着整个链条直接运行,只有一些小的线性交互。信息很容易随其流动而保持不变。

LSTM 确实能够向细胞状态删除或添加信息,这是由称为 gate 的结构小心控制的。

门是一种选择性地让信息通过的方法。它们由 sigmoid 神经网络层和点乘法操作组成。

sigmoid 层输出 0 和 1 之间的数字,描述了每个组件应允许通过多少信息。0 表示“什么都不通过”,而值为 1 则表示“全部通过!”

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


分步LSTM演练

LSTM 的第一步是决定我们将从细胞状态中丢弃哪些信息。这个决定是由一个称为“forget gate layer”的sigmoid层来完成。它关注h_{t-1}x_{t} ,并为记忆细胞C_{t-1}中的每一个数字输出 0 1 之间的数字。 1 表示“完全保留这个”,相反 0 表示“完全删掉这个”

让我们回到一个语言模型的示例,该示例试图根据之前的所有词预测下一个词。在这种情况下,细胞状态可能包括当前研究对象的性别,以便可以使用正确的代词。当我们看到一个新的研究对象时,我们想忘记之前研究对象的性别。

语言模型的示例,该示例试图根据之前的所有词预测下一个词。在这种情况下,细胞状态可能包括当前研究对象的性别,以便可以使用正确的代词。当我们看到一个新的研究对象时,我们想忘记之前研究对象的性别。

下一步是决定我们将在细胞状态中存储哪些新信息。这有两个部分。首先,称为“input gate layer”的 sigmoid 层决定了我们将更新哪些值。接下来, tanh 层将创建新候选值的矢量,\tilde{C}_{t},该矢量可以添加到细胞状态。在下一步中,我们将合并这两个来创建状态的更新。

在我们的语言模型示例中,我们希望将新研究对象的性别添加到细胞状态中,以取代我们遗忘的旧研究对象。

现在是时候更新旧的细胞状态C_{t-1},然后进入新的细胞状态C_{t}。前面的步骤已经决定了该做什么,我们只需要实际完成就行。

我们把旧的细胞状态乘以f_{t},遗忘我们决定早点忘记的事情。然后我们再加上i_{t}\tilde{C}_{t}。这是新的候选值,根据我们决定更新每个状态值的程度进行缩放。

对于语言模型,我们实际上会删除有关旧研究对象性别的信息并添加新信息,正如我们在前面的步骤中所决定的。

最后,我们需要决定要输出的内容。此输出将基于我们的细胞状态,但将是一个筛选版本。首先,我们运行一个sigmoid层,该层决定要输出细胞状态的哪些部分。然后,我们把细胞状态通过tanh(将值推送到 -1 1 之间),然后乘以 sigmoid 门的输出,以便我们只输出我们决定的部分。

对于语言模型示例,因为它只是看到了一个研究对象,所以它可能希望输出与动词相关的信息,以防接下来会发生什么。例如,它可以输出主语是单数还是复数,这样我们就可以知道一个动词接下来应该变成什么形式。


长短期记忆的变体

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

Gers 和 Schmidhuber (2000)(ftp://ftp.idsia.ch/pub/juergen/TimeCount-IJCNN2000.pdf)推出的一个流行的 LSTM 变体,该变体添加了“poophole connections”。这意味着我们让门层来查看细胞状态。

上图为所有的门增加了窥视孔,但许多论文会给出一些窥视孔,而不是其他。

另一种变化是使用耦合的遗忘和输入门。我们不是单独决定忘记什么和应该添加什么新信息,而是一起做这些决定。我们只会忘记什么时候在它的位置上输入东西。我们只在忘记旧的值时才向状态输入新值。

LSTM 上一个稍微戏剧性的变化是由 Cho 等人引入的 Gated Recurrent Unit(GRU)(http://arxic.org/pdf/1406.1078v3.pdf)。它将遗忘和输入门合并到一个“更新门”中。它还合并细胞状态和隐藏状态,并进行一些其他更改。生成的模型比标准 LSTM 模型更简单,并且越来越受欢迎。

这些只是几个最值得注意的 LSTM 变体。还有很多其他,像Yao等人(2015年)(http://arxic.org/pdf/1508.03790v2.pdf)的 Depth Gated RNNs。解决长期依赖性的方法也完全不同,如Koutnik等人的 Clockword RNNs(2014年)(http://arxiv.org/pdf/1402.3511vz.pdf)。

这些变体中哪一个最好?分歧重要吗?Greff等人(2015年)(http://arxiv.org/pdf/1503.04069.pdf)对流行的变体做了很好的比较,发现它们都是一样的。Jozefowicz等人(2015年)(http://jmlr.prg/proceedings/papers/v37/jozefowicz15.pdf)测试了超过一万个 RNN 架构,发现一些在某些任务中比LSTM效果更好的结构。


结论

早些时候,我提到人们使用 RNN 取得的显著成果,基本上所有这些都是使用 LSTM 实现的。对于大多数任务,他们真的工作得更好!

作为一组方程来写,LSTM 看起来很吓人。希望在这篇文章中一步一步地介绍它们能使它们更容易理解。

LSTMs 是我们使用 RNNs 实现目标的一大步。人们很自然地会想:还会有更大的进步吗?研究人员普遍认为:“是的!下一步就是集中注意力!这个想法是让 RNN 的每一步都从更大的信息集合中挑选信息。例如,如果你使用RNN来创建描述图像的标题,它可能会选择图像的一部分来查看它输出的每个单词。事实上,Xu等人(2015)(http://arxiv.org/pdf/1502.03044v2.pdf)正是这样做的——如果你想探索注意力,这可能是一个有趣的起点!已经有很多使用注意力的令人兴奋的结果,而且似乎更多的结果即将出现……

注意力并不是 RNN 研究中唯一令人兴奋的线索。例如,Kalchbrenner等人(2015)(http://arxic.org/pdf/1507.01526vz.pdf)的 Grid LSTMs 似乎非常有前途。在生成模型中使用RNNs的工作——如Gregor等人(2015)(http://arxiv.org/pdf/1502.04623.pdf)、Chung等人(2015)(http://arxiv.org/pdf/1506.02216v3.pdf)或Bayer 和 Osendorfer等人(2015)(http://arxiv.org/pdf/1411.7610v3.pdf)——似乎也非常有趣。过去的几年对于递归神经网络来说是激动人心的一年,而未来的几年将会更加激动人心!

资源:https://download.csdn.net/download/qq_41297934/12250760

发布了25 篇原创文章 · 获赞 37 · 访问量 2936

猜你喜欢

转载自blog.csdn.net/qq_41297934/article/details/104883513