前言
首先HMM解决的问题是基于序列的。
其中:
- 状态序列 I = i 1 , i 2 , . . . , i T I=i_1,i_2,...,i_T I=i1,i2,...,iT ,满足 i T ∈ Q i_T \in Q iT∈Q , Q Q Q 是状态序列的可能取值集合 Q = { q 1 , q 2 , . . . , q N } Q=\{q_1,q_2,...,q_N\} Q={q1,q2,...,qN} ;
- 观测序列 O = o 1 , o 2 , . . . , o T O=o_1,o_2,...,o_T O=o1,o2,...,oT ,满足 o T ∈ V o_T \in V oT∈V , V V V 是观测序列的可能取值集合 V = { v 1 , v 2 , . . . , v M } V=\{v_1,v_2,...,v_M\} V={v1,v2,...,vM} 。
要点:
一、模型参数及意义:
一个HMM模型,可以由 隐藏状态初始概率分布 π \pi π 、状态转移概率矩阵 A A A 和观测状态概率矩阵 B B B 决定。
可由如下三元组表示:
λ
=
(
π
,
A
,
B
)
\lambda = (\pi,\;A,\;B)
λ=(π,A,B)
其中:
- π \pi π :表示初始概率分布;
- A A A :转移矩阵 [ a i j ] [a_{ij}] [aij] , a i j = P ( i t + 1 = q j ∣ i t = q i ) a_{ij}=P(i_{t+1}=q_j|i_t=q_i) aij=P(it+1=qj∣it=qi) ,表示隐藏状态从 t t t 时刻的 q i q_i qi 转变为 t + 1 t+1 t+1 时刻的 q j q_j qj 时的概率;
- B B B :发射矩阵 [ b j ( k ) ] [b_j(k)] [bj(k)] , b j ( k ) = P ( o t = v k ∣ i t = q j ) b_j(k)=P(o_t=v_k|i_t=q_j) bj(k)=P(ot=vk∣it=qj) ,表示时刻 t t t 时的隐藏状态为 q j q_j qj 时产生观测值为 v k v_k vk 的概率。
二、两个假设:
① 齐次Markov假设:任意时刻的隐藏状态只依赖于它前一时刻的隐藏状态。
即:
P
(
i
t
+
1
∣
i
1
,
i
2
,
.
.
.
,
i
t
,
o
1
,
o
2
,
.
.
.
,
o
t
)
=
P
(
i
t
+
1
∣
i
t
)
P(i_{t+1}|i_1,i_2,...,i_t,\;o_1,o_2,...,o_t)=P(i_{t+1}|i_t)
P(it+1∣i1,i2,...,it,o1,o2,...,ot)=P(it+1∣it)
② 观测独立性假设:任意时刻的观测状态只依赖于当前时刻的隐藏状态。
即:
P
(
o
t
∣
i
1
,
i
2
,
.
.
.
,
i
t
,
o
1
,
o
2
,
.
.
.
,
o
t
)
=
P
(
o
t
∣
i
t
)
P(o_t|i_1,i_2,...,i_t,\;o_1,o_2,...,o_t)=P(o_t|i_t)
P(ot∣i1,i2,...,it,o1,o2,...,ot)=P(ot∣it)
三、三个问题:
HMM解决的三个经典的问题:
① Evaluation评估问题:已知HMM模型 λ = ( π , A , B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) ,求给定观测序列 O O O 出现的可能性大小 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) ,可使用(Forward-Backword)前向后向算法进行求解;
② Decoding解码问题:已知HMM模型
λ
=
(
π
,
A
,
B
)
\lambda = (\pi,\;A,\;B)
λ=(π,A,B) 和观测序列
O
O
O ,求解隐藏状态序列
I
^
\hat{I}
I^ ,使得当前条件下出现该隐藏状态序列的可能性最大,即:
I
^
=
a
r
g
m
a
x
⏟
I
P
(
I
∣
O
,
λ
)
\hat{I}=\underbrace{arg\;max}_I\;P(I|O,\lambda)
I^=I
argmaxP(I∣O,λ)
可使用(Viterbi)维特比算法进行求解;
③ Learning学习问题:已知观测序列
O
O
O ,估计模型
λ
=
(
π
,
A
,
B
)
\lambda = (\pi,\;A,\;B)
λ=(π,A,B) 的参数,使得产生该观测序列的可能性最大,即:
λ
M
L
E
=
a
r
g
m
a
x
⏟
λ
P
(
O
∣
λ
)
\lambda_{MLE} = \underbrace{arg\;max}_{\lambda}\;P(O|\lambda)
λMLE=λ
argmaxP(O∣λ)
可使用(Baum-Welch)鲍姆-韦尔奇算法进行求解。
四、三个问题的对应求解过程:
① Evaluation评估问题
已知HMM模型 λ = ( π , A , B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) ,求给定观测序列 O O O 出现的可能性大小 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) :
-
暴力求解法:
P ( O ∣ λ ) = ∑ I P ( I , O ∣ λ ) = ∑ I P ( O ∣ I , λ ) ⋅ P ( I ∣ λ ) P(O|\lambda) = \sum_I P(I,O|\lambda) = \sum_I P(O|I,\lambda)\cdot P(I|\lambda) P(O∣λ)=I∑P(I,O∣λ)=I∑P(O∣I,λ)⋅P(I∣λ)
而:
P ( I ∣ λ ) = P ( i 1 , i 2 , . . . , i T ∣ λ ) = P ( i T ∣ i 1 , i 2 , . . . , λ ) ⋅ P ( i 1 , i 2 , . . . , i T − 1 ∣ λ ) P(I|\lambda)=P(i_1,i_2,...,i_T|\lambda)=P(i_T|i_1,i_2,...,\lambda)\cdot P(i_1,i_2,...,i_{T-1}|\lambda) P(I∣λ)=P(i1,i2,...,iT∣λ)=P(iT∣i1,i2,...,λ)⋅P(i1,i2,...,iT−1∣λ)= P ( i T ∣ i T − 1 ) ⋅ P ( i 1 , i 2 , . . . , i T − 1 ∣ λ ) = P(i_T|i_{T-1})\cdot P(i_1,i_2,...,i_{T-1}|\lambda) =P(iT∣iT−1)⋅P(i1,i2,...,iT−1∣λ)
= a T − 1 , T ⋅ P ( i 1 , i 2 , . . . , i T − 1 ∣ λ ) = a_{T-1,T}\cdot P(i_1,i_2,...,i_{T-1}|\lambda) =aT−1,T⋅P(i1,i2,...,iT−1∣λ)
= a T − 1 , T ⋅ a T − 2 , T − 1 ⋅ P ( i 1 , i 2 , . . . , i T − 2 ∣ λ ) =a_{T-1,T}\cdot a_{T-2,T-1}\cdot P(i_1,i_2,...,i_{T-2}|\lambda) =aT−1,T⋅aT−2,T−1⋅P(i1,i2,...,iT−2∣λ)
= π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t = \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} =π(ai1)⋅t=2∏Tait−1,it
P ( O ∣ I , λ ) = ∏ t = 1 T b i t ( o t ) P(O|I,\lambda)=\prod_{t=1}^T b_{i_t}(o_t) P(O∣I,λ)=t=1∏Tbit(ot)
所以:
P ( O ∣ λ ) = ∑ I π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t ∏ t = 1 T b i t ( o t ) P(O|\lambda)=\sum_I \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} \prod_{t=1}^T b_{i_t}(o_t) P(O∣λ)=I∑π(ai1)⋅t=2∏Tait−1,itt=1∏Tbit(ot)= ∑ i 1 ∑ i 2 ⋯ ∑ i T ⏞ O ( N T ) π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t ∏ t = 1 T b i t ( o t ) = \overbrace{\sum_{i_1} \sum_{i_2} \cdots \sum_{i_T}}^{O(N^T)} \pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t} \prod_{t=1}^T b_{i_t}(o_t) =i1∑i2∑⋯iT∑ O(NT)π(ai1)⋅t=2∏Tait−1,itt=1∏Tbit(ot)
看的出来时间复杂度很高,为 O ( T N T ) O(TN^T) O(TNT) 。
-
(Forword)前向算法:
我们将 t t t 时刻的观测序列 O = o 1 , o 2 , . . . , o t O=o_1,o_2,...,o_t O=o1,o2,...,ot 与隐藏状态 i t i_t it 的联合概率记为 α t ( i ) \alpha_t(i) αt(i) :
即:
α t ( i ) = P ( o 1 , o 2 , . . . , o t , i t = q i ∣ λ ) \alpha_t(i) = P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) αt(i)=P(o1,o2,...,ot,it=qi∣λ)α T ( i ) = P ( O , i t = q i ∣ λ ) \alpha_T(i) = P(O,\;i_t=q_i|\lambda) αT(i)=P(O,it=qi∣λ)
而:
P ( O ∣ λ ) = ∑ i = 1 N P ( O , i t = q i ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|\lambda)= \sum_{i=1}^N P(O,\;i_t=q_i|\lambda)=\sum_{i=1}^N \alpha_T(i) P(O∣λ)=i=1∑NP(O,it=qi∣λ)=i=1∑NαT(i)
所以,知道了 α T ( i ) \alpha_T(i) αT(i) 的递推公式, P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 便可求解得出。
α t + 1 ( j ) = P ( o 1 , o 2 , . . . , o t + 1 , i t + 1 = q j ∣ λ ) \alpha_{t+1}(j)=P(o_1,o_2,...,o_{t+1},\;i_{t+1}=q_j|\lambda) αt+1(j)=P(o1,o2,...,ot+1,it+1=qj∣λ)= ∑ i = 1 N P ( o 1 , o 2 , . . . , o t + 1 , i t + 1 = q j , i t = q i ∣ λ ) =\sum_{i=1}^N P(o_1,o_2,...,o_{t+1},\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =i=1∑NP(o1,o2,...,ot+1,it+1=qj,it=qi∣λ)
= P ( o t + 1 ∣ o 1 , o 2 , . . . , o t , i t = q i , i t + 1 = q j , λ ) ⋅ P ( o 1 , o 2 , . . . , o t , i t + 1 = q j , i t = q i ∣ λ ) =P(o_{t+1}|o_1,o_2,...,o_t,\;i_t=q_i,\;i_{t+1}=q_j,\;\lambda)\cdot P(o_1,o_2,...,o_t,\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =P(ot+1∣o1,o2,...,ot,it=qi,it+1=qj,λ)⋅P(o1,o2,...,ot,it+1=qj,it=qi∣λ)
= ∑ i = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( o 1 , o 2 , . . . , o t , i t + 1 = q j , i t = q i ∣ λ ) =\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(o_1,o_2,...,o_t,\;i_{t+1}=q_j,\;i_t=q_i|\lambda) =i=1∑NP(ot+1∣it+1=qj)⋅P(o1,o2,...,ot,it+1=qj,it=qi∣λ)
= ∑ i = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( i t + 1 = q j ∣ o 1 , o 2 , . . . , o t , i t = q i , λ ) ⋅ P ( o 1 , o 2 , . . . , o t , i t = q i ∣ λ ) =\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(i_{t+1}=q_j|o_1,o_2,...,o_t,\;i_t=q_i,\;\lambda)\cdot P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) =i=1∑NP(ot+1∣it+1=qj)⋅P(it+1=qj∣o1,o2,...,ot,it=qi,λ)⋅P(o1,o2,...,ot,it=qi∣λ)
= ∑ i = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ P ( i t + 1 = q j ∣ i t = q i ) ⋅ P ( o 1 , o 2 , . . . , o t , i t = q i ∣ λ ) =\sum_{i=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot P(i_{t+1}=q_j|i_t=q_i)\cdot P(o_1,o_2,...,o_t,\;i_t=q_i|\lambda) =i=1∑NP(ot+1∣it+1=qj)⋅P(it+1=qj∣it=qi)⋅P(o1,o2,...,ot,it=qi∣λ)
= ∑ i = 1 N b j ( o t + 1 ) ⋅ a i j ⋅ α t ( i ) =\sum_{i=1}^N b_j(o_{t+1})\cdot a_{ij}\cdot \alpha_t(i) =i=1∑Nbj(ot+1)⋅aij⋅αt(i)
-
(Backword)后向算法:
我们把在时刻 t t t 隐藏状态为 q i q_i qi 时产生观测序列 O = o t + 1 , o t + 2 , . . . , o T O=o_{t+1},o_{t+2},...,o_T O=ot+1,ot+2,...,oT 的条件概率记为 β t ( i ) = P ( o t + 1 , o t + 2 , . . . , o T ∣ i t = q i , λ ) \beta_t(i)=P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\;\lambda) βt(i)=P(ot+1,ot+2,...,oT∣it=qi,λ) 。
那么根据定义可知: β 1 ( i ) = P ( o 2 , o 3 , . . . , o T ∣ i 1 = q i , λ ) \beta_1(i)=P(o_2,o_3,...,o_T|i_1=q_i,\;\lambda) β1(i)=P(o2,o3,...,oT∣i1=qi,λ) 。
此时:
P ( O ∣ λ ) = P ( o 1 , o 2 , . . . , o T ∣ λ ) P(O|\lambda)=P(o_1,o_2,...,o_T|\lambda) P(O∣λ)=P(o1,o2,...,oT∣λ)
= ∑ i = 1 N P ( o 1 , o 2 , . . . , o T , i 1 = q i ∣ λ ) = \sum_{i=1}^N P(o_1,o_2,...,o_T,\;i_1=q_i|\lambda) =i=1∑NP(o1,o2,...,oT,i1=qi∣λ)
= ∑ i = 1 N P ( o 1 , o 2 , . . . , o T ∣ i 1 = q i , λ ) ⋅ P ( i 1 = q i ∣ λ ) =\sum_{i=1}^N P(o_1,o_2,...,o_T|i_1=q_i,\;\lambda)\cdot P(i_1=q_i|\lambda) =i=1∑NP(o1,o2,...,oT∣i1=qi,λ)⋅P(i1=qi∣λ)
= ∑ i = 1 N P ( o 1 ∣ o 2 , . . . , o T , i 1 = q i , λ ) ⋅ P ( o 2 , . . . , o T ∣ i 1 = q i , λ ) ⋅ π i = \sum_{i=1}^N P(o_1|o_2,...,o_T,\;i_1=q_i,\;\lambda)\cdot P(o_2,...,o_T|i_1=q_i,\;\lambda)\cdot \pi_i =i=1∑NP(o1∣o2,...,oT,i1=qi,λ)⋅P(o2,...,oT∣i1=qi,λ)⋅πi
= ∑ i = 1 N P ( o 1 ∣ i 1 = q i ) ⋅ β 1 ( i ) ⋅ π i =\sum_{i=1}^N P(o_1|i_1=q_i)\cdot \beta_1(i) \cdot \pi_i =i=1∑NP(o1∣i1=qi)⋅β1(i)⋅πi
= ∑ i = 1 N π i b i ( o 1 ) β 1 ( i ) = \sum_{i=1}^N \pi_i b_i(o_1)\beta_1(i) =i=1∑Nπibi(o1)β1(i)
所以求出了 β 1 ( i ) \beta_1(i) β1(i) ,则相应的 P ( O ∣ λ ) P(O|\lambda) P(O∣λ) 也就求出来了。
而:
β
t
(
i
)
=
P
(
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
∣
i
t
=
q
i
,
λ
)
\beta_t(i) =P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\;\lambda)
βt(i)=P(ot+1,ot+2,...,oT∣it=qi,λ)
= ∑ j = 1 N P ( o t + 1 , o t + 2 , . . . , o T , i t + 1 = q j ∣ i t = q i , λ ) = \sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T,\;i_{t+1}=q_j|i_t=q_i,\;\lambda) =j=1∑NP(ot+1,ot+2,...,oT,it+1=qj∣it=qi,λ)
= ∑ j = 1 N P ( o t + 1 , o t + 2 , . . . , o T ∣ i t + 1 = q j , i t = q i , λ ) ⋅ P ( i t + 1 = q j ∣ o t + 1 , o t + 2 , . . . , o T , i t = q i , λ ) =\sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j,\;i_t=q_i,\;\lambda)\cdot P(i_{t+1}=q_j|o_{t+1},o_{t+2},...,o_T,\;i_t=q_i,\;\lambda) =j=1∑NP(ot+1,ot+2,...,oT∣it+1=qj,it=qi,λ)⋅P(it+1=qj∣ot+1,ot+2,...,oT,it=qi,λ)
= ∑ j = 1 N P ( o t + 1 , o t + 2 , . . . , o T ∣ i t + 1 = q j ) ⋅ a i j =\sum_{j=1}^N P(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j)\cdot a_{ij} =j=1∑NP(ot+1,ot+2,...,oT∣it+1=qj)⋅aij
= ∑ j = 1 N P ( o t + 1 ∣ o t + 2 , . . . , o T , i t + 1 = q j ) ⋅ P ( o t + 2 , . . . , o T ∣ i t + 1 = q j ) ⋅ a i j =\sum_{j=1}^N P(o_{t+1}|o_{t+2},...,o_T,\;i_{t+1}=q_j)\cdot P(o_{t+2},...,o_T|i_{t+1}=q_j)\cdot a_{ij} =j=1∑NP(ot+1∣ot+2,...,oT,it+1=qj)⋅P(ot+2,...,oT∣it+1=qj)⋅aij
= ∑ j = 1 N P ( o t + 1 ∣ i t + 1 = q j ) ⋅ β t + 1 ( j ) ⋅ a i j = \sum_{j=1}^N P(o_{t+1}|i_{t+1}=q_j)\cdot \beta_{t+1}(j)\cdot a_{ij} =j=1∑NP(ot+1∣it+1=qj)⋅βt+1(j)⋅aij
= ∑ j = 1 N b j ( o t + 1 ) a i j β t + 1 ( j ) = \sum_{j=1}^N b_j(o_{t+1})a_{ij}\beta_{t+1}(j) =j=1∑Nbj(ot+1)aijβt+1(j)
至此,我们就可以根据 β T ( i ) \beta_T(i) βT(i) 递推出 β T − 1 ( i ) , . . . , β 1 ( i ) \beta_{T-1}(i),...,\beta_1(i) βT−1(i),...,β1(i) 。
② Decoding解码问题:
已知HMM模型
λ
=
(
π
,
A
,
B
)
\lambda = (\pi,\;A,\;B)
λ=(π,A,B) 和观测序列
O
O
O ,求解隐藏状态序列
I
^
\hat{I}
I^ ,使得当前条件下出现该隐藏状态序列的可能性最大。
使用(Viterbi)维特比算法进行求解:
本质上就是基于动态规划求解最短路径(最大概率)的问题。
这里我们将在时刻
t
t
t 隐藏状态为
i
i
i 的所有可能的状态转移路径
i
1
,
i
2
,
.
.
.
i
t
i_1,i_2,...i_t
i1,i2,...it 中的概率最大值记为
δ
t
(
i
)
\delta_t(i)
δt(i) ,则有:
δ
t
(
i
)
=
m
a
x
⏟
i
1
,
i
2
,
.
.
.
,
i
t
−
1
P
(
i
t
=
i
,
i
1
,
i
2
,
.
.
.
,
i
t
−
1
,
o
1
,
o
2
,
.
.
.
,
o
t
∣
λ
)
,
i
=
1
,
2
,
.
.
.
,
N
\delta_t(i) = \underbrace{max}_{i_1,i_2,...,i_{t-1}} P(i_t=i,\;i_1,i_2,...,i_{t-1},\;o_1,o_2,...,o_{t}|\lambda),\;i=1,2,...,N
δt(i)=i1,i2,...,it−1
maxP(it=i,i1,i2,...,it−1,o1,o2,...,ot∣λ),i=1,2,...,N
由
δ
t
(
i
)
\delta_t(i)
δt(i) 的定义可以得到
δ
\delta
δ 的递推表达式:
δ
t
+
1
(
j
)
=
m
a
x
⏟
i
1
,
i
2
,
.
.
.
,
i
t
P
(
i
t
+
1
=
i
,
i
1
,
i
2
,
.
.
.
,
i
t
,
o
1
,
o
2
,
.
.
.
,
o
t
+
1
∣
λ
)
\delta_{t+1}(j)=\underbrace{max}_{i_1,i_2,...,i_{t}} P(i_{t+1}=i,\;i_1,i_2,...,i_{t},\;o_1,o_2,...,o_{t+1}|\lambda)
δt+1(j)=i1,i2,...,it
maxP(it+1=i,i1,i2,...,it,o1,o2,...,ot+1∣λ)
= m a x ⏟ 1 ≤ i ≤ N δ t ( i ) a i j b j ( o t + 1 ) =\underbrace{max}_{1 \le i \le N} \delta_t(i)a_{ij}b_j(o_{t+1}) =1≤i≤N maxδt(i)aijbj(ot+1)
但是 δ t + 1 ( j ) \delta_{t+1}(j) δt+1(j) 表示的是最大的概率值,而不是状态转移路径,所以我们要在每次获取到最大概率值之后标记出此时的状态转移路径,即隐藏状态 i i i 的取值。
我们定义在时刻 t + 1 t+1 t+1 隐藏状态为 j j j 的所有单个状态转移路径 ( i 1 , i 2 , . . . , i t − 1 , i t , j t + 1 ) (i_1,i_2,...,i_{t-1},i_t,j_{t+1}) (i1,i2,...,it−1,it,jt+1) 中概率最大的转移路径中时刻为 t t t 的节点的隐藏状态为 ψ t + 1 ( j ) \psi_{t+1}(j) ψt+1(j) 。
那么:
ψ
t
+
1
(
j
)
=
a
r
g
m
a
x
⏟
1
≤
i
≤
N
δ
t
(
i
)
a
i
j
\psi_{t+1}(j) = \underbrace{arg\;max}_{1\le i\le N}\;\delta_t(i)a_{ij}
ψt+1(j)=1≤i≤N
argmaxδt(i)aij
现在,我们可以根据
δ
t
+
1
(
i
)
\delta_{t+1}(i)
δt+1(i) 递推得到
δ
t
(
i
)
,
δ
t
−
1
(
i
)
,
.
.
.
,
δ
1
(
j
)
\delta_{t}(i),\delta_{t-1}(i),...,\delta_{1}(j)
δt(i),δt−1(i),...,δ1(j) ,那么根据上式,我们可以得到使得
δ
t
(
i
)
\delta_{t}(i)
δt(i) 最大的状态转移路径
I
^
=
ψ
1
(
i
)
,
ψ
2
(
i
)
,
.
.
.
,
ψ
t
(
i
)
\hat{I} =\psi_{1}(i),\psi_{2}(i),...,\psi_{t}(i)
I^=ψ1(i),ψ2(i),...,ψt(i) 。
③ Learning学习问题:
已知观测序列 O O O ,估计模型 λ = ( π , A , B ) \lambda = (\pi,\;A,\;B) λ=(π,A,B) 的参数,使得产生该观测序列的可能性最大。
这样的学习问题我们可以使用(Baum-Welch)鲍姆-韦尔奇算法进行求解。
首先我们给出算法的求解公式:
θ
(
t
+
1
)
=
a
r
g
m
a
x
⏟
θ
∫
Z
l
o
g
P
(
X
,
Z
∣
Q
)
⋅
P
(
Z
∣
X
,
θ
(
t
)
)
d
Z
\theta^{(t+1)}=\underbrace{arg\;max}_{\theta} \int_{Z} log\;P(X,Z|Q)\cdot P(Z|X,\theta^{(t)})dZ
θ(t+1)=θ
argmax∫ZlogP(X,Z∣Q)⋅P(Z∣X,θ(t))dZ
其中:
- X X X 表示观测值,等价于前面的观测序列 O O O ;
- Z Z Z 表示隐变量,等价于前面的隐藏状态序列 I I I (离散的);
- θ \theta θ 表示模型参数,等价于前面的 λ \lambda λ 。
那么上式可以改写为:
λ
(
t
+
1
)
=
a
r
g
m
a
x
⏟
λ
∑
I
l
o
g
P
(
O
,
I
∣
λ
)
⋅
P
(
I
∣
O
,
λ
(
t
)
)
\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot P(I|O,\;\lambda^{(t)})
λ(t+1)=λ
argmaxI∑logP(O,I∣λ)⋅P(I∣O,λ(t))
= λ ( t + 1 ) = a r g m a x ⏟ λ ∑ I l o g P ( O , I ∣ λ ) ⋅ P ( O , I ∣ λ ( t ) ) P ( O ∣ λ ( t ) ) =\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot \frac{P(O,I|\lambda^{(t)})}{P(O|\lambda^{(t)})} =λ(t+1)=λ argmaxI∑logP(O,I∣λ)⋅P(O∣λ(t))P(O,I∣λ(t))
上式中分母
P
(
O
∣
λ
(
t
)
)
P(O|\lambda^{(t)})
P(O∣λ(t)) 是已知的常量,对结果不会产生影响,这里我们可以省略掉,即:
=
λ
(
t
+
1
)
=
a
r
g
m
a
x
⏟
λ
∑
I
l
o
g
P
(
O
,
I
∣
λ
)
⋅
P
(
O
,
I
∣
λ
(
t
)
)
=\lambda^{(t+1)}=\underbrace{arg\;max}_{\lambda}\;\sum_I log\;P(O,I|\lambda)\cdot P(O,I|\lambda^{(t)})
=λ(t+1)=λ
argmaxI∑logP(O,I∣λ)⋅P(O,I∣λ(t))
现在是要找到
λ
(
t
+
1
)
\lambda^{(t+1)}
λ(t+1) 和
λ
(
t
)
\lambda^{(t)}
λ(t) 之间的关系式进行迭代更新,
λ
(
t
)
\lambda^{(t)}
λ(t) 可以这样表示:
λ
(
t
)
=
(
π
(
t
)
,
A
(
t
)
,
B
(
t
)
)
\lambda^{(t)}=(\pi^{(t)},\; A^{(t)},\; B^{(t)})
λ(t)=(π(t),A(t),B(t))
由于模型的三个参数的迭代过程都是使用类似的思想,而且关于
A
A
A 和
B
B
B 的推导相对比较麻烦,所以这里只演示
π
\pi
π 的推导求解过程:
可令:
Q
(
λ
,
λ
(
t
)
)
=
∑
I
l
o
g
P
(
O
,
I
∣
λ
)
⋅
P
(
O
,
I
∣
λ
(
t
)
)
Q(\lambda,\lambda^{(t)})=\sum_I log\;P(O,I|\lambda)\cdot P(O,I|\lambda^{(t)})
Q(λ,λ(t))=I∑logP(O,I∣λ)⋅P(O,I∣λ(t))
= ∑ I [ l o g π ( a i 1 ) ⋅ ∏ t = 2 T a i t − 1 , i t ⋅ ∏ t = 1 T b i t ( o t ) ⋅ P ( O , I ∣ λ ( t ) ) ] =\sum_I \big[log\;\pi(a_{i_1})\cdot \prod_{t=2}^T a_{i_{t-1},i_t}\cdot \prod_{t=1}^T b_{i_t}(o_t) \cdot P(O,I|\lambda^{(t)})\big] =I∑[logπ(ai1)⋅t=2∏Tait−1,it⋅t=1∏Tbit(ot)⋅P(O,I∣λ(t))]
= ∑ I [ ( l o g π ( a i 1 ) + ∑ t = 2 T l o g a i t − 1 , i t + ∑ t = 1 T l o g b i t ( o t ) ) ⋅ P ( O , I ∣ λ ( t ) ) ] =\sum_I \big[\big(log\;\pi(a_{i_1}) + \sum_{t=2}^T log\;a_{i_{t-1},i_t} + \sum_{t=1}^T log\;b_{i_t}(o_t)\big) \cdot P(O,I|\lambda^{(t)})\big] =I∑[(logπ(ai1)+t=2∑Tlogait−1,it+t=1∑Tlogbit(ot))⋅P(O,I∣λ(t))]
由于小括号中的第二、三项与
π
\pi
π 没有关系,所以上式可以进一步简化:
π
(
t
+
1
)
=
a
r
g
m
a
x
⏟
π
Q
(
λ
,
λ
(
t
)
)
\pi^{(t+1)}=\underbrace{arg\;max}_{\pi}\;Q(\lambda,\lambda^{(t)})
π(t+1)=π
argmaxQ(λ,λ(t))
= a r g m a x ⏟ π ∑ I [ l o g π i 1 ⋅ P ( O , I ∣ λ ( t ) ) ] =\underbrace{arg\;max}_{\pi}\;\sum_I \big[log\;\pi_{i_1}\cdot P(O,I|\lambda^{(t)})\big] =π argmaxI∑[logπi1⋅P(O,I∣λ(t))]
= a r g m a x ⏟ π ∑ i 1 ⋯ ∑ i T [ l o g π i 1 ⋅ P ( O , i 1 , i 2 , . . . , i T ∣ λ ( t ) ) ] =\underbrace{arg\;max}_{\pi}\;\sum_{i_1} \cdots \sum_{i_T} \big[log\;\pi_{i_1}\cdot P(O,\;i_1,i_2,...,i_T|\lambda^{(t)})\big] =π argmaxi1∑⋯iT∑[logπi1⋅P(O,i1,i2,...,iT∣λ(t))]
我们发现前面的连续积分从
i
2
i_2
i2 到
i
T
i_T
iT 与
l
o
g
π
i
1
log\;\pi_{i_1}
logπi1 无关,与第二项连续积分的结果是一个边缘概率,即:
=
a
r
g
m
a
x
⏟
π
∑
i
1
[
l
o
g
π
i
1
⋅
P
(
O
,
i
1
∣
λ
(
t
)
)
]
=\underbrace{arg\;max}_{\pi}\;\sum_{i_1} \big[log\;\pi_{i_1}\cdot P(O,\;i_1|\lambda^{(t)})\big]
=π
argmaxi1∑[logπi1⋅P(O,i1∣λ(t))]
到这里则变成了有约束条件下的求极值问题,由前面的条件可知,初始概率分布满足如下条件:
∑
i
=
1
N
π
i
=
1
\sum_{i=1}^N \pi_i = 1
i=1∑Nπi=1
此时,我们使用拉格朗日乘子法来求解它,引入
η
≥
0
\eta \ge 0
η≥0 使得:
L
(
π
,
η
)
=
∑
i
=
1
N
l
o
g
π
i
⋅
P
(
O
,
i
1
=
q
i
∣
λ
(
t
)
)
+
η
(
∑
i
=
1
N
π
i
−
1
)
L(\pi, \eta) = \sum_{i=1}^N log\;\pi_i \cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta \big(\sum_{i=1}^N \pi_i -1\big)
L(π,η)=i=1∑Nlogπi⋅P(O,i1=qi∣λ(t))+η(i=1∑Nπi−1)
对拉格朗日函数求关于
π
i
\pi_i
πi 的偏导,并令其为0:
∂
L
(
π
,
η
)
∂
π
i
=
1
π
i
⋅
P
(
O
,
i
1
=
q
i
∣
λ
(
t
)
)
+
η
=
0
⋯
①
\frac{\partial L(\pi, \eta)}{\partial \pi_i} = \frac{1}{\pi_i}\cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta = 0 \quad \cdots \text{①}
∂πi∂L(π,η)=πi1⋅P(O,i1=qi∣λ(t))+η=0⋯①
⇒ π i = − P ( O , i 1 = q i ∣ λ ( t ) ) η ⋯ ② \Rightarrow \pi_i = -\frac{P(O,\;i_1=q_i|\lambda^{(t)})}{\eta} \quad \cdots \text{②} ⇒πi=−ηP(O,i1=qi∣λ(t))⋯②
我们对式①等号两边的式子对
i
i
i 在
1
,
2
,
.
.
.
,
N
1,2,...,N
1,2,...,N 上求和,即得:
∑
i
=
1
N
[
1
π
i
⋅
P
(
O
,
i
1
=
q
i
∣
λ
(
t
)
)
+
η
]
=
0
\sum_{i=1}^N \big[\frac{1}{\pi_i}\cdot P(O,\;i_1=q_i|\lambda^{(t)}) + \eta\big] = 0
i=1∑N[πi1⋅P(O,i1=qi∣λ(t))+η]=0
⇒ ∑ i = 1 N [ P ( O , i 1 = q i ∣ λ ( t ) ) + π i η ] = 0 \Rightarrow \sum_{i=1}^N \big[P(O,\;i_1=q_i|\lambda^{(t)}) + \pi_i \eta\big] = 0 ⇒i=1∑N[P(O,i1=qi∣λ(t))+πiη]=0
⇒ P ( O ∣ λ ( t ) ) + η = 0 \Rightarrow P(O|\lambda^{(t)}) + \eta = 0 ⇒P(O∣λ(t))+η=0
⇒ η = − P ( O ∣ λ ( t ) ) ⋯ ③ \Rightarrow \eta = -P(O|\lambda^{(t)}) \quad \cdots \text{③} ⇒η=−P(O∣λ(t))⋯③
将式③代入到式②中,可得:
π
i
(
t
+
1
)
=
P
(
O
,
i
1
=
q
i
∣
λ
(
t
)
)
P
(
O
∣
λ
(
t
)
)
\pi_i^{(t+1)} = \frac{P(O,\;i_1=q_i|\lambda^{(t)})}{P(O|\lambda^{(t)})}
πi(t+1)=P(O∣λ(t))P(O,i1=qi∣λ(t))
这样我们就得到了
t
+
1
t+1
t+1 时刻的参数
π
i
\pi_i
πi 由时刻
t
t
t 的模型参数更新的表达式。