传统的RNN网络不能捕捉长期依赖,且随着训练层数的增加容易产生梯度消失问题,基于此,Yu Young Chang等人提出了GRU单元。
GRU单元的核心思想:
如何做到:
通过对普通RNN隐藏层单元的修改,
普通RNN隐藏层单元:
a
<
t
>
=
g
(
W
a
[
a
t
−
1
,
x
<
t
>
]
+
b
a
)
a^{<t>} = g(W_a[a^{t-1},x^{<t>}] + b_a)
a<t>=g(Wa[at−1,x<t>]+ba)
GRU单元: 引入一个记忆细胞向量
c
<
t
>
c^{<t>}
c<t>,更新门向量
Γ
u
\Gamma_u
Γu,相关门向量
Γ
r
\Gamma_r
Γr
具体公式:
更新记忆细胞:
c
~
<
t
>
=
t
a
n
h
(
W
c
[
Γ
r
∗
c
<
t
−
1
>
,
x
<
t
>
]
+
b
c
)
\tilde{c}^{<t>} = tanh(W_c[\Gamma_r *c^{<t-1>},x^{<t>}] + b_c)
c~<t>=tanh(Wc[Γr∗c<t−1>,x<t>]+bc)
更新门:
Γ
u
=
σ
(
W
u
[
c
<
t
−
1
>
,
x
<
t
>
]
+
b
u
\Gamma_u = \sigma(W_u[c^{<t-1>},x^{<t>}] + b_u
Γu=σ(Wu[c<t−1>,x<t>]+bu
相关门:
Γ
r
=
σ
(
W
r
[
c
<
t
−
1
>
,
x
<
t
>
]
+
b
r
\Gamma_r = \sigma(W_r[c^{<t-1>},x^{<t>}]+b_r
Γr=σ(Wr[c<t−1>,x<t>]+br
更新记忆细胞公式:
c
<
t
>
=
Γ
u
∗
c
~
<
t
>
+
(
1
−
Γ
u
)
+
c
<
t
−
1
>
c^{<t>} =\Gamma_u*\tilde{c}^{<t>}+(1-\Gamma_u) + c^{<t-1>}
c<t>=Γu∗c~<t>+(1−Γu)+c<t−1>