1. 摘要

  对于RNN解决了之前信息保存的问题,例如,对于阅读一篇文章,RNN网络可以借助前面提到的信息对当前的词进行判断和理解,这是传统的网络是不能做到的。但是,对于RNN网络存在长期依赖问题,比如看电影的时候,某些细节需要依赖很久以前的一些信息,而RNN网络并不能很好的保存很久之前的信息,随着时间间隔不断增大,RNN网络会丧失学习到很远的信息能力,也就是说记忆容量是有限的。例如,对于阅读一本书,从头到尾一字不漏的阅读,肯定是越远的东西忘得越多。所以引入了LSTM网络,对于LSTM来解决梯度消失梯度爆炸问题。

  LSTM其实也是RNN的一种变体,大体结构几乎是一样的,但他们又有区别他的“记忆细胞”被改造过,该记忆的信息会一直传递下去,而不该记忆的东西会被“门”截断。

2. LSTM网络

  对于RNN网络都是具有重复神经网络模块的链式形式,在一个标准RNN中这个重复的模块只要一个非常简单的结构,例如一个tanh层。

对于LSTM同样是这样的结构,但是重复的模块变得复杂了。

对于图中的一些细节,

  在LSTM网络的图中,每一条黑线表示向量的传输,从一个节点的输出传入其它节点的输出。对于粉红色的圈代表着节点的操作,如向量的求和等。黄色的矩阵是学习到的网络层。Concatenate的线表示向量的连接,Copy的线表示内容复制,然后输出到不同的位置。

3. LSTM的关键点

  对于LSTM的关键是细胞状态,细胞的状态类似于传送带,直接在整个链路上运行,只有一些少量的线性交互。

4. 细胞状态的控制

  LSTM是通过“门”来控制细胞状态的,通过“门”来选择性通过,去除或者增加信息到细胞状态。它包含一个sigmoid网络层和一个pointwise乘法操作。Sigmoid层输入0到1之间的概率值,藐视每个部分有多少量可以通过,0代表不允许任何量通过,1代表允许任何量通过。LSTM是拥有三个门,来保护和控制细胞状态的。

5. LSTM几个关键“门”与操作

  STEP 1:决定从“细胞状态”中丢弃什么信息即“忘记门”。比如一篇小说的推导,小说中可能有几个人物,在读小说时候我们都会记住,但有些是不重要的这时候我就选择忘掉,而把重要的东西记住。总之,如果要决定之前的记忆以多大的程度被忘掉或者需要被保留,我们需要通过sigmoid函数去参考上一次的结果与当前考到的内容。

ft是输出0到1的概率,表示已多大的程度忘记之前的信息。h表示上一次输出的结果,x表示当前输入的信息。

STEP 2:决定放什么信息到“细胞状态”中。从step 1中我们在传送带上忘记了一些东西,那我们应该补充点东西,对细胞转态进行更新。也就是说哪些东西要记住,这一步就是君顶放什么心信息到“细胞状态”中。

这里的Sigmoid层是决定什么值需要更新,也就是这一时刻我们新学到我们学到的东西哪些应该要记住,以多大的程度选择记住;Tanh层创建了一个新的候选值Ct,表示我们新学到的东西。

  STEP 3:更新细胞状态。前面两步就是为细胞状态的更新做准备的,更新C(t-1)为Ct。也就是把旧状态与ft相乘,丢掉我们确定需要丢弃的信息,加上it*Ct。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。

从数学的角度来看,与RNN相比,在求偏导的时候RNN是进行链式相乘的,有一个效果不好,那么就会影响整个系统,效果影响到整个网络。而在LSTM中,从以上的公式可看出,做完Tanh后没在进行求和,所以再求偏导的时候,就算有一个效果不好也不会影响到整个网络,因为这里是进行加法运算的,所以很大程度上解决了梯度消失梯度爆炸问题。

STEP 4:基于“细胞状态”输出。首先运行一个Sigmoid层来确定细胞状态的哪个部分将输出,接着用Tanh来处理细胞状态,这是一个从-1到1的值。然后再讲它和Sigmoid门的输出相乘,输出我们确定输出的那个部分。比如我们可能需要单复数信息来确定输出“他”还是“他们”。最终输出我们想要输出的部分。

6. LSTM主要变体

  变种1:通过使用coupled忘记和输出门,之前是分开确定需要忘记和添加的信息,这里是一同作出决定。

变种二:Gated Recurrent Unit (GRU),2014年提出的,他将忘记门和输出门合成一个单一的更新门,同样还混合了细胞状态和隐藏转态,和其他一起改动,与标准的LSTM简单。

