TensorFlow精进之路(十二):随时间反向传播BPTT

1、概述


上一节介绍了TensorFlow精进之路(十一):反向传播BP,这一节就简单介绍一下BPTT。

2、网络结构

TensorFlow精进之路(十二):随时间反向传播BPTT_第1张图片
RNN正向传播可以用上图表示,这里忽略偏置。

上图中,

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

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

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

表示隐含层输出,

表示隐含层输入,

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

3、前向传播


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

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

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

 

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

 

3、反向传播BPTT


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

3.1、E对V的梯度

根据链式法则有,

其中,

TensorFlow精进之路(十二):随时间反向传播BPTT_第2张图片

所以,

3.2、E对U的梯度

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

其中,

假设

3、梯度爆炸和梯度消失


用链式法则求损失E对U的梯度为,

其中,

定义

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

你可能感兴趣的:(TensorFlow精进)