RNN 循环神经网络-BF 求导过程

RNN 循环神经网络-BF 求导过程

所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层

在时间视角上的显示为下图:

求导BP 更新参数值

整体误差E等于每个时刻E_t的误差之和

整体损失对U/V/W进行求偏导
\[
ΔU=\frac{\partial E}{\partial U}=\sum_t \frac{\partial e_t}{\partial U}
\]
\[
ΔV=\frac{\partial E}{\partial V}=\sum_t \frac{\partial e_t}{\partial V}
\]
\[
ΔW=\frac{\partial E}{\partial W}=\sum_t \frac{\partial e_t}{\partial W}
\]

ΔU 求导:对于Ot=g(V*St) 求ΔU是简单的,St是输出值已知,不依赖之前的状态,可以直接求导每一个时刻的 ΔW 求导:Wt 不仅影响Et, 而且也会印象到Et+1(因为在计算Et+1的使用包含St的值),并且Wt-1 也会印象到Et+1.

例如t+1时刻的误差Et+1,我们去计算w1,w2...wt+1的梯度值
\[
\frac{\partial e_{t+1}}{\partial W^{t+1}}= \frac{\partial e_{t+1}}{\partial h^{t+1}} \frac{\partial h_{t+1}}{\partial W^{t+1}}
\]

\[
\frac{\partial e_{t+1}}{\partial W^{t}}= \frac{\partial e_{t+1}}{\partial h^{t+1}} \frac{\partial h_{t+1}}{\partial h^{t}}\frac{\partial h_{t}}{\partial W^{t}}
\]

\[
\frac{\partial e_{t+1}}{\partial W^{t-1}}= \frac{\partial e_{t+1}}{\partial h^{t+1}} \frac{\partial h_{t+1}}{\partial h^{t}}\frac{\partial h_{t}}{\partial h^{t-1}}\frac{\partial h_{t-1}}{\partial w^{t-1}}
......
\]

因为RNN中的参数值是共享的 所以Wt=Wt-1=Wt-2 ,同理其他参数也是一样的,所以计算上述公式时就可以抹去标签并求和了。

? 因为有符合函数求导公式
\[
f(x)=g(x)h(x)
\text{求导得}
\frac{\partial f}{\partial x}=\frac{\partial g}{\partial x}*h+\frac{\partial h}{\partial x}*g
\]

\[
\text{原函数:} h_{t+1}=f(Ux+W_{t+1}h_t)
\]

其中Ux不包含W,可以不用考虑,当做常数,f 是一个整体转化 可以忽略成 Ht+1=Ht*Wt+1其中包含两部分Ht和Wt+1,依照上面的两个函数求导法制。

\[
\frac{\partial e_{t+1}}{\partial W^{t+1}}= \frac{\partial e_{t+1}}{\partial h^{t+1}} *h^t
\]

\[
\frac{\partial e_{t+1}}{\partial W^{t}}= \frac{\partial e_{t+1}}{\partial h^{t+1}} *W*h^{t-1}
\]

\[
\frac{\partial e_{t+1}}{\partial W^{t-1}}= \frac{\partial e_{t+1}}{\partial h^{t+1}}*W*W*h^{t-2}
\]

将上述式子求和得
\[
\frac{\partial e_t}{\partial W}= \sum_{k=1}^t\frac{\partial e_t}{\partial h^t}\prod_{i=k}^t\frac{\partial h_i}{\partial h^{i-1}}\frac{\partial ^+ h_k}{\partial W}
\]
其中下式 表示不进行链式求导,将其他参数都看做常数,直接进行求导。
\[
\frac{\partial ^+ h_k}{\partial W}
\]

原文地址:https://www.cnblogs.com/zhuimengzhe/p/10300738.html

时间: 2024-10-10 08:47:16

RNN 循环神经网络-BF 求导过程的相关文章

TensorFlow框架(6)之RNN循环神经网络详解

1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主要用途是处理和预测序列数据.全连接的前馈神经网络和卷积神经网络模型中,网络结构都是从输入层到隐藏层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的. 图 11 RNN-rolled 如图 11所示是一个典型的循环神经网络.对于循环神经网络,一个非常重要的概念就是时刻.循环神经网

【转载】softmax的log似然代价函数(求导过程)

