循环神经网络的反向传播算法其实只是BP算法的一个简单变体而已。

首先我们先看看循环神经网络的前向传播算法:


R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况

需要注意的是,该RNN中前一时刻到当前时刻只有一个权重矩阵

R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_02

,该权重矩阵与时间并没有什么关系。整个前向传播算法与BP网络的前向传播算法的差别是多了一个前一时刻隐藏层的信息

R bp神经网络的分类情况 bp神经网络与rnn区别_反向传播算法_03

而已。在我们这边的前向传播算法可能与大家平时看到的会有点出入,因为这个前向传播算法将传播过程中的各个阶段都拆分开来表示。在进入激活函数前先用额外的两个变量表示,分别是进入隐藏层激活函数e前的

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_04

和进入输出层激活函数g前的

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_05

。进行这样的拆分是为了更好的实现反向传播算法,即链式求导法则。RNN的前向传播算法是以时间的推移进行的,其实就是一些时序上的数据,比如音频中分帧后的得到的一系列的音频信号帧。RNN的输入数据与其他神经网络如DNN的输入数据不同的是,RNN的输入数据样本不能打乱,必须按时间进行输入,而其他的神经网络输入数据可以打乱。所RNN与其他神经网络的前向传播算法和反向传播算法的实现其实并没有什么特别之处,只是多了几个变量。因此RNN的关于时间的t循环可以看做,第t个训练样本(或者第t个批量训练样本),但是一定要保持先后顺序,不然学习出来的

R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_02

可能没有什么用处。

接下来给出BPTT算法:


R bp神经网络的分类情况 bp神经网络与rnn区别_反向传播算法_07

从BPTT算法可以看出,要求

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_08


R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_09

的梯度必须先求

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_05

的梯度,因为从前向传播算法我们可以知道

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_08


R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_09

是直接决定

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_05

的值的。类似的要求

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_14


R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_02

的梯度必须先求

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_16

的梯度(上述算法中有错误,从第6行开始

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_17

应该都改为

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_18

,请大家注意一下)。这就是神经网络求导中的链式法则(chain rule)。

BPTT算法详解:

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_19

 其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_20


R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_21

                                   

       其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_22

R bp神经网络的分类情况 bp神经网络与rnn区别_反向传播算法_23

 其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_24

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_25

 其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_反向传播算法_26

 

R bp神经网络的分类情况 bp神经网络与rnn区别_反向传播算法_27

                                                                       其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_28


R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_29

               其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_30

           

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_31

                                        其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_神经网络_32

 

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_33

             其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_反向传播算法_34

R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_35

                            其中,

R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_36

第10步骤中的

R bp神经网络的分类情况 bp神经网络与rnn区别_数据_37

就是用来更新第5步骤中右边的

R bp神经网络的分类情况 bp神经网络与rnn区别_R bp神经网络的分类情况_38