RNN正向及反向传播

RNN简介

RNN(循环神经网络)是深度神经网络中,应用最广泛的两种神经网络架构之一。并且,作为一种时序结构的神经网络,RNN经常用于时序相关的问题中,且在NLP中应用广泛。还有一种RNN称为递归神经网络,虽然名字类似,但是却是不一样的架构。

RNN图示

RNN结构图

是输入层数据,
是隐含层数据,
是输出层数据,我们令:每一个
是t时刻对应的真实输出,
是对
进行softmax计算之后得到的估计值。
是输入层到隐含层的权重,
是上一时刻隐含层到当前时刻隐含层的权重,
是隐含层到输出层的权重。

正向传播

由上图易知:



我们假设t时候的损失函数为(一般为交叉熵损失/负对数似然),则一次正向传播的损失

反向传播

反向传播中,还是使用链式推导方法,与传统的神经网络推导类似。但不一样的地方在于隐含层受到了前一时刻隐含层的影响,故时刻隐含层的误差传播源来自于与两个方向。这里推导我是参考了很多博客文章,但是一直都没理解。后来看了文献1,多少有点明白的意思。有幸各位大牛们看了这篇文章,请指点。
我们首先看误差对的影响其中i是当前数据所属真实类别索引,j为所有类别的索引分量。当i=j时,是1,否则是0,参考了文献2。
假设总时刻长度为,


也就是说最后一个节点的隐含层误差只来源于他的输出层。其余各层除了本身输出层外,还会有上一层的误差来源。通过链式求导有

故各种变量的梯度值为所有时刻梯度值的和:




参考文献

1.深度学习(AI圣经) P327
2.softmax函数及其导数
3.RNN求解过程推导与实现

你可能感兴趣的:(RNN正向及反向传播)