RNN模型和HMC模型,都是适合处理时间序列的模型。这两者在结构上具有一定的相似性。笔者在学习这两个模型的时候,对他们之间的关系非常感兴趣,但是却一度十分困惑:它们之间是否存在可互相表示的关系?哪一个的通用性更强?答案其实大家心里都有了吧,只是缺了一个严格的证明。本文将为机器学习算法领域的爱好者证明一个大家都知道的事情:可以用经典RNN网络模型来表达隐马尔科夫链模型。
1. 隐马尔科夫链模型
隐马尔科夫链模型说的是,在我们日常生活中,有一些按时间顺序发生的事情,其发生的规律,与背后隐藏的状态
s
s
s有关,这个背后隐藏的状态我们没办法直接观察,但是我们可以断定这个状态的变化具有马尔科夫性。也就是说,每一个时刻
t
t
t下这个状态
s
t
s_t
st,只与其在上一个时刻的状态
s
t
−
1
s_{t-1}
st−1有关。我们可以用一个条件概率来表示这种关系,即:
P
(
s
t
∣
s
t
−
1
,
⋯
,
s
1
,
s
0
)
=
P
(
s
t
∣
s
t
−
1
)
P(s_t|s_{t-1},\cdots,s_1,s_0) = P(s_t|s_{t-1})
P(st∣st−1,⋯,s1,s0)=P(st∣st−1)
我们无法直接观察状态
s
t
s_t
st,我们可以观察的是这些状态表现出来的时间序列事件
[
x
1
,
x
2
,
⋯
,
x
t
]
[x_1,x_2,\cdots,x_t]
[x1,x2,⋯,xt]。在特定时刻
t
t
t,事件
x
t
x_t
xt发生的概率与当时的状态有关,我们可以把这种关联性表示为
p
(
x
t
∣
s
t
)
p(x_t|s_t)
p(xt∣st)。我们可以通过观察
0
0
0时刻到
t
t
t时刻发生的事件,来预测下一个时刻的状态
s
t
+
1
s_{t+1}
st+1以及将要发生的事件
x
t
+
1
x_{t+1}
xt+1的概率。在隐马尔科夫链模型中,一个完整的时间序列的联合概率可以表示为:
P
(
x
t
,
⋯
,
x
1
,
s
t
,
⋯
,
s
0
)
=
[
∏
P
(
x
t
∣
s
t
)
]
⋅
[
∏
P
(
s
t
∣
s
t
−
1
)
]
⋅
P
(
s
0
)
(1)
P(x_t,\cdots,x_1,s_t,\cdots,s_0) = [\prod P(x_t|s_t)] \cdot [\prod P(s_t|s_{t-1})]\cdot P(s_0) \tag{1}
P(xt,⋯,x1,st,⋯,s0)=[∏P(xt∣st)]⋅[∏P(st∣st−1)]⋅P(s0)(1)
其中
P
(
s
t
∣
s
t
−
1
)
P(s_t|s_{t-1})
P(st∣st−1)被称为转移概率,
P
(
x
t
∣
s
t
)
P(x_t|s_{t})
P(xt∣st)则被称为发射概率。隐马尔科夫链模型可以通过下图来表示:
可知,HMC模型属于生成式模型。
2. 经典RNN网络模型
不知道是谁开的头,大家喜欢用冰淇淋来比喻RNN网络,咱也学一下。香草味RNN网络,指的就是最经典的RNN网络结构,咱也不清楚为什么香草味是最经典口味,最经典的口味不是原味吗?最经典的RNN模型如下图所示(前向传播):
左边是折叠图,右边是把左边的折叠图展开之后的结果。估计学过RNN的朋友已经对这张图非常熟悉了。总之,RNN的基本思路就是,把一个序列上的输入信息按顺序进行输入到同一个网络之中,然后每次输入都可以获得相应的输出。这个方法之所以牛逼就在于,可以把任意长度的序列输入到一个网络中,网络可以将以前输入过的信息跟后边输入的信息产生关联记忆,效果杠杠的,总之非常牛逼。其中:
y
^
t
=
c
r
o
s
s
m
a
x
(
W
o
h
T
h
t
+
b
o
)
(2)
\hat{y}_t = crossmax(W_{oh}^Th_t+ b_o ) \tag{2}
y^t=crossmax(WohTht+bo)(2)
h
t
=
σ
(
W
h
h
T
h
t
−
1
+
W
i
h
T
x
t
+
b
h
)
(3)
h_t = \sigma(W_{hh}^Th_{t-1} +W_{ih}^Tx_t + b_h) \tag{3}
ht=σ(WhhTht−1+WihTxt+bh)(3)
3. 使用RNN模型表示HMC模型
我们用
l
1
(
h
t
−
1
;
W
h
h
,
b
h
1
)
l_1(h_{t-1};W_{hh},b_{h1})
l1(ht−1;Whh,bh1)表示关于
h
t
−
1
h_{t-1}
ht−1的似然公式,用
l
2
(
x
t
;
W
i
h
,
b
h
2
)
l_2(x_t;W_{ih},b_{h2})
l2(xt;Wih,bh2)表示关于
x
t
x_t
xt的似然公式,这样,我们就能把
h
t
h_t
ht表示为两个似然公式的积:
h
t
=
l
1
(
h
t
−
1
;
W
h
h
,
b
h
1
)
⋅
l
2
(
x
t
;
W
i
h
,
b
h
2
)
(4)
h_t = l_1(h_{t-1};W_{hh},b_{h1}) \cdot l_2(x_t;W_{ih},b_{h2}) \tag{4}
ht=l1(ht−1;Whh,bh1)⋅l2(xt;Wih,bh2)(4)
为了简化,我们把式(4)写成:
h
t
=
l
θ
1
(
h
t
−
1
)
⋅
l
θ
2
(
x
t
)
(5)
h_t = l_{\theta_1}(h_{t-1}) \cdot l_{\theta_2}(x_t) \tag{5}
ht=lθ1(ht−1)⋅lθ2(xt)(5)
我们将
l
θ
1
l_{\theta_1}
lθ1表示成联合概率公式:
l
θ
1
(
h
t
−
1
)
=
P
(
h
t
∣
h
t
−
1
)
⋅
P
(
h
t
−
1
,
⋯
,
h
0
)
⋅
∏
i
=
1
t
−
1
P
(
x
i
∣
h
i
)
=
∏
i
=
1
t
P
(
h
i
∣
h
i
−
1
)
⋅
P
(
h
0
)
⋅
∏
j
=
1
t
−
1
P
(
x
j
∣
h
j
)
(6)
\begin{aligned} l_{\theta_1}(h_{t-1}) &= P(h_{t}|h_{t-1})\cdot P(h_{t-1},\cdots,h_0) \cdot \prod_{i=1}^{t-1} P(x_i|h_i) \\ &=\prod_{i=1}^{t}P(h_{i}|h_{i-1})\cdot P(h_{0}) \cdot \prod_{j=1}^{t-1} P(x_j|h_j) \tag{6} \end{aligned}
lθ1(ht−1)=P(ht∣ht−1)⋅P(ht−1,⋯,h0)⋅i=1∏t−1P(xi∣hi)=i=1∏tP(hi∣hi−1)⋅P(h0)⋅j=1∏t−1P(xj∣hj)(6)
我们将
l
θ
2
l_{\theta_2}
lθ2表示成条件概率公式:
l
θ
2
(
x
t
)
=
P
(
x
t
∣
h
t
)
(7)
l_{\theta_2}(x_{t}) = P(x_{t}|h_{t}) \tag{7}
lθ2(xt)=P(xt∣ht)(7)
(6)、(7)代入(5)中,得:
h
t
=
∏
j
=
1
t
P
(
x
j
∣
h
j
)
⋅
∏
i
=
1
t
P
(
h
i
∣
h
i
−
1
)
⋅
P
(
h
0
)
\begin{aligned} h_t &= \prod_{j=1}^{t} P(x_j|h_j) \cdot \prod_{i=1}^{t}P(h_{i}|h_{i-1})\cdot P(h_{0}) \\ \end{aligned}
ht=j=1∏tP(xj∣hj)⋅i=1∏tP(hi∣hi−1)⋅P(h0)
这个式子与式(1)是等效的。因此我们可以得到:
h t = P ( x t , ⋯ , x 1 , h t , ⋯ , h 0 ) = h t − 1 ⋅ P ( h t ∣ h t − 1 ) ⋅ P ( x t ∣ h t ) (8) h_t = P(x_t,\cdots,x_1, h_t,\cdots,h_0) = h_{t-1} \cdot P(h_t|h_{t-1} ) \cdot P(x_t|h_t) \tag{8} ht=P(xt,⋯,x1,ht,⋯,h0)=ht−1⋅P(ht∣ht−1)⋅P(xt∣ht)(8)
现在,我们再来处理一下式子(2)。我们可以用条件概率
p
(
x
t
+
1
∣
x
t
,
⋯
,
x
1
,
h
t
,
⋯
,
h
0
)
p(x_{t+1}|x_t,\cdots,x_1,h_t,\cdots,h_0)
p(xt+1∣xt,⋯,x1,ht,⋯,h0)来表示:
y
^
t
=
p
(
x
t
+
1
∣
x
t
,
⋯
,
x
1
,
h
t
,
⋯
,
h
0
)
\hat{y}_t = p(x_{t+1}|x_t,\cdots,x_1,h_t,\cdots,h_0)
y^t=p(xt+1∣xt,⋯,x1,ht,⋯,h0)
4. 结论
我们可以通过将将式(3)定义为式(6)、(7)的样子,就可以将RNN模型表示成HMC模型。这个过程实质上就是为模型增加额外限制的过程。因此我们说,HMC模型被在RNN网络模型包含,RNN模型具有比HMC模型更强的表达力。