整理并翻译自吴恩达深度学习系列视频:序列模型第一周。
Prerequisite:Gated Recurrent Unit(GRU)
Long Short term memory unit(LSTM)
GRU 和 LST的对比。
LTSM计算公式如下:
C
~
<
t
>
=
t
a
n
h
(
W
c
[
a
<
t
−
1
>
,
x
<
t
>
]
+
b
c
)
ilde{C}^{<t>}=tanh(W_c[a^{<t-1>}, x^{<t>}]+b_c)
C~<t>=tanh(Wc[a<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)
Γ
f
=
σ
(
W
f
[
C
<
t
−
1
>
,
x
<
t
>
]
+
b
f
)
Gamma_f=sigma(W_f[C^{<t-1>}, x^{<t>}]+b_f)
Γf=σ(Wf[C<t−1>,x<t>]+bf)
Γ
o
=
σ
(
W
0
[
C
<
t
−
1
>
,
x
<
t
>
]
+
b
o
)
Gamma_o=sigma(W_0[C^{<t-1>}, x^{<t>}]+b_o)
Γo=σ(W0[C<t−1>,x<t>]+bo)
C
<
t
>
=
Γ
u
C
~
<
t
>
+
Γ
f
C
<
t
−
1
>
C^{<t>}=Gamma_u ilde{C}^{<t>}+Gamma_fC^{<t-1>}
C<t>=ΓuC~<t>+ΓfC<t−1>
a
<
t
>
=
Γ
o
∗
C
<
t
>
a^{<t>}=Gamma_o*C^{<t>}
a<t>=Γo∗C<t>
LSTM有三个门控值,使用 Γ f Gamma_f Γf替换GRU里的 1 − Γ u 1-Gamma_u 1−Γu,并且增加一个新的 Γ o Gamma_o Γo来控制输出的值。
LSTM的图示结构如下图所示:
如图红色直线所示,只要三个门控值
Γ
u
Gamma_u
Γu、
Γ
f
Gamma_f
Γf、
Γ
o
Gamma_o
Γo设置得当,我们需要的信息可以一直向后传递。
这种结构的常见变种是peephole connection,即计算门控值时,也使用了前一层的 C < t − 1 > C^{<t-1>} C<t−1>,如图中绿色圈起来的部分。
GRU其实是LSTM的一种简化版本,事实上LTSM先于GRU被发明出来。
GRU只有2个门控值,简单,计算快,可以扩展到更大的模型上;LSTM有三个门控值,更强大,更灵活。历史上,LTSM经常被当做首位的默认选择,但最近几年GRU获得了很多团队的支持,因为它很简单,也能做出很好地效果,更容易扩展到更大的问题。