Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >理解长短期记忆网络(LSTM NetWorks)

理解长短期记忆网络(LSTM NetWorks)

作者头像
CSDN技术头条
发布于 2018-02-11 03:58:29
发布于 2018-02-11 03:58:29
6660
举报
文章被收录于专栏:CSDN技术头条CSDN技术头条

递归神经网络

人类并不是每时每刻都从头开始思考。正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词。你不会丢弃所有已知的信息而从头开始思考。你的思想具有持续性。

传统的神经网络不能做到这点,而且这似乎也是它的主要缺陷。比如,你想对电影中每个点发生的事件类型进行分类。目前还不清楚传统神经网络如何利用之前事件的推理来得出后来事件。

递归神经网络能够解决这一问题。这些网络中具有循环结构,能够使信息持续保存。

递归神经网络具有循环结构

在上图中,一组神经网络A,接收参数,输出,循环A可以使信息从网络的某个步骤中传递到下一个步骤。

这些循环使得递归神经网络有些不可思议。不过,如果你进一步思考,可以发现,它们与常规神经网络并非完全不同。可以将递归神经网络想象成是有多层相同网络的神经网络,每一层将信息传递给下一层。如果我们展开循环,就是这样:

展开的递归神经网络

这种链状的性质表明,递归神经网络与序列和列表密切相关。这是处理这种数据所使用的神经网络的自然结构。

人们当然使用了它们!在过去的几年里,在许多问题上使用RNNs已经取得了难以置信的成功,比如语音识别,语言建模,翻译,图像字幕,这样的例子不胜枚举。不过我不将讨论RNNs的惊人壮举,Andrej Karpathy对此写了篇非常棒的博客,递归神经网络不可思议的有效性(The Unreasonable Effectiveness of Recurrent Neural Networks)。它们真是太了不起了。

成功的关键是使用了“LSTMs”,一种特殊的递归神经网络,在许多任务中,它的表现要比标准递归神经网络出色许多。几乎所有基于递归神经网络令人振奋的结果都是由它们实现的。这篇文章就将探讨这些LSTMs。

长期依赖关系问题

RNNs呼吁的一点就是,它们可能将前期信息与当前任务连接,比如使用前面的视频帧可能得出对当前帧的理解。如果RNNs能够做到这点,它们会非常有用。但是它们能吗?这得看情况。

有些时候,在执行当前任务时,我们只需要查看最近的信息。比如,考虑一个语言模型,试图根据之前单词预测下一个。如果我们想要预测“the clouds are in the sky”中最后一个单词,我们不需要更多的上下文——很明显下一个单词会是“sky”。在这种情况下,如果相关信息与预测位置的间隔比较小,RNNs可以学会使用之前的信息。

但我们也有需要更多上下文的情况。考虑试图预测“I grew up in France… I speak fluent French.”中最后一个词。最近信息显示下一个词可能是一门语言的名字,但是如果我们想要缩小选择范围,我们需要包含“法国”的那段上下文,从前面的信息推断后面的单词。相关信息与预测位置的间隔很大是完全有可能的。

不幸的是,随着这种间隔的拉长,RNNs就会无法学习连接信息。

从理论上讲,RNNs绝对能够处理这样的“长期依赖关系”。一个人可以仔细挑选参数来解决这种简单的问题。不幸的是,实际上RNNs不能够学习它们。这种问题被Hochreiter (1991)【德国】和Bengio等人深入探讨过,他们发现了造成这种可能的一些非常基本的原因。

值得庆幸的是,LSTMs没有这个问题!

LSTM网络

长短期记忆网络——通常简称“LSTMs”——是一种特殊的RNN,能够学习长期依赖关系。它们由Hochreiter和Schmidhuber (1997)提出,在后期工作中又由许多人进行了调整和普及(除了原始作者之外,许多人为现代LSTM做出了贡献,不完全统计:Felix Gers, Fred Cummins, Santiago Fernandez, Justin Bayer, Daan Wierstra, Julian Togelius, Faustian Gomez, Matteo Gagliolo 和 Alex Graves)。它们在大量问题上效果异常出色,现在正在广泛使用。

