RNN简介
RNN(循环神经网络)是深度神经网络中,应用最广泛的两种神经网络架构之一。并且,作为一种时序结构的神经网络,RNN经常用于时序相关的问题中,且在NLP中应用广泛。还有一种RNN称为递归神经网络,虽然名字类似,但是却是不一样的架构。
RNN图示
正向传播
由上图易知:
我们假设t时候的损失函数为(一般为交叉熵损失/负对数似然),则一次正向传播的损失
反向传播
反向传播中,还是使用链式推导方法,与传统的神经网络推导类似。但不一样的地方在于隐含层受到了前一时刻隐含层的影响,故时刻隐含层的误差传播源来自于与两个方向。这里推导我是参考了很多博客文章,但是一直都没理解。后来看了文献1,多少有点明白的意思。有幸各位大牛们看了这篇文章,请指点。
我们首先看误差对的影响其中i是当前数据所属真实类别索引,j为所有类别的索引分量。当i=j时,是1,否则是0,参考了文献2。
假设总时刻长度为,
也就是说最后一个节点的隐含层误差只来源于他的输出层。其余各层除了本身输出层外,还会有上一层的误差来源。通过链式求导有
故各种变量的梯度值为所有时刻梯度值的和:
参考文献
1.深度学习(AI圣经) P327
2.softmax函数及其导数
3.RNN求解过程推导与实现