本文为手稿,旨在搞清楚为什么BPTT算法会多路反向求导,而不是一个感性的认识。

假设我们要对E3求导(上图中的L3),那么则有:

所以S2是W的函数,也就是说,我们不能说:

因为WS2 = WS2(w),S2里面包含了W这个变量,S2是W的函数,也许有人会说:“S2里面的W是常数吧”,那么请想一想S2的一般表达式。(这里我其实还是有点过不去,但是我觉得应该是这样的,不知道各位是否有理解方法)

所以有:

而对函数WS2(w)求导(对W求导),结果为:

S02和W2在RNN中的位置为:

再次注意,上面两个值不是变量,是一个具体的值。

然后再求(WS1)`:

另外关于W1,这里我不太清楚是否继续要用W2,因为毕竟是对第t=3时刻的W求导,如果后面知道了,再改也不迟。

继续求下去:

我们假设S-1是全0的向量,那么S0`就会是0.

然后,我们把上面分开求的结果合并起来,直接计算S3对W的导数:

 

最后一行就是最终的结果,其实这三项分别对应:

下面是数学表示:

所以,

BPTT反向求导为什么必然会有多路,实际上是因为 S2是W的函数,所以要运用乘法求导法则,最后完全求出(S2W)`之后,便可以写成这样的形式:

以下是完整草稿:

本文截图部分来自我的NLP课程乔波老师的PPT。

从乘法求导法则到BPTT算法的更多相关文章

  1. Recurrent Neural Network系列3--理解RNN的BPTT算法和梯度消失

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 这是RNN教程的第三部分. 在前面的教程中,我们从头实现了一个循环 ...

  2. 机器学习 —— 基础整理(八)循环神经网络的BPTT算法步骤整理;梯度消失与梯度爆炸

    网上有很多Simple RNN的BPTT(Backpropagation through time,随时间反向传播)算法推导.下面用自己的记号整理一下. 我之前有个习惯是用下标表示样本序号,这里不能再 ...

  3. BPTT算法推导

    随时间反向传播 (BackPropagation Through Time,BPTT) 符号注解: \(K\):词汇表的大小 \(T\):句子的长度 \(H\):隐藏层单元数 \(E_t\):第t个时 ...

  4. RNN 入门教程 Part 3 – 介绍 BPTT 算法和梯度消失问题

    转载 - Recurrent Neural Networks Tutorial, Part 3 – Backpropagation Through Time and Vanishing Gradien ...

  5. leetcode:Multiply Strings(字符串的乘法)【面试算法题】

    题目: Given two numbers represented as strings, return multiplication of the numbers as a string. Note ...

  6. 1+X证书学习日志——javascript打印九九乘法表(基础算法)

    /// 注意要给td加上宽高属性,不然就看不到啦 /// td{ width:100px; height:30px; border:1px solid red; }

  7. Java-基础编程(螺旋矩阵&乘法表)

    package cn.rick.study; import java.io.BufferedReader;import java.io.InputStreamReader;import java.ut ...

  8. Fibonacci 数列第 N项 O(logN)算法

    时间复杂度为O( log n )的方法: 该算法使用矩阵乘法操作,使得算法时间复杂度为 O(logN) long long Fibonacci( unsigned n ) { ] = {, }; ) ...

  9. 矩阵LU分解分块算法实现

    本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...

随机推荐

  1. Spring Session原理解析

    前景提要: @EnableRedisHttpSession导入RedisHttpSessionConfiguration.classⅠ.被RedisHttpSessionConfiguration继承 ...

  2. Linux 电子数据取证入门

    目录 Linux Basic Analysis 一.常见的Linux 发行版 二.Linux 系统的典型目录结构(Dir Structure) 三.Linux 系统重要文件夹与文件的内容 四.Linu ...

  3. SQL语句大全,所有的SQL都在这里

    转自微信公众号-我是程序汪 一.基础 1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  4. CentOS 7.5 安装配置tigervnc-server

    系统版本: [root@s10 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 1.安装 Gnome 包 [root@ ...

  5. WAF绕过的各种姿势

    主要思路: 根据WAF部署位置,针对WAF.WEB服务器.WEB应用对协议解析.字符解析.文件名解析.编码解析以及SQL语法解析的差异,绕过WAF,将payload送至服务器执行. 常用绕过方法: 1 ...

  6. length()与trim()函数用法

    student表 SELECT * from `student` where length(sex) = 0 SELECT length(ID) from `student` WHERE provin ...

  7. mac安装git

    https://blog.csdn.net/shaock2018/article/details/91127607 继续报错 rm -rf /usr/local/Homebrew/Library/Ta ...

  8. (stm32学习总结)—GPIO位带操作

    本章参考资料:<STM32F10X-中文参考手册>存储器和总线构架章节.GPIO 章节,<CM3 权威指南 CnR2>存储器系统章节. 位带简介 位操作就是可以单独的对一个比特 ...

  9. ubuntu vmware kernel module updater

    Ubuntu 19.04 - VMWare内核模块更新程序问问题 4 3我运行了这个命令: apt-cache search linux-headers-$(uname -r)它返回输出 linux- ...

  10. ros系统21讲—前六讲

    课程介绍(第一讲) linux介绍安装(第二讲) linux的基础操作(第三讲) ROS中语言c++与python介绍(第四讲) 安装ROS系统(第五讲) 第一个: sudo sh -c echo d ...