LSTM(Long Short-Term Memory)长短期记忆网络
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)长短期记忆网络的更多相关文章
- LSTM(Long Short Term Memory)
长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息.例如在句子”我出生在法国,……,我会说法语“中,若要预测末尾”法语“,我们需要用到上下文”法国“.理论上,递归 ...
- LSTM - 长短期记忆网络
循环神经网络(RNN) 人们不是每一秒都从头开始思考,就像你阅读本文时,不会从头去重新学习一个文字,人类的思维是有持续性的.传统的卷积神经网络没有记忆,不能解决这一个问题,循环神经网络(Recurre ...
- 如何预测股票分析--长短期记忆网络(LSTM)
在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期 ...
- 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)
递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...
- LSTM学习—Long Short Term Memory networks
原文链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks Recurren ...
- 理解长短期记忆网络(LSTM NetWorks)
转自:http://www.csdn.net/article/2015-11-25/2826323 原文链接:Understanding LSTM Networks(译者/刘翔宇 审校/赵屹华 责编/ ...
- LSTM长短期记忆网络
Long Short Term Memory networks : http://colah.github.io/posts/2015-08-Understanding-LSTMs/
- LSTMs 长短期记忆网络系列
RNN的长期依赖问题 什么是长期依赖? 长期依赖是指当前系统的状态,可能受很长时间之前系统状态的影响,是RNN中无法解决的一个问题. 如果从(1) “ 这块冰糖味道真?”来预测下一个词,是很容易得出“ ...
- LSTM(长短期记忆网络)及其tensorflow代码应用
本文主要包括: 一.什么是LSTM 二.LSTM的曲线拟合 三.LSTM的分类问题 四.为什么LSTM有助于消除梯度消失 一.什么是LSTM Long Short Term 网络即为LSTM,是一种 ...
- Memory Networks02 记忆网络经典论文
目录 1 Recurrent Entity Network Introduction 模型构建 Input Encoder Dynamic Memory Output Model 总结 2 hiera ...
随机推荐
- POJ 2441 Arrange the Bulls 状态压缩递推简单题 (状态压缩DP)
推荐网址,下面是别人的解题报告: http://www.cnblogs.com/chasetheexcellence/archive/2012/04/16/poj2441.html 里面有状态压缩论文 ...
- Django Rest FrameWork 全部API
Django Rest FrameWork .Requests 请求 客服端发送给服务器的请求 .Responses 响应 rest框架支持响应不同格式的内容 .Views 视图 base基础类视图 ...
- Android开发小问题解决汇总
1.从命名文件时报“Read-only file system”255|shell@jacinto6evm:/vendor/lib/hw $ sushell@xxx:/system/vendor/li ...
- Linux中的其他命令
1. 修改文件的所有者 chown 用户名 文件名 2. 修改文件所属组 chgrp 组名 文件名 3. 创建用户,创建组,将用户添加到组中等 修改film文件夹的所有者和所属组 修改film文 ...
- asp.net core控制台项目运行
cmd中进入项目生成的dll目录下 运行命令: start dotnet xxx.dll
- hanlp中文自然语言处理的几种分词方法
自然语言处理在大数据以及近年来大火的人工智能方面都有着非同寻常的意义.那么,什么是自然语言处理呢?在没有接触到大数据这方面的时候,也只是以前在学习计算机方面知识时听说过自然语言处理.书本上对于自然语言 ...
- R(5): sql 数据处理
sqldf程序包是R语言中实用的数据管理辅助工具,但最新版本的包在处理中文时出现乱码,待解决 Usage: sqldf(x, stringsAsFactors = FALSE, row.names ...
- Ajax异步上传多个文件并返回文件路径
前端JSP页面代码 <label>附件:</label><form id="fileForm"> <input type="fi ...
- C# 关于out和ref的问题
http://bbs.csdn.net/topics/320214035 问题: C#里非基础类型传参数都是以引用类型的方式,那么换句话说,out和ref除了基础类型外,实际上没有任何意义?是不是这么 ...
- pycharm中配置pep8
Pycharm本身是有pep8风格检测的,当你敲得代码中不符合规范时,会有下划波浪线提示.如何让代码修改为符合规范,去掉这些难看的波浪线呢? 1.安装autopep8 pip install aut ...