循环神经(LSTM)网络学习总结
摘要:
1.算法概述
2.算法要点与推导
3.算法特性及优缺点
4.注意事项
5.实现和具体例子
6.适用场合
内容:
1.算法概述
长短期记忆网络(Long Short Term Memory networks) 通常叫做 “LSTM”,由Hochreiter & Schmidhuber (1997)提出,一个LSTM Cell图示如下:

现在,我们先来定义一下用到的符号:

在网络结构图中,每条线都传递着一个向量。其中上面一条直线表示LSTM的状态向量的传递;下面一条直线表示由LSTM的上一层输出和这一层输入组成的合并向量的传递;
粉红色的圆圈表示逐点操作,这里涉及到1.两个输入向量各个元素相加;2.两个输入向量各个元素相乘,即矩阵的哈达玛积(hadamard product)。
黄色的矩形框表示的是一个神经网络层(就是很多个神经节点);
合并的线表示把两条线上所携带的向量进行合并;
分开的线表示将线上传递的向量复制一份,传给两个地方。
一个LSTM Cell是由3个门限结构和1个状态向量传输线组成的,门限分别是遗忘门,传入门,输出门;
其中状态向量传输线负责长程记忆,因为它只做了一些简单的线性操作;3个门限负责短期记忆的选择,因为门限设置可以对输入向量做删除或者添加操作;
1.1遗忘门:
遗忘门是通过一个sigmoid 神经层来实现的。 0 表示“不让任何信息通过”, 1 表示“让所有信息通过”。它的作用是要决定让哪些信息继续通过这个 cell。

1.2传入门:
传入门实现需要两个步骤:首先,一个sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个备选的用来更新的内容;
再下一步,我们把这两部分联合(向量点乘)起来,对 cell 的状态进行一个更新。它的作用是决定让多少新的信息加入到 cell 状态中来。

1.3输出门
输出门实现需要两个步骤:首先通过一个sigmoid层来决定哪部分信息会被输出;
接着,我们把状态向量通过一个 tanh 层,然后把 tanh 层的输出和 sigmoid 层计算出来的权重相乘,这样就得到了最后输出的结果。
输出门的作用是决定输出什么值。

1.4 LSTM cell状态更新:
首先我们把旧的状态和遗忘门的输出相乘, 把一些不想保留的信息忘掉;然后加上输入门的输出,这部分信息就是我们要添加的新内容。

2.算法要点与推导
符号说明:这里的“*”代表矩阵的哈达玛积(hadamard product)
2.1LSTM前向传播公式:

其中设计到参数Wf,Wi,Wc,Wo,bf,bi,bc,bo
2.2LSTM后向传播公式:

(译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
3.算法特性及优缺点
优点:可以拟合序列数据,通过遗忘门和输出门忘记部分信息来解决梯度消失的问题。
缺点:
4.注意事项
5.实现和具体例子
《TensorFlow实战》实现BiLSTM处理Mnist数据
tensorflow-char-rnn_model处理莎士比亚诗集
6.适用场合
循环神经(LSTM)网络学习总结的更多相关文章
- [深度学习]理解RNN, GRU, LSTM 网络
Recurrent Neural Networks(RNN) 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义 ...
- 循环神经网络与LSTM网络
循环神经网络与LSTM网络 循环神经网络RNN 循环神经网络广泛地应用在序列数据上面,如自然语言,语音和其他的序列数据上.序列数据是有很强的次序关系,比如自然语言.通过深度学习关于序列数据的算法要比两 ...
- 深度学习|基于LSTM网络的黄金期货价格预测--转载
深度学习|基于LSTM网络的黄金期货价格预测 前些天看到一位大佬的深度学习的推文,内容很适用于实战,争得原作者转载同意后,转发给大家.之后会介绍LSTM的理论知识. 我把code先放在我github上 ...
- 深度学习 循环神经网络 LSTM 示例
最近在网上找到了一个使用LSTM 网络解决 世界银行中各国 GDP预测的一个问题,感觉比较实用,毕竟这是找到的唯一一个可以正确运行的程序. #encoding:UTF-8 import pandas ...
- 吴裕雄--天生自然神经网络与深度学习实战Python+Keras+TensorFlow:使用TensorFlow和Keras开发高级自然语言处理系统——LSTM网络原理以及使用LSTM实现人机问答系统
!mkdir '/content/gdrive/My Drive/conversation' ''' 将文本句子分解成单词,并构建词库 ''' path = '/content/gdrive/My D ...
- [译] 理解 LSTM 网络
原文链接:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ 吴恩达版:http://www.ai-start.com/dl2017/h ...
- [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络
本文译自 Christopher Olah 的博文 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有 ...
- (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
@翻译:huangyongye 原文链接: Understanding LSTM Networks 前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LST ...
- [转] 理解 LSTM 网络
[译] 理解 LSTM 网络 http://www.jianshu.com/p/9dc9f41f0b29 Recurrent Neural Networks 人类并不是每时每刻都从一片空白的大脑开始他 ...
随机推荐
- 食物链-HZUN寒假集训
食物链 总时间限制: 1000ms 内存限制: 65536kB 描述 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动 ...
- EF CodeFirst 数据库初始化策略
最近用EF做了几个小东西,了解简单使用后有了深入研究的兴趣,所以想系统的研究一下EF CodeFist的几个要点.下面简单列一下目录 1.1 目录 数据库初始化策略和数据迁移Migration的简单介 ...
- JDK AtomicInteger 源码分析
@(JDK)[AtomicInteger] JDK AtomicInteger 源码分析 Unsafe 实例化 Unsafe在创建实例的时候,不能仅仅通过new Unsafe()或者Unsafe.ge ...
- NSURLSession 所有的都在这里(二)
前面一篇我们说了什么? 这是这个关于NSURLSession的第二篇文章,第一篇再加上这篇文章,就大概的把NSURLSession的API以及一些简单使用我们也就说的差不多了,这篇文章总结哪些点呢?相 ...
- 为什么Python编程被国家教育如此重视?请开始你的表演!
高考新宠 在高考更改之前,提起编程,人们可能更多的会想起c语言之类的. 然而,高考更始之后,Python这门编程说话一夜之间传进了千家万户. 现实上,在IEEE(美国电气电子工程师学会出书的旗舰杂志) ...
- 自定义完美的ViewPager 真正无限循环的轮播图
网上80%的思路关于Android轮播图无限循环都是不正确的,不是真正意义上的无限循环, 其思路大多是将ViewPager的getCount方法返回值设置为Integer.MAX_VALUE, 然后呢 ...
- Java并发之ReentrantLock
一.ReentrantLock简介 ReentrantLock字面意义上理解为可重入锁.那么怎么理解可重入这个概念呢?或者说和我们经常用的synchronized又什么区别呢? ReentrantLo ...
- echarts3 迁徙图 迁入迁出
geoCoordMap = { '上海': [121.4648,31.2891], '佛山': [112.8955,23.1097], '保定': [115.0488,39.0948], '兰州': ...
- cropper(裁剪图片)插件使用(案例)
公司发布微信H5前端阵子刚刚弄好的H5端的图片上传插件,现在有需要裁剪图片.前端找了一个插件---cropper 本人对这插件不怎么熟悉,这个案例最好用在一个页面只有一个上传图片的功能上而且只适合单个 ...
- synchronized修饰方法和代码块的区别
先看一段代码 Class A { public synchronized methodA() {//对当前对象加锁 } public methodB() { synchronized(this){}/ ...