BPTT-应用于简单的循环神经网络

这里写图片描述
上面是一组序列变量,即四个变量 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值