这一周主要介绍了RNN,这里回顾下RNN的反向传播。

Recurrent Neural Network (RNN)

RNN主要运用于序列数据,其架构如下:

右边是实际的架构,左边是拆开后的架构,方便理解,计算公式为:

损失函数为:

Backpropagation Through Time (BPTT)

下面介绍RNN的反向传播,我们借助下图进行理解:

可以看出我们要对两个方向进行反向传播,下面分别计算上图的偏导数。

$\frac{\partial L}{\partial U}$:

由于$h_t,b_y$和$U$无关,上式计算到此即可。

$\frac{\partial L}{\partial W}$:

注意$h_t$依旧和$W$有关,所以上式还要继续处理,我们重新处理$\frac{\partial L_t}{\partial W}$,首先处理$\frac{\partial h_t}{\partial W}$,记$a= Vx_t+Wh_{t-1} +b_h$,从而

为了避免混淆,将$\frac{\partial h_t}{\partial a}\frac{\partial a}{\partial W}$记录为$\frac{\partial h_t}{\partial W_*}$,因此上式为

这是一个递推方程,递推下去不难得到

因此

同理也可以用这个方法计算其他的导数,这里就不一一列出了。