LSTMs明确设计成能够避免长期依赖关系问题。记住信息很长一段时间几乎是它们固有的行为,而不是努力去学习!

所有的递归神经网络都具有一连串重复神经网络模块的形式。在标准的RNNs中,这种重复模块有一种非常简单的结构,比如单个tanh层。

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

LSTMs同样也有这种链状的结构,但是重复模块有着不同的结构。它有四层神经网络层以特殊的方式相互作用,而不是单个神经网络层。

LSTM中的重复模块包含四个相互作用的神经网络层

先别急着想问细节。我们之后会一步一步讲解LSTM图。现在,我们先来熟悉下我们将要使用到的符号。

在上面的图中,每条线表示一个完整向量,从一个节点的输出到其他节点的输入。粉红色圆圈代表逐点操作,比如向量加法,而黄色框框表示的是已学习的神经网络层。线条合并表示串联,线条分叉表示内容复制并输入到不同地方。

LSTMs核心理念

LSTMs的关键点是单元状态,就是穿过图中的水平线。

单元状态有点像是个传送带。它贯穿整个链条,只有一些小的线性相互作用。这很容易让信息以不变的方式向下流动。

LSTM有能力向单元状态中移除或添加信息,通过结构来仔细管理称为门限。

门限是有选择地让信息通过。它们由一个sigmoid神经网络层和逐点乘法运算组成。

sigmoid层输出0到1之间的数字,描述了每个成分应该通过门限的程度。0表示“不让任何成分通过”,而1表示“让所有成分通过!”。

LSTM有三种这样的门限,来保护和控制单元状态。

一步一步剖析LSTM

LSTM中第一步是决定哪些信息需要从单元状态中抛弃。这项决策是由一个称为“遗忘门限层”的sigmoid层决定的。它接收和,然后为单元状态中的每个数字计算一个0到1之间的数字。1表示“完全保留”,而0则表示“完全抛弃”。

我们来回顾一下那个语言模型的例子,试图根据前面所有的词语来预测下一个词。在这种问题中,单元状态可能包含当前主语的性别,所以可以使用正确的代词。当碰到一个新的主语时,我们希望它能够忘记旧主语的性别。

接下来我们需要决定在单元状态中需要存储哪些新信息。这分为两个部分。首先,一个叫做“输入门限层”的sigmoid层决定哪些值需要更新。接下来,一个tanh层创建一个向量,包含新候选值,这些值可以添加到这个状态中。下一步我们将会结合这两者来创建一个状态更新。

在语言模型的例子中,我们希望在单元状态中添加新主语的性别,来替换我们忘记的旧主语性别。

现在来更新旧单元状态了,输入到新单元状态。之前的步骤已经决定了需要做哪些事情,我们只需要实现这些事情就行了。

我们在旧状态上乘以,忘记之前决定需要忘记的。然后我们加上,这就是新的候选值,它的规模取决于我们决定每个状态值需要更新多少。

在语言模型的例子中,这里就是我们实际丢弃旧主语性别信息,根据之前步骤添加新信息的地方。

最后,我们需要决定需要输出什么。这个输出将会建立在单元状态的基础上,但是个过滤版本。首先,我们运行一个sigmoid层来决定单元状态中哪些部分需要输出。然后我们将单元状态输入到tanh函数(将值转换成-1到1之间)中,然后乘以输出的sigmoid门限值,所以我们只输出了我们想要输出的那部分。

对于语言模型例子来说,因为它只看到了一个主语,它可能想输出与动词相关的信息,为接下来出现的词做准备。比如,它可能输出主语是单数还是复数,那么我们知道接下来修饰动词的应该成对。

长短期记忆变体

我目前所讲述的还是非常常规的LSTM。但并不是所有的LSTMs都与上述的LSTM一样。实际上,几乎所有关于LSTMs的论文都稍有不同。虽然差异很小但也值得一谈。

一种流行的LSTM变种,由Gers和Schmidhuber (2000)提出,加入了“窥视孔连接”(peephole connections)。这意味着门限层也将单元状态作为输入。

上图中,所有的门限中都加入了窥视孔,但是许多论文都只使用部分窥视孔。

