前面已经详细讲了LSTM神经网络(文末有链接回去),接着往下讲讲LSTM的一个很流行的变体。
GRU是什么
GRU即Gated Recurrent Unit。前面说到为了克服RNN无法很好处理远距离依赖而提出了LSTM,而GRU则是LSTM的一个变体,当然LSTM还有有很多其他的变体。GRU保持了LSTM的效果同时又使结构更加简单,所以它也非常流行。
GRU模型
回顾一下LSTM的模型,LSTM的重复网络模块的结构很复杂,它实现了三个门计算,即遗忘门、输入门和输出门。
而GRU模型如下,它只有两个门了,分别为更新门和重置门,即图中的zt和rt。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。
GRU向前传播
根据前面GRU模型图来一步步看他是怎么向前传播的,根据图不难得到以下式子:
rt=σ(Wr⋅[ht−1,xt])
zt=σ(Wz⋅[ht−1,xt])
h~t=tanh(Wh~⋅[rt∗ht−1,xt])
ht=(1−zt)∗ht−1+zt∗h~t
yt=σ(Wo⋅ht)
其中[]表示两个向量相连接,*表示矩阵元素相乘。
GRU的训练
从前面的公式中可以看到需要学习的参数就是WrWzWhWo那些权重参数,其中前三个权重都是拼接的,所以在学习时需要分割出来,即
Wr=Wrx+Wrh
Wz=Wzx+Wzh
Wh~=Wh~x+Wh~h
输出层的输入yit=Woh,输出为yot=σ(yit)。
设某时刻的损失函数为Et=12(yd−yot)2,则某样本的损失为
E=∑Tt=1Et
与前面LSTM网络类似,最终可以推出
∂E∂Wo=δy,tht
∂E∂Wzx=δz,txt
∂E∂Wzh=δz,tht−1
∂E∂Wh~x=δtxt
∂E∂Wh~h=δt(rt⋅ht−1)
∂E∂Wrx=δr,txt
∂E∂Wrh=δr,tht−1
δy,t=(yd−yot)⋅σ′
δh,t=δy,tWo+δz,t+1Wzh+δt+1Wh~h⋅rt+1+δh,t+1Wrh+δh,t+1⋅(1−zt+1)
δz,t=δt,h⋅(h~t−ht−1)⋅σ′
δt=δh,t⋅zt⋅ϕ′
δr,t=ht−1⋅[(δh,t⋅zt⋅ϕ′)Wh~h]⋅σ′
以下是广告和相关阅读
========广告时间========
鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。
=========================
相关阅读:
欢迎关注: