1. 隐马尔可夫模型的基本概念
隐马尔可夫模型(hidden Markov model, HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。
1.1 隐马尔可夫模型的定义
图结构

文字描述
隐马尔可夫模型是关于时序的概率模型,描述了:
- 由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列;
- 再由各个状态生成一个观测而产生观测随机序列 的过程。
数学定义
- I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT):长度为T的状态序列; 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):对应的观测序列; V = { v 1 , v 2 , . . . , v M } V=\{v_1,v_2,...,v_M\} V={v1,v2,...,vM}:所有可能的观测的集合
隐马尔可夫模型 λ \lambda λ可由三元符号 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)表示,其中:
-
A
=
[
a
i
j
]
N
×
N
A=[a_{ij}]_{N\times N}
A=[aij]N×N:状态转移概率矩阵
- a i j = P ( i t + 1 = q j ∣ i t = q i ) , i = 1 , . . . , N ; j = 1 , . . . , N a_{ij}=P(i_{t+1}=q_j|i_t=q_i),\quad i=1,...,N;j=1,...,N aij=P(it+1=qj∣it=qi),i=1,...,N;j=1,...,N
- 在 t t t时刻处于状态 q i q_i qi的条件下,在 t + 1 t+1 t+1时刻转移到状态 q j q_j qj的概率
-
B
=
[
b
j
(
k
)
]
N
×
M
B=[b_j(k)]_{N\times M}
B=[bj(k)]N×M:观测概率矩阵
- b j ( k ) = P ( o t = v k ∣ i t = q j ) , k = 1 , . . . , M ; j = 1 , . . . , N b_j(k)=P(o_t=v_k|i_t=q_j),\quad k=1,...,M;j=1,...,N bj(k)=P(ot=vk∣it=qj),k=1,...,M;j=1,...,N
- 在 t t t时刻处于状态 q j q_j qj的条件下生成观测 v k v_k vk的概率
-
π
=
(
π
i
)
1
,
.
.
.
,
N
\pi=(\pi_i)_{1,...,N}
π=(πi)1,...,N:初始状态概率向量
- π i = P ( i 1 = q i ) \pi_i=P(i_1=q_i) πi=P(i1=qi)
- t = 1 t=1 t=1时刻处于状态 q i q_i qi的概率
A , B , π A,B,\pi A,B,π称为隐马尔可夫模型的三要素。
由定义可知,隐马尔可夫模型作了两个基本假设:
1. 齐次马尔可夫性假设:隐藏的马尔可夫链在任意时刻
t
t
t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无)关,也与时刻
t
t
t无关,即
P
(
i
t
∣
i
t
−
1
,
o
t
−
1
,
.
.
.
,
i
1
,
o
1
)
=
P
(
i
t
∣
i
t
−
1
)
P(i_t|i_{t-1},o_{t-1},...,i_1,o_1)=P(i_t|i_{t-1})
P(it∣it−1,ot−1,...,i1,o1)=P(it∣it−1)
2. 观测独立性假设:任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关,即
P
(
o
t
∣
i
T
,
o
T
,
i
T
−
1
,
o
T
−
1
,
.
.
.
,
i
t
+
1
,
o
t
+
1
,
i
t
,
o
t
,
i
t
−
1
,
o
t
−
1
,
.
.
.
,
i
1
,
o
1
)
=
P
(
o
t
∣
i
t
)
P(o_t|i_T,o_T,i_{T-1},o_{T-1},...,i_{t+1},o_{t+1},i_t,o_t,i_{t-1},o_{t-1},...,i_1,o_1)=P(o_t|i_t)
P(ot∣iT,oT,iT−1,oT−1,...,it+1,ot+1,it,ot,it−1,ot−1,...,i1,o1)=P(ot∣it)
观测序列的生成过程
输入:隐马尔可夫模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π),观测序列长度
T
T
T;
输出:观测序列
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT)
(1)按照初始状态分布
π
\pi
π产生状态
i
1
i_1
i1
(2)令
t
=
1
t=1
t=1
(3)按照状态
i
t
i_t
it的观测概率分布
b
i
t
(
k
)
b_{i_t}(k)
bit(k)生成
o
t
o_t
ot
(4)按照状态
i
t
i_t
it的状态转移概率分布
{
a
i
t
i
t
+
1
}
\{a_{i_ti_{t+1}}\}
{aitit+1}产生状态
i
t
+
1
i_{t+1}
it+1
(5)令
t
=
t
+
1
t=t+1
t=t+1;如果
t
<
T
t<T
t<T,转步(3);否则,终止
1.2 隐马尔可夫模型的三个基本问题
1. 概率计算问题
给定模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)和观测序列
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT),计算在模型
λ
\lambda
λ下观测序列
O
O
O出现的概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)。
2. 学习问题
已知观测序列
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT),估计模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)参数,使得在该模型下观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)最大,即用极大似然方法估计参数。
3. 预测问题/解码问题
给定模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)和观测序列
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT),求对给定观测序列条件概率
P
(
I
∣
O
)
P(I|O)
P(I∣O)最大的状态序列
I
=
(
i
1
,
i
2
,
.
.
.
,
i
T
)
I=(i_1,i_2,...,i_T)
I=(i1,i2,...,iT),即给定观测序列,求最有可能的对应的状态序列。
2. 概率计算算法
λ = ( A , B , π ) + O = ( o 1 , o 2 , . . . , o T ) ⟹ P ( O ∣ λ ) \lambda=(A,B,\pi)\quad+\quad O=(o_1,o_2,...,o_T)\Longrightarrow P(O|\lambda) λ=(A,B,π)+O=(o1,o2,...,oT)⟹P(O∣λ)
2.1 直接计算法
最直接的方法是按概率公式直接计算。通过列举所有可能的长度为 T T T的状态序列 I = ( i 1 , i 2 , . . . , i T ) I=(i_1,i_2,...,i_T) I=(i1,i2,...,iT),求各个状态序列 I I I与观测序列 O = ( o 1 , o 2 , . . . , o T ) O=(o_1,o_2,...,o_T) O=(o1,o2,...,oT)的联合概率 P ( O , I ∣ λ ) P(O,I|\lambda) P(O,I∣λ),然后对所有可能的状态序列求和,得到 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。
状态序列
I
=
(
i
1
,
i
2
,
.
.
.
,
i
T
)
I=(i_1,i_2,...,i_T)
I=(i1,i2,...,iT)的概率是:
P
(
I
∣
λ
)
=
π
i
1
a
i
1
i
2
a
i
2
i
3
.
.
.
a
i
T
−
1
i
T
P(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}...a_{i_{T-1}i_T}
P(I∣λ)=πi1ai1i2ai2i3...aiT−1iT
对固定的状态序列
I
=
(
i
1
,
i
2
,
.
.
.
,
i
T
)
I=(i_1,i_2,...,i_T)
I=(i1,i2,...,iT),观测序列
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT)的概率是:
P
(
O
∣
I
,
λ
)
=
b
i
1
(
o
1
)
b
i
2
(
o
2
)
.
.
.
b
i
T
(
o
T
)
P(O|I,\lambda)=b_{i_1}(o_1)b_{i_2}(o_2)...b_{i_T}(o_T)
P(O∣I,λ)=bi1(o1)bi2(o2)...biT(oT)
O
O
O和
I
I
I同时出现的联合概率:
P
(
O
,
I
∣
λ
)
=
P
(
O
∣
I
,
λ
)
P
(
I
∣
λ
)
=
π
i
1
b
i
1
(
o
1
)
a
i
1
i
2
b
i
2
(
o
2
)
.
.
.
a
i
T
−
1
i
T
b
i
T
(
o
T
)
P(O,I|\lambda)=P(O|I,\lambda)P(I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)...a_{i_{T-1}i_T}b_{i_T}(o_T)
P(O,I∣λ)=P(O∣I,λ)P(I∣λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)
然后,对所有可能的状态序列
I
I
I求和,得到观测序列
O
O
O的概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ),即
P
(
O
∣
λ
)
=
∑
I
P
(
O
∣
I
,
λ
)
P
(
I
∣
λ
)
=
∑
i
1
,
i
2
,
.
.
.
,
i
T
π
i
1
b
i
1
(
o
1
)
a
i
1
i
2
b
i
2
(
o
2
)
.
.
.
a
i
T
−
1
i
T
b
i
T
(
o
T
)
\begin{aligned}P(O|\lambda)&=\sum_{I}P(O|I,\lambda)P(I|\lambda)\\ &=\sum_{i_1,i_2,...,i_T}\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)...a_{i_{T-1}i_T}b_{i_T}(o_T) \end{aligned}
P(O∣λ)=I∑P(O∣I,λ)P(I∣λ)=i1,i2,...,iT∑πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)
这种计算方式计算量是 O ( T N T ) O(TN^T) O(TNT)阶的。
2.2 前向算法
前向算法本质上属于动态规划的算法,也就是我们要通过找到局部状态递推的公式,这样一步步的从子问题的最优解拓展到整个问题的最优解。在前向算法中,通过定义“前向概率”来定义动态规划的这个局部状态:给定隐马尔可夫模型
λ
\lambda
λ,定义时刻
t
t
t部分观测序列为
o
1
,
o
2
,
.
.
.
,
o
t
o_1,o_2,...,o_t
o1,o2,...,ot且状态为
q
i
q_i
qi的概率为前向概率,记作
α
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
)
\alpha_t(i)
αt(i)及观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)。

