资讯专栏INFORMATION COLUMN

LSTM

TalkingData / 1740人阅读

摘要:层输出的是一个到的数字,表示的是每个内容通过的概率。以根据前面的词语判断下一个词为例。二是层产生了一个候选值向量,它被添加到中。下一步中,我们将结合这两方面,向中写入更新。它将遗忘和输入门合并称为一个多带带的。

LSTM即Long Short Term Memory networks,是一种特殊的RNN网络,可以学习长周期的依赖。一个包含单tanh层的标准RNN网络如下:

LSTM也有一个类似结构的链条,但却有四层

LSTM核心理念

LSTMs的关键是cell state,即下图中的水平线。

信息可以很方便地不做改变地在这条线上流动,当然也可以在这些旁路作用下改变状态。门是一种选择性地让信息通过的方法,由一个sigmoid层和一个点乘操作组成。

sigmoid层输出的是一个0到1的数字,表示的是每个内容通过的概率。0即所有都不通过,1即所有都通过。

LSTM逐步讲解

C1
LSTM的第一步就是决定从cell state中抛出什么信息,这个决定由一个叫forget gate layer的sigmoid层做出,它根据 ht-1xt 为cell state Ct-1 中的每个数输出一个介于0到1的数。1代表全通过,0代表全不通过。

以根据前面的词语判断下一个词为例。在这个问题中,cell state可能包含当前对象的性别,所以正确的代词才能够被使用(he, she之类的)。当我们见到一个新对象时,老对象就应该被忘记。

第二步是决定我们想在cell state中存储什么新信息。这包含两个方面,一是称为input gate layer的sigmoid层决定了我们要更新哪些值。二是tanh层产生了一个候选值向量,它被添加到state中。下一步中,我们将结合这两方面,向state中写入更新。

在这个语言模型例子中,我们想向cell state中添加新对象的性别,以替换我们想忘记的老对象的性别。

现在是时候把老的cell state Ct-1 更新成新的cell state Ct ,之前的步骤已经决定了要做什么,我们只需要去实行。

ft 去乘老状态,忽略掉我们之前决定忽略的东西。然后加上 it * 。这就是新的候选值,按我们想要更新状态值的意愿大小去缩放。

在这个语言模型中,这里就是我们要扔掉旧对象性别信息,添加新信息的地方。

最后,我们要决定打算输出什么信息。这个输出要基于我们的cell state,但是会是一个过滤后的版本。首先,我们要运行一个决定输出哪部分cell state的sigmoid层。然后,我们让cell state通过tanh层(让值变为-1和1之间),并且让它与sigmoid门相乘。这样我们就可以输出我们想输出的那部分。

对于这个语言模型,既然它看见了一个对象,它或许想要输出关于动词的信息。以防那就是接下来的东西。例如,它或许要输出这个对象是单数还是复数。

Long Short Term Memory的变异

以上描述的都是一个正常的LSTM,但并不是所有LSTMs都是像上面那样的。事实上,看起来几乎所有包含LSTMs的论文都用的是略有不同的版本。差异很小,但还是有必要提几个。

一个流行的LSTM异型添加了peephole connections,这意味着sigmoid门输入考虑到了cell state。

上图对所有门添加了窥视孔(peephole),但很多论文只是添加了一部分。

另一个异型使用了耦合遗忘和输入门。不同于独立地决定去遗忘什么、添加什么,我们同时做 这些决定。只在打算输入信息时遗忘,只在遗忘老信息时向状态中输入新信息。

另一个戏剧性的LSTM异型是GRU(Gated Recurrent Unit)。它将遗忘和输入门合并称为一个多带带的update gate。它也合并了cell state和hidden state,并且做了一些其他的改变,创造了比标准LSTM更简单的模型,正在变得越来越流行。

这只是一部分,其实还有很多。Greff, et al. (2015)对流行的异型做了比较,发现基本都差不多。Jozefowicz, et al. (2015)测试了超过一万种RNN网络,发现在特定任务上有些做的更好。

