赞
踩
经典的神经网络很难捕捉时间序列中时间间隔较长的依赖,因为通常会产生梯度消失或者梯度爆炸的现象,梯度消失更加常见。梯度裁剪虽然可以有效解决梯度爆炸的问题,但无法处理梯度消失。
门控循环神经网络(gated recurrent neural network)的提出,解决了捕捉时间序列里时间距离较大的依赖关系。它通过可以学习的门来控制信息流动,门控神经单元是最常用的门控循环神经网络之一。
在经典的RNN中,通常通过如下方式来计算隐藏状态和输出:
H
t
=
ϕ
(
X
t
W
x
h
+
H
t
−
1
W
h
h
+
b
h
)
O
t
=
H
t
W
h
q
+
b
q
.
\boldsymbol{H}_t = \phi(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \boldsymbol{H}_{t-1} \boldsymbol{W}_{hh} + \boldsymbol{b}_h)\\ \boldsymbol{O}_t = \boldsymbol{H}_t \boldsymbol{W}_{hq} + \boldsymbol{b}_q.
Ht=ϕ(XtWxh+Ht−1Whh+bh)Ot=HtWhq+bq.
门控神经单元则是通过引入重置门(reset gate)和更新门(update gate)的概念来改变隐藏状态的计算方式。
门控神经单元的示意图:
更新门和更新门的计算方式如下式所示:
R
t
=
σ
(
X
t
W
x
r
+
H
t
−
1
W
h
r
+
b
r
)
,
Z
t
=
σ
(
X
t
W
x
z
+
H
t
−
1
W
h
z
+
b
z
)
,
随后门控神经单元同通过计算候选隐藏状态(candidate activation)来辅助隐藏状态的计算。
H ~ t = tanh ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t . \tilde{\boldsymbol{H}}_t = \text{tanh}(\boldsymbol{X}_t \boldsymbol{W}_{xh} + \left(\boldsymbol{R}_t \odot \boldsymbol{H}_{t-1}\right) \boldsymbol{W}_{hh} + \boldsymbol{b}_h)\\ \boldsymbol{H}_t = \boldsymbol{Z}_t \odot \boldsymbol{H}_{t-1} + (1 - \boldsymbol{Z}_t) \odot \tilde{\boldsymbol{H}}_t. H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)Ht=Zt⊙Ht−1+(1−Zt)⊙H~t.
其中, H ~ t \tilde{\boldsymbol{H}}_t H~t 表示候选隐藏状态。可以看到,重置门控制了上一步隐藏状态如何流入到当前的候选隐藏状态;更新门控制了包含当前时间步信息的候选隐藏状态如何更新当前隐藏状态。
总的来看,重置门有助于GRU捕捉时间序列里短期的依赖关系,更新门有助于捕捉时间序列里长期的依赖关系。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。