1、马尔可夫性质及马尔可夫链
(1)马尔可夫性质
设
{
X
(
t
)
,
t
∈
T
}
\{X(t), t\in T\}
{X(t),t∈T}是一个随机过程,E为其状态空间,若对于任意的
t
1
<
t
2
<
⋯
<
t
n
<
t
t_1\lt t_2\lt\dots\lt t_n\lt t
t1<t2<⋯<tn<t,任意的
x
1
,
x
2
,
…
,
x
n
,
x
∈
E
x_1, x_2, \dots, x_n, x\in E
x1,x2,…,xn,x∈E,随机变量
X
(
t
)
X(t)
X(t)在已知变量
X
(
t
1
)
=
x
1
,
…
,
X
(
t
n
)
=
x
n
X(t_1 )=x_1, \dots, X(t_n )=x_n
X(t1)=x1,…,X(tn)=xn之下的条件分布函数只与
X
(
t
n
)
=
x
n
X(t_n)=x_n
X(tn)=xn有关,而与
X
(
t
1
)
=
x
1
,
…
,
X
(
t
n
−
1
)
=
x
n
−
1
X(t_1)=x_1, \dots, X(t_{n-1})=x_{n-1}
X(t1)=x1,…,X(tn−1)=xn−1无关,即条件分布函数满足下列等式,此性质称为马尔可夫性质。如果随机过程满足马尔可夫性,则该过程称为马尔可夫过程。
p
(
X
(
t
)
≤
x
∣
X
(
t
1
)
=
x
1
,
…
,
X
(
t
n
)
=
x
n
)
=
p
(
X
(
t
)
≤
x
∣
X
(
t
n
)
=
x
n
)
p
(
X
n
+
1
=
x
∣
X
1
=
x
1
,
…
,
X
n
=
x
n
)
=
p
(
X
n
+
1
=
x
∣
X
n
=
x
n
)
\begin{aligned} p(X(t)\le x|X(t_1)&=x_1, \dots, X(t_n)=x_n)=p(X(t)\le x|X(t_n)=x_n) \\ p(X_{n+1}=x|X_1=x_1, \dots, X_n=x_n)&=p(X_{n+1}=x|X_n=x_n) \end{aligned}
p(X(t)≤x∣X(t1)p(Xn+1=x∣X1=x1,…,Xn=xn)=x1,…,X(tn)=xn)=p(X(t)≤x∣X(tn)=xn)=p(Xn+1=x∣Xn=xn)
(2)马尔可夫链
马尔可夫链是指具有马尔可夫性质的随机过程。在过程中,在给定当前信息的情况下,过去的信息状态对于预测将来状态是无关的。
在马尔可夫链的每一步,系统根据概率分布,可以从一个状态变成另外一个状态,也可以保持当前状态不变。状态的改变叫做转移,状态改变的相关概率叫做转移概率。
马尔可夫链中的三元素是:状态空间S、转移概率矩阵P、初始概率分布π。
2、隐马尔可夫模型
隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,在语音识别、行为识别、NLP、故障诊断等领域具有高效的性能。
HMM是关于时序的概率模型,描述一个含有未知参数的马尔可夫链所生成的不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。HMM是一个双重随机过程,具有一定状态的隐马尔可夫链和随机的观测序列。HMM随机生成的状态随机序列被称为状态序列,每个状态生成一个观测,由此产生的观测随机序列,被称为观测序列。
z
1
,
z
2
,
…
,
z
n
z_1, z_2, \dots, z_n
z1,z2,…,zn是不可观测的状态,
x
1
,
x
2
,
…
,
x
n
x_1, x_2, \dots, x_n
x1,x2,…,xn是可观测到的序列。
HMM由隐含状态S、可观测状态O、初始状态概率矩阵
π
\pi
π、隐含状态转移概率矩阵A、可观测值转移矩阵B(又称为混淆矩阵,Confusion Matrix),
π
\pi
π和A决定了状态序列,B决定观测序列,因此HMM可以使用三元符号表示,称为HMM的三元素:
λ
=
(
A
,
B
,
π
)
\lambda=(A, B, \pi)
λ=(A,B,π)
S是所有可能的状态集合:
S
=
{
s
1
,
s
2
,
…
,
s
n
}
S=\{s_1, s_2, \dots, s_n\}
S={s1,s2,…,sn}
O是所有可能的观测集合:
O
=
{
o
1
,
o
2
,
…
,
o
n
}
O=\{o_1, o_2, \dots, o_n\}
O={o1,o2,…,on}
I是长度为T的状态序列,Q是对应的观测序列:
I
=
{
i
1
,
i
2
,
…
,
i
T
}
Q
=
{
q
1
,
q
2
,
…
,
q
T
}
I=\{i_1, i_2, \dots, i_T\} \ \ \ \ \ Q=\{q_1, q_2, \dots, q_T\}
I={i1,i2,…,iT} Q={q1,q2,…,qT}
A是隐含状态转移概率矩阵:
A
=
[
a
i
j
]
n
∗
n
=
[
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
⋮
⋮
⋱
⋮
a
n
1
a
n
2
⋯
a
n
n
]
A=[a_{ij}]_{n*n}=\begin{bmatrix} a_{11}&a_{12}&\cdots&a_{1n} \\ a_{21}&a_{22}&\cdots&a_{2n} \\ \vdots&\vdots&\ddots&\vdots \\ a_{n1}&a_{n2}&\cdots&a_{nn} \end{bmatrix}
A=[aij]n∗n=⎣⎢⎢⎢⎡a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann⎦⎥⎥⎥⎤
其中
a
i
j
=
p
(
i
t
+
1
=
s
j
∣
i
t
=
s
i
)
a_{ij}=p(i_{t+1}=s_j|i_t=s_i)
aij=p(it+1=sj∣it=si),
a
i
j
a_{ij}
aij是在时刻t处于状态
s
i
s_i
si的条件下,时刻t+1转移到状态
s
j
s_j
sj的概率。
B是可观测值转移概率矩阵:
B
=
[
b
i
j
]
n
∗
m
=
[
b
11
b
12
⋯
b
1
m
b
21
b
22
⋯
b
2
m
⋮
⋮
⋱
⋮
b
n
1
b
n
2
⋯
b
n
m
]
B=[b_{ij}]_{n*m}=\begin{bmatrix} b_{11}&b_{12}&\cdots&b_{1m} \\ b_{21}&b_{22}&\cdots&b_{2m} \\ \vdots&\vdots&\ddots&\vdots \\ b_{n1}&b_{n2}&\cdots&b_{nm} \end{bmatrix}
B=[bij]n∗m=⎣⎢⎢⎢⎡b11b21⋮bn1b12b22⋮bn2⋯⋯⋱⋯b1mb2m⋮bnm⎦⎥⎥⎥⎤
其中
b
i
j
=
p
(
q
t
=
o
j
∣
i
t
=
s
i
)
b_{ij}=p(q_t=o_j|i_t=s_i)
bij=p(qt=oj∣it=si),
b
i
j
b_{ij}
bij是在时刻t处于状态
s
i
s_i
si的条件下生成观测值
o
j
o_j
oj的概率。
π
\pi
π是初始状态概率向量:
π
=
(
π
i
)
1
∗
n
=
(
π
1
,
π
2
,
…
,
π
n
)
\pi=(\pi_i)_{1*n}=(\pi_1, \pi_2, \dots, \pi_n)
π=(πi)1∗n=(π1,π2,…,πn)
其中
π
i
=
p
(
i
1
=
s
i
)
\pi_i=p(i_1=s_i)
πi=p(i1=si),
π
i
\pi_i
πi是在时刻t=1处于状态
s
i
s_i
si的概率。
HMM的两个基本性质:
p
(
i
t
∣
i
t
−
1
,
q
t
−
1
,
i
t
−
2
,
q
t
−
2
,
…
,
i
1
,
q
1
)
=
p
(
i
t
∣
i
t
−
1
)
p
(
q
t
∣
i
t
,
i
t
−
1
,
q
t
−
1
,
i
t
−
2
,
q
t
−
2
,
…
,
i
1
,
q
1
)
=
p
(
q
t
∣
i
t
)
\begin{aligned} p(i_t|i_{t-1}, q_{t-1}, i_{t-2}, q_{t-2}, \dots, i_1, q_1)&=p(i_t|i_{t-1}) \\ p(q_t|i_t, i_{t-1}, q_{t-1}, i_{t-2}, q_{t-2}, \dots, i_1, q_1)&=p(q_t|i_t) \end{aligned}
p(it∣it−1,qt−1,it−2,qt−2,…,i1,q1)p(qt∣it,it−1,qt−1,it−2,qt−2,…,i1,q1)=p(it∣it−1)=p(qt∣it)
HMM的三个问题
- 概率计算问题:前向-后向算法
给定模型 λ = ( A , B , π ) λ=(A,B,π) λ=(A,B,π)和观测序列 Q = { q 1 , q 2 , … , q T } Q=\{q_1, q_2, \dots, q_T\} Q={q1,q2,…,qT},计算模型 λ λ λ下观测到序列Q出现的概率 P ( Q ∣ λ ) P(Q|λ) P(Q∣λ) - 学习问题:Baum-Welch算法(状态未知)
已知观测序列 Q = { q 1 , q 2 , … , q T } Q=\{q_1, q_2, \dots, q_T\} Q={q1,q2,…,qT},估计模型 λ = ( A , B , π ) λ=(A,B,π) λ=(A,B,π)的参数,使得在该模型下观测序列 P ( Q ∣ λ ) P(Q|λ) P(Q∣λ)最大 - 预测问题:Viterbi算法
给定模型 λ = ( A , B , π ) λ=(A,B,π) λ=(A,B,π)和观测序列 Q = { q 1 , q 2 , … , q T } Q=\{q_1, q_2, \dots, q_T\} Q={q1,q2,…,qT},求给定观测序列条件概率 P ( I ∣ Q , λ ) P(I|Q, λ) P(I∣Q,λ)最大的状态序列I
3、概率计算问题
(1)直接计算法
按照概率公式,列举所有可能的长度为T的状态序列
I
=
{
i
1
,
i
2
,
…
,
i
T
}
I=\{i_1, i_2, \dots, i_T \}
I={i1,i2,…,iT},求各个状态序列I与观测序列
Q
=
{
q
1
,
q
2
,
…
,
q
T
}
Q=\{q_1, q_2, \dots, q_T\}
Q={q1,q2,…,qT}的联合概率
P
(
Q
,
I
;
λ
)
P(Q,I;λ)
P(Q,I;λ),然后对所有可能的状态序列求和,从而得到最终的概率
P
(
Q
;
λ
)
P(Q;λ)
P(Q;λ)。
I
=
{
i
1
,
i
2
,
…
,
i
T
}
p
(
I
;
λ
)
=
π
i
1
a
i
1
i
2
a
i
2
i
3
…
a
i
T
−
1
i
T
Q
=
{
q
1
,
q
2
,
…
,
q
T
}
p
(
Q
∣
I
;
λ
)
=
b
i
1
q
1
b
i
2
q
2
…
b
i
T
q
T
p
(
Q
,
I
;
λ
)
=
p
(
Q
∣
I
;
λ
)
p
(
I
;
λ
)
=
π
i
1
a
i
1
i
2
a
i
2
i
3
…
a
i
T
−
1
i
T
b
i
1
q
1
b
i
2
q
2
…
b
i
T
q
T
p
(
Q
;
λ
)
=
∑
I
p
(
Q
,
I
;
λ
)
=
∑
i
1
,
i
2
,
…
,
i
T
π
i
1
a
i
1
i
2
a
i
2
i
3
…
a
i
T
−
1
i
T
b
i
1
q
1
b
i
2
q
2
…
b
i
T
q
T
\begin{aligned} I&=\{i_1, i_2, \dots, i_T\} \\ p(I; \lambda)&=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\dots a_{i_{T-1}i_T} \\ Q&=\{q_1, q_2, \dots, q_T\} \\ p(Q|I;\lambda)&=b_{i_1q_1}b_{i_2q_2}\dots b_{i_Tq_T} \\ p(Q, I;\lambda)&=p(Q|I;\lambda)p(I;\lambda) \\ &=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\dots a_{i_{T-1}i_T}b_{i_1q_1}b_{i_2q_2}\dots b_{i_Tq_T} \\ p(Q;\lambda)&=\sum_Ip(Q,I;\lambda) \\ &=\sum_{i_1, i_2, \dots, i_T}\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\dots a_{i_{T-1}i_T}b_{i_1q_1}b_{i_2q_2}\dots b_{i_Tq_T} \end{aligned}
Ip(I;λ)Qp(Q∣I;λ)p(Q,I;λ)p(Q;λ)={i1,i2,…,iT}=πi1ai1i2ai2i3…aiT−1iT={q1,q2,…,qT}=bi1q1bi2q2…biTqT=p(Q∣I;λ)p(I;λ)=πi1ai1i2ai2i3…aiT−1iTbi1q1bi2q2…biTqT=I∑p(Q,I;λ)=i1,i2,…,iT∑πi1ai1i2ai2i3…aiT−1iTbi1q1bi2q2…biTqT
(2)前向算法
给定
λ
λ
λ,定义到时刻t部分观测序列为
q
1
,
q
2
,
…
,
q
t
q_1, q_2, \dots, q_t
q1,q2,…,qt且状态为
s
i
s_i
si的概率为前向概率。记做:
α
t
(
i
)
=
p
(
q
1
,
q
2
,
…
,
q
t
,
i
t
=
s
i
;
λ
)
\alpha_t(i)=p(q_1, q_2, \dots, q_t, i_t=s_i; \lambda)
αt(i)=p(q1,q2,…,qt,it=si;λ)
初值:
α
1
(
i
)
=
p
(
q
1
,
i
1
=
s
i
;
λ
)
=
π
i
b
i
q
1
\alpha_1(i)=p(q_1, i_1=s_i; \lambda)=\pi_ib_{iq_1}
α1(i)=p(q1,i1=si;λ)=πibiq1
递推:对于
t
=
1
,
2
,
…
,
T
−
1
t=1, 2, \dots, T-1
t=1,2,…,T−1,
α
t
+
1
(
i
)
=
(
∑
j
=
1
n
α
t
(
j
)
a
j
i
)
b
i
q
t
+
1
\alpha_{t+1}(i)=(\sum_{j=1}^n\alpha_t(j)a_{ji})b_{iq_{t+1}}
αt+1(i)=(j=1∑nαt(j)aji)biqt+1
最终:
P
(
Q
;
λ
)
=
∑
i
=
1
n
α
T
(
i
)
P(Q;\lambda)=\sum_{i=1}^n\alpha_T(i)
P(Q;λ)=i=1∑nαT(i)
(3)后向算法
给定
λ
λ
λ,定义到时刻t状态为
s
i
s_i
si的前提下,从t+1到T部分观测序列为
q
t
+
1
,
q
t
+
2
,
…
,
q
T
q_{t+1}, q_{t+2},\dots,q_T
qt+1,qt+2,…,qT的概率为后向概率。记做:
β
t
(
i
)
=
p
(
q
t
+
1
,
q
t
+
2
,
…
,
q
T
∣
i
t
=
s
i
;
λ
)
\beta_t(i)=p(q_{t+1}, q_{t+2},\dots,q_T|i_t=s_i;\lambda)
βt(i)=p(qt+1,qt+2,…,qT∣it=si;λ)
初值:
β
T
(
i
)
=
1
\beta_T(i)=1
βT(i)=1
递推:对于
t
=
T
−
1
,
T
−
2
,
…
,
1
t=T-1, T-2, \dots, 1
t=T−1,T−2,…,1
β
t
(
i
)
=
∑
j
=
1
n
(
a
i
j
b
j
q
t
+
1
β
t
+
1
(
j
)
)
\beta_t(i)=\sum_{j=1}^n(a_{ij}b_{jq_{t+1}}\beta_{t+1}(j))
βt(i)=j=1∑n(aijbjqt+1βt+1(j))
最终:
P
(
Q
;
λ
)
=
∑
i
=
1
n
π
i
b
i
q
1
β
1
(
i
)
P(Q;\lambda)=\sum_{i=1}^n\pi_ib_{iq_1}\beta_1(i)
P(Q;λ)=i=1∑nπibiq1β1(i)
单个状态的概率
求给定模型
λ
λ
λ和观测序列Q的情况下,在时刻t处于状态
s
i
s_i
si的概率,记做:
γ
t
(
i
)
=
p
(
i
t
=
s
i
∣
Q
;
λ
)
\gamma_t(i)=p(i_t=s_i|Q;\lambda)
γt(i)=p(it=si∣Q;λ)
单个状态概率的意义主要是用于判断在每个时刻最可能存在的状态,从而可以得到一个状态序列作为最终的预测结果。
p
(
i
t
=
s
i
,
Q
;
λ
)
=
α
t
(
i
)
β
t
(
i
)
γ
t
(
i
)
=
p
(
i
t
=
s
i
,
Q
;
λ
)
=
p
(
i
t
=
s
i
,
Q
;
λ
)
p
(
Q
;
λ
)
γ
t
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
Q
;
λ
)
=
α
t
(
i
)
β
t
(
i
)
∑
j
=
1
n
α
t
(
j
)
β
t
(
j
)
\begin{aligned} p(i_t=s_i, Q;\lambda)&=\alpha_t(i)\beta_t(i) \\ \gamma_t(i)&=p(i_t=s_i, Q; \lambda) \\ &=\frac{p(i_t=s_i, Q;\lambda)}{p(Q; \lambda)} \\ \gamma_t(i)&=\frac{\alpha_t(i)\beta_t(i)}{P(Q;\lambda)} \\ &=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^n\alpha_t(j)\beta_t(j)} \end{aligned}
p(it=si,Q;λ)γt(i)γt(i)=αt(i)βt(i)=p(it=si,Q;λ)=p(Q;λ)p(it=si,Q;λ)=P(Q;λ)αt(i)βt(i)=∑j=1nαt(j)βt(j)αt(i)βt(i)
两个状态的联合概率
求给定模型
λ
λ
λ和观测序列Q的情况下,在时刻t处于状态
s
i
s_i
si并在时刻t+1处于状态
s
j
s_j
sj的概率,记做:
ξ
t
(
i
,
j
)
=
p
(
i
t
=
s
i
,
i
t
+
1
=
s
j
∣
Q
;
λ
)
=
p
(
i
t
=
s
i
,
i
t
+
1
=
s
j
,
Q
;
λ
)
p
(
Q
;
λ
)
=
p
(
i
t
=
s
i
,
i
t
+
1
=
s
j
,
Q
;
λ
)
∑
i
=
1
n
∑
j
=
1
n
p
(
i
t
=
s
i
,
i
t
+
1
=
s
j
,
Q
;
λ
)
p
(
i
t
=
s
i
,
i
t
+
1
=
s
j
,
Q
;
λ
)
=
α
t
(
i
)
a
i
j
b
j
q
t
+
1
β
t
+
1
(
j
)
\begin{aligned} \xi_t(i, j)&=p(i_t=s_i, i_{t+1}=s_j|Q;\lambda) \\ &=\frac{p(i_t=s_i, i_{t+1}=s_j, Q;\lambda)}{p(Q; \lambda)} \\ &=\frac{p(i_t=s_i, i_{t+1}=s_j, Q;\lambda)}{\sum_{i=1}^n\sum_{j=1}^np(i_t=s_i, i_{t+1}=s_j, Q;\lambda)} \\ p(i_t=s_i, i_{t+1}=s_j, Q;\lambda)&=\alpha_t(i)a_{ij}b_{jq_{t+1}}\beta_{t+1}(j) \end{aligned}
ξt(i,j)p(it=si,it+1=sj,Q;λ)=p(it=si,it+1=sj∣Q;λ)=p(Q;λ)p(it=si,it+1=sj,Q;λ)=∑i=1n∑j=1np(it=si,it+1=sj,Q;λ)p(it=si,it+1=sj,Q;λ)=αt(i)aijbjqt+1βt+1(j)
4、学习问题
- 若训练数据包含观测序列和状态序列,则HMM的学习问题非常简单,是监督学习算法。利用大数定理的结论“频率的极限是概率”,直接给出HMM的参数估计。
π ^ i = ∣ s i ∣ ∑ i = 1 n ∣ s i ∣ a i j = ∣ s i j ∣ ∑ j = 1 n ∣ s i j ∣ b ^ i j = ∣ q i j ∣ ∑ j = 1 m ∣ q i j ∣ \begin{aligned} \hat{\pi}_i&=\frac{|s_i|}{\sum_{i=1}^n|s_i|} \\ a_{ij}&=\frac{|s_{ij}|}{\sum_{j=1}^n|s_{ij}|} \\ \hat{b}_{ij}&=\frac{|q_{ij}|}{\sum_{j=1}^m|q_{ij}|} \end{aligned} π^iaijb^ij=∑i=1n∣si∣∣si∣=∑j=1n∣sij∣∣sij∣=∑j=1m∣qij∣∣qij∣ - 若训练数据只包含观测序列,则HMM的学习问题需要使用EM算法求解,是非监督学习算法。此时一般使用Baum-Welch算法。
所有的观测数据为 Q = { q 1 , q 2 , … , q T } Q=\{q_1, q_2,\dots,q_T\} Q={q1,q2,…,qT},所有的隐状态为 I = { i 1 , i 2 , … , i T } I=\{i_1, i_2, \dots, i_T\} I={i1,i2,…,iT},则完整的数据为 ( Q , I ) (Q,I) (Q,I),完整数据的对数似然函数为 ln ( p ( Q , I ; λ ) ) \ln(p(Q,I;λ)) ln(p(Q,I;λ)),然后直接使用EM算法的方式来进行参数估计。
Baum-Welch算法
p
(
Q
,
I
;
λ
)
=
π
i
1
b
i
1
q
1
a
i
1
i
2
b
i
2
q
2
…
a
i
T
−
1
i
T
b
i
T
q
T
L
(
λ
,
λ
ˉ
)
=
∑
I
ln
(
p
(
Q
,
I
;
λ
)
)
p
(
I
∣
Q
;
λ
ˉ
)
=
∑
I
ln
(
p
(
Q
,
I
;
λ
)
)
p
(
I
,
Q
;
λ
ˉ
)
p
(
Q
;
λ
ˉ
)
∝
∑
I
ln
(
p
(
Q
,
I
;
λ
)
)
p
(
I
,
Q
;
λ
ˉ
)
L
(
λ
,
λ
ˉ
)
=
∑
I
ln
(
π
i
1
)
p
(
I
,
Q
;
λ
ˉ
)
+
∑
I
(
∑
t
=
1
T
−
1
ln
a
i
t
i
t
+
1
)
p
(
I
,
Q
;
λ
ˉ
)
+
∑
I
(
∑
t
=
1
T
ln
b
i
t
q
t
)
p
(
I
,
Q
;
λ
ˉ
)
\begin{aligned} p(Q,I; \lambda)&=\pi_{i_1}b_{i_1q_1}a_{i_1i_2}b_{i_2q_2}\dots a_{i_{T-1}i_T}b_{i_Tq_T} \\ L(\lambda, \bar{\lambda})&=\sum_I\ln(p(Q, I; \lambda))p(I|Q;\bar{\lambda}) \\ &=\sum_I\ln(p(Q, I; \lambda))\frac{p(I,Q;\bar{\lambda})}{p(Q;\bar{\lambda})} \\ &\propto\sum_I\ln(p(Q, I; \lambda))p(I,Q;\bar{\lambda}) \\ L(\lambda, \bar{\lambda})&=\sum_I\ln(\pi_{i_1})p(I, Q; \bar{\lambda})+\sum_I(\sum_{t=1}^{T-1}\ln a_{i_ti_{t+1}})p(I, Q; \bar{\lambda})+\sum_I(\sum_{t=1}^T\ln b_{i_tq_t})p(I, Q; \bar{\lambda}) \end{aligned}
p(Q,I;λ)L(λ,λˉ)L(λ,λˉ)=πi1bi1q1ai1i2bi2q2…aiT−1iTbiTqT=I∑ln(p(Q,I;λ))p(I∣Q;λˉ)=I∑ln(p(Q,I;λ))p(Q;λˉ)p(I,Q;λˉ)∝I∑ln(p(Q,I;λ))p(I,Q;λˉ)=I∑ln(πi1)p(I,Q;λˉ)+I∑(t=1∑T−1lnaitit+1)p(I,Q;λˉ)+I∑(t=1∑Tlnbitqt)p(I,Q;λˉ)
极大化L函数,分别可以求得π、a、b的值。
π
i
=
γ
1
(
i
)
a
i
j
=
∑
t
=
1
T
−
1
ξ
t
(
i
,
j
)
∑
t
=
1
T
−
1
γ
t
(
i
)
b
i
j
=
∑
t
=
1
,
q
t
=
o
j
T
γ
t
(
i
)
∑
t
=
1
T
γ
t
(
i
)
\begin{aligned} \pi_i&=\gamma_1(i) \\ a_{ij}&=\frac{\sum_{t=1}^{T-1}\xi_t(i,j)}{\sum_{t=1}^{T-1}\gamma_t(i)} \\ b_{ij}&=\frac{\sum_{t=1, q_t=o_j}^T\gamma_t(i)}{\sum_{t=1}^T\gamma_t(i)} \end{aligned}
πiaijbij=γ1(i)=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)=∑t=1Tγt(i)∑t=1,qt=ojTγt(i)
5、预测问题
(1)近似算法
将在每个时刻t最有可能的状态作为最终的预测状态,使用下列公式计算
概率值:
γ
(
i
)
=
α
t
(
i
)
β
t
(
i
)
P
(
Q
;
λ
)
=
α
t
(
i
)
β
t
(
i
)
∑
j
=
1
n
α
t
(
j
)
β
t
(
j
)
\begin{aligned} \gamma_(i)&=\frac{\alpha_t(i)\beta_t(i)}{P(Q;\lambda)} \\ &=\frac{\alpha_t(i)\beta_t(i)}{\sum_{j=1}^n\alpha_t(j)\beta_t(j)} \end{aligned}
γ(i)=P(Q;λ)αt(i)βt(i)=∑j=1nαt(j)βt(j)αt(i)βt(i)
(2)Viterbi算法
Viterbi算法实际是用动态规划的思路求解HMM预测问题,求出概率最大的“路径”,每条“路径”对应一个状态序列。
δ
t
(
i
)
=
max
i
1
,
i
2
,
…
,
i
t
−
1
p
(
i
t
=
i
,
i
1
,
i
2
,
…
,
i
t
−
1
,
q
t
,
q
t
−
1
,
…
,
q
1
;
λ
)
δ
1
(
i
)
=
π
i
b
i
q
1
δ
t
+
1
(
i
)
=
max
1
≤
j
≤
n
(
δ
t
(
j
)
a
j
i
)
b
i
q
t
+
1
P
∗
=
max
1
≤
i
≤
n
δ
T
(
i
)
\begin{aligned} \delta_t(i)&=\max_{i_1, i_2, \dots, i_{t-1}}p(i_t=i, i_1, i_2, \dots, i_{t-1}, q_t, q_{t-1}, \dots, q_1; \lambda) \\ \delta_1(i)&=\pi_ib_{iq_1} \\ \delta_{t+1}(i)&=\max_{1\le j\le n}(\delta_t(j)a_{ji})b_{iq_{t+1}} \\ P^{\ast}&=\max_{1\le i\le n}\delta_T(i) \end{aligned}
δt(i)δ1(i)δt+1(i)P∗=i1,i2,…,it−1maxp(it=i,i1,i2,…,it−1,qt,qt−1,…,q1;λ)=πibiq1=1≤j≤nmax(δt(j)aji)biqt+1=1≤i≤nmaxδT(i)
6、HMM应用
HMM的常见应用主要用于进行特征提取的场景中或者数据标注的场景中。
在Scikit-learn中安装HMM工具包:
pip install hmmlearn