假设已经知道在时刻
t
t
t时各个隐藏状态的前向概率,现在需要递推出时刻
t
+
1
t+1
t+1时各个隐藏状态的前向概率。
α
t
+
1
(
i
)
=
P
(
o
1
,
o
2
,
.
.
.
,
o
t
,
o
t
+
1
,
i
t
+
1
=
q
i
∣
λ
)
=
P
(
o
1
,
o
2
,
.
.
.
,
o
t
,
i
t
+
1
=
q
i
∣
λ
)
P
(
o
t
+
1
∣
i
t
+
1
=
q
i
)
=
[
∑
j
=
1
N
P
(
o
1
,
o
2
,
.
.
.
,
o
t
,
i
t
=
q
j
,
i
t
+
1
=
q
i
∣
λ
)
]
P
(
o
t
+
1
∣
i
t
+
1
=
q
i
)
=
[
∑
j
=
1
N
P
(
o
1
,
o
2
,
.
.
.
,
o
t
,
i
t
=
q
j
∣
λ
)
P
(
i
t
+
1
=
q
i
∣
i
t
=
q
j
)
]
P
(
o
t
+
1
∣
i
t
+
1
=
q
i
)
=
[
∑
j
=
1
N
α
t
(
j
)
a
j
i
]
b
i
(
o
t
+
1
)
\begin{aligned}\alpha_{t+1}(i)&=P(o_1,o_2,...,o_t,o_{t+1},i_{t+1}=q_i|\lambda)\\ &=P(o_1,o_2,...,o_t,i_{t+1}=q_i|\lambda)P(o_{t+1}|i_{t+1}=q_i)\\ &=\left[\sum_{j=1}^NP(o_1,o_2,...,o_t,i_t=q_j,i_{t+1}=q_i|\lambda)\right]P(o_{t+1}|i_{t+1}=q_i)\\ &=\left[\sum_{j=1}^NP(o_1,o_2,...,o_t,i_t=q_j|\lambda)P(i_{t+1}=q_i|i_t=q_j)\right]P(o_{t+1}|i_{t+1}=q_i)\\ &=\left[\sum_{j=1}^N\alpha_t(j)a_{ji}\right]b_i(o_{t+1}) \end{aligned}
αt+1(i)=P(o1,o2,...,ot,ot+1,it+1=qi∣λ)=P(o1,o2,...,ot,it+1=qi∣λ)P(ot+1∣it+1=qi)=[j=1∑NP(o1,o2,...,ot,it=qj,it+1=qi∣λ)]P(ot+1∣it+1=qi)=[j=1∑NP(o1,o2,...,ot,it=qj∣λ)P(it+1=qi∣it=qj)]P(ot+1∣it+1=qi)=[j=1∑Nαt(j)aji]bi(ot+1)
P ( O ∣ λ ) = ∑ i = 1 N P ( o 1 , o 2 , . . . , o T , i T = q i ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|\lambda)=\sum_{i=1}^NP(o_1,o_2,...,o_T,i_T=q_i|\lambda)=\sum_{i=1}^N\alpha_T(i) P(O∣λ)=i=1∑NP(o1,o2,...,oT,iT=qi∣λ)=i=1∑NαT(i)
观测序列概率的前向算法
输入:隐马尔可夫模型
λ
\lambda
λ,观测序列
O
O
O
输出:观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
(1)初值:
α
1
(
i
)
=
P
(
o
1
,
i
1
=
q
i
∣
λ
)
=
P
(
i
1
=
q
i
)
P
(
o
1
∣
i
1
=
q
i
)
=
π
i
b
i
(
o
1
)
,
i
=
1
,
2
,
.
.
.
,
N
\alpha_1(i)=P(o_1,i_1=q_i|\lambda)=P(i_1=q_i)P(o_1|i_1=q_i)=\pi_ib_i(o_1),\quad i=1,2,...,N
α1(i)=P(o1,i1=qi∣λ)=P(i1=qi)P(o1∣i1=qi)=πibi(o1),i=1,2,...,N
(2)递推:对
t
=
1
,
2
,
.
.
.
,
T
−
1
t=1,2,...,T-1
t=1,2,...,T−1
α
t
+
1
(
i
)
=
[
∑
j
=
1
N
α
t
(
j
)
a
j
i
]
b
i
(
o
t
+
1
)
,
i
=
1
,
2
,
.
.
.
,
N
\alpha_{t+1}(i)=\left[\sum_{j=1}^N\alpha_t(j)a_{ji}\right]b_i(o_{t+1}),\quad i=1,2,...,N
αt+1(i)=[j=1∑Nαt(j)aji]bi(ot+1),i=1,2,...,N
(3)终止:
P
(
O
∣
λ
)
=
∑
i
=
1
N
α
T
(
i
)
P(O|\lambda)=\sum_{i=1}^N\alpha_T(i)
P(O∣λ)=i=1∑NαT(i)
算法分析
前向算法高效的关键是其局部计算前向概率,然后利用路径结构前向概率递推到全局,得到
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)。具体地,在时刻
t
=
1
t=1
t=1,计算
α
1
(
i
)
\alpha_1(i)
α1(i)的
N
N
N个值
(
i
=
1
,
2
,
.
.
.
,
N
)
(i=1,2,...,N)
(i=1,2,...,N);在各个时刻
t
=
1
,
2
,
.
.
.
,
T
−
1
t=1,2,...,T-1
t=1,2,...,T−1,计算
α
t
+
1
(
i
)
\alpha_{t+1}(i)
αt+1(i)的
N
N
N个值
(
i
=
1
,
2
,
.
.
.
,
N
)
(i=1,2,...,N)
(i=1,2,...,N),而且每个
α
t
+
1
(
i
)
\alpha_{t+1}(i)
αt+1(i)的计算利用前一时刻
N
N
N个
α
t
(
j
)
\alpha_t(j)
αt(j)。减少计算量的原因在于每一次计算直接饮用前一个时刻的计算结果,避免重复计算。这样,利用前向概率计算
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)的计算量是
O
(
N
2
T
)
O(N^2T)
O(N2T)阶的。
2.3 后向算法
给定隐马尔可夫模型
λ
\lambda
λ,定义时刻
t
t
t状态为
q
i
q_i
qi的条件下,从
t
+
1
t+1
t+1到
T
T
T的部分观测序列为
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
o_{t+1},o_{t+2},...,o_T
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,λ)

