tensorflow学习笔记(十二)随时间反向传播BPTT

1、概述

上一节介绍了BP,这一节就简单介绍一下BPTT

2、网络结构


RNN正向传播可以用上图表示,这里忽略偏置。

上图中,

x(1:T)表示输入序列,

y(1:T)表示输出序列,

Y(1:T)表示标签序列,

ht表示隐含层输出

st表示隐含层输入,

zt表示经过激活函数之前的输出层输出。

3、前向传播

忽略偏置的前向传播过程如下:

st=Uht-1+Wxt

ht=f(st)

zt=Vht

yt=f(zt)

其中,f是激活函数。UWV三个权重在时间维度上是共享的。

每个时刻都有输出,所以每个时刻都有损失,记t时刻的损失为Et,那么对于样本x(1:T)来说,

总损失,使用交叉熵做损失函数,则

3、反向传播BPTT

BP类似,想求哪个权值对整体误差的影响就用误差对其求偏导。

3.1EV的梯度

根据链式法则有,


其中,


所以,


3.2EU的梯度

这个是BPTTBP之所以不同的地方,因为不止t时刻隐含层与U有关,之前所有的隐含层都跟U有关。所以有,


其中,


假设




3、梯度爆炸和梯度消失

用链式法则求损失EU的梯度为,

其中,

定义


,如果,则当 t-k→∞时,→∞,会造成系统不稳定,这就是所谓的梯度爆炸问题。相反,如果,则当 t-k→∞时,,这就是梯度消失问题。因此,虽然简单的循环神经网络理论上可以建立长时间间隔的依赖关系,但是由于梯度爆炸或梯度消失问题,实际上只能解决短周期的依赖关系。为了解决这个问题,一个很好的解决方案是引入“门机制”来控制信息的累计速度,并可以选择遗忘之前积累的信息,这就是长短时记忆神经网络LSTM,下一节再学习这个。


猜你喜欢

转载自blog.csdn.net/rookie_wei/article/details/80530865
今日推荐