首先,本论文需要对RNN有一定程度的知识,而且本论文只以标准的网络结构为对象,目的是彻底阐明反向传播和BPTT。
反向传播形象描述
反向传播是什么? 传播的是什么? 传播的是误差,根据误差进行调整。
举个例子,去买苹果。 说着,老板来要20元苹果(目标、真值),老板开始往袋子里放苹果,差不多(预测),放下秤砣,差一点(误差),再放一个,差一点) (调整一次后的误差),"
注意每次都是根据误差来进行调整,这点谨记。
BPTT 剖析
RNN网络结构比较复杂,BPTT在梯度计算时也与常规不同。
不同1:权重共享,多个误差
通常把误差分成两条路传达,在每条路上计算w很容易理解
另一方面,在共享权重的情况下,一个权重生成两个误差,另一个总误差到底使用哪个? 怎么反方向? 如果能逆向返回的话,w2个,怎么处理? 不管怎么想,都很混乱,
其实是的
1 .总误差、分误差其实是一样的
2 .两个w,需要合计。
一个权重,多个误差,求和
不同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 .这是隐藏层cell在时间t的误差,当然要乘以总误差
2. t时刻的误差从t时刻到t的和,也就是说从终点一步一步地传来
3 .各步骤的传递为从t时刻到传递时刻的联合、w指数。
4 .大概这样w * loss t1 ww * loss T2 www * loss T3 wwww * losst4wwww * los st5,越往前走这个公式就越长,损失也越小
5 .加入活化函数搅拌,其导数始终小于1
wi也一样
转载于:https://www.cn blogs.com/Yan shw/p/10478876.html