附录 tanh

双曲函数中的一个,tanh()为双曲正切。定义域:R,值域:(-1,1)。y=tanh x是一个奇函数,其函数图像为过原点并且穿越Ⅰ、Ⅲ象限的严格单调递增曲线,其图像被限制在两水平渐近线y=1和y=-1之间。


翻译自:http://colah.github.io/posts/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18154.html

相关文章

  • 神奇!只有遗忘门的LSTM性能优于标准LSTM

    摘要:本论文研究只有遗忘门的话会怎样,并提出了,实验表明该模型的性能优于标准。这里我们发现,一个只有遗忘门且带有偏置项的版本不仅能节省计算成本,而且在多个基准数据集上的性能优于标准,能与一些当下较好的模型竞争。 本论文研究 LSTM 只有遗忘门的话会怎样,并提出了 JANET,实验表明该模型的性能优于标准 LSTM。1.介绍优秀的工程师确保其设计是实用的。目前我们已经知道解决序列分析问题较好的方式...

    Arno 评论0 收藏0
  • 如果你还没搞懂LSTM 网络,那本文绝对值得一看

    摘要:有能力对元胞状态添加或者删除信息,这种能力通过一种叫门的结构来控制。一个有个这种门,来保护和控制元胞状态。输出将会基于目前的元胞状态,并且会加入一些过滤。同时也将元胞状态和隐状态合并,同时引入其他的一些变化。 循环神经网络(RNN)人们的每次思考并不都是从零开始的。比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始...

    shadowbook 评论0 收藏0
  • 首次超越LSTM : Facebook 门卷积网络新模型能否取代递归模型?

    摘要:得到的结果如下上图是门卷积神经网络模型与和模型在数据集基准上进行测试的结果。虽然在这一研究中卷积神经网络在性能上表现出了对递归神经网络,尤其是的全面超越,但是,现在谈取代还为时尚早。 语言模型对于语音识别系统来说,是一个关键的组成部分,在机器翻译中也是如此。近年来,神经网络模型被认为在性能上要优于经典的 n-gram 语言模型。经典的语言模型会面临数据稀疏的难题,使得模型很难表征大型的文本,...

    高胜山 评论0 收藏0
  • 如何使用Pytorch-LSTM输出参数

      小编写这篇文章的主要目的,主要是给大家做一个介绍,介绍关于Pytorch-LSTM是如何去输出参数,有哪一些步骤呢?下面小编就以代码和图片给大家做出一个介绍。  1.Pytorch中的LSTM中输入输出参数  nn.lstm是继承nn.RNNBase,初始化的定义如下:  classRNNBase(Module):   ...   def__init__(self,mode,input_siz...

    89542767 评论0 收藏0
  • 该放弃正在堕落的“RNN和LSTM”了

    摘要:通过两年的发展,今天我们可以肯定地说放弃你的和有证据表明,谷歌,,等企业正在越来越多地使用基于注意力模型的网络。 摘要: 随着技术的发展,作者觉得是时候放弃LSTM和RNN了!到底为什么呢?来看看吧~ showImg(https://segmentfault.com/img/bV8ZS0?w=800&h=533); 递归神经网络(RNN),长期短期记忆(LSTM)及其所有变体: 现在是...

    Zoom 评论0 收藏0
  • 一个基于TensorFlow的简单故事生成案例:带你了解LSTM

    摘要:令人惊讶的是,创作出了一个有一定含义的故事。再次声明,本文中的示例只为了简化讨论。这是由于精度依赖于初始参数的随机设定。训练次数越多超过次精度也会相应提高。 在深度学习中,循环神经网络(RNN)是一系列善于从序列数据中学习的神经网络。由于对长期依赖问题的鲁棒性,长短期记忆(LSTM)是一类已经有实际应用的循环神经网络。现在已有大量关于 LSTM 的文章和文献,其中推荐如下两篇:Goodfel...

    wizChen 评论0 收藏0

发表评论

0条评论

TalkingData

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<