LSTM反向传播公式推导
目录
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反向传播公式推导相关推荐
- LSTM反向传播详解(完结篇)Part3/3代码实现
1.前记 LSTM系列的前面两篇文章<LSTM反向传播详解Part1><LSTM反向传播详解Part2>将LSTM的理论梳理了一遍,本文主要着重用代码实现LSTM,其实也是 ...
- 仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程
仅使用numpy从头开始实现神经网络,包括反向传播公式推导过程: https://www.ctolib.com/yizt-numpy_neural_network.html
- ztree在刷新时第一个父节点消失_从反向传播推导到梯度消失and爆炸的原因及解决方案(从DNN到RNN,内附详细反向传播公式推导)...
引言:参加了一家公司的面试和另一家公司的笔试,都问到了这个题!看来很有必要好好准备一下,自己动手推了公式,果然理解更深入了!持续准备面试中... 一. 概述: 想要真正了解梯度爆炸和消失问题,必须手推 ...
- 神经网络前向传播和反向传播公式推导(公式+图解)
以如下的预测是否是猫的双层神经网络为例进行公式推导: 符号注解: n_x : 输入特征的数量 n_h : 隐藏层的节点数量 n_y : 输出层的节点数量 m : 样本数量 W :权重矩阵 b :偏置 ...
- nndl学习笔记(二)反向传播公式推导与详解
写在前面 反向传播回顾 为什么需要反向传播? 基本思想 算法流程 算法局限性 详细推导(核心:多元微积分的*链式法则*) 一些定义 1. 输出层的误差δL\delta^{L}δL 2. 利用下一层误差 ...
- LSTM模型与前向反向传播算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前 言 在循环神经网络(RNN)模型与前向反向传播算法中,我们总 ...
- LSTM前向传播与反向传播算法推导(非常详细)
1.长短期记忆网络LSTM LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题,是一种特殊的RNN.长时间记住信息实际上是 LSTM 的默认行为,而不是需要努力学 ...
- 深度学习中反向传播算法简单推导笔记
反向传播算法简单推导笔记 1.全连接神经网络 该结构的前向传播可以写成: z(1)=W(1)x+b(1)z^{(1)} = W^{(1)}x+b^{(1)}z(1)=W(1)x+b(1) a(1)=σ ...
- YOLOv3反向传播原理 之 全流程源码分析
YOLOv3反向传播原理 之 全流程源码分析 1.YOLOv3网络训练中反向传播主体流程 1.1 初始化 1.2 batch内梯度累加 1.3 network和layer 中的关键变量 2.YOLO层 ...
- java lstm_人人都能看懂的LSTM介绍及反向传播算法推导(非常详细)
来自 | 知乎 地址 | https://zhuanlan.zhihu.com/p/83496936 作者 | 陈楠 编辑 | 机器学习算法与自然语言处理公众号 本文仅作学术分享,若侵权,请联系后台删 ...
最新文章
- Java虚拟机中的栈和堆
- mysql批量插入数据的函数和存储过程
- python setattr 代码可读性_python __setattr__、__getattr__、__getattribute__全面详解
- 软件架构设计---软件架构文档化
- VBA每日一练(10)range.end() 或 cells().end() 用法,偏移 且 查找非空单元格,取最大最小行列数
- 如何使用Xcode的Targets来管理开发和生产版本的构建
- JQuery实现灯箱特效
- BI报表工具FineReport的使用2【帆软聚合报表设计,最常用功能】
- 黎曼的zeta函数(0)
- torch.sub()与torch.sub_()函数用法
- Git命令提交项目代码
- 移动通信核心网络技术总结(三)EPC网络的结构及原理
- 技术人总有想写文章的冲动却无疾而终?4个小Tips帮你快速上手~
- MODBUS主站调试工具和MODBUS从站调试工具 支持RTU、TCP、UDP三种模式
- 《富兰克林自传》修身
- linux配置yum镜像源
- GoLang之内置len、cap函数
- 移动互联应用阶段学习总结
- java版史莱姆区块,我的世界:最快找到史莱姆区块的方法,以后再也不用担心网速问题...
- Spring之旅第一站(不得不佩服老外...)