对最终时刻的所有状态
q
i
q_i
qi规定
β
T
(
i
)
=
1
\beta_T(i)=1
βT(i)=1,假设已经知道在时刻
t
+
1
t+1
t+1时各个隐藏状态的后向概率,现在需要递推出时刻
t
t
t时各个隐藏状态的后向概率。
β
t
(
i
)
=
P
(
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
∣
i
t
=
q
i
,
λ
)
=
∑
j
=
1
N
P
(
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
,
i
t
+
1
=
q
j
∣
i
t
=
q
i
,
λ
)
=
∑
j
=
1
N
P
(
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
∣
i
t
=
q
i
,
i
t
+
1
=
q
j
,
λ
)
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
=
∑
j
=
1
N
P
(
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
∣
i
t
+
1
=
q
j
,
λ
)
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
=
∑
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
,
λ
)
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
=
∑
j
=
1
N
P
(
o
t
+
1
∣
i
t
+
1
=
q
j
)
P
(
o
t
+
2
,
o
t
+
3
,
.
.
.
,
o
T
∣
i
t
+
1
=
q
j
,
λ
)
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
=
∑
j
=
1
N
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
\begin{aligned} \beta_t(i)&=P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\lambda)\\ &=\sum_{j=1}^NP(o_{t+1},o_{t+2},...,o_T,i_{t+1}=q_j|i_t=q_i,\lambda)\\ &=\sum_{j=1}^NP(o_{t+1},o_{t+2},...,o_T|i_t=q_i,i_{t+1}=q_j,\lambda)P(i_{t+1}=q_j|i_t=q_i)\\ &=\sum_{j=1}^NP(o_{t+1},o_{t+2},...,o_T|i_{t+1}=q_j,\lambda)P(i_{t+1}=q_j|i_t=q_i)\\ &=\sum_{j=1}^NP(o_{t+1}|o_{t+2},...,o_T,i_{t+1}=q_j,\lambda)P(o_{t+2},...,o_T|i_{t+1}=q_j,\lambda)P(i_{t+1}=q_j|i_t=q_i)\\ &=\sum_{j=1}^NP(o_{t+1}|i_{t+1}=q_j)P(o_{t+2},o_{t+3},...,o_T|i_{t+1}=q_j,\lambda)P(i_{t+1}=q_j|i_t=q_i)\\ &=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta_{t+1}(j) \end{aligned}
βt(i)=P(ot+1,ot+2,...,oT∣it=qi,λ)=j=1∑NP(ot+1,ot+2,...,oT,it+1=qj∣it=qi,λ)=j=1∑NP(ot+1,ot+2,...,oT∣it=qi,it+1=qj,λ)P(it+1=qj∣it=qi)=j=1∑NP(ot+1,ot+2,...,oT∣it+1=qj,λ)P(it+1=qj∣it=qi)=j=1∑NP(ot+1∣ot+2,...,oT,it+1=qj,λ)P(ot+2,...,oT∣it+1=qj,λ)P(it+1=qj∣it=qi)=j=1∑NP(ot+1∣it+1=qj)P(ot+2,ot+3,...,oT∣it+1=qj,λ)P(it+1=qj∣it=qi)=j=1∑Naijbj(ot+1)βt+1(j)
类似地,
P
(
O
∣
λ
)
=
∑
i
=
1
N
π
i
b
i
(
o
1
)
β
1
(
i
)
P(O|\lambda)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i)
P(O∣λ)=i=1∑Nπibi(o1)β1(i)
观测序列概率的后向算法
输入:隐马尔可夫模型
λ
\lambda
λ,观测序列
O
O
O
输出:观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)
(1)初值:
β
T
(
i
)
=
1
,
i
=
1
,
2
,
.
.
.
,
N
\beta_T(i)=1,\quad i=1,2,...,N
βT(i)=1,i=1,2,...,N
(2)递推:对
t
=
1
,
2
,
.
.
.
,
T
−
1
t=1,2,...,T-1
t=1,2,...,T−1
β
t
(
i
)
=
∑
j
=
1
N
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
,
i
=
1
,
2
,
.
.
.
,
N
\beta_{t}(i)=\sum_{j=1}^Na_{ij}b_j(o_{t+1})\beta_{t+1}(j),\quad i=1,2,...,N
βt(i)=j=1∑Naijbj(ot+1)βt+1(j),i=1,2,...,N
(3)终止:
P
(
O
∣
λ
)
=
∑
i
=
1
N
π
i
b
i
(
o
1
)
β
1
(
i
)
P(O|\lambda)=\sum_{i=1}^N\pi_ib_i(o_1)\beta_1(i)
P(O∣λ)=i=1∑Nπibi(o1)β1(i)
利用前向概率和后向概率的定义可以将观测序列概率
P
(
O
∣
λ
)
P(O|\lambda)
P(O∣λ)统一写成
P
(
O
∣
λ
)
=
∑
i
=
1
N
∑
j
=
1
N
α
t
(
i
)
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
,
t
=
1
,
2
,
.
.
.
,
T
−
1
P(O|\lambda)=\sum_{i=1}^N\sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j),\quad t=1,2,...,T-1
P(O∣λ)=i=1∑Nj=1∑Nαt(i)aijbj(ot+1)βt+1(j),t=1,2,...,T−1
2.4 一些概率与期望值的计算
利用前向概率和后向概率,可以得到关于单个状态和两个状态概率的计算公式。
- 给定模型
λ
\lambda
λ和观测
O
O
O,在时刻
t
t
t处于状态
q
i
q_i
qi的概率,记为
γ
t
(
i
)
=
P
(
i
t
=
q
i
∣
O
,
λ
)
\gamma_t(i)=P(i_t=q_i|O,\lambda)
γt(i)=P(it=qi∣O,λ),可以通过前向后向概率计算:
γ t ( i ) = P ( i t = q i ∣ O , λ ) = P ( i t = q i , O ∣ λ ) P ( O ∣ λ ) \gamma_t(i)=P(i_t=q_i|O,\lambda)=\frac{P(i_t=q_i,O|\lambda)}{P(O|\lambda)} γt(i)=P(it=qi∣O,λ)=P(O∣λ)P(it=qi,O∣λ)
而
α
t
(
i
)
β
t
(
i
)
=
P
(
o
1
,
o
2
,
.
.
.
,
o
t
,
i
t
=
q
i
∣
λ
)
P
(
o
t
+
1
,
o
t
+
2
,
.
.
.
,
o
T
∣
i
t
=
q
i
,
λ
)
=
P
(
i
t
=
q
i
,
O
∣
λ
)
\begin{aligned} \alpha_t(i)\beta_t(i)&=P(o_1,o_2,...,o_t,i_t=q_i|\lambda)P(o_{t+1},o_{t+2},...,o_T|i_t=q_i,\lambda)\\ &=P(i_t=q_i,O|\lambda) \end{aligned}
αt(i)βt(i)=P(o1,o2,...,ot,it=qi∣λ)P(ot+1,ot+2,...,oT∣it=qi,λ)=P(it=qi,O∣λ)
于是得到
γ
t
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
O
∣
λ
)
=
α
t
(
i
)
β
t
(
i
)
∑
j
=
1
N
α
t
(
j
)
β
t
(
j
)
\gamma_t(i)=\frac{\alpha_t(i)\beta_t(i)}{P(O|\lambda)}=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}
γt(i)=P(O∣λ)αt(i)βt(i)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
- 给定模型
λ
\lambda
λ和观测
O
O
O,在时刻
t
t
t处于状态
q
i
q_i
qi且在时刻
t
+
1
t+1
t+1处于状态
q
j
q_j
qj的概率,记作
ξ
t
(
i
,
j
)
=
P
(
i
t
=
q
i
,
i
t
+
2
=
q
j
∣
O
,
λ
)
\xi_t(i,j)=P(i_t=q_i,i_{t+2}=q_j|O,\lambda)
ξt(i,j)=P(it=qi,it+2=qj∣O,λ),可以通过后向概率计算:
ξ t ( i , j ) = P ( i t = q i , i t + 2 = q j , O ∣ λ ) P ( O ∣ λ ) = P ( i t = q i , i t + 2 = q j , O ∣ λ ) ∑ i = 1 N ∑ j = 1 N P ( i t = q i , i t + 2 = q j , O ∣ λ ) \xi_t(i,j)=\frac{P(i_t=q_i,i_{t+2}=q_j,O|\lambda)}{P(O|\lambda)}=\frac{P(i_t=q_i,i_{t+2}=q_j,O|\lambda)}{\sum_{i=1}^N\sum_{j=1}^NP(i_t=q_i,i_{t+2}=q_j,O|\lambda)} ξt(i,j)=P(O∣λ)P(it=qi,it+2=qj,O∣λ)=∑i=1N∑j=1NP(it=qi,it+2=qj,O∣λ)P(it=qi,it+2=qj,O∣λ)
而
α
t
(
i
)
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
=
P
(
o
1
,
o
2
,
.
.
.
,
o
t
,
i
t
=
q
i
∣
λ
)
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
P
(
o
t
+
1
∣
i
t
+
1
=
q
j
)
P
(
o
t
+
2
,
o
t
+
3
,
.
.
.
,
o
T
∣
i
t
+
1
=
q
i
,
λ
)
=
P
(
i
t
=
q
i
,
i
t
+
2
=
q
j
,
O
∣
λ
)
\begin{aligned} \alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)=&P(o_1,o_2,...,o_t,i_t=q_i|\lambda)P(i_{t+1}=q_j|i_t=q_i)P(o_{t+1}|i_{t+1}=q_j)\\ &P(o_{t+2},o_{t+3},...,o_T|i_{t+1}=q_i,\lambda)\\ =&P(i_t=q_i,i_{t+2}=q_j,O|\lambda) \end{aligned}
αt(i)aijbj(ot+1)βt+1(j)==P(o1,o2,...,ot,it=qi∣λ)P(it+1=qj∣it=qi)P(ot+1∣it+1=qj)P(ot+2,ot+3,...,oT∣it+1=qi,λ)P(it=qi,it+2=qj,O∣λ)
所以
ξ
t
(
i
,
j
)
=
α
t
(
i
)
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
∑
i
=
1
N
∑
j
=
1
N
α
t
(
i
)
a
i
j
b
j
(
o
t
+
1
)
β
t
+
1
(
j
)
\xi_t(i,j)=\frac{\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{\sum_{i=1}^N\sum_{j=1}^N\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}
ξt(i,j)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)αt(i)aijbj(ot+1)βt+1(j)
- 将
γ
t
(
i
)
\gamma_t(i)
γt(i)和
ξ
t
(
i
,
j
)
\xi_t(i,j)
ξt(i,j)对各个时刻
t
t
t求和,可以得到一些有用的期望值:
在观测 O O O下状态 i i i出现的期望值
∑ t = 1 T γ t ( i ) = ∑ t = 1 T P ( i t = q i ∣ O , λ ) \sum_{t=1}^T\gamma_t(i)=\sum_{t=1}^TP(i_t=q_i|O,\lambda) t=1∑Tγt(i)=t=1∑TP(it=qi∣O,λ)
在观测 O O O下由状态 i i i转移的期望
∑ t = 1 T − 1 γ t ( i ) = ∑ t = 1 T − 1 P ( i t = q i ∣ O , λ ) \sum_{t=1}^{T-1}\gamma_t(i)=\sum_{t=1}^{T-1}P(i_t=q_i|O,\lambda) t=1∑T−1γt(i)=t=1∑T−1P(it=qi∣O,λ)
在观测 O O O下由状态 i i i转移到状态 j j j的期望
∑ t = 1 T − 1 ξ t ( i , j ) = ∑ t = 1 T − 1 P ( i t = q i , i t + 2 = q j ∣ O , λ ) \sum_{t=1}^{T-1}\xi_t(i,j)=\sum_{t=1}^{T-1}P(i_t=q_i,i_{t+2}=q_j|O,\lambda) t=1∑T−1ξt(i,j)=t=1∑T−1P(it=qi,it+2=qj∣O,λ)
3. 学习算法
m
a
x
λ
P
(
O
∣
λ
)
⟹
λ
=
(
A
,
B
,
π
)
max_{\lambda} P(O|\lambda)\Longrightarrow \lambda=(A,B,\pi)
maxλP(O∣λ)⟹λ=(A,B,π)
隐马尔可夫模型的学习,根据训练数据是包括观测序列和对应的状态序列还是只有观测序列,可以分别由监督学习与非监督学习实现。
3.1 监督学习方法
假设已给训练数据包含 S S S个长度相同的观测序列和对应的状态序列 { ( O 1 , I 1 ) , ( O 2 , I 2 ) , . . . , ( O S , I S ) } \{(O_1,I_1),(O_2,I_2),...,(O_S,I_S)\} {(O1,I1),(O2,I2),...,(OS,IS)},则可以利用极大似然估计法来估计隐马尔可夫模型的参数。
转移概率 a i j a_{ij} aij的估计
-
A
i
j
A_{ij}
Aij:样本中时刻
t
t
t处于状态
i
i
i时刻
t
+
1
t+1
t+1转移到状态
j
j
j的频数
状态转移概率 a i j a_{ij} aij的估计:
a ^ i j = A i j ∑ j = 1 N A i j , i = 1 , 2 , . . . , N ; j = 1 , 2 , . . . , N \hat{a}_{ij}=\frac{A_{ij}}{\sum_{j=1}^NA_{ij}},\quad i=1,2,...,N;j=1,2,...,N a^ij=∑j=1NAijAij,i=1,2,...,N;j=1,2,...,N
观测概率 b j ( k ) b_j(k) bj(k)的估计
-
B
j
k
B_{jk}
Bjk:样本中状态为
j
j
j并观测为
k
k
k的频数
状态为 j j j并观测为 k k k的概率 b j ( k ) b_j(k) bj(k)的估计:
b ^ j ( k ) = B j k ∑ k = 1 M B j k , j = 1 , 2 , . . . , N ; k = 1 , 2 , . . . , M \hat{b}_j(k)=\frac{B_{jk}}{\sum_{k=1}^MB_{jk}},\quad j=1,2,...,N;k=1,2,...,M b^j(k)=∑k=1MBjkBjk,j=1,2,...,N;k=1,2,...,M
初始状态概率 π i \pi_i πi的估计
- π i \pi_i πi的估计 π ^ i \hat{\pi}_i π^i是 S S S个样本中初始状态为 q i q_i qi的频数
3.2 非监督学习算法——Baum-Welch算法(EM算法)
假设已给训练数据包含
S
S
S个长度相同的观测序列
{
O
1
,
O
2
,
.
.
.
,
O
S
}
\{O_1,O_2,...,O_S\}
{O1,O2,...,OS}而没有对应的状态序列,目标是学习隐马尔可夫模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)的参数。
将观测序列数据看作观测数据
O
O
O,状态序列数据看作不可观测的隐数据
I
I
I,则隐马尔可夫模型事实上是一个含有隐变量的概率模型
P
(
O
∣
λ
)
=
∑
I
P
(
O
∣
I
,
λ
)
P
(
I
,
λ
)
P(O|\lambda)=\sum_IP(O|I,\lambda)P(I,\lambda)
P(O∣λ)=I∑P(O∣I,λ)P(I,λ)
它的参数学习可以由EM算法实现。
【ML】EM(期望最大)算法
1. 确定完全数据的对数似然函数
所有观测数据写成
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT),所有隐数据写成
I
=
(
i
1
,
i
2
,
.
.
.
,
i
T
)
I=(i_1,i_2,...,i_T)
I=(i1,i2,...,iT) ,完全数据是
(
O
,
I
)
=
(
o
1
,
o
2
,
.
.
.
,
o
T
,
i
1
,
i
2
,
.
.
.
,
i
T
)
(O,I)=(o_1,o_2,...,o_T,i_1,i_2,...,i_T)
(O,I)=(o1,o2,...,oT,i1,i2,...,iT)。完全数据的对数似然函数是
log
P
(
O
,
I
∣
λ
)
\log P(O,I|\lambda)
logP(O,I∣λ)。
2. EM算法的E步——求
Q
Q
Q函数
Q
(
λ
,
λ
ˉ
)
=
∑
I
log
P
(
O
,
I
∣
λ
)
P
(
I
∣
O
,
λ
ˉ
)
=
∑
I
log
P
(
O
,
I
∣
λ
)
P
(
O
,
I
∣
λ
ˉ
)
P
(
O
∣
λ
ˉ
)
Q(\lambda,\bar{\lambda})=\sum_I\log P(O,I|\lambda)P(I|O,\bar{\lambda})=\sum_I\log P(O,I|\lambda)\frac{P(O,I|\bar{\lambda})}{P(O|\bar{\lambda})}
Q(λ,λˉ)=I∑logP(O,I∣λ)P(I∣O,λˉ)=I∑logP(O,I∣λ)P(O∣λˉ)P(O,I∣λˉ)
其中,
λ
ˉ
\bar{\lambda}
λˉ是隐马尔可夫模型参数的当前估计值,
λ
\lambda
λ是要极大化的隐马尔可夫模型参数,由于
P
(
O
∣
λ
ˉ
)
P(O|\bar{\lambda})
P(O∣λˉ)为常数,极大化
Q
Q
Q函数时可去掉,仍记作
Q
(
λ
,
λ
ˉ
)
Q(\lambda,\bar{\lambda})
Q(λ,λˉ)。由
P
(
O
,
I
∣
λ
)
=
π
i
1
b
i
1
(
o
1
)
a
i
1
i
2
b
i
2
(
o
2
)
.
.
.
a
i
T
−
1
i
T
b
i
T
(
o
T
)
P(O,I|\lambda)=\pi_{i_1}b_{i_1}(o_1)a_{i_1i_2}b_{i_2}(o_2)...a_{i_{T-1}i_T}b_{i_T}(o_T)
P(O,I∣λ)=πi1bi1(o1)ai1i2bi2(o2)...aiT−1iTbiT(oT)
于是函数
Q
(
λ
,
λ
ˉ
)
Q(\lambda,\bar{\lambda})
Q(λ,λˉ)可以写成
Q
(
λ
,
λ
ˉ
)
=
∑
I
log
π
i
1
P
(
O
,
I
∣
λ
ˉ
)
+
∑
I
(
∑
t
=
1
T
−
1
log
a
i
t
i
t
+
1
)
P
(
O
,
I
∣
λ
ˉ
)
+
∑
I
(
∑
t
=
1
T
log
b
i
t
(
o
t
)
)
P
(
O
,
I
∣
λ
ˉ
)
\begin{aligned} Q(\lambda,\bar{\lambda})=\sum_I\log\pi_{i_1}P(O,I|\bar{\lambda})&+\sum_I\left(\sum_{t=1}^{T-1}\log a_{i_ti_{t+1}}\right)P(O,I|\bar{\lambda})\\ &+\sum_I\left(\sum_{t=1}^{T}\log b_{i_t}(o_t)\right)P(O,I|\bar{\lambda}) \end{aligned}
Q(λ,λˉ)=I∑logπi1P(O,I∣λˉ)+I∑(t=1∑T−1logaitit+1)P(O,I∣λˉ)+I∑(t=1∑Tlogbit(ot))P(O,I∣λˉ)
式中求和都是对所有训练数据的序列总长度 T T T进行的。
3. EM算法的M步——极大化Q函数求模型参数
由于极大化的参数在Q函数中单独地出现3个项中,所以只需对各项分别极大化。
初始状态概率 π i \pi_i πi的估计
Q函数的第一项可以写成:
∑
I
log
π
i
1
P
(
O
,
I
∣
λ
ˉ
)
=
∑
i
=
1
N
log
π
i
P
(
O
,
i
1
=
i
∣
λ
ˉ
)
\sum_I\log \pi_{i_1}P(O,I|\bar{\lambda})=\sum_{i=1}^N\log\pi_iP(O,i_1=i|\bar{\lambda})
I∑logπi1P(O,I∣λˉ)=i=1∑NlogπiP(O,i1=i∣λˉ)
极大化第一项,
{
max
π
i
∑
i
=
1
N
log
π
i
P
(
O
,
i
1
=
i
∣
λ
ˉ
)
s
.
t
.
∑
i
=
1
N
π
i
=
1
\begin{cases} \max_{\pi_i} &\sum_{i=1}^N\log\pi_iP(O,i_1=i|\bar{\lambda})\\ s.t. &\sum_{i=1}^N\pi_i=1 \end{cases}
{maxπis.t.∑i=1NlogπiP(O,i1=i∣λˉ)∑i=1Nπi=1
拉格朗日函数
∑
i
=
1
N
log
π
i
P
(
O
,
i
1
=
i
∣
λ
ˉ
)
+
γ
(
∑
i
=
1
N
π
i
−
1
)
\sum_{i=1}^N\log\pi_iP(O,i_1=i|\bar{\lambda})+\gamma(\sum_{i=1}^N\pi_i-1)
i=1∑NlogπiP(O,i1=i∣λˉ)+γ(i=1∑Nπi−1)
对其求偏导数并令结果为0,
∂
∂
π
i
[
∑
i
=
1
N
log
π
i
P
(
O
,
i
1
=
i
∣
λ
ˉ
)
+
γ
(
∑
i
=
1
N
π
i
−
1
)
]
=
0
\frac{\partial}{\partial \pi_i}\left[\sum_{i=1}^N\log\pi_iP(O,i_1=i|\bar{\lambda})+\gamma(\sum_{i=1}^N\pi_i-1)\right]=0
∂πi∂[i=1∑NlogπiP(O,i1=i∣λˉ)+γ(i=1∑Nπi−1)]=0
得
P
(
O
,
i
1
=
i
∣
λ
ˉ
)
+
γ
π
i
=
0
P(O,i_1=i|\bar{\lambda})+\gamma\pi_i=0
P(O,i1=i∣λˉ)+γπi=0
对
i
i
i求和得到
γ
\gamma
γ,
γ
=
−
P
(
O
∣
λ
ˉ
)
\gamma=-P(O|\bar{\lambda})
γ=−P(O∣λˉ)
于是
π
i
=
P
(
O
,
i
1
=
i
∣
λ
ˉ
)
P
(
O
∣
λ
ˉ
)
(
1
)
\pi_i=\frac{P(O,i_1=i|\bar{\lambda})}{P(O|\bar{\lambda})}\quad\quad(1)
πi=P(O∣λˉ)P(O,i1=i∣λˉ)(1)
转移概率 a i j a_{ij} aij的估计
Q函数的第二项可以写成:
∑
I
(
∑
t
=
1
T
−
1
log
a
i
t
i
t
+
1
)
P
(
O
,
I
∣
λ
ˉ
)
=
∑
i
=
1
N
∑
j
=
1
N
∑
t
=
1
T
−
1
log
a
i
j
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
\sum_I\left(\sum_{t=1}^{T-1}\log a_{i_ti_{t+1}}\right)P(O,I|\bar{\lambda})=\sum_{i=1}^N\sum_{j=1}^N\sum_{t=1}^{T-1}\log a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})
I∑(t=1∑T−1logaitit+1)P(O,I∣λˉ)=i=1∑Nj=1∑Nt=1∑T−1logaijP(O,it=i,it+1=j∣λˉ)
极大化第二项,
{
max
a
i
j
∑
i
=
1
N
∑
j
=
1
N
∑
t
=
1
T
−
1
log
a
i
j
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
s
.
t
.
∑
j
=
1
N
a
i
j
=
1
\begin{cases} \max_{a_{ij}} &\sum_{i=1}^N\sum_{j=1}^N\sum_{t=1}^{T-1}\log a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})\\ s.t. &\sum_{j=1}^Na_{ij}=1 \end{cases}
{maxaijs.t.∑i=1N∑j=1N∑t=1T−1logaijP(O,it=i,it+1=j∣λˉ)∑j=1Naij=1
拉格朗日函数
∑
i
=
1
N
∑
j
=
1
N
∑
t
=
1
T
−
1
log
a
i
j
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
+
γ
(
∑
j
=
1
N
a
i
j
−
1
)
\sum_{i=1}^N\sum_{j=1}^N\sum_{t=1}^{T-1}\log a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})+\gamma(\sum_{j=1}^Na_{ij}-1)
i=1∑Nj=1∑Nt=1∑T−1logaijP(O,it=i,it+1=j∣λˉ)+γ(j=1∑Naij−1)
对其求偏导数并令结果为0,
∂
∂
a
i
j
[
∑
i
=
1
N
∑
j
=
1
N
∑
t
=
1
T
−
1
log
a
i
j
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
+
γ
(
∑
j
=
1
N
a
i
j
−
1
)
]
=
0
\frac{\partial}{\partial a_{ij}}\left[\sum_{i=1}^N\sum_{j=1}^N\sum_{t=1}^{T-1}\log a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})+\gamma(\sum_{j=1}^Na_{ij}-1)\right]=0
∂aij∂[i=1∑Nj=1∑Nt=1∑T−1logaijP(O,it=i,it+1=j∣λˉ)+γ(j=1∑Naij−1)]=0
得
∑
t
=
1
T
−
1
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
+
γ
a
i
j
=
0
\sum_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})+\gamma a_{ij}=0
t=1∑T−1P(O,it=i,it+1=j∣λˉ)+γaij=0
对
j
j
j求和得到
γ
\gamma
γ,
γ
=
−
∑
t
=
1
T
−
1
P
(
O
,
i
t
=
i
∣
λ
ˉ
)
\gamma=-\sum_{t=1}^{T-1}P(O,i_t=i|\bar{\lambda})
γ=−t=1∑T−1P(O,it=i∣λˉ)
于是
a
i
j
=
∑
t
=
1
T
−
1
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
∑
t
=
1
T
−
1
P
(
O
,
i
t
=
i
∣
λ
ˉ
)
(
2
)
a_{ij}=\frac{\sum_{t=1}^{T-1}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})}{\sum_{t=1}^{T-1}P(O,i_t=i|\bar{\lambda})}\quad\quad(2)
aij=∑t=1T−1P(O,it=i∣λˉ)∑t=1T−1P(O,it=i,it+1=j∣λˉ)(2)
观测概率 b j ( k ) b_j(k) bj(k)的估计
Q函数的第三项可以写成:
∑
I
(
∑
t
=
1
T
log
b
i
t
(
o
t
)
)
P
(
O
,
I
∣
λ
ˉ
)
=
∑
j
=
1
N
∑
t
=
1
T
log
b
j
(
o
t
)
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
\sum_I\left(\sum_{t=1}^{T}\log b_{i_t}(o_t)\right)P(O,I|\bar{\lambda})=\sum_{j=1}^N\sum_{t=1}^{T}\log b_j(o_t)P(O,i_t=j|\bar{\lambda})
I∑(t=1∑Tlogbit(ot))P(O,I∣λˉ)=j=1∑Nt=1∑Tlogbj(ot)P(O,it=j∣λˉ)
极大化第三项,
{
max
b
j
(
k
)
∑
j
=
1
N
∑
t
=
1
T
log
b
j
(
o
t
)
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
s
.
t
.
∑
k
=
1
M
b
j
(
k
)
=
1
\begin{cases} \max_{b_j(k)} &\sum_{j=1}^N\sum_{t=1}^{T}\log b_j(o_t)P(O,i_t=j|\bar{\lambda})\\ s.t. &\sum_{k=1}^Mb_j(k)=1 \end{cases}
{maxbj(k)s.t.∑j=1N∑t=1Tlogbj(ot)P(O,it=j∣λˉ)∑k=1Mbj(k)=1
拉格朗日函数
∑
j
=
1
N
∑
t
=
1
T
log
b
j
(
o
t
)
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
+
γ
(
∑
k
=
1
M
b
j
(
k
)
−
1
)
\sum_{j=1}^N\sum_{t=1}^{T}\log b_j(o_t)P(O,i_t=j|\bar{\lambda})+\gamma(\sum_{k=1}^Mb_j(k)-1)
j=1∑Nt=1∑Tlogbj(ot)P(O,it=j∣λˉ)+γ(k=1∑Mbj(k)−1)
对其求偏导数并令结果为0,
∂
∂
b
j
(
k
)
[
∑
i
=
1
N
∑
j
=
1
N
∑
t
=
1
T
−
1
log
a
i
j
P
(
O
,
i
t
=
i
,
i
t
+
1
=
j
∣
λ
ˉ
)
+
γ
(
∑
k
=
1
M
b
j
(
k
)
−
1
)
]
=
0
\frac{\partial}{\partial b_j(k)}\left[\sum_{i=1}^N\sum_{j=1}^N\sum_{t=1}^{T-1}\log a_{ij}P(O,i_t=i,i_{t+1}=j|\bar{\lambda})+\gamma(\sum_{k=1}^Mb_j(k)-1)\right]=0
∂bj(k)∂[i=1∑Nj=1∑Nt=1∑T−1logaijP(O,it=i,it+1=j∣λˉ)+γ(k=1∑Mbj(k)−1)]=0
得
∑
t
=
1
T
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
I
{
o
t
=
v
k
}
+
γ
b
j
(
k
)
=
0
\sum_{t=1}^{T}P(O,i_t=j|\bar{\lambda})I\{o_t=v_k\}+\gamma b_j(k)=0
t=1∑TP(O,it=j∣λˉ)I{ot=vk}+γbj(k)=0
对
k
k
k求和得到
γ
\gamma
γ,
γ
=
−
∑
t
=
1
T
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
\gamma=-\sum_{t=1}^{T}P(O,i_t=j|\bar{\lambda})
γ=−t=1∑TP(O,it=j∣λˉ)
于是
b
j
(
k
)
=
∑
t
=
1
T
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
I
{
o
t
=
v
k
}
∑
t
=
1
T
P
(
O
,
i
t
=
j
∣
λ
ˉ
)
(
3
)
b_j(k)=\frac{\sum_{t=1}^{T}P(O,i_t=j|\bar{\lambda})I\{o_t=v_k\}}{\sum_{t=1}^{T}P(O,i_t=j|\bar{\lambda})}\quad\quad(3)
bj(k)=∑t=1TP(O,it=j∣λˉ)∑t=1TP(O,it=j∣λˉ)I{ot=vk}(3)
3.3 Baum-Welch模型参数估计公式
将式(1)(2)(3)中的各概率分别用
γ
t
(
i
)
,
ξ
t
(
i
,
j
)
\gamma_t(i),\xi_t(i,j)
γt(i),ξt(i,j)表示,则可将相应的公式写成,
a
i
j
=
∑
t
=
1
T
−
1
ξ
t
(
i
,
j
)
∑
t
=
1
T
−
1
γ
t
(
i
)
a_{ij}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)}
aij=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)
b j ( k ) = ∑ t = 1 , o t = v k T γ t ( j ) ∑ t = 1 T γ t ( j ) b_j(k)=\frac{\sum_{t=1,o_t=v_k}^T\gamma_t(j)}{\sum_{t=1}^T\gamma_t(j)} bj(k)=∑t=1Tγt(j)∑t=1,ot=vkTγt(j)
π i = γ 1 ( i ) \pi_i=\gamma_1(i) πi=γ1(i)
上式就是Baum-Welch算法,它是EM法在隐马尔可夫模型学习中的具体实现。
Baum-Welch算法
输入:观测数据
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT)
输出:隐马尔可夫模型参数
(1)初始化:
对
n
=
0
n=0
n=0,选取
a
i
j
(
0
)
,
b
k
(
k
)
(
0
)
,
π
i
(
i
)
a_{ij}^{(0)},b_k(k)^{(0)},\pi_i^{(i)}
aij(0),bk(k)(0),πi(i),得到模型
λ
(
0
)
=
(
A
(
0
)
,
B
(
0
)
,
π
(
0
)
)
\lambda^{(0)}=(A^{(0)},B^{(0)},\pi^{(0)})
λ(0)=(A(0),B(0),π(0))
(2)递推:对
n
=
1
,
2
,
.
.
.
n=1,2,...
n=1,2,...
a
i
j
(
n
+
1
)
=
∑
t
=
1
T
−
1
ξ
t
(
i
,
j
)
∑
t
=
1
T
−
1
γ
t
(
i
)
a_{ij}^{(n+1)}=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)}
aij(n+1)=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)
b j ( k ) ( n + 1 ) = ∑ t = 1 , o t = v k T γ t ( j ) ∑ t = 1 T γ t ( j ) b_j(k)^{(n+1)}=\frac{\sum_{t=1,o_t=v_k}^T\gamma_t(j)}{\sum_{t=1}^T\gamma_t(j)} bj(k)(n+1)=∑t=1Tγt(j)∑t=1,ot=vkTγt(j)
π i ( n + 1 ) = γ 1 ( i ) \pi_i^{(n+1)}=\gamma_1(i) πi(n+1)=γ1(i)
右端各值按观测
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT)和模型
λ
(
n
)
=
(
A
(
n
)
,
B
(
n
)
,
π
(
n
)
)
\lambda^{(n)}=(A^{(n)},B^{(n)},\pi^{(n)})
λ(n)=(A(n),B(n),π(n))计算。
(3)终止:得到模型参数
λ
(
n
+
1
)
=
(
A
(
n
+
1
)
,
B
(
n
+
1
)
,
π
(
n
+
1
)
)
\lambda^{(n+1)}=(A^{(n+1)},B^{(n+1)},\pi^{(n+1)})
λ(n+1)=(A(n+1),B(n+1),π(n+1))
4. 预测算法
λ + O ⟹ m a x I P ( I ∣ O ) ⟹ I = ( i 1 , i 2 , . . . , i T ) \lambda + O\Longrightarrow max_IP(I|O) \Longrightarrow I=(i_1,i_2,...,i_T) λ+O⟹maxIP(I∣O)⟹I=(i1,i2,...,iT)
4.1 近似算法
近似算法的想法是,在每个时刻
t
t
t选择该时刻最优可能出现的状态
i
t
∗
i_t^*
it∗,从而得到一个状态序列
I
∗
=
(
i
1
∗
,
i
2
∗
,
.
.
.
,
i
T
∗
)
I^*=(i_1^*,i_2^*,...,i_T^*)
I∗=(i1∗,i2∗,...,iT∗),将它作为预测的结果。
给定隐马尔可夫模型
λ
\lambda
λ和观测序列
O
O
O,在时刻
t
t
t处于状态
q
i
q_i
qi的概率
γ
t
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
O
∣
λ
)
=
α
t
(
i
)
β
t
(
i
)
∑
j
=
1
N
α
t
(
j
)
β
t
(
j
)
\gamma_t(i)=\frac{\alpha_t(i)\beta_t(i)}{P(O|\lambda)}=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^N\alpha_t(j)\beta_t(j)}
γt(i)=P(O∣λ)αt(i)βt(i)=∑j=1Nαt(j)βt(j)αt(i)βt(i)
在每一时刻
t
t
t最有可能的状态
i
t
∗
i_t^*
it∗是
i
t
∗
=
arg
max
1
≤
i
≤
N
[
γ
t
(
i
)
]
,
t
=
1
,
2
,
.
.
.
,
T
i_t^*=\arg\max_{1\leq i\leq N}[\gamma_t(i)],\quad t=1,2,...,T
it∗=arg1≤i≤Nmax[γt(i)],t=1,2,...,T
从而得到状态序列 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*,i_2^*,...,i_T^*) I∗=(i1∗,i2∗,...,iT∗)。
近似算法的优点是计算简单,缺点是不能保证预测的状态序列整体是最可能的状态序列,因为预测的状态序列可能有实际不发生的部分。事实上,上述方法得到的状态序列中有可能存在转移概率为0的相邻状态,即对某些 i , j i,j i,j, α i j \alpha_{ij} αij时。但近似算法仍然是有用的。
4.2 维特比算法
维特比算法实际是用动态规划解隐马尔可夫模型预测问题,即用动态规划求概率最优路径,这时一条路径对应着一个状态序列。
最优路径具有这样的特性:如果最优路径在时刻 t t t通过结点 i t ∗ i_t^* it∗,那么这一路径从起点 i 1 i_1 i1到结点 i t ∗ i_t^* it∗到的部分路径,对于从 i 1 ∗ i_1^* i1∗到 i t ∗ i_t^* it∗的所有可能的部分路径来说,必须是最优的。
根据动态规划原理,只需从时刻 t = 1 t=1 t=1开始,递推地计算在时刻 t t t状态为 i i i的各条部分路径的最大概率,直到时刻 t = T t=T t=T状态为 i i i的各条路径的最大概率。时刻 t = T t=T t=T的最大概率即为最优路径的概率 P ∗ P^* P∗,最优路径的终结点 i T ∗ i_T^* iT∗也同时得到。之后,为了找出最优路径的各个结点,从终结点 i T ∗ i_T^* iT∗开始,由后向前逐步求得结点 i T − 1 ∗ , . . . , i 1 ∗ i_{T-1}^*,...,i_1^* iT−1∗,...,i1∗,得到最优路径 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*,i_2^*,...,i_T^*) I∗=(i1∗,i2∗,...,iT∗)。
定义在时刻
t
t
t状态为
i
i
i的所有单个路径
(
i
1
,
i
2
,
.
.
.
i
t
)
(i_1,i_2,...i_t)
(i1,i2,...it)中的概率最大值:
δ
t
(
i
)
=
max
i
1
,
i
2
,
.
.
.
,
i
t
−
1
P
(
i
t
=
i
,
i
t
−
1
,
.
.
.
,
i
1
,
o
t
,
.
.
.
,
o
1
∣
λ
)
\delta_t(i)=\max_{i_1,i_2,...,i_{t-1}}P(i_t=i,i_{t-1},...,i_1,o_t,...,o_1|\lambda)
δt(i)=i1,i2,...,it−1maxP(it=i,it−1,...,i1,ot,...,o1∣λ)
由定义可得变量
δ
\delta
δ的递推公式:
δ
t
+
1
(
i
)
=
max
i
1
,
i
2
,
.
.
.
,
i
t
P
(
i
t
+
1
=
i
,
i
t
,
.
.
.
,
i
1
,
o
t
+
1
o
t
,
.
.
.
,
o
1
∣
λ
)
=
max
1
≤
j
≤
N
[
δ
t
(
j
)
a
j
i
]
b
i
(
o
t
+
1
)
,
i
=
1
,
2
,
.
.
.
,
N
;
t
=
1
,
2
,
.
.
.
,
T
−
1
\begin{aligned} \delta_{t+1}(i)&=\max_{i_1,i_2,...,i_{t}}P(i_{t+1}=i,i_t,...,i_1,o_{t+1}o_t,...,o_1|\lambda)\\ &=\max_{1\leq j\leq N}\left[\delta_t(j)a_{ji}\right]b_i(o_{t+1}),\quad i=1,2,...,N;t=1,2,...,T-1 \end{aligned}
δt+1(i)=i1,i2,...,itmaxP(it+1=i,it,...,i1,ot+1ot,...,o1∣λ)=1≤j≤Nmax[δt(j)aji]bi(ot+1),i=1,2,...,N;t=1,2,...,T−1
定义在时刻
t
t
t状态为
i
i
i的所有单个路径
(
i
1
,
i
2
,
.
.
.
,
i
t
−
1
,
i
)
(i_1,i_2,...,i_{t-1},i)
(i1,i2,...,it−1,i)中概率最大的路径的第
t
−
1
t-1
t−1个结点:
Ψ
t
(
i
)
=
arg
max
1
≤
j
≤
N
[
δ
t
(
j
)
a
j
i
]
,
i
=
1
,
2
,
.
.
.
,
N
\Psi_t(i)=\arg\max_{1\leq j\leq N}\left[\delta_t(j)a_{ji}\right],\quad i=1,2,...,N
Ψt(i)=arg1≤j≤Nmax[δt(j)aji],i=1,2,...,N
维特比算法
输入:模型
λ
=
(
A
,
B
,
π
)
\lambda=(A,B,\pi)
λ=(A,B,π)和观测
O
=
(
o
1
,
o
2
,
.
.
.
,
o
T
)
O=(o_1,o_2,...,o_T)
O=(o1,o2,...,oT)
输出:最优路径
I
∗
=
(
i
1
∗
,
i
2
∗
,
.
.
.
,
i
T
∗
)
I^*=(i_1^*,i_2^*,...,i_T^*)
I∗=(i1∗,i2∗,...,iT∗)
(1)初始化:
δ
1
(
i
)
=
π
i
b
i
(
o
1
)
,
i
=
1
,
2
,
.
.
.
,
N
\delta_1(i)=\pi_ib_i(o_1),\quad i=1,2,...,N
δ1(i)=πibi(o1),i=1,2,...,N
Ψ 1 ( i ) = 0 , i = 1 , 2 , . . . , N \Psi_1(i)=0,\quad i=1,2,...,N Ψ1(i)=0,i=1,2,...,N
(2)递推:对
t
=
2
,
3
,
.
.
.
,
T
t=2,3,...,T
t=2,3,...,T
δ
t
(
i
)
=
max
1
≤
j
≤
N
[
δ
t
−
1
(
j
)
a
j
i
]
b
i
(
o
t
)
,
i
=
1
,
2
,
.
.
.
,
N
\delta_{t}(i)=\max_{1\leq j\leq N}\left[\delta_{t-1}(j)a_{ji}\right]b_i(o_{t}),\quad i=1,2,...,N
δt(i)=1≤j≤Nmax[δt−1(j)aji]bi(ot),i=1,2,...,N
Ψ t ( i ) = arg max 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] , i = 1 , 2 , . . . , N \Psi_t(i)=\arg\max_{1\leq j\leq N}\left[\delta_{t-1}(j)a_{ji}\right],\quad i=1,2,...,N Ψt(i)=arg1≤j≤Nmax[δt−1(j)aji],i=1,2,...,N
(3)终止:
P
∗
=
max
1
≤
i
≤
N
δ
T
(
i
)
P^*=\max_{1\leq i\leq N}\delta_T(i)
P∗=1≤i≤NmaxδT(i)
i T ∗ = arg max 1 ≤ i ≤ N δ T ( i ) i_T^*=\arg\max_{1\leq i\leq N}\delta_T(i) iT∗=arg1≤i≤NmaxδT(i)
(4)最优路径回溯:对
t
=
T
−
1
,
T
−
2
,
.
.
.
,
1
t=T-1,T-2,...,1
t=T−1,T−2,...,1
i
t
∗
=
Ψ
t
+
1
(
i
t
+
1
∗
)
i_t^*=\Psi_{t+1}(i_{t+1}^*)
it∗=Ψt+1(it+1∗)
求得最优路径 I ∗ = ( i 1 ∗ , i 2 ∗ , . . . , i T ∗ ) I^*=(i_1^*,i_2^*,...,i_T^*) I∗=(i1∗,i2∗,...,iT∗)
《统计学习方法》——李航

7156