另一个变种就是使用耦合遗忘和输入门限。我们不单独决定遗忘哪些、添加哪些新信息,而是一起做出决定。在输入的时候才进行遗忘。在遗忘某些旧信息时才将新值添加到状态中。

稍微有戏剧性的LSTM变种是门限递归单元或GRU,由Cho等人(2014)提出。它将遗忘和输入门限结合输入到单个“更新门限”中。同样还将单元状态和隐藏状态合并,并做出一些其他变化。所得模型比标准LSTM模型要简单,这种做法越来越流行。

提出的深度门限RNNs(Depth Gated RNNs )。当然还有其他解决长短期依赖关系问题的方法,比如Koutnik等人(2014)提出的Clockwork RNNs 。

这些变种哪个是最好的?这些差异重要吗?Greff等人(2015)针对流行的变种做了良好对比,发现它们其实都一样。Jozefowicz等人(2015)对超过1万种RNN架构做了测试,发现其中某些在特定任务上效果比LSTMs要好。

结论

早些时候,我提到了人们使用RNNs取得的显著成效。基本上这些都是使用了LSTMs。对于大多数任务,它们真的可以达到更好的效果!

写了一堆方程式,LSTMs看起来很吓人。希望通过这篇文章中一步一步的剖析,能更好理解它们。

LSTMs是我们使用RNNs的一个飞跃。那么很自然地会想:还有其他飞跃吗?研究人员之间共同的想法是:“有的!还有其他飞跃,还有关注点(attention)!”。这个想法是,让RNN中每一步都从更大的信息集中挑选信息作为输入。比如,你使用RNN来创建一个标题来描述图像,它可能会挑选图像的一部分作为输入,然后输出信息。事实上,Xu等人(2015)这么做了——如果你想探索关注点这可能是个有趣的出发点!使用关注点还有一些其他令人兴奋的结果,而且似乎还有其他的效果还没被发现……

关注点并不是RNN研究中唯一令人振奋的地方。比如,Kalchbrenner等人(2015)提出的Grid LSTMs似乎非常有前途。在生产模型——比如Gregor等人(2015),Chung等人(2015)和Bayer,Osendorfer(2015)中使用RNNs似乎同样有趣。过去的几年对递归神经网络来说是激动人心的时期,而且今后更会如此!

致谢

我要感谢帮助我理解LSTMs的一群人,他们对网络模型的结构图进行了评论,并对这篇文章进行了反馈。

我非常感谢我在谷歌的同事提供的反馈,特别是Oriol Vinyals,Greg Corrado,Jon Shlens,Luke Vilnis,和Ilya Sutskever。同样感谢那些百忙之中给予我帮助的朋友和同事,Dario Amodei,和Jacob Steinhardt。我特别要感谢Kyunghyun Cho,对我的图表给出了非常周到的对应关系。

在写这篇文章之前,我在我教的两个神经网络研讨会上练习过解释LSTMs。感谢参与其中每个人对我的耐心和给出的反馈。

原文链接:Understanding LSTM Networks

(译者/刘翔宇 审校/赵屹华 责编/周建丁)