参考文献

[1]    http://colah.github.io/posts/2015-08-Understanding-LSTMs/.

[2]    https://www.jianshu.com/p/9dc9f41f0b29.

LSTM(Long Short-Term Memory)长短期记忆网络的更多相关文章

  1. LSTM(Long Short Term Memory)

    长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息.例如在句子”我出生在法国,……,我会说法语“中,若要预测末尾”法语“,我们需要用到上下文”法国“.理论上,递归 ...

  2. LSTM - 长短期记忆网络

    循环神经网络(RNN) 人们不是每一秒都从头开始思考,就像你阅读本文时,不会从头去重新学习一个文字,人类的思维是有持续性的.传统的卷积神经网络没有记忆,不能解决这一个问题,循环神经网络(Recurre ...

  3. 如何预测股票分析--长短期记忆网络(LSTM)

    在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期 ...

  4. 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)

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

  5. LSTM学习—Long Short Term Memory networks

    原文链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks Recurren ...

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

    转自:http://www.csdn.net/article/2015-11-25/2826323 原文链接:Understanding LSTM Networks(译者/刘翔宇 审校/赵屹华 责编/ ...

  7. LSTM长短期记忆网络

    Long Short Term Memory networks : http://colah.github.io/posts/2015-08-Understanding-LSTMs/

  8. LSTMs 长短期记忆网络系列

    RNN的长期依赖问题 什么是长期依赖? 长期依赖是指当前系统的状态,可能受很长时间之前系统状态的影响,是RNN中无法解决的一个问题. 如果从(1) “ 这块冰糖味道真?”来预测下一个词,是很容易得出“ ...

  9. LSTM(长短期记忆网络)及其tensorflow代码应用

     本文主要包括: 一.什么是LSTM 二.LSTM的曲线拟合 三.LSTM的分类问题 四.为什么LSTM有助于消除梯度消失 一.什么是LSTM Long Short Term 网络即为LSTM,是一种 ...

  10. Memory Networks02 记忆网络经典论文

    目录 1 Recurrent Entity Network Introduction 模型构建 Input Encoder Dynamic Memory Output Model 总结 2 hiera ...

随机推荐

  1. HUD 1969:Pie(二分)

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  2. Struts2重新学习之自定义拦截器(判断用户是否是登录状态)

    拦截器 一:1:概念:Interceptor拦截器类似于我们学习过的过滤器,是可以再action执行前后执行的代码.是web开发时,常用的技术.比如,权限控制,日志记录. 2:多个拦截器Interce ...

  3. test20180907 day1

    T1 256MB,1Sec T2 512MB,3Sec T3 512MB,1Sec 总分:150 试题一 餐馆 题目背景 铜企鹅是企鹅餐馆的老板,他正在计划如何使得自己本年度收益增加. 题目描述 共有 ...

  4. C# winform 使用DsoFramer 创建 显示office 文档

    使用微软DsoFramer 组件创建,显示office 1. DsoFramer  组件的介绍 dsoframer是微软提供一款开源的用于在线编辑.调用Word. Excel .PowerPoint等 ...

  5. JVM(下)

    持久代:不会被 gc 给轻易回收的,创建后一直存在,持久代在堆内存里面,但是不归 java 程序使用.持久代是 动态 load 的那些 class,局部变量,去 gc 其实也 gc 不了啥 1.8 之 ...

  6. yii2 数据库查询

    下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...

  7. win xp 关闭动画屏幕角色,那只小狗

    这个动画屏幕角色每次会占用两秒左右的时间. 在搜索选项中打开"改变首选项(G)" -选择 “不使用动画屏幕角色(S)”. - -

  8. C/C++动态分配连续空间,下标越界导致的free():invalid next size问题

    昨天帮导师做的一个程序出了内存泄露的bug(在VS上程序运行一切正常,等return返回后才出错) 而且是程序运行结束后才出现的错误,在退出前一切代码都顺利执行完了,只是return之后出错. 之后我 ...

  9. UDP丢包问题

    1. 问题描述 PC-A向PC-B发送UDP packet(共16K bytes),如果B机木有及时Read,UDP包将大量丢失. 2. 原因及解决 因为B木有及时接收,socket缓冲区放不下了. ...

  10. wxWidgets:菜单

    和菜单有关的类主要有两个:wxMenuItem和wxMenu.wxMenuItem用于表示一个菜单项,而wxMenu是wxMenuItem的弹出或下拉列表. 现在让我们看看如何给我们的框架类加上菜单: ...