马尔科夫链
马尔可夫链是一组具有马尔可夫性质的离散随机变量的集合。具体地,随机变量集合
X
=
{
X
n
:
n
>
0
}
\bold X=\{X_n:n>0\}
X={Xn:n>0},若随机变量的取值都在数据集内
X
n
=
s
i
,
s
i
∈
s
X_n =s_i, s_i \in \bold s
Xn=si,si∈s ,且随机变量的条件概率满足如下关系:
p
(
X
t
+
1
∣
X
t
,
X
t
−
1
,
.
.
.
,
X
2
,
X
1
)
=
p
(
X
t
+
1
∣
X
t
)
p(X_{t+1}|X_t,X_{t-1},...,X_2,X_1) = p(X_{t+1}|X_t)
p(Xt+1∣Xt,Xt−1,...,X2,X1)=p(Xt+1∣Xt)则
X
\bold X
X被称为马尔可夫链,
s
\bold s
s被称为状态空间,马尔可夫链在状态空间内的取值称为状态。
用通俗易懂的话就是:当前状态只依赖于前一时刻的状态,与其他时刻状态无关。
隐马尔可夫模型
隐马尔可夫模型中引入了隐状态,隐状态符合马尔可夫链特性。示意图如下:
隐马尔可夫模型(HMM)可以用五个元素来描述,包括2个状态集合和3个概率矩阵:
1. 隐含状态
Q
=
{
q
1
,
.
.
.
,
q
N
}
Q=\{q_1,...,q_N\}
Q={q1,...,qN}。隐状态的数量为
N
N
N,这些状态之间满足马尔可夫性质,是马尔可夫模型中实际所隐含的状态。这些状态通常无法通过直接观测而得到,当前状态只依赖于前一时刻的状态。满足齐次马尔可夫假设,可以用一下公式来描述(
i
t
i_t
it表示t时刻的状态):
p
(
i
t
∣
i
i
−
1
.
.
.
,
i
2
,
i
1
)
=
p
(
i
t
∣
i
t
−
1
)
p(i_t | i_{i-1}...,i_2,i_1) = p(i_t|i_{t-1})
p(it∣ii−1...,i2,i1)=p(it∣it−1) 2. 可观测状态
V
=
{
v
1
,
.
.
.
,
v
M
}
V=\{v_1,...,v_M\}
V={v1,...,vM}。观测序列的数量为
M
M
M,在模型中与隐含状态相关联,可通过直接观测而得到,当前时刻的观测值只依赖于当前时刻的状态。满足观测独立性假设,可以用以下公式描述(
o
t
o_t
ot表示t时刻的观测序列):
p
(
o
t
∣
o
t
−
1
,
.
.
.
,
o
1
,
i
t
,
i
t
−
1
,
.
.
.
,
i
1
)
=
p
(
o
t
∣
i
t
)
p(o_t | o_{t-1},...,o_1, i_t,i_{t-1},...,i_1) = p(o_t | i_t)
p(ot∣ot−1,...,o1,it,it−1,...,i1)=p(ot∣it) 3. 初始状态概率矩阵
π
\pi
π。表示隐含状态在初始时刻t=1的概率矩阵,也就是t=1时刻出现各种状态的概率。例如t=1时,
p
(
q
1
)
=
p
1
,
p
(
q
2
)
=
p
2
,
p
(
q
3
)
=
p
3
p(q_1)=p_1,\space p(q_2)=p_2, \space p(q_3)=p_3
p(q1)=p1, p(q2)=p2, p(q3)=p3,则初始状态概率矩阵
π
=
[
p
1
,
p
2
,
p
3
]
\pi =[ p_1, p_2, p_3 ]
π=[p1,p2,p3].
4. 隐含状态转移概率矩阵
A
A
A。描述了HMM模型中各个状态之间的转移概率。
A
A
A的维度为
(
N
,
N
)
(N, N)
(N,N),其中
a
i
j
=
p
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
(
1
<
=
i
,
j
<
=
N
)
a_{ij}=p(i_{t+1}=q_j | i_{t}=q_i)\space \space (1 <= i, j <= N)
aij=p(it+1=qj∣it=qi) (1<=i,j<=N)表示在 t 时刻、状态为
q
i
q_i
qi的条件下,在 t+1 时刻状态是
q
j
q_j
qj 的概率。
5. 观测状态转移概率矩阵
B
B
B。描述了HMM模型中各个状态到观测序列的概率。
B
B
B的维度为
(
N
,
M
)
(N, M)
(N,M),则:
b
j
(
k
)
=
p
(
o
t
=
v
k
∣
i
t
=
q
j
)
,
1
≤
j
≤
N
,
1
≤
k
≤
M
b_{j}(k)=p(o_t=v_k | i_t=q_j), \space \space 1 \le j \le N,1 \le k \le M
bj(k)=p(ot=vk∣it=qj), 1≤j≤N,1≤k≤M, 表示在 t 时刻、隐含状态是
q
j
q_j
qj 条件下,观察状态为
v
k
v_k
vk的概率。
一般的,可以用
λ
=
(
A
,
B
,
π
)
\lambda = (A,B,\pi)
λ=(A,B,π)三元组来简洁的表示一个隐马尔可夫模型。隐马尔可夫模型实际上是标准马尔可夫模型的扩展,添加了可观测状态集合和这些状态与隐含状态之间的概率关系。
三个问题
- 评价问题
问题描述:此问题主要是在已知模型参数 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)的条件下,求给定观测序列出现的概率。设状态序列为 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 p ( O , I ∣ λ ) = ∑ I p ( O ∣ I , λ ) p ( I ∣ λ ) \begin{aligned} p(O | \lambda) &= \sum_I p(O, I | \lambda) \\ &= \sum_I p(O | I, \lambda)p(I | \lambda) \end{aligned} p(O∣λ)=I∑p(O,I∣λ)=I∑p(O∣I,λ)p(I∣λ)
由于状态序列 I I I的长度为 T T T,每个状态有 N N N种可能,所以状态序列 I I I共有 N T N^T NT种可能,然后每种可能计算与观测序列O的概率,所以时间复杂度为: O ( T N T ) O(TN^T) O(TNT)。对于此方法的时间复杂度太高,实际上不可行。
当状态数量过多或状态序列长度过大时,直接求解就会相当困难,于是需要使用其他可行的算法代替。这里介绍两种算法:前向算法和后向算法。前向算法
首先,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o 1 , o 2 , . . . , o t o_1, o_2,...,o_t o1,o2,...,ot的概率为:
α 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 t t的状态为 q j q_j qj,且观测序列为 o 1 , o 2 , . . . , o t + 1 o_1, o_2,...,o_{t+1} o1,o2,...,ot+1的概率为:
α t + 1 ( i ) = p ( o 1 , o 2 , . . . , o t + 1 , i t + 1 = q i ∣ λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t + 1 , i t = q j , 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 ∣ o 1 , o 2 , . . . , o t , i t = q j , 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 ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ o 1 , o 2 , . . . , o t , i t = q j , λ ) = ∑ j = 1 N p ( o 1 , o 2 , . . . , o t , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ i t = q j , λ ) = ∑ j = 1 N α t ( j ) b i ( o t + 1 ) a j i = b i ( o t + 1 ) ∑ j = 1 N α t ( j ) a j i \begin{aligned} \alpha_{t+1}(i) &= p(o_1, o_2,...,o_{t+1}, i_{t+1}=q_i | \lambda) \\ &= \sum_{j=1}^{N}p(o_1, o_2,...,o_{t+1}, i_t=q_j, i_{t+1}=q_i | \lambda) \\ &= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j, i_{t+1}=q_i| \lambda) p(o_{t+1} | o_1, o_2,...,o_t, i_t=q_j, i_{t+1}=q_i, \lambda)\\ &= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j, i_{t+1}=q_i| \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)\\ &= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j| \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)p(i_{t+1}=q_i | o_1, o_2,...,o_t, i_t=q_j, \lambda)\\ &= \sum_{j=1}^{N}p(o_1, o_2,...,o_t, i_t=q_j| \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)p(i_{t+1}=q_i |i_t=q_j, \lambda)\\ &= \sum_{j=1}^{N}\alpha_t(j) b_i(o_{t+1})a_{ji}\\ &= b_i(o_{t+1})\sum_{j=1}^{N}\alpha_t(j) a_{ji}\\ \end{aligned} αt+1(i)=p(o1,o2,...,ot+1,it+1=qi∣λ)=j=1∑Np(o1,o2,...,ot+1,it=qj,it+1=qi∣λ)=j=1∑Np(o1,o2,...,ot,it=qj,it+1=qi∣λ)p(ot+1∣o1,o2,...,ot,it=qj,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(ot+1∣it+1=qi,λ)p(it+1=qi∣o1,o2,...,ot,it=qj,λ)=j=1∑Np(o1,o2,...,ot,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣it=qj,λ)=j=1∑Nαt(j)bi(ot+1)aji=bi(ot+1)j=1∑Nαt(j)aji
特别的,当 t = 1 t=1 t=1时刻, α 1 = b i ( o 1 ) π i \alpha_1=b_i(o_1)\pi_i α1=bi(o1)πi,其中 1 ≤ i ≤ N 1\le i \le N 1≤i≤N。后向算法
首先,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 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,λ)
接着,我们设在时刻 t − 1 t-1 t−1的状态为 q i q_i qi,且观测序列为 o t , o t + 1 , . . . , o T o_t, o_{t+1},...,o_T ot,ot+1,...,oT的概率为:
β t − 1 ( i ) = p ( o t , o t + 1 , . . . , o T ∣ i t − 1 = q i , λ ) = ∑ j = 1 N p ( o t , o t + 1 , . . . , o T , i t = q j ∣ i t − 1 = q i , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T , i t = q j ∣ i t − 1 = q i , λ ) p ( o t ∣ o t + 1 , . . . , o T , i t − 1 = q i , i t = q j , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T , i t = q j ∣ i t − 1 = q i , λ ) p ( o t ∣ i t = q j , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T ∣ i t − 1 = q i , i t = q j , λ ) p ( i t = q j ∣ o t + 1 , . . . , o T , i t − 1 = q i , λ ) p ( o t ∣ i t = q j , λ ) = ∑ j = 1 N p ( o t + 1 , . . . , o T ∣ i t = q j , λ ) p ( i t = q j ∣ i t − 1 = q i , λ ) p ( o t ∣ i t = q j , λ ) = ∑ j = 1 N β t ( j ) a i j b j ( o t ) \begin{aligned} \beta_{t-1}(i) &=p(o_t, o_{t+1},...,o_T | i_{t-1}=q_i, \lambda) \\ &=\sum_{j=1}^Np(o_t, o_{t+1},...,o_T, i_t=q_j | i_{t-1}=q_i, \lambda) \\ &=\sum_{j=1}^Np(o_{t+1},...,o_T, i_t=q_j | i_{t-1}=q_i, \lambda)p(o_t | o_{t+1},...,o_T, i_{t-1}=q_i, i_t=q_j, \lambda) \\ &=\sum_{j=1}^Np(o_{t+1},...,o_T, i_t=q_j |i_{t-1}=q_i, \lambda)p(o_t | i_t=q_j, \lambda) \\ &=\sum_{j=1}^Np(o_{t+1},...,o_T|i_{t-1}=q_i, i_t=q_j, \lambda)p(i_t=q_j | o_{t+1},...,o_T, i_{t-1}=q_i, \lambda)p(o_t | i_t=q_j, \lambda) \\ &=\sum_{j=1}^Np(o_{t+1},...,o_T | i_t=q_j, \lambda)p(i_t=q_j | i_{t-1}=q_i, \lambda)p(o_t | i_t=q_j, \lambda) \\ &=\sum_{j=1}^N\beta_t(j)a_{ij}b_j(o_t) \\ \end{aligned} βt−1(i)=p(ot,ot+1,...,oT∣it−1=qi,λ)=j=1∑Np(ot,ot+1,...,oT,it=qj∣it−1=qi,λ)=j=1∑Np(ot+1,...,oT,it=qj∣it−1=qi,λ)p(ot∣ot+1,...,oT,it−1=qi,it=qj,λ)=j=1∑Np(ot+1,...,oT,it=qj∣it−1=qi,λ)p(ot∣it=qj,λ)=j=1∑Np(ot+1,...,oT∣it−1=qi,it=qj,λ)p(it=qj∣ot+1,...,oT,it−1=qi,λ)p(ot∣it=qj,λ)=j=1∑Np(ot+1,...,oT∣it=qj,λ)p(it=qj∣it−1=qi,λ)p(ot∣it=qj,λ)=j=1∑Nβt(j)aijbj(ot)
特别的,当 t = T t=T t=T时刻, β T ( i ) = 1 \beta_T(i)= 1 βT(i)=1,T时刻是最终时刻,无后续,可以任意设置。 - 预测问题
问题描述:此问题主要是在已知模型参数 λ = ( A , B , π ) \lambda = (A,B,\pi) λ=(A,B,π)的条件下,求出最优可能出现的状态序列。设状态序列为 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}。该问题可以表示为:
a r g max I P ( I ∣ O , λ ) arg\max_{I} P(I | O, \lambda) argImaxP(I∣O,λ)维特比算法
首先,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o 1 , o 2 , . . . , o t o_1, o_2,...,o_t o1,o2,...,ot。此时最有可能的状态序列为::
δ t ( i ) = max i 1 , i 2 , . . i t − 1 p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q i ∣ λ ) \delta_t(i)= \max_{i_1,i_2, ..i_{t-1}} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_i | \lambda) δt(i)=i1,i2,..it−1maxp(o1,o2,...,ot,i1,i2,...,it=qi∣λ)
接着,我们设在时刻 t t t的状态为 q i q_i qi,且观测序列为 o 1 , o 2 , . . . , o t + 1 o_1, o_2,...,o_{t+1} o1,o2,...,ot+1。此时最有可能的状态序列为:
δ t + 1 ( i ) = max i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t + 1 , i 1 , i 2 , . . . , i t + 1 = q i ∣ λ ) = max i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t + 1 = q i ∣ λ ) p ( o t + 1 ∣ o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t + 1 = q i , λ ) = max i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t + 1 = q i ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) = max i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q j , λ ) = max i 1 , i 2 , . . i t p ( o 1 , o 2 , . . . , o t , i 1 , i 2 , . . . , i t = q j ∣ λ ) p ( o t + 1 ∣ i t + 1 = q i , λ ) p ( i t + 1 = q i ∣ i t = q j , λ ) = max i 1 , i 2 , . . i t δ t ( j ) b i ( o t + 1 ) a j i = max i t δ t ( j ) b i ( o t + 1 ) a j i = max 1 ≤ j ≤ N δ t ( j ) b i ( o t + 1 ) a j i = b i ( o t + 1 ) max 1 ≤ j ≤ N δ t ( j ) a j i \begin{aligned} \delta_{t+1}(i) &= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_{t+1}, i_1, i_2, ..., i_{t+1}=q_i | \lambda) \\ &= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_{t+1}=q_i | \lambda) p(o_{t+1} | o_1, o_2,...,o_t, i_1, i_2, ..., i_{t+1}=q_i, \lambda)\\ &= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_{t+1}=q_i | \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda)\\ &= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_j | \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda) p(i_{t+1}=q_i | o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_j, \lambda)\\ &= \max_{i_1,i_2, ..i_t} p(o_1, o_2,...,o_t, i_1, i_2, ..., i_t=q_j | \lambda) p(o_{t+1} | i_{t+1}=q_i, \lambda) p(i_{t+1}=q_i | i_t=q_j, \lambda)\\ &= \max_{i_1,i_2, ..i_t} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &= \max_{i_t} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &= \max_{1\le j \le N} \delta_t(j)b_i(o_{t+1}) a_{ji}\\ &= b_i(o_{t+1})\max_{1\le j \le N} \delta_t(j) a_{ji}\\ \end{aligned} δt+1(i)=i1,i2,..itmaxp(o1,o2,...,ot+1,i1,i2,...,it+1=qi∣λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it+1=qi∣λ)p(ot+1∣o1,o2,...,ot,i1,i2,...,it+1=qi,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it+1=qi∣λ)p(ot+1∣it+1=qi,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣o1,o2,...,ot,i1,i2,...,it=qj,λ)=i1,i2,..itmaxp(o1,o2,...,ot,i1,i2,...,it=qj∣λ)p(ot+1∣it+1=qi,λ)p(it+1=qi∣it=qj,λ)=i1,i2,..itmaxδt(j)bi(ot+1)aji=itmaxδt(j)bi(ot+1)aji=1≤j≤Nmaxδt(j)bi(ot+1)aji=bi(ot+1)1≤j≤Nmaxδt(j)aji
特别的,当 t = 1 t=1 t=1时刻, δ 1 = b i ( o 1 ) π i \delta_1=b_i(o_1)\pi_i δ1=bi(o1)πi,其中 1 ≤ i ≤ N 1\le i \le N 1≤i≤N。 - 学习问题
. 问题描述:此问题是在知道状态序列,观测序列的条件下,求出最有可能的 λ = ( A , B , π ) \lambda=(A, B, \pi) λ=(A,B,π)。该问题使用Baum-Welch 算法解决。该算法目前还没有研究,待后续补上。。。
关于HMM的应用会在后续的分词、词性标注上具体给出,敬请期待!