本文内容及图片主要参考: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神经网络相关推荐

  1. 理解LSTM神经网络 ---- 翻译 Understanding LSTM Networks

    理解LSTM神经网络 -- 翻译 Understanding LSTM Networks 这篇文章是Understanding LSTM Networks博客的翻译,仅用于学习和理解.因为个人水平有限 ...

  2. 从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14:29 对人类而言,转写是一件相对容易并且可解释的任务,所以它比较适合用来解释神经网络做了哪些事情,以及神经网

    从任务到可视化,如何理解LSTM网络中的神经元 By 机器之心2017年7月03日 14:29 对人类而言,转写是一件相对容易并且可解释的任务,所以它比较适合用来解释神经网络做了哪些事情,以及神经网络 ...

  3. 一步步教你理解LSTM

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1 什么是LSTM LSTM全名是Long Short-Term ...

  4. (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)

    干货 | 图解LSTM神经网络架构及其11种变体(附论文) 2016-10-02 机器之心 选自FastML 作者:Zygmunt Z. 机器之心编译  参与:老红.李亚洲 就像雨季后非洲大草原许多野 ...

  5. 数据分享 | LSTM神经网络架构和原理及其在Python中的预测应用(附视频)

    本文约2800字,建议阅读10+分钟 本文与你分享如何使用长短期记忆网络(LSTM)来拟合一个不稳定的时间序列. 长短期记忆网络--通常称为"LSTM"--是一种特殊的RNN递归神 ...

  6. 如何理解LSTM后接CRF?

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自 | 知乎 地址 | https://www.zhihu.com/question ...

  7. 三次简化一张图:一招理解LSTM/GRU门控机制

    机器之心专栏 作者:张皓 RNN 在处理时序数据时十分成功.但是,对 RNN 及其变种 LSTM 和 GRU 结构的理解仍然是一个困难的任务.本文介绍一种理解 LSTM 和 GRU 的简单通用的方法. ...

  8. 双层lstm每层有自己的权重参数吗_一幅图真正理解LSTM的物理结构

    下图是我看过对LSTM物理结构描述最清楚的图,参考自LSTM神经网络输入输出究竟是怎样的? 答主在图中对三种架构有简要的说明,这里根据自己的理解,再对它做进一步的解释. 图中的第一部分是LSTM的时序 ...

  9. (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)

    前言:其实之前就已经用过 LSTM 了,是在深度学习框架 keras 上直接用的,但是到现在对LSTM详细的网络结构还是不了解,心里牵挂着难受呀!今天看了 tensorflow 文档上面推荐的这篇博文 ...

  10. 【译】深入理解LSTM网络

    递归神经网络 人类不会每时每刻都开始思考. 当你阅读这篇文章时,你会根据你对之前单词的理解来理解每个单词. 你不要扔掉所有东西,然后再从头开始思考. 你的想法有持久性. 传统的神经网络无法做到这一点, ...

最新文章

  1. 网线传输速度测试_高效的以太网测试仪应该具备哪些功能?
  2. 【Android工具】更新安卓手机传感器信息获取工具Ampere Castro phyphox,轻松获取硬件数据和状态信息...
  3. 基于数据挖掘的旅游推荐APP(四):“我的”模块
  4. 子类覆盖父类(Java)
  5. Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞
  6. 信息学奥赛一本通C++语言——1081:分苹果
  7. domReady的理解
  8. Matlab——plot polyfit polyval
  9. maven 打包javadoc乱码解决方案
  10. 第7章 贪吃蛇(《C和C++游戏趣味编程》配套教学视频)
  11. unity 陀螺仪控制节点旋转
  12. JMF视频音频通信( 图+源码 )
  13. 基于串级pid控制系统的两轴无人机云台设计
  14. HTML+CSS+JS做一个简易音乐播放器
  15. 数字孪生应用案例及常用技术
  16. Android NDK jint和jstring转换 以及jstring转换成jint的详解
  17. 算术运算符——加号的多种和自增自减
  18. 关于VS2010下编译NTL库方法及NTL库的应用
  19. jerry推荐好玩的做图网站
  20. 如何使用aria2及webui-aria2下载百度云资源

热门文章

  1. 怎样学好模拟集成电路设计?
  2. 泛微OA ecology 您查看的文档过大,请下载文档后查看
  3. 使用google analytics(分析)监测百度竞价关键词效果(网址构建工具)
  4. Ring3加载驱动源码
  5. winRAR 破解注册码
  6. oa系统在线试用,零成本开始研发协作免费试用
  7. 台式机linux系统安装教程,台式机Linux/Unix多系统安装详细教程
  8. 哈理工OJ 2090 背包【思维】
  9. matlab生成pdf报告,MATLAB发布代码---生成文档pdf
  10. R及RStudio下载安装教程(超详细)