深入理解LSTM神经网络
本文内容及图片主要参考:Understanding LSTM Networks
LSTM核心思想
LSTM最早由 Hochreiter & Schmidhuber 在1997年提出,设计初衷是希望能够解决神经网络中的长期依赖问题,让记住长期信息成为神经网络的默认行为,而不是需要很大力气才能学会。
LSTM记忆单元
下面是对LSTM单元内各部分的理解:
LSTM的关键是单元状态(cell state),即图中LSTM单元上方从左贯穿到右的水平线,它像是传送带一样,将信息从上一个单元传递到下一个单元,和其他部分只有很少的线性的相互作用。
LSTM通过“门”(gate)来控制丢弃或者增加信息,从而实现遗忘或记忆的功能。“门”是一种使信息选择性通过的结构,由一个sigmoid函数和一个点乘操作组成。sigmoid函数的输出值在[0,1]区间,0代表完全丢弃,1代表完全通过。一个LSTM单元有三个这样的门,分别是遗忘门(forget gate)、输入门(input gate)、输出门(output gate)。
- 遗忘门(forget gate):遗忘门是以上一单元的输出ht−1h_{t-1}和本单元的输入xtx_t为输入的sigmoid函数,为Ct−1C_{t-1}中的每一项产生一个在[0,1]内的值,来控制上一单元状态被遗忘的程度。
- 输入门(input gate):输入门和一个tanhtanh函数配合控制有哪些新信息被加入。tanhtanh函数产生一个新的候选向量Ct~\tilde{C_t},输入门为Ct~\tilde{C_t}中的每一项产生一个在[0,1]内的值,控制新信息被加入的多少。至此,我们已经有了遗忘门的输出ftf_t,用来控制上一单元被遗忘的程度,也有了输入门的输出iti_t,用来控制新信息被加入的多少,我们就可以更新本记忆单元的单元状态了,
Ct=ft∗Ct−1+it∗Ct~
C_t=f_t \ast C_{t-1}+ i_t \ast \tilde{C_t} 。
- 输出门(output gate):输出门用来控制当前的单元状态有多少被过滤掉。先将单元状态激活,输出门为其中每一项产生一个在[0,1]内的值,控制单元状态被过滤的程度。
LSTM变种
上面描述的LSTM是一种标准版本,并不是所有LSTM都和上面描述的一模一样。事实上,似乎每篇论文用到的LSTM都有一点细微的不同。
一种比较流行的LSTM变种如下图所示,最早由Gers & Schmidhuber在2000年提出。这种方法增加了“peephole connections”,即每个门都可以“窥探”到单元状态。这里,遗忘门和输入门是与上一单元状态建立连接,而输出门是与当前单元状态建立连接。
有一个变种取消了输入门,将新信息加入的多少与旧状态保留的多少设为互补的两个值(和为1),即:只有当需要加入新信息时,我们才会去遗忘;只有当需要遗忘时,我们才会加入新信息。
另外一个值得关注的变种看起来很好玩,叫做Gated Recurrent Unit(GRU),最早由Cho, et al.在2014年提出。这种方法将遗忘门和输入门连入了一个“更新门”(update gate),同时也合并了隐藏状态hth_t和单元状态CtC_t,最终的结果比标准LSTM简单一些。
当然,变种有很多,是列不过来的。有人专门比较总结过LSTM的变种,并比较了其效果,结果显示这些变种表现差不多,具体参见Greff, et al. (2015)及Jozefowicz, et al. (2015)。
深入理解LSTM神经网络相关推荐
- 理解LSTM神经网络 ---- 翻译 Understanding LSTM Networks
理解LSTM神经网络 -- 翻译 Understanding LSTM Networks 这篇文章是Understanding LSTM Networks博客的翻译,仅用于学习和理解.因为个人水平有限 ...
- 从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14:29 对人类而言,转写是一件相对容易并且可解释的任务,所以它比较适合用来解释神经网络做了哪些事情,以及神经网
从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14:29 对人类而言,转写是一件相对容易并且可解释的任务,所以它比较适合用来解释神经网络做了哪些事情,以及神经网络 ...
- 一步步教你理解LSTM
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1 什么是LSTM LSTM全名是Long Short-Term ...
- (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)
干货 | 图解LSTM神经网络架构及其11种变体(附论文) 2016-10-02 机器之心 选自FastML 作者:Zygmunt Z. 机器之心编译 参与:老红.李亚洲 就像雨季后非洲大草原许多野 ...
- 数据分享 | LSTM神经网络架构和原理及其在Python中的预测应用(附视频)
本文约2800字,建议阅读10+分钟 本文与你分享如何使用长短期记忆网络(LSTM)来拟合一个不稳定的时间序列. 长短期记忆网络--通常称为"LSTM"--是一种特殊的RNN递归神 ...
- 如何理解LSTM后接CRF?
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 知乎 地址 | https://www.zhihu.com/question ...
- 三次简化一张图:一招理解LSTM/GRU门控机制
机器之心专栏 作者:张皓 RNN 在处理时序数据时十分成功.但是,对 RNN 及其变种 LSTM 和 GRU 结构的理解仍然是一个困难的任务.本文介绍一种理解 LSTM 和 GRU 的简单通用的方法. ...
- 双层lstm每层有自己的权重参数吗_一幅图真正理解LSTM的物理结构
下图是我看过对LSTM物理结构描述最清楚的图,参考自LSTM神经网络输入输出究竟是怎样的? 答主在图中对三种架构有简要的说明,这里根据自己的理解,再对它做进一步的解释. 图中的第一部分是LSTM的时序 ...
- (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LSTM详细的网络结构还是不了解,心里牵挂着难受呀!今天看了 tensorflow 文档上面推荐的这篇博文 ...
- 【译】深入理解LSTM网络
递归神经网络 人类不会每时每刻都开始思考. 当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词. 你不要扔掉所有东西,然后再从头开始思考. 你的想法有持久性. 传统的神经网络无法做到这一点, ...
最新文章
- 网线传输速度测试_高效的以太网测试仪应该具备哪些功能?
- 【Android工具】更新安卓手机传感器信息获取工具Ampere Castro phyphox,轻松获取硬件数据和状态信息...
- 基于数据挖掘的旅游推荐APP(四):“我的”模块
- 子类覆盖父类(Java)
- Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞
- 信息学奥赛一本通C++语言——1081:分苹果
- domReady的理解
- Matlab——plot polyfit polyval
- maven 打包javadoc乱码解决方案
- 第7章 贪吃蛇(《C和C++游戏趣味编程》配套教学视频)
- unity 陀螺仪控制节点旋转
- JMF视频音频通信( 图+源码 )
- 基于串级pid控制系统的两轴无人机云台设计
- HTML+CSS+JS做一个简易音乐播放器
- 数字孪生应用案例及常用技术
- Android NDK jint和jstring转换 以及jstring转换成jint的详解
- 算术运算符——加号的多种和自增自减
- 关于VS2010下编译NTL库方法及NTL库的应用
- jerry推荐好玩的做图网站
- 如何使用aria2及webui-aria2下载百度云资源