点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散

仅作学术分享,不代表本公众号立场,侵权联系删除

转载于:作者:陈楠 来源:知乎

链接:https://zhuanlan.zhihu.com/p/83496936

AI博士笔记系列推荐

周志华《机器学习》手推笔记正式开源!可打印版本附pdf下载链接

1.长短期记忆网络LSTM

LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN。长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学习的东西!

所有递归神经网络都具有神经网络的链式重复模块。在标准的RNN中,这个重复模块具有非常简单的结构,例如只有单个tanh层,如下图所示。

图1 RNN结构图

LSTM具有同样的结构,但是重复的模块拥有不同的结构,如下图所示。与RNN的单一神经网络层不同,这里有四个网络层,并且以一种非常特殊的方式进行交互。

图2 LSTM结构图

  1.1 LSTM--遗忘门

图3 遗忘门

LSTM 的第一步要决定从细胞状态中舍弃哪些信息。这一决定由所谓“遗忘门层”的 S 形网络层做出。它接收  和  ,并且对细胞状态  中的每一个数来说输出值都介于 0 和 1 之间。1 表示“完全接受这个”,0 表示“完全忽略这个”。

  1.2 LSTM--输入门

图4 输入门

下一步就是要确定需要在细胞状态中保存哪些新信息。这里分成两部分。第一部分,一个所谓“输入门层”的 S 形网络层确定哪些信息需要更新。第二部分,一个  形网络层创建一个新的备选值向量——  ,可以用来添加到细胞状态。在下一步中我们将上面的两部分结合起来,产生对状态的更新。

  1.3 LSTM--细胞状态更新

图5 细胞状态更新

现在更新旧的细胞状态  更新到  。先前的步骤已经决定要做什么,我们只需要照做就好。

我们对旧的状态乘以  ,用来忘记我们决定忘记的事。然后我们加上  ,这是新的候选值,根据我们对每个状态决定的更新值按比例进行缩放。

  1.4 LSTM--输出门

图6 输出门

最后,我们需要确定输出值。输出依赖于我们的细胞状态,但会是一个“过滤的”版本。首先我们运行 S 形网络层,用来确定细胞状态中的哪些部分可以输出。然后,我们把细胞状态输入 tanh(把数值调整到 −1 和 1 之间)再和 S 形网络层的输出值相乘,部这样我们就可以输出想要输出的分。

2. LSTM的变种以及前向、反向传播

目前所描述的还只是一个相当一般化的 LSTM 网络。但并非所有 LSTM 网络都和之前描述的一样。事实上,几乎所有文章都会改进 LSTM 网络得到一个特定版本。差别是次要的,但有必要认识一下这些变种。

  2.1 带有"窥视孔连接"的LSTM

一个流行的 LSTM 变种由 Gers 和 Schmidhuber 提出,在 LSTM 的基础上添加了一个“窥视孔连接”,这意味着我们可以让门网络层输入细胞状态。

图7 添加“窥视孔连接”的LSTM

上图中我们为所有门添加窥视孔,但许多论文只为部分门添加。为了更直观的推导反向传播算法,将上图转化为下图:

图8 转化后的窥视孔LSTM

前向传播:在t时刻的前向传播公式为:

反向传播:对反向传播算法了解不够透彻的,请参考陈楠:反向传播算法推导过程(非常详细),这里有详细的推导过程,本文将直接使用其结论。

已知:  ,求某个节点梯度时,首先应该找到该节点的输出节点,然后分别计算所有输出节点的梯度乘以输出节点对该节点的梯度,最后相加即可得到该节点的梯度。如计算  时,找到  节点的所有输出节点   ,然后分别计算输出节点的梯度(如  )与输出节点对  的梯度的乘积(如  ),最后相加即可得到节点  的梯度:

同理可得t时刻其它节点的梯度:

对参数的梯度:

  2.2 GRU

一个更有意思的 LSTM 变种称为 Gated Recurrent Unit(GRU),由 Cho 等人提出。LSTM通过三个门函数输入门、遗忘门和输出门分别控制输入值、记忆值和输出值。而GRU中只有两个门:更新门 和重置门  ,如下图所示。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多;重置门控制前一时刻状态有多少信息被写入到当前的候选集  上,重置门越小,前一状态的信息被写入的越少。这样做使得 GRU 比标准的 LSTM 模型更简单,因此正在变得流行起来。

图9 GRU

为了更加直观的推导反向传播公式,将上图转化为如下形式:

图10 转换后的GRU

GRU的前向传播:在t时刻的前向传播公式为:

GRU的反向传播:t时刻其它节点的梯度:

对参数的梯度:

  2.3 遗忘门与输入门相结合的LSTM

另一个变种把遗忘和输入门结合起来。同时确定要遗忘的信息和要添加的新信息,而不再是分开确定。当输入的时候才会遗忘,当遗忘旧信息的时候才会输入新数据。

图11 遗忘门与输入门相结合的LSTM

前向与反向算法与上述变种相同,这里不再做过多推导。

参考资料:【翻译】理解 LSTM 网络 - xuruilong100 - 博客园

end

这是我的私人微信,还有少量坑位,可与相关学者研究人员交流学习 

目前开设有人工智能、机器学习、计算机视觉、自动驾驶(含SLAM)、Python、求职面经、综合交流群扫描添加CV联盟微信拉你进群,备注:CV联盟

王博的公众号,欢迎关注,干货多多

王博的系列手推笔记(附高清PDF下载):

博士笔记 | 周志华《机器学习》手推笔记第一章思维导图

