理解LSTM网络--Understanding LSTM Networks(翻译一篇colah's blog)

colah的一篇讲解LSTM比较好的文章,翻译过来一起学习,原文地址:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ ,Posted on August 27, 2015。

Recurrent Neural  Networks

人类思维具有连贯性。当你看这篇文章时,根据你对前面词语的理解,你可以明白当前词语的意义。即是由前面的内容可以帮助理解后续的内容,体现了思维的连续性。

传统的神经网络(RNN之前的网络)在解决任务时,不能做到像人类思维一样的具有连续性,这成为它的一个主要不足。比如你想对电影不同时刻发生的故事情节进行事件的分类,就无法利用传统的神经网络,根据电影中前面时刻发生的剧情去推理后续的情节。RNN可以解决此类与连续性有关的问题,它们具有循环结构的网络,可以使信息在其中持续保存。

RNN具有循环结构

上图中的神经网络结构A,接收输入X,输出ht 。A具有的循环结构使得信息可以从上一个时间步(timestep,t)传到下一时间步(t+1)。带有箭头的循环网络A看起来很复杂,把循环结构展开之后就会比较清晰,从下图的展开结构可以看出循环网络与普通网络的差别也没有那么大。循环神经网络RNN可以看成是同一个网络的复制了几份而已,然后再把这复制的几个网络按照先后顺序排列起来,使得前一个网络的输出刚好作为下一个网络的输入。


RNN的展开示意图

这种类似链式的性质表明RNN与序列数据和列表数据有自然地联系,这种结构是神经网络利用序列数据的天然结构。事实也是如此。过去几年里,RNN成功应用于各种问题中:语音识别,语言模型,(机器)翻译,给图像加说明文字等等。Andrej Karpathy的blog讨论了RNN的各种神奇的效果:The Unreasonable Effectiveness of Recurrent Neural Networks。RNN的成功运用得益于一种特殊的循环神经网络结构:LSTM。在循环神经网络的运用领域,几乎所有的令人激动的成果都是基于LSTM做出来的,它远比标准的RNN结构要好得多。本文接下来就是要讨论这些LSTM结构。

长期依赖的问题(The Problem of Long-Term Dependencies)

RNN中的一个引人注意的想法就是它们也许能够将当前的问题与以前的信息联系起来,比如利用电影中前面一些帧的内容也许能够帮助理解后面的电影内容。RNN能否解决这个信息长期依赖的问题,取决于具体的情况。

有时我们只需要查询最近的信息来解决当前的问题,比如一个语言模型基于前面的几个词来预测下一个单词,我们要预测一句话的最后一个词 " the clouds are in the sky ",仅凭sky之前的词,不需要其他更多的信息即可预测到 sky,这种情况下预测位置与相关信息的距离很近,RNN能够学会利用这种之前的信息。

但是还有另外的一些情况RNN无法处理。比如要预测一大段话中最后一个词" I grew up in France.... I speak fluent French. "。最近的信息暗示最后一个词可能是一种语言,但是如果要确定是 French 就得需要远处的France这个上下文的信息。这种情况,FranceFrench距离可能会比较的远,RNN就无法学会将这些信息关联起来。

理论上RNN是可以处理这种“长期依赖”问题的,人们可以手工的仔细选择RNN的参数来解决小问题,但是实际中RNN还是无法学到“长期依赖”的解决方法, Hochreiter (1991) [German] 和 Bengio, et al. (1994) 深入研究过RNN无法工作的一些主要原因。LSTM没有这样的问题。

LSTM

LSTM(Long Short Term Memory)网络是一种特殊的RNN网络,能够解决“长期依赖”(long-tern dependencies)的问题,由Hochreiter & Schmidhuber (1997)提出的,它在许多问题的表现效果都很好,至今也在广泛应用。

LSTM被明确的设计为可以解决“长期依赖”问题,所以能够记住长期的信息是它们的默认一种属性。

在标准RNN结构中,循环的网络模块中结构比较简单,比如仅有一层tanh层。

RNN中循环模块只有简单的一层网络

LSTM也有与RNN相似的循环结构,但是循环模块中不再是简单的网络,而是比较复杂的网络单元。LSTM的循环模块主要有4个单元,以比较复杂的方式进行连接。

LSTM的循环模块中包含4个网络层

先提前熟悉一下将要用到的标记,下面会一步一步的讲解LSTM。

LSTM的主要思想(The Core Idea Behind LSTMs)

每个LSTM的重复结构称之为一个细胞(cell),在LSTM中最关键的就是细胞的状态,下图中贯穿的那条横线所表示的就是细胞状态。

LSTM能够给细胞状态增加或者删除信息,是由一种叫做“门”的结构来控制的,门主要起到开关的作用,它可以选择性的让信息通过,门是由一个sigmoid层与一个点乘操作组成的。


门的组成结构

sigmoid层输出的是0-1之间的数字,表示着每个成分能够通过门的比例,对应位数字为0表示不通过,数字1表示全通过。比如一个信息表示为向量[1, 2, 3, 4],sigmoid层的输出为[0.3, 0.5, 0.2, 0.4],那么信息通过此门后执行点乘操作,结果为[1, 2, 3, 4] .* [0.3, 0.5, 0.2, 0.4] = [0.3, 1.0, 0.6, 1.6]。

LSTM共有3种门,通过这3种门控制与保护细胞状态。

逐步详解LSTM(Step-by-Step LSTM Walk Through)

第一步是LSTM决定哪些信息需要从细胞状态中丢弃,由“遗忘门”(sigmoid层)来决定丢弃哪些信息。遗忘门接收上一时刻的输出ht-1 与这一时刻的输入xt,然后输出遗忘矩阵f,决定上一时刻的细胞状态Ct-1 的信息通过情况。


遗忘门

第二步是决定从新的信息中存储哪些信息到细胞状态中去。首先输入门(也是sigmoid层)接收ht-1 xt,产生决定我们要更新哪些数字。接下来一个tanh层产生候选状态值 \tilde{C}_t 。再联合待更新的数值与候选状态值,对旧的状态Ct-1 进行更新。如下图,

接着是更新旧的状态,如下图,ft 是遗忘矩阵, Ct-1是上一时刻的状态(旧状态),it 是决定要更新哪些数字,~C是候选状态。

最后一步是决定输出哪些信息。首先利用输出门(sigmoid层)产生一个输出矩阵Ot,决定输出当前状态Ct的哪些部分。接着状态Ct通过tanh层之后与Ot相乘,成为输出的内容ht 。如下图。

LSTM的变种

目前讨论的都是普通的LSTM,并非所有的LSTM网络结构都是这样的。

Gers & Schmidhuber (2000) 提出了一个比较流行的LSTM模型,加入了“peephole connections”,也就是增加了细胞状态与3个控制门的直接连接。如下图,

另一个LSTM变种模型是利用耦合的遗忘门与输入门。遗忘门决定哪些状态需要遗忘,输入门决定哪些输入信息加入新的状态,将这个两个分离的过程联合起来,共同做决定。只在要输入新状态的部分对旧的状态进行丢弃,或者只在被遗忘的状态部分输入新的状态。见下图,

另一个更加动态的LST是由 Cho, et al. (2014) 提出的GRU(Gated Recurrent Unit),GRU将遗忘门与输入门整合成一个单独的更新门,还整合了细胞状态与隐藏状态等,结果是GRU比标准的LSTM模型更加的简单。

还有其他的一些变种如Yao, et al. (2015) 提出的Depth Gated RNNs。还有采用其他方法解决长期依赖问题的方案如 Koutnik, et al. (2014) 提出的 Clockwork RNNs。

Greff, et al. (2015) 对比了这些变种发现它们都是一样的,其中的差别并没有太多的影响。 Jozefowicz, et al. (2015) 测试了测试了成千上万的RNN结果,发现有些RNN在某些特定任务上表现比LSTM要好。

结论

LSTM在绝大多数任务上的表现确实比RNN要好。LSTM是一个很大的进步,但是另外一个大的进步是什么呢?研究人员的一个共识就是注意力机制(Attention),注意力机制就是让RNN在每一步的训练都从大的信息集合中挑选需要的信息,类似于注意力集中在某一部分的信息上面。使用注意力机制有很多令人兴奋的成果出来,还有更多的成果即将出现。

注意力机制不是RNN领域唯一的,还有Kalchbrenner, et al. (2015) 的Grid LSTMs,还有 Gregor, et al. (2015)Chung, et al. (2015), or Bayer & Osendorfer (2015) 等人在生成式模型方面利用RNN。

致谢

省略...

理解LSTM网络--Understanding LSTM Networks(翻译一篇colah's blog)

原文地址:https://www.cnblogs.com/banluxinshou/p/11656381.html

时间: 2024-10-31 15:54:35

理解LSTM网络--Understanding LSTM Networks(翻译一篇colah's blog)的相关文章

Deep Learning基础--理解LSTM网络

循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有持久性的. 传统的神经网络并不能如此,这似乎是一个主要的缺点.例如,假设你在看一场电影,你想对电影里的每一个场景进行分类.传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类. 循环神经网络(Recurrent Neural Networks)解决了这个问题.这种神经网络带有环,可以将信息

『cs231n』RNN之理解LSTM网络

概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰好找到一篇不错的介绍文章,和课程的讲述范围差不多,所以这里摘下来(自己截图记录好麻烦),另外找到一篇推了公式的LSTM介绍,这个cs231n的课程并没有涉及,我暂时也不做这方面的研究,不过感觉内容不错,链接记下来以备不时之需. 本篇原文链接 RNN以及LSTM的介绍和公式梳理 按照老师的说法,LST

理解 LSTM 网络

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程.制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量. 作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分.此外,他还参与或者举办过各类国际性的人工智

Understanding LSTM Networks

Understanding LSTM Networks Recurrent Neural Networks Humans don’t start their thinking from scratch every second. As you read this essay, you understand each word based on your understanding of previous words. You don’t throw everything away and sta

长期和短期记忆(LSTM)网络是最先进的长期序列建模工具

最近哪里都去不了,还是在家学习点什么好,人工智能最近很火,来学学吧.长期和短期记忆(LSTM)网络是最先进的长期序列建模工具.然而,很难理解LSTM学到了什么,也很难研究他们犯某些错误的原因.卷积神经网络领域有很多文章和论文,但是我们没有足够的工具来可视化和调试LSTM. 在本文中,我们试图部分填补这一空白.我们从澳大利亚手语符号分类模型可视化LSTM网络的激活行为,并通过在LSTM层的激活单元上训练降噪自编码器来实现这一点.通过使用密集的自编码器,我们将LSTM激活值的100维向量投影到二维和

0 - Visualizing and Understanding Convolutional Networks(阅读翻译)

卷积神经网络的可视化理解(Visualizing and Understanding Convolutional Networks) 摘要(Abstract) 近来,大型的卷积神经网络模型在Imagenet数据集上表现出了令人印象深刻的效果,但是现如今大家并没有很清楚地理解为什么它们有如此好的效果,以及如何改善其效果.在这篇文章中,我们对这两个问题均进行了讨论.我们介绍了一种创新性的可视化技术可以深入观察中间的特征层函数的作用以及分类器的行为.作为一项类似诊断性的技术,可视化操作可以使我们找到比

Tensorflow进行POS词性标注NER实体识别 - 构建LSTM网络进行序列化标注

http://blog.csdn.net/rockingdingo/article/details/55653279  Github下载完整代码 https://github.com/rockingdingo/deepnlp/tree/master/deepnlp/pos 简介 这篇文章中我们将基于Tensorflow的LSTM模型来实现序列化标注的任务,以NLP中的POS词性标注为例实现一个深度学习的POS Tagger.文中具体介绍如何基于Tensorflow的LSTM cell单元来构建多

基于 Keras 用 LSTM 网络做时间序列预测

基于 Keras 用 LSTM 网络做时间序列预测 本文主要参考了 Jason Brownlee 的博文 Time Series Prediction with LSTM Recurrent Neural Networks in Python with Keras 原文使用 python 实现模型,这里是用 R 时间序列预测是一类比较困难的预测问题. 与常见的回归预测模型不同,输入变量之间的"序列依赖性"为时间序列问题增加了复杂度. 一种能够专门用来处理序列依赖性的神经网络被称为 递归

【DL-4】长短期记忆网络(LSTM)

目录 背景 从RNN到LSTM LSTM 的核心思想 LSTM前向传播算法 LSTM 的变体 一.背景 由于RNN梯度消失的问题,因此很难处理长序列的数据,大牛们对RNN的机构做了改进,得到了RNN的特例长短期记忆网络LSTM(Long Short-Term Memory)和其它变形,可以从结构上避免常规RNN的梯度消失. 举个例子:长期依赖(Long-Term Dependencies)问题 假设我们试着去预测"I grew up in France... I speak fluent Fre