BPTT-应用于简单的循环神经网络「建议收藏」

BPTT-应用于简单的循环神经网络「建议收藏」上面是一组序列变量,即四个变量z1,z2,z3,z4z_1,z_2,z_3,z_4中的任一ziz_i的值均依赖于它前面的变量z1,z2,..,zi−1z_1,z_2,..,z_{i-1},且有z2=2∗z1z_2=2*z_1z3=3∗z2+z1z_3=3*z_2+z_1z4=4∗z3+2∗z2+z1z_4=4*z_3+2*z_2+z_1

大家好,又见面了,我是你们的朋友全栈君。

这里写图片描述
上面是一组序列变量,即四个变量 z1,z2,z3,z4 中的任一 zi 的值均依赖于它前面的变量 z1,z2,..,zi1 ,且有
z2=2z1

z3=3z2+z1

z4=4z3+2z2+z1

E=4z4+2z2

现在我们定义:

Ezi : 目标函数 E 对变量

zi
的偏微分,
+Edzi : 目标函数 E 对变量

zi
的全微分。比如,

+Ez4=Ez4=4

+Ez3=Ez3++Ez4z4z3=16

+Ez2=Ez2++Ez4z4z2++Ez3z3z2=58

+Ez1=Ez1++Ez4z4z1++Ez3z3z1++Ez2z2z1=136

综上,我们有如下的链式法则[1]

+Ezi=Ezi+j>iT+EzjzjziEq.1

traditional recurrent neural network

下图是一个基础的循环神经网络示意图
循环神经网络
Fig. 1: 循环神经网络示意图

其中x_t, h_t, y_t 分别代表 t 时刻网络的输入向量隐藏层向量输出向量w_ih, w_ho均为 权重矩阵,具体的计算公式如下:

xct=[xt,ht1]

ht=ϕ(zht)=tanh(wihxct+bih)

yt=σ(zot)=softmax(whoht+bho)

成本函数采用信息熵形式

C=t=1Tk(1y^(t)k)log(y(t)k)=t=1Tc(yt)




k表示输出层节点个数,

y^
表示真实的目标输出。

我们的目标是计算

+Cwih






+Cwho



即在给定

x1,x2,...xT
作为输入序列,

y^1,y^2,...,y^T
作为目标输出序列的前提下,计算成本函数

C
对权重矩阵



wih,who

的全微分 (这里我们暂时忽略

bih,bho
)。为此,我们先计算

+Czht


+Czot
, 其中

zht


zot
分别是图中绿色模块和黄色模块的输入。

根据 Fig. 1, 我们看出绿色模块之间有如下的依赖关系
differciate_h
那么 zhi 仅仅依赖于 zhi1 ,根据链式方程 Eq. 1:

+Czht=Czht+t>tT+Czhtzhtzht=Czht++Czht+1zht+1zht



并且,


+CzhT=CzhT=CzoTwhoϕ˙(zhT)

因为 Fig. 1 中黄色模块之间的相互依赖关系是通过绿色模块产生的,它们之间并没有直接的依赖关系,所以有

+Czot==Czotc˙(yt)σ˙(zot)



由上面的三个公式,可进而依次求出

t=T1,T2,...,2,1
时刻时的

+Czht
值。

最终有:

+Cwho=t=1T+Czotzotwho=t=1T+Czotht




+Cwih=t=1T+Czhtzhtwih=t=1T+Czhtxct



[1] Backpropagation through time: what it does and how to do it
(web)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152284.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号