RNN-循环神经网络(上)

    循环神经网络常用来做时序分析,即根据现有的按发生顺序排列的数据来预测未来的走势,循环神经网络大量用于语音分析、语言翻译、金融分析、内容推荐等领域,循环神经网络是一个大的分类,代表模型是RNN(循环神经网络)、LSTM(长短时记忆网络),与之前介绍的全连接神经网络、卷积神经网络不同,循环神经网络在反向传播时不仅有层与层之间传递,还有时间维度上的传递。

一、RNN循环神经前向传播

     RNN是初级的循环神经网络,训练过程中每个序列中中间运算结果会进入下一次的输入中,其示意图如下:

rnn.jpg

上图左边是RNN结构图,右侧是RNN按序列输入展开后的示意图,中xt-1、xt、xt+1代表一串序列,序列中每个元素都为向量,例如有编号为d1,d2,d3,d4,d5,d6...采集数据,每个编号数据为一个实数,可将编号d1,d2数据合并为一个二维向量,将编号d3为标签值得到一个样本x1=(d1,d2),y1=d3,依此类推,有序列x2=(d2,d3),y2=d4x3=(d3,d4),y3=d5x4=(d4,d5),y4=d6等,采用循环神经网络类似于英语中完形填空题,我们通过语法学习培养出语感后(模型训练),可在缺失处填写正确的单词使得语句完整。

    RNN有类似全连接神经网络的隐藏层,RNN可以有多个隐藏层,以只有一个隐藏层的RNN为例,RNN前向传播的公式有:

rnn前向传播.png 

Nett表示序列中第t个序列的输入,对应于上图Nett是隐藏层神经单元s的输入值,Nett中含有上一次隐藏层的输出值st-1Nett经过激活函数f处理后为隐藏层的输出值,这个流程与全连接神经网络是很相似的,假设激活函数f选择使用双曲正切函数tanh(x),tanh(x)函数形式以及图像分别如下:

tanh.png

双曲正切函数.png

双曲正切函数导数与自身有一定形式上关联,导数公式如下:

tanh_qd.png

隐藏层输出乘以权重V后经激活函数g处理后变为最终RNN神经网络的输出,输出后的值根据具体问题选择适当的损失函数,如是分类问题常用交叉熵函数,与此同时激活函数g一般是softmax函数;如果是回归问题,则损失函数可选择平方误差函数,这时激活函数一般可选择Relu函数。

二、 RNN反向传播过程

2.1、循环神经网络误差梯度按时间、空间传递

    前面已经说过,循环神经网络与全连接神经网络、卷积神经网络最大不同在于误差体现时间维度上累积,这是所有包括LSTM在内所有循环神经网络的特性,通过研究RNN可以将一些结论拓展沿用到LSTM上,这正是研究RNN的意义所在。循环神经网络上反向传播时,首先要求出在时间维度上的误差梯度,然后再考虑层与层之间误差梯度传递。

    RNN实质是个全连接神经网络,可利用DNN反向传播方法推导出RNN在t时刻的误差梯度,所有神经网络都一样误差都是定位到输入端,设t时刻梯度为:

按时间反向传递.png

已知t时刻误差δt后,上一个时刻t-1的误差梯度δt-1根据链式求导法则有:

t1.png (2.1)

δt-1核心是求天天.pngNettNett-1都是向量,其中有st-1=f(Nett-1),天天.png等于以下等式:

链式法则12.png    (2.2)

上式出现了一个向量对另一个向量求导,以nett.png为例,Nett和st-1为相同维度向量,不妨设Nettst-1∈Rn,由①式可看出Nett中每个元素都是含st-1分量的函数:

NETST.png

类似的,也可求出公式求导部分2.png,由st-1=f(Nett-1)形式可知,st-1任意一个分量sti.png仅仅是netu.png函数:

NETST22.png

综合上面两个公式,在已知δt时,上一时刻误差梯度δt-1有:

TPLUS1.png   (2.3)

需要注意公式两边都有转置,这是因为W*diag[f'(Nett-1)]是一个n*n的方阵,而δt是n行1列的向量,所以δt需要先转置后方能运算,这样得到的δt-1n行1列的向量,假设k是从0到t某一个时刻,从(2.3)式可递归得到k时刻的梯度误差:

递归时间误差.png

公式143.png     (2.4)

    通过公式2.4即可通过当前时刻的梯度推算出之前任意时刻的误差,接下来再来分析层与层之间的误差传递,RNN的多层结构反向推导与全连接神经网络一致,假设已知t时刻l层误差为层误差.png,每层之间输入、输出关系为:

层之间输入输出.png

到达l层之前皆为全连接神经网络,l-1层为RNN的起始输入端,这里不仅接受输入向量xt还要接受来自上一次序列的隐藏层输出st-1,设al-1为l-1层输出,求导可得:

层误差1.png

利用上式可得l-1层误差公式:

下一层误差.png    (2.5)

2.2、求权重参数梯度

通过公式(1.4)、(1.5)可求出任意时刻、任意层的误差梯度,接下来就可以求权重的梯度了,再次列出(1)式:

rnn前向传播.png

假设输入向量xt∈Rm,则U∈Rn*m,W∈Rn*n,Nettstst-1∈Rn,以求矩阵参数W为例:

W.png    (2.6)

求W的梯度核心是求w核心.png,从Nett定义中可以看出U、xt与W无关,所以有W误差公式.png

NETW.png

上式代入(2.6)后有:

NETWW2.png   (2.7)

(2.7)分为两部分,先来看部分1.png,该式中的W矩阵.png是矩阵对矩阵求导,求出W矩阵.png部分1.png将迎刃而解:

1615774388501011137.png

W矩阵.png是一个克罗内克积(Kronecker),大小为n2*n2的方阵,由于起到.png所以W矩阵.png是一个少量值为1其余为0的稀疏矩阵,上式可以进一步表示为:

-免费试读结束-
登录|注册后打赏作者吧! 0.8元
上一篇  CNNs-卷积神经网络 下一篇 LSTM-循环神经网络(下)
评论区