目录

1、正向传播

2、反向传播

3、总结


1、正向传播

LSTM的正向传播公式:

由于传播过程比较复杂,我们画一个计算草图来反映时间步t的正向传播中,各个量的关系:

计算图中红色部分不属于时间步t,而是属于时间步t+1,把这几个红色的计算加入以后,可以更清晰的看到,的值会传播到两个位置(即在时间步t的正向传播中,传递到,在时间步t+1的正向传播中,传递到;而的值会传播到5个位置(即时间步t的正向传播中,传递到,在时间步t+1的正向传播中,传递到)。这对于理解反向传播中的导数从何而来非常重要,在反向传播中,我们会看到,的误差从相应的2个位置反向传播得到,的误差从相应的5个位置反向传播得到。

2、反向传播

把正向传播的计算图反过来就是时间步t的反向传播的计算图:

红色的部分是时间步t+1的量对于  导数的贡献。我们根据这张图,从上往下推导。

对于输出激活函数是softmax,损失函数是交叉熵的情况,常用的公式是:

                                                                                                (1)

我在RNN反向传播的推导中证明了这个公式,这里就不证明了。

根据

我们可以进而得到:

                                                   (2)

                 (3)

                                                                                        (4)

以上公式和RNN的情况是一模一样的,也不多解释了。

正如反向传播的计算图所示的那样,的导数除了包含式(4)中的那一项,还包括来自  的四项,即:

                                                                                                                                               (5.a)

类似的,的导数也可以表示为两项,一项来自,另一项来自

                                                                         (6.a)

公式(5)(6)实际上给出了导数的递推关系式。

对于最后一个时间步,t=Tx,没有来自下一个时间步的导数传入,公式(5)(6)变为:

(5):                                                                        (7)

(6):                                                                                                 (8.a)

根据的下标表示:

并把公式(8.a)也用下标表示,可得:

                                   (8.b)

上式的推导用到了

式(7)和(8.b)给出了最后一个时间步的导数,我们下面只需要假设已知的导数,并求出导数的表达式(递推关系式),就能够利用递推关系一步步反向传播求出所有时间步下 的导数。

先根据的导数,得到   的导数:

根据这两个正向传播的式子:

写成下标表示:

应用链式法则,得到:

                                                    (9)

                                                               (10)

                                                                   (11)

                                                                (12)

于是如公式(5.a)所示,可以表示为如下5项:

    (5.b)

根据正向传播的公式:

写为下标形式:

式中的代表三个门中的任意一个

于是,我们可以给出偏导数:

以上的推导用到了sigmoid函数的导数

带入(5.b),可以得到

                                        (5.c)

(5.c)中W下标的a表示只考虑W中与a有关的部分,即

再考虑(6.a):

                                                                   (6.a)

(6.a)右边第一项等于:

这里的推导和(8.b)是一模一样的,就不再证明了。

考虑(6.a)右边第二项

利用正向传播的公式:

第二项  

故(6.a)可以写为:

                                        (6.b)

至此,我们给出了的导数的递推关系式(5.c)、(6.b)。接下来的部分就比较简单了,只需要根据的导数计算等参数的梯度。以下式子和公式(9)(10)(11)(12)是一样的,只是把时间步t+1改为了t:

结合正向传播的公式:

(公式中下标不指示那个门的,代表三个门中的任意一个)

得到:

                        (13)

                                                    (14)

                                    (15)

                                                                (16)

                                (17)

                                                             (18)

                                              (19)

                                                                          (20)

以上就是LSTM反向传播所需要的所有公式。

3、总结

LSTM的正向传播由以下公式给出:

反向传播步骤:

①在每个时间步t,接受来自上一个时间步t+1的导数,(最后一个时间步下的值可以准确得到)

实际的程序中可能还要传入时间步t+1的cache,因为时间步t的cache中只存了时间步t的量

——计算参数Wy、by的导数

                                                   (2)

                 (3)

(虽然是对所有时间步求和,但是时间步t的时候可以计算一项,最后再加到一起就行)

——计算

                                                                                        (4)

                                        (5.c)

——计算

                                        (6.b)

—— 计算其他参数的导数

                        (13)

                                                    (14)

                                    (15)

                                                                (16)

                                (17)

                                                             (18)

                                              (19)

                                                                          (20)

(虽然是对所有时间步求和,但是时间步t的时候可以计算一项,最后再加到一起就行)

③把传递给下一个时间步t-1

LSTM反向传播公式推导相关推荐

  1. LSTM反向传播详解(完结篇)Part3/3代码实现

    1.前记   LSTM系列的前面两篇文章<LSTM反向传播详解Part1><LSTM反向传播详解Part2>将LSTM的理论梳理了一遍,本文主要着重用代码实现LSTM,其实也是 ...

  2. 仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程

    仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程: https://www.ctolib.com/yizt-numpy_neural_network.html

  3. ztree在刷新时第一个父节点消失_从反向传播推导到梯度消失and爆炸的原因及解决方案(从DNN到RNN,内附详细反向传播公式推导)...

    引言:参加了一家公司的面试和另一家公司的笔试,都问到了这个题!看来很有必要好好准备一下,自己动手推了公式,果然理解更深入了!持续准备面试中... 一. 概述: 想要真正了解梯度爆炸和消失问题,必须手推 ...

  4. 神经网络前向传播和反向传播公式推导(公式+图解)

    以如下的预测是否是猫的双层神经网络为例进行公式推导: 符号注解: n_x :  输入特征的数量 n_h : 隐藏层的节点数量 n_y : 输出层的节点数量 m : 样本数量 W :权重矩阵 b :偏置 ...

  5. nndl学习笔记(二)反向传播公式推导与详解

    写在前面 反向传播回顾 为什么需要反向传播? 基本思想 算法流程 算法局限性 详细推导(核心:多元微积分的*链式法则*) 一些定义 1. 输出层的误差δL\delta^{L}δL 2. 利用下一层误差 ...

  6. LSTM模型与前向反向传播算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前  言 在循环神经网络(RNN)模型与前向反向传播算法中,我们总 ...

  7. LSTM前向传播与反向传播算法推导(非常详细)

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

  8. 深度学习中反向传播算法简单推导笔记

    反向传播算法简单推导笔记 1.全连接神经网络 该结构的前向传播可以写成: z(1)=W(1)x+b(1)z^{(1)} = W^{(1)}x+b^{(1)}z(1)=W(1)x+b(1) a(1)=σ ...

  9. YOLOv3反向传播原理 之 全流程源码分析

    YOLOv3反向传播原理 之 全流程源码分析 1.YOLOv3网络训练中反向传播主体流程 1.1 初始化 1.2 batch内梯度累加 1.3 network和layer 中的关键变量 2.YOLO层 ...

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

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

最新文章

  1. Java虚拟机中的栈和堆
  2. mysql批量插入数据的函数和存储过程
  3. python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解
  4. 软件架构设计---软件架构文档化
  5. VBA每日一练(10)range.end() 或 cells().end() 用法,偏移 且 查找非空单元格,取最大最小行列数
  6. 如何使用Xcode的Targets来管理开发和生产版本的构建
  7. JQuery实现灯箱特效
  8. BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
  9. 黎曼的zeta函数(0)
  10. torch.sub()与torch.sub_()函数用法
  11. Git命令提交项目代码
  12. 移动通信核心网络技术总结(三)EPC网络的结构及原理
  13. 技术人总有想写文章的冲动却无疾而终?4个小Tips帮你快速上手~
  14. MODBUS主站调试工具和MODBUS从站调试工具 支持RTU、TCP、UDP三种模式
  15. 《富兰克林自传》修身
  16. linux配置yum镜像源
  17. GoLang之内置len、cap函数
  18. 移动互联应用阶段学习总结
  19. java版史莱姆区块,我的世界:最快找到史莱姆区块的方法,以后再也不用担心网速问题...
  20. Spring之旅第一站(不得不佩服老外...)

热门文章

  1. 【论文泛读05】基于Conv-LSTM的短期交通流预测
  2. Latex 环境配置(TexLive + Texstudio)
  3. 树莓派学习-I2c通信
  4. 天正2014打开加载lisp_天正CAD2014对不信任加载项的解决方法
  5. 批量下载微软官网上的桌面壁纸图片
  6. 顺序表和链表 相关知识点总结
  7. 2021金三银四,你准备好挑战这份最新腾讯、字节跳动、阿里巴巴Android面试题集了吗?
  8. 天猫精灵通过私有云控制WiFi设备
  9. 远程办公软件:TeamViewer使用评测与安装
  10. 软件开发流程——V模型