首先明确一下,本文需要对RNN有一定的了解,而且本文只针对标准的网络结构,旨在彻底搞清楚反向传播和BPTT。

反向传播形象描述

什么是反向传播?传播的是什么?传播的是误差,根据误差进行调整。

举个例子:你去买苹果,你说,老板,来20块钱苹果(目标,真实值),老板开始往袋子里装苹果,感觉差不多了(预测),放称上一称,还差点(误差),又装了一个,还差点(调整一次之后的误差),又装了一个...迭代,直到20块钱。

注意每次都是根据误差来进行调整,这点谨记。

BPTT 剖析

RNN网络结构比较复杂,BPTT在梯度计算时也不同于常规。

不同1:权重共享,多个误差

常规是误差分两条路传递,然后每条路分别算w,很容易理解

而权重共享时,一个权重,生成了2个误差,还有个总误差,到底用哪个?怎么反向?假设能反向回去,2个w,怎么处理?咋一想,好乱,

其实是这样的

1. 总误差,分误差,其实是一样的

2. 2个w,需要求和。

一个权重,多个误差,求和

不同2:权重共享,链式传递

也是2个w,咋一看,不知道咋算。

其实是这样的

链式法则

一个权重,多次传递,其梯度中含有w,且容易看出,传递次数越多,w的指数越大

其实rnn比这些不同点更复杂

图不解释了,直接上干货。

首先对网上各种坑爹教程进行补充和完善,总结,当然虽然坑爹,但是对我们理解也是有帮助的。

教程1:教程描述ly1的误差来自ly2 和 next_ly1两个方向(下图),其实说法不错,只是不完整。

补充:

1. ly1的误差来自两个方向,ly2和next_ly1,这两条路都要从各自的误差开始算起。(这里体现了我上面例子里提醒谨记的话)

2. 这里计算的是“单层”的梯度,即单个w的梯度,实际计算BPTT梯度时并不是这样。

这里的公式应该是这样子

教程2:教程定义了中间变量,并用中间变量来表示梯度

各种δ,完全搞不清,公式也没有推导过程。

补充:这里针对单个节点自定义了变量,然后把每个节点直接相加得到总梯度。

总结:这里定义了中间变量δ,之所以定义这个,是因为这个计算比较麻烦,而且要经常用到,这样会很好地简化运算。

这里的公式应该是这样子

这些教程加上我的补充,其实已经可以算出梯度了。

下面我再系统的讲一遍BPTT

还是用这张图,这张图在整个网络架构上比较完整,但是缺乏完整的cell,我在前向传播中标记一下。

前向传播

wi 表示输入权重,wh表示隐层权重

反向传播

首先理解如下公式

1. v 和 c并没有多路传递误差,和普通的梯度计算无差别

2. wi wh b都有多路传播

同样设定中间变量,注意这个变量最好是个递推公式,能够大大简化运算,且容易得到规律

初步设定

优化

再优化

这样貌似好多了,递推下去

注意到这里还是传递误差,从上式大概可以看出

1. 这是t时刻隐层cell的误差 ,当然要乘以总误差

2. t时刻的误差是t时刻到T的一个和,也就是说是从终点一步一步传过来的

3. 每步传递都是从t时刻到传递时刻的连乘,w指数。

4. 大概是这样 w * losst1 + ww * losst2 + www * losst3 + wwww * losst4 + wwwww * losst5 ,越往前传这个式子越长,损失也越传越小

5. 加上激活函数的搅和,其导数经常小于1

wi同理

循环神经网络-极其详细的推导BPTT的更多相关文章

  1. 循环神经网络-RNN进阶

    这部分许多内容要类比CNN来进行理解和解释,所以需要对CNN比较熟悉. RNN的特点 1. 权值共享 CNN权值共享,RNN也有权值共享,在入门篇可以看到RNN结构图中,权重使用的是同样的字母 为什么 ...

  2. 详解循环神经网络(Recurrent Neural Network)

    本文结构: 模型 训练算法 基于 RNN 的语言模型例子 代码实现 1. 模型 和全连接网络的区别 更细致到向量级的连接图 为什么循环神经网络可以往前看任意多个输入值 循环神经网络种类繁多,今天只看最 ...

  3. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  4. Recurrent Neural Network(循环神经网络)

    Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种 ...

  5. 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)

    循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...

  6. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

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

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

  8. 深度学习之循环神经网络(RNN)

    循环神经网络(Recurrent Neural Network,RNN)是一类具有短期记忆能力的神经网络,适合用于处理视频.语音.文本等与时序相关的问题.在循环神经网络中,神经元不但可以接收其他神经元 ...

  9. Recurrent Neural Networks(RNN) 循环神经网络初探

    1. 针对机器学习/深度神经网络“记忆能力”的讨论 0x1:数据规律的本质是能代表此类数据的通用模式 - 数据挖掘的本质是在进行模式提取 数据的本质是存储信息的介质,而模式(pattern)是信息的一 ...

随机推荐

  1. Vrrp和Hsrp的区别

    VRRP原理协议简述简单来说,VRRP是一种容错协议,它为具有组播或广播能力的局域网(如以太网)设计,它保证当局域网内主机的下一跳路由器出现故障时,可以及时的由另一台路由器来代替,从而保持通讯的连续性 ...

  2. 2.2 UML用例模型

    参与者(Actor) 参与者(注:有另一种翻译“执行者”) 代表位于系统之外并和系统进行交互的一类事物(人.物.其他软件子系统等) 通过它,可以对软件系统与外界发生的交互进行分析和描述 通过它,可以了 ...

  3. 邂逅明下 HDU - 2897

    Problem description: 有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直到堆里的硬币取完,最 ...

  4. selenium配置Chrome驱动

    1.http://chromedriver.storage.googleapis.com/index.html   chrome下载驱动地址 和对应的版本驱动,不用FQ 2.配置方法:如在e盘创建一个 ...

  5. JUnit 4.0学习笔记

    JUnit命令整理 @Test(timeout=  ) : 测试时间超过范围即失败 @Test(expected=) : 申明出会发生的异常 @Before :  在每一个测试方法前执行 @After ...

  6. FBI树(第一次做建树题)

    试题来源 NOIP2004 普及组 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它的结 ...

  7. 『MXNet』第六弹_Gluon性能提升

    一.符号式编程 1.命令式编程和符号式编程 命令式: def add(a, b): return a + b def fancy_func(a, b, c, d): e = add(a, b) f = ...

  8. MRBS开源会议室预订系统安装

    MRBS系统官方网址  https://mrbs.sourceforge.io/ 最近在找一份开源的会议室预订系统,找了很多种,ASP,PHP的,测试发现MRBS无疑是最好的.开源社区对其介绍如下:M ...

  9. C# 3.0 / C# 3.5 自动属性

    自动属性的好处 自动属性简化了我们在做 C# 开发的时候手写一堆私有成员 + 属性的编程方式,我们只需要使用如下方式声明一个属性,编译器就会自动生成所需的成员变量. 传统属性概念 属性的目的一是封装字 ...

  10. SpringBoot 使用Thymeleaf解决静态页面跳转问题

    参考:springboot配置跳转html页面 1,首先在pom文件中引入模板引擎jar包 <dependency> <groupId>org.springframework. ...