1.循环神经网络(recurrent neural network,简称RNN)
假设
X
t
∈
R
n
×
d
X_t\in R^{n\times d}
Xt∈Rn×d是时间步
t
t
t的小批量输入,
H
t
∈
R
n
×
h
H_t\in R^{n\times h}
Ht∈Rn×h是该时间步的隐藏变量,则
H
t
=
ϕ
(
X
t
W
x
h
+
H
t
−
1
W
h
h
+
b
h
)
H_t=\phi(X_tW_{xh}+H_{t-1}W_{hh}+b_h)
Ht=ϕ(XtWxh+Ht−1Whh+bh),
其中,
W
x
h
∈
R
d
×
h
,
W
h
h
∈
R
h
×
h
,
b
h
∈
R
1
×
h
W_{xh}\in R^{d\times h},W_{hh}\in R^{h\times h},b_h\in R^{1\times h}
Wxh∈Rd×h,Whh∈Rh×h,bh∈R1×h,
ϕ
\phi
ϕ函数时非线性激活函数。
在时间步
t
t
t,输出层的输出为:
Y
t
=
H
t
W
h
q
+
b
q
Y_t=H_tW_{hq}+b_q
Yt=HtWhq+bq,
其中,
W
h
q
∈
R
h
×
q
,
b
q
∈
R
1
×
q
W_{hq}\in R^{h\times q},b_q\in R^{1\times q}
Whq∈Rh×q,bq∈R1×q,
Y
t
Y_t
Yt的大小时
n
×
q
n\times q
n×q。
2.(Gated Recurrent Unit,简称GRU)![GRU](https://img-blog.csdnimg.cn/20200217205813766.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTk5NzY4OA==,size_16,color_FFFFFF,t_70)
假设
X
t
∈
R
n
×
d
X_t\in R^{n\times d}
Xt∈Rn×d是时间步
t
t
t的小批量输入,
H
t
∈
R
n
×
h
H_t\in R^{n\times h}
Ht∈Rn×h是该时间步的隐藏变量,则
R
t
=
σ
(
X
t
W
x
r
+
H
t
−
1
W
h
r
+
b
r
)
R_t=\sigma(X_tW_{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_tW_{xz}+H_{t-1}W_{hz}+b_z)
Zt=σ(XtWxz+Ht−1Whz+bz)
H
t
~
=
t
a
n
h
(
X
t
W
x
h
+
(
R
t
⊙
H
t
−
1
)
W
h
h
+
b
h
)
\widetilde{H_t}=tanh(X_tW_{xh}+(R_t\odot H_{t-1})W_{hh}+b_h)
Ht
=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)
H
t
=
Z
t
⊙
H
t
−
1
+
(
1
−
Z
t
)
⊙
H
t
~
H_t=Z_t\odot H_{t-1}+(1-Z_t)\odot \widetilde{H_t}
Ht=Zt⊙Ht−1+(1−Zt)⊙Ht
在时间步
t
t
t,输出层的输出为:
Y
t
=
H
t
W
h
q
+
b
q
Y_t=H_tW_{hq}+b_q
Yt=HtWhq+bq。
其中,
W
x
r
,
W
x
z
,
W
x
h
W_{xr},W_{xz},W_{xh}
Wxr,Wxz,Wxh的大小都是
d
×
h
d\times h
d×h,
W
h
r
,
W
h
z
,
W
h
h
W_{hr},W_{hz},W_{hh}
Whr,Whz,Whh的大小都是
h
×
h
h\times h
h×h,
W
h
q
W_{hq}
Whq的大小为
h
×
q
h\times q
h×q;
b
r
,
b
z
,
b
h
b_r,b_z,b_h
br,bz,bh的大小都是
1
×
h
1\times h
1×h,
b
q
b_q
bq的大小为
1
×
q
1\times q
1×q,它们与前面的矩阵相加时会用到广播机制。且这些参数的下标只是一个便于记忆的标记而已,只起到区分变量的作用,没有其他作用,将其换为
W
1
,
W
2
,
W
3
,
W
4
,
W
5
,
W
6
,
W
7
,
b
1
,
b
2
,
b
3
,
b
4
W_1,W_2,W_3,W_4,W_5,W_6,W_7,b_1,b_2,b_3,b_4
W1,W2,W3,W4,W5,W6,W7,b1,b2,b3,b4也未尝不可。
R
t
,
Z
t
,
H
t
~
R_t,Z_t,\widetilde{H_t}
Rt,Zt,Ht
的大小是
n
×
h
n\times h
n×h,
Y
t
Y_t
Yt的大小时
n
×
q
n\times q
n×q。
3.长短期记忆(Long Short-term Memory,简称LSTM)
假设
X
t
∈
R
n
×
d
X_t\in R^{n\times d}
Xt∈Rn×d是时间步
t
t
t的小批量输入,
H
t
∈
R
n
×
h
H_t\in R^{n\times h}
Ht∈Rn×h是该时间步的隐藏变量,则
I
t
=
σ
(
X
t
W
x
i
+
H
t
−
1
W
h
i
+
b
i
)
F
t
=
σ
(
X
t
W
x
f
+
H
t
−
1
W
h
f
+
b
f
)
O
t
=
σ
(
X
t
W
x
o
+
H
t
−
1
W
h
o
+
b
o
)
C
~
t
=
t
a
n
h
(
X
t
W
x
c
+
H
t
−
1
W
h
c
+
b
c
)
C
t
=
F
t
⊙
C
t
−
1
+
I
t
⊙
C
~
t
H
t
=
O
t
⊙
t
a
n
h
(
C
t
)
I_t = σ(X_tW_{xi} + H_{t−1}W_{hi} + b_i) \\ F_t = σ(X_tW_{xf} + H_{t−1}W_{hf} + b_f)\\ O_t = σ(X_tW_{xo} + H_{t−1}W_{ho} + b_o)\\ \widetilde{C}_t = tanh(X_tW_{xc} + H_{t−1}W_{hc} + b_c)\\ C_t = F_t ⊙C_{t−1} + I_t ⊙\widetilde{C}_t\\ H_t = O_t⊙tanh(C_t)
It=σ(XtWxi+Ht−1Whi+bi)Ft=σ(XtWxf+Ht−1Whf+bf)Ot=σ(XtWxo+Ht−1Who+bo)C
t=tanh(XtWxc+Ht−1Whc+bc)Ct=Ft⊙Ct−1+It⊙C
tHt=Ot⊙tanh(Ct)
在时间步
t
t
t,输出层的输出为:
Y
t
=
H
t
W
h
q
+
b
q
Y_t=H_tW_{hq}+b_q
Yt=HtWhq+bq。
其中,
W
x
i
,
W
x
f
,
W
x
o
,
W
x
c
W_{xi},W_{xf},W_{xo},W_{xc}
Wxi,Wxf,Wxo,Wxc的大小是
d
×
h
d\times h
d×h,
W
h
i
,
W
h
f
,
W
h
o
,
W
h
c
W_{hi},W_{hf},W_{ho},W_{hc}
Whi,Whf,Who,Whc的大小是
h
×
h
h\times h
h×h,
W
h
q
W_{hq}
Whq的大小为
h
×
q
h\times q
h×q;
b
q
b_q
bq的大小为
1
×
q
1\times q
1×q,
b
i
,
b
f
,
b
o
,
b
c
b_i,b_f,b_o,b_c
bi,bf,bo,bc的大小是
1
×
h
1\times h
1×h,它与前面的加号加的时候会用到广播机制。同样,这些参数的下标也只是便于记忆的标记而已,只起到区分变量的作用,没有其他作用。
I
t
,
F
t
,
O
t
,
C
~
,
C
t
I_t,F_t,O_t,\widetilde{C},C_t
It,Ft,Ot,C
,Ct的大小是
n
×
h
n\times h
n×h,
Y
t
Y_t
Yt的大小是
n
×
q
n\times q
n×q。