全文转载自:softmax的log似然代价函数(公式求导) 在人工神经网络(ANN)中,Softmax通常被用作输出层的激活函数.这不仅是因为它的效果好,而且因为它使得ANN的输出值更易于理解.同时,softmax配合log似然代价函数,其训练效果也要比采用二次代价函数的方式好. 1. softmax函数及其求导 softmax的函数公式如下: 其中,表示第L层(通常是最后一层)第j个神经元的输入,表示第L层第j个神经元的输出,表示自然常数.注意看,表示了第L层所有神经元的输入之和. softm

RNN循环神经网络学习——概述

循环神经网络(Recurrent Neural NetWork,RNN)是一种将节点定向连接成环的人工神经网络,其内部状态可以展示动态时序行为. 循环神经网络的主要用途是处理和预测序列数据.循环神经网络最初就是为了刻画一个序列当前的输出与之前信息的关系.从网络结构上来看,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出.也就是说,循环神经网络的隐藏层之间的节点是有连接的,隐藏层的输入不仅包含输入层的输出,还包括上一时刻隐藏层的输出. 如图为典型的RNN结构示意图.RNN主体结构的

CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)

CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别? DNN以神经网络为载体,重在深度,可以说是一个统称.RNN,回归型网络,用于序列数据,并且有了一定的记忆效应,辅之以lstm.CNN应该侧重空间映射,图像数据尤为贴合此场景. DNN以神经网络为载体,重在深度,可以说是一个统称.RNN,回归型网络,用于序列数据,并且有了一定的记忆效应,辅之以lstm.CNN应该侧重空间映射,图像数据尤为贴合此场景. Stanford University CS231

RNN循环神经网络实现预测比特币价格过程详解

http://c.biancheng.net/view/1950.html 本节将介绍如何利用 RNN 预测未来的比特币价格. 核心思想是过去观察到的价格时间序列为未来价格提供了一个很好的预估器.给定时间间隔的比特币值通过https://www.coindesk.com/api/的 API 下载,以下是 API 文档的一部分: 经 MIT 授权许可,本节将使用https://github.com/guillaume-chevalier/seq2seq-signal-prediction中的代码.

【6-1】RNN循环神经网络

一.问题:如何利用神经网络处理序列问题(语音.文本)? 在MNIST手写数字识别中,输入一张图片,得到一个结果,输入另一张图片,得到另一个结果,输入的样本是相互独立的,输出的结果之间也不会相互影响.也就是说,这时处理的数据是IID(独立同分布)数据,但序列类的数据却不满足IID特征,所以RNN出场了. 二.RNN的结构 看到hello,wor__!你肯定会轻而易举地预测出后两个字符为ld. RNN结构如下: 左侧:x是输入,s相当于隐藏层,o是输出.U.V.W都是权值矩阵.为什么称之为循环那?因

RNN循环神经网络(Recurrent Neural Network)学习

一.RNN简介 1.)什么是RNN? RNN是一种特殊的神经网络结构,考虑前一时刻的输入,且赋予了网络对前面的内容的一种'记忆'功能. 2.)RNN可以解决什么问题? 时间先后顺序的问题都可以使用RNN来解决,比如:音乐,翻译,造句,语音识别,视频图像预测,语言处理等等,后来经过变种甚至可以达到CNN的作用 具体例子1 Car which.............,() ..........使用RNN可以预测括号里面的内容应该为 is/was. 2 学习莎士比亚写的诗词,然后进行模仿 3 你想为

神经网络的BP推导过程

神经网络的BP推导过程 下面我们从一个简单的例子入手考虑如何从数学上计算代价函数的梯度,考虑如下简单的神经网络,该神经网络有三层神经元,对应的两个权重矩阵,为了计算梯度我们只需要计算两个偏导数即可: 首先计算第二个权重矩阵的偏导数,即 首先需要在之间建立联系,很容易可以看到的值取决于,而,而又是由取sigmoid得到,最后,所以他们之间的联系可以如下表示: 按照求导的链式法则,我们可以先求对的导数,然后乘以对的导数,即 由于 不难计算 令 上式可以重写为 接下来仅需要计算即可,由于 忽略前面的

【机器学习基础】对 softmax 和 cross-entropy 求导

目录 符号定义 对 softmax 求导 对 cross-entropy 求导 对 softmax 和 cross-entropy 一起求导 References 在论文中看到对 softmax 和 cross-entropy 的求导,一脸懵逼,故来整理整理. 以 softmax regression 为例来展示求导过程,softmax regression 可以看成一个不含隐含层的多分类神经网络,如 Fig. 1 所示. Fig. 1 Softmax Regression. softmax r