本文转自:https://www.cntofu.com/book/85/dl/rnn/bptt.md

随时间反向传播(BPTT)算法


先简单回顾一下RNN的基本公式:

st=tanh(Uxt+Wst−1)st=tanh⁡(Uxt+Wst−1)
y^t=softmax(Vst)y^t=softmax(Vst)

RNN的损失函数定义为交叉熵损失:

Et(yt,y^t)=−ytlogy^tEt(yt,y^t)=−ytlog⁡y^t
E(y,y^)=∑tEt(yt,y^t)=−∑tytlogy^tE(y,y^)=∑tEt(yt,y^t)=−∑tytlog⁡y^t
ytyt

是时刻t的样本实际值,

y^ty^t

是预测值,我们通常把整个序列作为一个训练样本,所以总的误差就是每一步的误差的加和。我们的目标是计算损失函数的梯度,然后通过梯度下降方法学习出所有的参数U, V, W。比如:

∂E∂W=∑t∂Et∂W∂E∂W=∑t∂Et∂W

为了更好理解BPTT我们来推导一下公式:

前向 前向传播1:

a0=x0∗ua0=x0∗u
b0=s−1∗wb0=s−1∗w
z0=a0+b0+kz0=a0+b0+k
s0=func(z0)s0=func(z0)

(

funcfunc

是 sig或者tanh)

前向 前向传播2:

a1=x1∗ua1=x1∗u
b1=s0∗wb1=s0∗w
z1=a1+b1+kz1=a1+b1+k
s1=func(z1)s1=func(z1)

(

funcfunc

是 sig 或者tanh)

q=s1∗v1q=s1∗v1

$$z_t = ux_t + ws_{t-1} + k$$

st=func(zt)st=func(zt)

输出 层:

o=func(q)o=func(q)

(

funcfunc

是 softmax)

E=func(o)E=func(o)

(

funcfunc

是 x-entropy)

下面 是U的推导

∂E/∂u=∂E/∂u1+∂E/∂u0∂E/∂u=∂E/∂u1+∂E/∂u0
∂E/∂u1=∂E/∂o∗∂o/∂q∗∂q/∂s1∗∂s1/∂z1∗∂z1/∂a1∗∂a1/∂u1∂E/∂u1=∂E/∂o∗∂o/∂q∗∂q/∂s1∗∂s1/∂z1∗∂z1/∂a1∗∂a1/∂u1
∂E/∂u0=∂E/∂o∗∂o/∂q∗∂q/∂s1∗∂s1/∂z1∗∂z1/∂b1∗∂b1/∂s0∗∂s0/dz0∗∂z0/∂a0∗∂a0/∂u0∂E/∂u0=∂E/∂o∗∂o/∂q∗∂q/∂s1∗∂s1/∂z1∗∂z1/∂b1∗∂b1/∂s0∗∂s0/dz0∗∂z0/∂a0∗∂a0/∂u0
∂E/∂u=∂E/∂o∗∂o/∂q∗v1∗∂s1/∂z1∗((1∗x1)+(1∗w1∗∂s0/∂z0∗1∗x0))∂E/∂u=∂E/∂o∗∂o/∂q∗v1∗∂s1/∂z1∗((1∗x1)+(1∗w1∗∂s0/∂z0∗1∗x0))
∂E/∂u=∂E/∂o∗∂o/∂q∗v1∗∂s1/∂z1∗(x1+w1∗∂s0/∂z0∗x0)∂E/∂u=∂E/∂o∗∂o/∂q∗v1∗∂s1/∂z1∗(x1+w1∗∂s0/∂z0∗x0)

W参数的推导如下

∂E/∂w=∂E/∂o∗∂o/∂q∗v1∗∂s1/∂z1∗(s0+w1∗∂s0/∂z0∗s−1)∂E/∂w=∂E/∂o∗∂o/∂q∗v1∗∂s1/∂z1∗(s0+w1∗∂s0/∂z0∗s−1)

总结

∂L∂u=∑t∂L∂ut=∂L∂o∂o∂s1∂s1∂u1+∂L∂o∂o∂s1∂s1∂s0∂s0∂u0∂L∂u=∑t∂L∂ut=∂L∂o∂o∂s1∂s1∂u1+∂L∂o∂o∂s1∂s1∂s0∂s0∂u0
∂L∂w=∑t∂L∂wt=∂L∂o∂o∂s1∂s1∂w1+∂L∂o∂o∂s1∂s1∂s0∂s0∂w0∂L∂w=∑t∂L∂wt=∂L∂o∂o∂s1∂s1∂w1+∂L∂o∂o∂s1∂s1∂s0∂s0∂w0
xtxt

