循环神经网络
基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量
H
H
H,用
H
t
H_{t}
Ht表示
H
H
H在时间步
t
t
t的值。
H
t
H_{t}
Ht的计算基于
X
t
X_{t}
Xt和
H
t
−
1
H_{t-1}
Ht−1,可以认为
H
t
H_{t}
Ht记录了到当前字符为止的序列信息,利用
H
t
H_{t}
Ht对序列的下一个字符进行预测。
假设
X
t
∈
R
n
×
d
X_{t}\in \mathbb{R}^{n\times d }
Xt∈Rn×d是时间步长
t
t
t的小批量输入,
H
t
∈
R
n
×
h
H_{t}\in \mathbb{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_{t}W_{xh} +H_{t-1}W_{hh}+b_{h})
Ht=ϕ(XtWxh+Ht−1Whh+bh)
其中
W
x
h
∈
R
d
×
h
W_{xh}\in \mathbb{R}^{d\times h}
Wxh∈Rd×h,
W
h
h
∈
R
h
×
h
W_{hh}\in \mathbb{R}^{h\times h}
Whh∈Rh×h,
b
h
∈
R
1
×
h
b_{h} \in \mathbb{R}^{1\times h}
bh∈R1×h,
ϕ
\phi
ϕ函数是非线性激活函数。由于引入了
H
t
−
1
W
h
h
H_{t-1}W_{hh}
Ht−1Whh,
H
t
H_{t}
Ht能够捕捉截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。由于
H
t
H_{t}
Ht的计算基于
H
t
−
1
H_{t-1}
Ht−1,上式的计算是循环的,使用循环计算的网络即循环神经网络(recurrent neural network)。
在时间步
t
t
t,输出层的输出为:
O
t
=
H
t
W
h
q
+
b
q
O_{t}=H_{t}W_{hq} +b_{q}
Ot=HtWhq+bq
其中
W
h
q
∈
R
h
×
q
W_{hq}\in \mathbb{R}^{h\times q}
Whq∈Rh×q,
b
q
∈
R
1
×
q
b_{q}\in \mathbb{R}^{1\times q}
bq∈R1×q。
GRU
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT)
⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系
RNN:
H
t
=
ϕ
(
X
t
W
x
h
+
H
t
−
1
W
h
h
+
b
h
)
H_{t}=\phi(X_{t}W_{xh} +H_{t-1}W_{hh}+b_{h})
Ht=ϕ(XtWxh+Ht−1Whh+bh)
GRU:
R
t
=
ϕ
(
X
t
W
x
r
+
H
t
−
1
W
h
r
+
b
r
)
R_{t}=\phi(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}=\phi(X_{t}W_{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
h
⊙
H
t
−
1
)
W
h
h
+
b
h
)
\tilde{H_{t}}=tanh(X_{t}W_{xh} +(R_{h}\odot H_{t-1})W_{hh}+b_{h})
Ht~=tanh(XtWxh+(Rh⊙Ht−1)Whh+bh)
H
t
=
Z
t
⊙
H
t
−
1
+
(
1
−
Z
t
)
H
t
−
1
⊙
H
t
~
H_{t}=Z_{t}\odot H_{t-1} +(1-Z_{t})H_{t-1}\odot \tilde{H_{t}}
Ht=Zt⊙Ht−1+(1−Zt)Ht−1⊙Ht~
• 重置⻔有助于捕捉时间序列⾥短期的依赖关系;
• 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。
LSTM
长短期记忆long short-term memory :
遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动
I
t
=
ϕ
(
X
t
W
x
i
+
H
t
−
1
W
h
i
+
b
i
)
I_{t}=\phi(X_{t}W_{xi} +H_{t-1}W_{hi}+b_{i})
It=ϕ(XtWxi+Ht−1Whi+bi)
F
t
=
ϕ
(
X
t
W
x
f
+
H
t
−
1
W
h
f
+
b
f
)
F_{t}=\phi(X_{t}W_{xf} +H_{t-1}W_{hf}+b_{f})
Ft=ϕ(XtWxf+Ht−1Whf+bf)
O
t
=
ϕ
(
X
t
W
x
o
+
H
t
−
1
W
h
o
+
b
o
)
O_{t}=\phi(X_{t}W_{xo} +H_{t-1}W_{ho}+b_{o})
Ot=ϕ(XtWxo+Ht−1Who+bo)
C
t
~
=
t
a
n
h
(
X
t
W
x
c
+
H
t
−
1
W
h
c
+
b
c
)
\tilde{C_{t}}=tanh(X_{t}W_{xc} +H_{t-1}W_{hc}+b_{c})
Ct~=tanh(XtWxc+Ht−1Whc+bc)
C
t
=
F
t
⊙
C
t
−
1
+
I
t
⊙
C
t
~
C_{t}=F_{t}\odot C_{t-1} +I_{t}\odot \tilde{C_{t}}
Ct=Ft⊙Ct−1+It⊙Ct~
H
t
=
O
t
⊙
t
a
n
h
(
C
t
)
H_{t}=O_{t}\odot tanh(C_{t})
Ht=Ot⊙tanh(Ct)
参考资料:
https://www.kesci.com/org/boyuai/project/5e4291f05f2816002ce8f9a0