博士笔记 | 周志华《机器学习》手推笔记第二章“模型评估与选择”

博士笔记 | 周志华《机器学习》手推笔记第三章“线性模型”

博士笔记 | 周志华《机器学习》手推笔记第四章“决策树”

博士笔记 | 周志华《机器学习》手推笔记第五章“神经网络”

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(上)

博士笔记 | 周志华《机器学习》手推笔记第六章支持向量机(下)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(上)

博士笔记 | 周志华《机器学习》手推笔记第七章贝叶斯分类(下)

博士笔记 | 周志华《机器学习》手推笔记第八章(上)

博士笔记 | 周志华《机器学习》手推笔记第八章(下)

博士笔记 | 周志华《机器学习》手推笔记第九章

点个在看支持一下吧

收藏 | 人人都能看懂的LSTM介绍及反向传播算法推导相关推荐

  1. java lstm_人人都能看懂的LSTM介绍及反向传播算法推导(非常详细)

    来自 | 知乎 地址 | https://zhuanlan.zhihu.com/p/83496936 作者 | 陈楠 编辑 | 机器学习算法与自然语言处理公众号 本文仅作学术分享,若侵权,请联系后台删 ...

  2. 人人都能看懂的LSTM

    来自 : 知乎  作者 : 陈诚 链接 :https://zhuanlan.zhihu.com/p/32085405 编辑 : 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系后台删除 这是 ...

  3. 人人都能看懂的 LSTM

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:来自 | 知乎  作者 | 陈诚 链接 | https:// ...

  4. 【干货】人人都能看懂的LSTM

    推荐阅读时间:8min~13min 推荐理由:这是在看了台大李宏毅教授的深度学习视频之后的一点总结和感想.看完介绍的第一部分RNN尤其LSTM的介绍之后,整个人醍醐灌顶. 1 0. 从RNN说起 循环 ...

  5. 人人都能看懂的LSTMGRU

    看过的讲的最简单明了的: LSTM:人人都能看懂的LSTM GRU:人人都能看懂的GRU 自己对LSTM的理解与代码解释:https://blog.csdn.net/Strive_For_Future ...

  6. 人人都能看懂LSTM

    这是在看了台大李宏毅教授的深度学习视频之后的一点总结和感想.看完介绍的第一部分RNN尤其LSTM的介绍之后,整个人醍醐灌顶.本篇博客就是对视频的一些记录加上了一些个人的思考. 0. 从RNN说起 循环 ...

  7. 人人都能看懂的Spring源码解析,Spring如何解决循环依赖

    人人都能看懂的Spring源码解析,Spring如何解决循环依赖 原理解析 什么是循环依赖 循环依赖会有什么问题? 如何解决循环依赖 问题的根本原因 如何解决 为什么需要三级缓存? Spring的三级 ...

  8. 人人都能看懂的Spring底层原理,看完绝对不会懵逼

    人人都能看懂的Spring原理,绝对不会懵逼 为什么要使用Spring? Spring的核心组件 Spring是如何实现IOC和DI的? 定义了BeanDefinition 扫描加载BeanDefin ...

  9. 人人都能看懂的EM算法推导

    作者丨August@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/36331115 编辑丨极市平台 估计有很多入门机器学习的同学在看到EM算法的时候会有种种疑惑:EM ...

最新文章

  1. python学习--基础
  2. 硬盘显示容量和实际容量不符合_为啥我买的64G U盘实际只有57G?聊聊存储市场的“不足量”现象...
  3. 【django】全局上下文
  4. SecureCRT文件传输
  5. C++STL的vector中front(),back(),begin(),end()的用法
  6. react connect
  7. WPF之ComboBox的VisualTreeHelper
  8. 云南“轮椅学子”博士毕业,清华校长俯身与他合影,他的妈妈被全网刷屏!...
  9. java 画多边形_javascript绘制一个多边形
  10. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用
  11. php之图片上传到服务器的原理
  12. 不为人知的AI简史:人机共生梦想家,却意外促成互联网的出现
  13. 解决连接kudu时,delaying RPC due to Service unavailable: Master config (**.**.**.**:7051) has no leader
  14. java jdk--同时安装两个jdk并且切换
  15. 计算机电缆的最小弯曲半径,电缆最小弯曲半径-知道电缆长度直径弯曲半径,怎么计算出电缆盘大小-电工基础 - 电工屋...
  16. 7.2某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析: A、B 至少有一人作案; A、E、F 三人中至少有两人参与作案; A、D 不可能是同案犯; B、C 或同时作案,或与本案无关;
  17. 【mcuclub】温湿度传感器DHT11
  18. SpringBoot使用com.alibaba.druid.filter.config.ConfigTools对数据库密码加密
  19. 基于深度学习的图像识别模型发展
  20. 【Sass中级】使用Sass和Compass制作雪碧图

热门文章

  1. python全栈面试题_python面试题大全(一)
  2. bme280 环境传感器开发板_半导体所在柔性湿度传感器与非接触控制方面取得进展...
  3. encoding python3_关于 Python3 的编码
  4. mysql properties文件路径_读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题...
  5. 多元样条函数及其应用_B样条算法(B-spline)
  6. vue template 复用_vue-组件基础
  7. java 模块开发_java模块化开发
  8. 如何给影像添加投影_如何在EasyEarth Desktop(CS客户端)进行影像处理
  9. NBU对oracle数据库进行rman备份
  10. ajax 上传文件实例,Ajax异步上传文件实例代码分享