1.HMM介绍
隐马尔可夫模型(HMM,Hidden Markov Model)可用于标注问题,在语音识别,NLP,生物信息,模式识别领域被证明是有效的算法。
HMM是关于时序的概率模型,描述由一个隐藏的马尔可夫链生成不可观测的状态随机序列,再由各个状态生成观测随机序列的过程。
隐马尔可夫模型随机生成的状态随机序列,称为状态序列;每个状态生成一个观测,由此生成的观测随机序列,称为观测序列,序列的每个位置可看作是一个时刻。图如下:
2.HMM的确定
(1)HMM由初始概率分布
π
\pi
π,状态转移概率分布A以及观测概率分布B确定。
λ
=
(
A
,
B
,
π
)
\lambda=(A, B, \pi)
λ=(A,B,π)
(2)HMM的参数
Q是所有状态的集合,N是可能的状态数;
Q
=
{
q
1
,
q
2
,
…
q
N
}
Q=\left\{q_{1}, q_{2}, \ldots q_{N}\right\}
Q={q1,q2,…qN} V是所有可能的观测的集合,M是可能的观测数:
V
=
{
v
1
,
v
2
,
…
v
M
}
V=\left\{v_{1}, v_{2}, \dots v_{M}\right\}
V={v1,v2,…vM}
I是长度为T的状态序列,O是对应的观测序列:
I
=
{
i
1
,
i
2
,
…
i
T
}
O
=
{
o
1
,
o
2
,
…
o
T
}
I=\left\{i_{1}, i_{2}, \ldots i_{T}\right\} \quad O=\left\{o_{1}, o_{2}, \ldots o_{T}\right\}
I={i1,i2,…iT}O={o1,o2,…oT}
A是状态转移概率矩阵:
A
=
[
a
i
j
]
N
×
N
A=\left[a_{i j}\right]_{N \times N}
A=[aij]N×N
其中
a
i
j
=
P
(
i
t
+
1
=
q
j
∣
i
t
=
q
i
)
a_{i j}=P\left(i_{t+1}=q_{j} | i_{t}=q_{i}\right)
aij=P(it+1=qj∣it=qi),
a
i
j
a_{i j}
aij是在时刻t处于状态
q
i
q_{i}
qi的条件下
时刻t+1转移到状态
q
j
q_{j}
qj的概率。
B是观测概率转移矩阵:
B
=
[
b
i
k
]
N
×
M
B=\left[b_{i k}\right]_{N \times M}
B=[bik]N×M
其中,
b
i
k
=
P
(
o
t
=
v
k
∣
i
t
=
q
i
)
b_{i k}=P\left(o_{t}=v_{k} | i_{t}=q_{i}\right)
bik=P(ot=vk∣it=qi),
b
i
k
b_{i k}
bik表示在时刻t处于状态
q
i
q_{i}
qi条件
下生成观测
v
k
v_k
vk的概率。
π
\pi
π是初始状态转移向量:
π
=
(
π
i
)
\pi=\left(\pi_{i}\right)
π=(πi)
其中,
π
i
=
P
(
i
1
=
q
i
)
\pi_{i}=P\left(i_{1}=q_{i}\right)
πi=P(i1=qi),
π
i
\pi_{i}
πi是时刻t=1处于状态
q
i
q_i
qi的概率。
(3)HMM的参数总结
HMM由初始概率分布
π
\pi
π(向量),状态转移概率分布A(矩阵)以及观测概率
分布B(矩阵)确定,
π
\pi
π和A决定状态序列,B决定观测序列。因此,HMM可以
用三元符号表示,称为HMM三要素:
λ
=
(
A
,
B
,
π
)
\lambda=(A, B, \pi)
λ=(A,B,π)
3.HMM两个基本性质
(1)齐次假设:
P
(
i
t
∣
i
t
−
1
,
O
t
−
1
,
i
t
−
2
,
O
t
−
2
⋯
i
1
,
O
1
)
=
P
(
i
t
∣
i
t
−
1
)
P\left(i_{t} | i_{t-1}, O_{t-1}, i_{t-2}, O_{t-2} \cdots i_{1}, O_{1}\right)=P\left(i_{t} | i_{t-1}\right)
P(it∣it−1,Ot−1,it−2,Ot−2⋯i1,O1)=P(it∣it−1)
(2)观测独立性假设:
P
(
o
t
∣
i
T
,
o
T
,
i
T
−
1
,
o
T
−
1
⋯
i
1
,
o
1
)
=
P
(
o
t
∣
i
t
)
P\left(o_{t} | i_{T}, o_{T}, i_{T-1}, o_{T-1} \cdots i_{1}, o_{1}\right)=P\left(o_{t} | i_{t}\right)
P(ot∣iT,oT,iT−1,oT−1⋯i1,o1)=P(ot∣it)
4.HMM举例:
假设有3个盒子,编号为1,2,3,每个盒子都装有红白两种颜色的小球,数目如下:
按照下面的方法抽取小球,得到球颜色的观测序列:
4.HMM的三个基本问题
(1)概率计算问题:前向-后向算法
给定模型
λ
=
(
A
,
B
,
π
)
\lambda=(A, B, \pi)
λ=(A,B,π)和观测序列
O
=
{
θ
1
,
o
2
,
…
o
T
}
O=\left\{\theta_{1}, o_{2}, \ldots o_{T}\right\}
O={θ1,o2,…oT},计算模型
λ
\lambda
λ下观测序列O出现的概率
P
(
O
∣
λ
)
\mathrm{P}(\mathrm{O} | \lambda)
P(O∣λ);
(2)学习问题:Baum-Welch算法(状态未知)
已知观测序列
O
=
{
o
1
,
o
2
,
…
o
T
}
O=\left\{o_{1}, o_{2}, \dots o_{T}\right\}
O={o1,o2,…oT},估计模型
λ
=
(
A
,
B
,
π
)
\lambda=(A, B, \pi)
λ=(A,B,π)的参数,使得在该模型下观测序列
P
(
O
∣
λ
)
P(O | \lambda)
P(O∣λ)最大;
(3)预测问题:Viterbi算法
解码问题:已知模型
λ
=
(
A
,
B
,
π
)
\lambda=(A, B, \pi)
λ=(A,B,π)和观测序列
O
=
{
o
1
,
o
2
,
…
o
T
}
O=\left\{o_{1}, o_{2}, \ldots o_{T}\right\}
O={o1,o2,…oT},求在给定观测序列条件概率
P
(
I
∣
O
,
λ
)
\mathrm{P}(\mathrm{I} | \mathrm{O}, \lambda)
P(I∣O,λ)最大的状态序列I。
5.概率计算问题:
(1)直接计算:
按照概率公式,列举所有可能的长度为T的状态序列
I
=
{
i
1
,
i
2
,
…
i
T
}
I=\left\{i_{1}, i_{2}, \ldots i_{T}\right\}
I={i1,i2,…iT},求各个状态序列
I
I
I与观测序列的
O
=
{
o
1
,
o
2
,
…
o
T
}
O=\left\{o_{1}, o_{2}, \ldots o_{T}\right\}
O={o1,o2,…oT}的联合概率分布
P
(
O
,
I
∣
λ
)
\mathrm{P}(\mathrm{O}, \mathrm{I} | \lambda)
P(O,I∣λ),然后对所有可能的状态序列求和,从而得到
P
(
O
∣
λ
)
\mathrm{P}(\mathrm{O} | \lambda)
P(O∣λ)。
状态序列
I
=
{
i
1
,
i
2
,
…
i
T
}
I=\left\{i_{1}, i_{2}, \ldots i_{T}\right\}
I={i1,i2,…iT}出现的概率是:
P
(
I
∣
λ
)
=
π
i
1
a
i
,
i
2
a
i
2
i
3
⋯
a
i
1
−
1
i
2
P(I | \lambda)=\pi_{i_{1}} a_{i, i_{2}} a_{i_{2} i_{3}} \cdots a_{i_{1-1} i_{2}}
P(I∣λ)=πi1ai,i2ai2i3⋯ai1−1i2
对固定状态序列
I
I
I,观测序列
O
O
O的概率是:
P
(
O
∣
I
,
λ
)
=
b
i
σ
1
b
i
2
o
2
⋯
b
i
1
o
T
P(O | I, \lambda)=b_{i \sigma_{1}} b_{i_{2} o_{2}} \cdots b_{i_{1} o_{T}}
P(O∣I,λ)=biσ1bi2o2⋯bi1oT
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_{1}i_2} b_{i_{2},o_{2}} \cdots a_{i_{T-1}i_{T}} b_{i_{T} o_{T}}
P(O,I∣λ)=P(O∣I,λ)P(I∣λ)=πi1bi1o1ai1i2bi2,o2⋯aiT−1iTbiToT
对所有可能的序列I求和,得到观测序列
O
O
O的概率
P
(
O
∣
λ
)
=
∑
I
P
(
O
,
I
∣
λ
)
=
∑
I
P
(
O
∣
I
,
λ
)
P
(
I
∣
λ
)
P(O | \lambda)=\sum_{I} P(O, I | \lambda)=\sum_{I} P(O | I, \lambda) P(I | \lambda)
P(O∣λ)=I∑P(O,I∣λ)=I∑P(O∣I,λ)P(I∣λ)
=
∑
i
1
,
i
2
,
⋯
,
i
T
π
i
1
b
i
1
,
α
1
a
i
1
i
2
b
i
2
o
2
⋯
a
i
1
−
1
i
2
b
i
1
o
T
=\sum_{i_{1}, i_{2}, \cdots, i_{T}} \pi_{i_{1}} b_{i_{1}, \alpha_{1}} a_{i_{1} i_{2}} b_{i_{2} o_{2}} \cdots a_{i_{1-1} i_{2}} b_{i_{1} o_{T}}
=i1,i2,⋯,iT∑πi1bi1,α1ai1i2bi2o2⋯ai1−1i2bi1oT
分析:加和符号中有
2
T
2T
2T个因子,
I
I
I的遍历个数为
N
T
N^{T}
NT,因此,时间复杂度为
O
(
T
N
T
)
\mathrm{O}\left(\mathrm{T} \mathrm{N}^{\mathrm{T}}\right)
O(TNT),复杂度过高。
(2)前向算法:
定义概率-前向概率和后向概率
给定
λ
\lambda
λ,定义到时刻
t
t
t部分观测序列是
o
1
,
o
2
…
o
t
o1,o2 \ldots o t
o1,o2…ot且状态为
q
1
\mathrm{q} 1
q1的概率称为前向概率,记作:
α
t
(
i
)
=
P
(
o
1
,
o
2
,
⋯
o
t
,
i
t
=
q
i
∣
λ
)
\alpha_{t}(i)=P\left(o_{1}, o_{2}, \cdots o_{t}, i_{t}=q_{i} | \lambda\right)
αt(i)=P(o1,o2,⋯ot,it=qi∣λ)
初值:
α
1
(
i
)
=
π
i
b
i
0
\alpha_{1}(i)=\pi_{i} b_{i 0}
α1(i)=πibi0
递推:对于
t
=
1
,
2
…
T
−
1
\mathrm{t}=1,2 \ldots \mathrm{T}-1
t=1,2…T−1
α
t
+
1
(
i
)
=
(
∑
j
=
1
N
α
t
(
j
)
a
j
i
)
b
i
o
t
+
1
\alpha_{t+1}(i)=\left(\sum_{j=1}^{N} \alpha_{t}(j) a_{j i}\right) b_{i o_{t+1}}
αt+1(i)=(j=1∑Nαt(j)aji)biot+1
最终:
P
(
O
∣
λ
)
=
∑
i
=
1
N
α
T
(
i
)
P(O | \lambda)=\sum_{i=1}^{N} \alpha_{T}(i)
P(O∣λ)=i=1∑NαT(i)
举例:盒子球模型
考察盒子球模型,计算观测向量O="红白红"出现的概率,参数如下:
计算初值:
(3)后向算法:
初值:
β
T
(
i
)
=
1
\beta_{T}(i)=1
βT(i)=1
递推:对于
t
=
T
−
1
,
T
−
2
…
.
1
t=T-1, T-2 \ldots .1
t=T−1,T−2….1
β
t
(
i
)
=
∑
j
=
1
N
(
a
i
j
b
j
t
+
1
β
t
+
1
(
j
)
)
\beta_{t}(i)=\sum_{j=1}^{N}\left(a_{i j} b_{j_{t+1}} \beta_{t+1}(j)\right)
βt(i)=j=1∑N(aijbjt+1βt+1(j))
最终:
P
(
O
∣
λ
)
=
∑
i
=
1
N
π
i
b
i
o
1
β
1
(
i
)
P(O | \lambda)=\sum_{i=1}^{N} \pi_{i} b_{i o_{1}} \beta_{1}(i)
P(O∣λ)=i=1∑Nπibio1β1(i)
HMM(1)
最新推荐文章于 2024-08-20 09:00:00 发布