赞
踩
循环神经网络的隐含层变量梯度可能出现衰减或爆炸,虽然梯度裁剪可以应对梯度爆炸,但无法解决梯度衰减的问题。
GRU(Gate Recurrent Unit)是循环神经网络的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。
GRU的输入输出结构与普通的RNN是一样的。
输入:t时刻的输入
x
t
x^{t}
xt,和t-1时刻的隐藏层状态
h
t
−
1
h^{t-1}
ht−1 ,这个隐藏层状态包含了之前节点的相关信息。
输出:t时刻隐藏节点的输出
y
t
y^{t}
yt和传递给下一个节点的隐状态
h
t
h^{t}
ht
通过上一个传输下来的状态
H
t
−
1
H_{t-1}
Ht−1 和当前节点的输入
x
t
x_{t}
xt 来获取两个门控状态。
重置门
r
t
=
σ
(
x
t
W
x
r
+
H
t
−
1
W
h
r
+
b
r
)
r_{t}=\sigma (x_{t}W_{xr}+H_{t-1}W_{hr}+b_{r})
rt=σ(xtWxr+Ht−1Whr+br)
更新门
z
t
=
σ
(
x
t
W
x
z
+
H
t
−
1
W
h
z
+
b
z
)
z_{t}=\sigma (x_{t}W_{xz}+H_{t-1}W_{hz}+b_{z})
zt=σ(xtWxz+Ht−1Whz+bz)
σ \sigma σ为sigmoid函数,通过这个函数可以将数据变换为0-1范围内的数值,从而来充当门控信号。
候选隐藏层状态
H
~
=
t
a
n
h
(
x
t
W
h
x
+
R
t
⨀
H
t
−
1
W
h
h
+
b
h
)
\widetilde{H}=tanh(x_{t}W_{hx}+R_{t}\bigodot H_{t-1}W_{hh}+b_{h})
H
=tanh(xtWhx+Rt⨀Ht−1Whh+bh)
其中
h
t
−
1
h^{t-1}
ht−1 包含了过去的信息,
R
t
R_{t}
Rt 为重置门,
⨀
\bigodot
⨀为按元素相乘。
这里 R t R_{t} Rt 和 h t − 1 h^{t-1} ht−1 按元素相乘(过去的信息对预测未来有没有帮助):
当 R t R_{t} Rt趋近于零的时候,模型会把过去隐藏信息丢弃,只留下当前输入的信息。 当 R t R_{t} Rt趋近于1的时候,认为过去的信息都有作用,并将其添加到当前信息中。
这里的 H ~ \widetilde{H} H 主要是包含了t时刻输入的 x t x_{t} xt的信息和有针对性地对t-1时刻的隐藏层状态 H t − 1 H_{t-1} Ht−1的保留。
最终隐藏状态
H
t
=
(
1
−
Z
t
)
⨀
H
t
−
1
+
Z
t
⨀
H
t
~
H_{t}=(1-Z_{t})\bigodot H_{t-1}+Z_{t}\bigodot \widetilde{H_{t}}
Ht=(1−Zt)⨀Ht−1+Zt⨀Ht
其中
H
t
−
1
H_{t-1}
Ht−1包含了过去的信息,
H
t
~
\widetilde{H_{t}}
Ht
为候选隐藏状态,Z_{t}为更新门。这一步的操作就是忘记传递下来的
H
t
−
1
H_{t-1}
Ht−1 中的某些维度信息,并加入当前节点输入的某些维度信息。
Z t Z_{t} Zt的范围为0~1,门控信号越接近1,代表”记忆“下来的过去的数据越多;而越接近0则代表”遗忘“的过去数据越多(如何组合过去隐藏状态和当前候选信息)。
( 1 − Z t ) ⨀ H t − 1 (1-Z_{t})\bigodot H_{t-1} (1−Zt)⨀Ht−1,表示对原本隐藏状态的选择性“遗忘”, Z t ⨀ H t ~ Z_{t}\bigodot \widetilde{H_{t}} Zt⨀Ht ,表示对当前节点的候选隐藏状态进行选择性“记忆”(同样也会忘记一些不重要的东西)。
当 Z t Z_{t} Zt趋于1时,表示长期的依赖一直存在
当 Z t Z_{t} Zt趋于0时,表示忘记隐藏信息中一些不重要的信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。