是时间t的输入

转载于:https://www.cnblogs.com/carlber/p/11084932.html

随时间的反向传播算法 BPTT相关推荐

  1. 随时间反向传播算法(BPTT)笔记

    随时间反向传播算法(BPTT)笔记 1.反向传播算法(BP) 以表达式f(w,x)=11+e−(w0x0+w1x1+w2)f(w,x)=\frac{1}{1+e^{-(w_0x_0+w_1x_1+w_ ...

  2. RNN与其反向传播算法——BPTT(Backward Propogation Through Time)的详细推导

    前言 一点感悟: 前几天简单看了下王者荣耀觉悟AI的论文,发现除了强化学习以外,也用到了熟悉的LSTM.之后我又想起了知乎上的一个问题:"Transformer会彻底取代RNN吗?" ...

  3. 基于时间的反向传播算法BPTT(Backpropagation through time)

    本文是读"Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gr ...

  4. 时间序列的反向传播算法(BPTT)

    时间序列的反向传播算法 BPTT : Back-Propagation Through Time ∂L∂U=∑t∂Lt∂U\frac{\partial L}{\partial U} = \sum_t\ ...

  5. BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...

  6. 梯度的直观理解_BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积层反向传播算法的理解中,越发觉得之前对于BP反向传播算法的理解是不到位的.小白近日觉得,对于深度神经网络,"反向传播&qu ...

  7. 《基于eigen3多层感知机的反向传播算法实现》

    <基于eigen3多层感知机的反向传播算法实现> Deep learning 现在有四大范式 MLP.CNN.RNN.Attention,一般feature extractor会是CNN. ...

  8. 用反向传播算法解释大脑学习过程?Hinton 等人新研究登上 Nature 子刊

    机器之心报道 魔王.Jamin.杜伟 反向传播可以解释大脑学习吗?近日 Hinton 等人的研究认为,尽管大脑可能未实现字面形式的反向传播,但是反向传播的部分特征与理解大脑中的学习具备很强的关联性.该 ...

  9. 循环神经网络(RNN)模型与前向反向传播算法

    在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Rec ...

最新文章

  1. CentOS学习笔记 - 9. docker maven编译基于gofabric8的java应用镜像
  2. 128位计算机 ps2,64位就是最强电脑?难道就没有128位的电脑吗
  3. mysql往前一天同一时间_Mysql时间轴数据 获取同一天数据的前三条
  4. [POJ 1742] Coins 【DP】
  5. 获奖者:武永卫,男,清华大学计算机系教授、博士生导师,《大数据》杂志编委。...
  6. 中秋快乐:数据库的全家福指尖细数识几何?
  7. 西普实验吧-ctf-web-1
  8. 视频实现blob加密
  9. hb100 微波雷达arduino_HB100微波雷达模块无线X波段雷达探测器探头传感器模块10.525GHz...
  10. aspx 微型_如何使用微型可编程机器人向孩子介绍编码
  11. UITextView 内边距设置
  12. 【蓝桥杯】大臣的旅费
  13. 电脑开机密码忘记,如何修改电脑密码?
  14. 遥感tif图像中如何忽略背景值为NAN或者-inf求均值和最值
  15. 九章算术 四:《少广》
  16. 非隔离开关电源相关知识理解汇总
  17. Qt OpenGL(二十)——Qt OpenGL 核心模式版本
  18. Java专题 Date类 使用及方法总结 +从你出生到现在过了多少天案例
  19. 树莓派4+ docker+ homeassistant
  20. linux下的zz命令,[zz]Linux下压缩命令

热门文章

  1. 太棒了!想学英语的好好留着!
  2. css教程–十步学会用css建站(全)
  3. CSMA/CD工作原理
  4. Mysql学习总结(10)——MySql触发器使用讲解
  5. 服务器系统的王者——Linux 系统
  6. 水平居中布局与滚动条跳动的千年难题
  7. iOS html5使用缓存并及时更新方案总结
  8. Python数据结构与算法--数据类型
  9. 初步了解并使用正则表达式 (REGular EXPression)
  10. Directory Service Maintenance