美文网首页程序员
RNN正向及反向传播

RNN正向及反向传播

作者: Leo蓝色 | 来源:发表于2018-12-27 18:06 被阅读2次

RNN简介

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

RNN图示

RNN结构图
x_t 是输入层数据, s_t 是隐含层数据, o_t 是输出层数据,我们令:每一个 y_t 是t时刻对应的真实输出, y^{hat}_t 是对 o_t 进行softmax计算之后得到的估计值。 U 是输入层到隐含层的权重, W 是上一时刻隐含层到当前时刻隐含层的权重, V 是隐含层到输出层的权重。

正向传播

由上图易知:a_t=b+W*s_{t-1}+U*x_t
s_t=tanh(a_t)
o_t=c+U*s_t
y^{hat}_t=softmax(o_t)
我们假设t时候的损失函数为L^t(一般为交叉熵损失/负对数似然),则一次正向传播的损失L=\sum_tL^t

反向传播

反向传播中,还是使用链式推导方法,与传统的神经网络推导类似。但不一样的地方在于隐含层受到了前一时刻隐含层的影响,故t时刻隐含层s_t的误差传播源来自于o_ts_{t+1}两个方向。这里推导我是参考了很多博客文章,但是一直都没理解。后来看了文献1,多少有点明白的意思。有幸各位大牛们看了这篇文章,请指点。
我们首先看误差对o_t的影响\nabla o_tL=\frac{\partial L}{\partial o_t}=\frac{\partial L^t}{\partial o_t}=y_t*y^{hat}_t-I_{i=j}*y_t其中i是当前数据所属真实类别索引,j为所有类别的索引分量。当i=j时,I_{i=j}是1,否则是0,参考了文献2。
假设总时刻长度为t=\tau,
\nabla s_tL = V^T*\nabla o_tL,t=\tau
\nabla s_tL=(\frac{\partial s_{t+1}L}{\partial s_tL})*\nabla s_{t+1}L + (\frac{\partial o_{t}L}{\partial s_tL})*\nabla o_{t}L,t<\tau
也就是说最后一个节点的隐含层误差只来源于他的输出层。其余各层除了本身输出层外,还会有上一层的误差来源。通过链式求导有
\nabla s_tL=W^T*s_{t+1}L*diag(1-s_{t+1}^2)+V^T*\nabla o_tL,t<\tau,diag是对角线矩阵
故各种变量的梯度值为所有时刻梯度值的和:
\nabla _cL=\sum_t \nabla o_tL
\nabla _bL=\sum_t diag(1-s_t^2)\nabla o_tL
\nabla _VL=\sum_t \nabla o_tL *s_t^T
\nabla _WL=\sum_t diag(1-s_t^2)*\nabla s_tL*s_{t-1}^T
\nabla _UL=\sum_t diag(1-s_t^2)*\nabla s_tL*x_{t}^T

参考文献

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

相关文章

  • RNN正向及反向传播

    RNN简介 RNN(循环神经网络)是深度神经网络中,应用最广泛的两种神经网络架构之一。并且,作为一种时序结构的神经...

  • 神经网络

    神经网络的正向&&反向传播 通过正向传播后得到的误差来进行反向传播,反向传播时通过求导的方式更新权值,获得误差更小...

  • 深度学习之RNN、LSTM及正向反向传播原理

    总说 RNN( Recurrent Neural Network 循环(递归)神经网络) 跟人的大脑记忆差不多。我...

  • Task8 循环神经网络

    任务 RNN的结构。循环神经网络的提出背景、优缺点。着重学习RNN的反向传播、RNN出现的问题(梯度问题、长期依赖...

  • 简单入门循环神经网络RNN:时间序列数据的首选神经网络

    摘要:本文简单介绍循环神经网络RNN的发展过程,分析了梯度下降算法、反向传播及LSTM过程。 随着科学技术...

  • RNN

    前馈神经网络? 反向传播算法?理论不理解 解读tensorflow之rnn

  • 我的数据科学之路-用pytorch做深度学习

    上一篇文章介绍了深度学习的基本原理,核心过程就是正向传播与反向传播,正向传播由输入到输出,完成一次预测,反向传...

  • 反向传播算法

    反向传播就是⼀种巧妙地追踪权重(和偏置)微⼩变化的传播,抵达输出层影响代价函数的技术 反向传播法易懂解析 正向传播...

  • 2反向传播

    正向传播算法要初始化赋值,反向传播算法更新权重w。参考文档:一文弄懂神经网络中的反向传播法

  • 2018-02-10

    记录一下对RNN,LSTM,GRU基本原理(正向过程以及简单的反向过程)的个人理解----------------...

网友评论

    本文标题:RNN正向及反向传播

    本文链接:https://www.haomeiwen.com/subject/igjdlqtx.html