译者介绍:刘翔宇,中通软开发工程师,关注机器学习、神经网络、模式识别。 

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSDN技术头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
理解LSTM网络
人类不会每时每刻都从头开始重新思考,就像你阅读这篇文章时,你会根据对上文的理解来推断每个词语的意思,而不是抛弃一切从零开始思考。换而言之,你的思想具有持久性。
花落花飞去
2018/02/02
8980
理解LSTM网络
深度丨目前最受欢迎的 LSTM 教程:谷歌大脑科学家亲解
AI 科技评论按:这篇文章非常经典,出自 Google Brain 科学家 Christopher Olah 的博客,小编保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技评论」私聊。 如果你对深度学习稍有些研究的话,相信你一定听说过 LSTM,AI 科技评论此前也编译过 LSTM 之父 Jürgen Schmidhuber 的访谈文章,他与 Sepp Hochreiter 在 1997 年发表的一篇论文中提出了 LSTM 的概念。 LSTM 能够提升神经网络接受输入信息及训练数据的记忆机
AI科技评论
2018/03/09
1K0
深度丨目前最受欢迎的 LSTM 教程:谷歌大脑科学家亲解
(译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LSTM详细的网络结构还是不了解,心里牵挂着难受呀!今天看了 tensorflow 文档上面推荐的这篇博文,看完这后,焕然大悟,对 LSTM 的结构理解基本上没有太大问题。此博文写得真真真好!!!为了帮助大家理解,也是怕日后自己对这些有遗忘的话可以迅速回想起来,所以打算对原文写个翻译。首先声明,由于本人水平有限,如有翻译不好或理解有误的多多指出!此外,本译文也不是和原文一字一句对应的,为了方便理解可能会做一些调整和
Spark学习技巧
2018/06/22
1.3K0
如果你还没搞懂LSTM 网络,那本文绝对值得一看
本文作者Christopher Olah是Google Brain的研究科学家,她在文中图文并茂地解释了什么是LSTM网络,为什么要用LSTM网络,以及LSTM的核心思想,并通过分步详解的形式让读者更容易接受和理解这些概念。 在文章末尾,作者有一个思考:虽然LSTM使得我们在使用RNN能完成任务上迈进了一大步,但还会有下一个大进步吗? 对此你是怎么看的呢? 作者 | Christopher Olah 译者 | 于乃通 循环神经网络(RNN) 人们的每次思考并不都是从零开始的。比如说你在阅读这篇文章时,你
AI科技大本营
2018/04/27
8330
如果你还没搞懂LSTM 网络,那本文绝对值得一看
多图+公式全面解析RNN,LSTM,Seq2Seq,Attention注意力机制
我们知道人类并不是从零开始思考东西,就像你读这篇文章的时候,你对每个字的理解都是建立在前几个字上面。你读完每个字后并不是直接丢弃然后又从零开始读下一个字,因为你的思想是具有持续性的,很多东西你要通过上下文才能理解。
CristianoC
2020/06/02
3.5K0
LSTM
长时间的短期记忆网络(Long Short-Term Memory Networks),很多地方翻译为长短期记忆网络,给人一种歧义,以为是网络一会儿能记很长的内容,一会儿能记很短的内容,但其实正确的翻译应该是长时间的短期记忆网络。它的本质就是能够记住很长时期内的信息
mathor
2020/02/14
9020
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
RNN在处理长期依赖(时间序列上距离较远的节点)时会遇到巨大的困难,因为计算距离较远的节点之间联系时会涉及雅可比矩阵的多次相乘,会造成梯度消失或者梯度膨胀的现象。为了解决该问题,研究人员提出了许多解决办法,例如ESN(Echo State Network),增加有漏单元(Leaky Units)等等,其中成功应用最广泛的就是门限RNN(Gated RNN),而LSTM就是门限RNN中最著名的一种。有漏单元通过设计连接间的权重系数,从而允许RNN累积距离较远节点间的长期联系;而门限RNN则泛化了这样的思想,允许在不同时刻改变该系数,且允许网络忘记当前已经积累的信息。
JOYCE_Leo16
2024/04/09
1810
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
LSTM模型
什么是LSTM模型 LSTM (Long Short-Term Memory)也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象.同时LSTM的结构更复杂,它的核心结构可以分为四个部分去解析: ●遗忘门 ●输入门 ●细胞状态 ●输出门
zhangjiqun
2024/12/14
6680
LSTM模型
LSTM介绍及反向传播算法推导
LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN。长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学习的东西!
用户3578099
2020/11/04
1.3K0
LSTM介绍及反向传播算法推导
【综述专栏】循环神经网络RNN(含LSTM,GRU)小综述
在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。
马上科普尚尚
2021/01/13
5.3K0
【综述专栏】循环神经网络RNN(含LSTM,GRU)小综述
理解 LSTM 网络
人类不会每一秒都从头开始思考。当你阅读这篇文章时,你会根据对之前单词的理解来理解每个单词。您不会扔掉所有东西并重新从头开始思考。你的思想有恒心。
小锋学长生活大爆炸
2022/05/09
6900
理解 LSTM 网络
LSTM模型介绍
人类不会每时每刻都开始思考。 当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词。 你不会忘掉掉所有东西,然后再从头开始思考。 你的想法有持久性。
全栈程序员站长
2022/10/01
1.2K0
LSTM模型介绍
简单理解LSTM神经网络
向AI转型的程序员都关注了这个号👇👇👇 机器学习AI算法工程   公众号:datayx 递归神经网络 在传统神经网络中,模型不会关注上一时刻的处理会有什么信息可以用于下一时刻,每一次都只会关注当前时刻的处理。举个例子来说,我们想对一部影片中每一刻出现的事件进行分类,如果我们知道电影前面的事件信息,那么对当前时刻事件的分类就会非常容易。实际上,传统神经网络没有记忆功能,所以它对每一刻出现的事件进行分类时不会用到影片已经出现的信息,那么有什么方法可以让神经网络能够记住这些信息呢?答案就是Recurrent
机器学习AI算法工程
2022/03/04
9320
译 理解RNN和LSTM网络
循环神经网络(RNN) 人们的每次思考并不都是从零开始的。比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始。你的记忆是有持久性的。 传统的神经网络并不能如此,这似乎是一个主要的缺点。例如,假设你在看一场电影,你想对电影里的每一个场景进行分类。传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类。 循环神经网络(Recurrent Neural Networks)解决了这个问题。这种神经网络带有环,可以将信息持久化。在
云时之间
2018/04/11
7210
深度学习|理解LSTM网络(前篇)
01 — 回顾 近两天推送介绍了CNN网络,关于这部分的介绍,请参考: 深度学习|卷积神经网络(CNN)介绍(前篇) 深度学习|卷积神经网络(CNN)介绍(后篇) CNN网络在图像处理被广泛应用,接下来,介绍另一种在自然语言处理(NLP)和语音识别领域应用广泛的网络:LSTM(Long Short Term Memory),它是RNN网络的一个更具有工程应用的版本。 关于这部分的内容介绍,基本参考:《Understanding LSTM Networks》(http://colah.github.io/po
double
2018/04/02
7720
深度学习|理解LSTM网络(前篇)
长短期记忆网络 – Long short-term memory | LSTM
长短期记忆网络——通常被称为 LSTM,是一种特殊的 RNN,能够学习长期依赖性。由 Hochreiter 和 Schmidhuber(1997)提出的,并且在接下来的工作中被许多人改进和推广。LSTM 在各种各样的问题上表现非常出色,现在被广泛使用。
easyAI
2019/12/18
2.3K0
长短期记忆网络 – Long short-term memory | LSTM
利用LSTM(长短期记忆网络)来处理脑电数据
LSTMs(Long Short Term Memory networks,长短期记忆网络)简称LSTMs,很多地方用LSTM来指代它。本文也使用LSTM来表示长短期记忆网络。LSTM是一种特殊的RNN网络(循环神经网络)。想要说清楚LSTM,就很有必要先介绍一下RNN。下面我将简略介绍一下RNN原理。
脑机接口社区
2020/07/01
1.1K0
长短期记忆神经网络(LSTM)介绍以及简单应用分析「建议收藏」
本文分为四个部分,第一部分简要介绍LSTM的应用现状;第二部分介绍LSTM的发展历史,并引出了受众多学者关注的LSTM变体——门控递归单元(GRU);第三部分介绍LSTM的基本结构,由基本循环神经网络结构引出LSTM的具体结构。第四部分,应用Keras框架提供的API,比较和分析简单循环神经网络(SRN)、LSTM和GRU在手写数字mnist数据集上的表现。
全栈程序员站长
2022/09/16
37.1K0
[译] 理解 LSTM 网络
本文译自 Colah 的博文 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如,假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推断后续的事件。 RNN 解决了这
用户1107453
2018/06/21
4400
用机器学习实现IT服务票单的分配,实例详解分享
用认知计算处理现实生活中的业务是一件很有意义的事情,比如在IT服务管理领域。机器学习对处理现实案例中的分类与分配问题将会比人工更为有效,比如以下几种场景:
商业新知
2019/05/09
7460
用机器学习实现IT服务票单的分配,实例详解分享
相关推荐
理解LSTM网络
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档