概率计算算法
一、直接计算法
此种算法想要直接通过概率公式进行计算,首先求出状态序列与观测序列的联合概率密度
P(O,I|λ)
P
(
O
,
I
|
λ
)
,之后对所有可能的状态序列进行求和,即可得到
P(O|λ)
P
(
O
|
λ
)
,即利用如下公式:
P(I|λ)=πi1ai1i2ai2i3⋯aiT−1iT
P
(
I
|
λ
)
=
π
i
1
a
i
1
i
2
a
i
2
i
3
⋯
a
i
T
−
1
i
T
P(O|I,λ)=bi1(o1)bi2(o2)⋯biT(oT)
P
(
O
|
I
,
λ
)
=
b
i
1
(
o
1
)
b
i
2
(
o
2
)
⋯
b
i
T
(
o
T
)
然而,此种算法计算量太大,不可实现。
二、前向算法
给定隐马尔可夫模型,定义到时刻t部分观测序列且状态为某个状态的概率为前向概率,记为:
αt(i)=P(o1,o2,⋯,ot,it=qi|λ) α t ( i ) = P ( o 1 , o 2 , ⋯ , o t , i t = q i | λ )
前向算法:
输入:隐马尔可夫模型,观测序列
输出:观测序列概率
(1)初值: α1(i)=πibi1(o1) α 1 ( i ) = π i b i 1 ( o 1 )
(2)递推: αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1) α t + 1 ( i ) = [ ∑ j = 1 N α t ( j ) a j i ] b i ( o t + 1 )
(3)终止: P(O|λ)=∑i=1NαT(i) P ( O | λ ) = ∑ i = 1 N α T ( i )
三、后向算法
当模型确定且t时刻的状态确定时,从t+1到T的部分观测序列为 ot+1,ot+2,⋯,oT o t + 1 , o t + 2 , ⋯ , o T 的概率为后向概率,为: βt(t)=P(ot+1,ot+2,⋯,oT|it=qi,λ) β t ( t ) = P ( o t + 1 , o t + 2 , ⋯ , o T | i t = q i , λ )
输入:隐马尔可夫模型,观测序列
输出:观测序列概率
(1) βT(i)=1,i=1,2,⋯,N β T ( i ) = 1 , i = 1 , 2 , ⋯ , N
(2) βt(i)=∑j=1Naijbj(ot+1)βt+1(j) β t ( i ) = ∑ j = 1 N a i j b j ( o t + 1 ) β t + 1 ( j )
(3) P(O|λ)=∑i=1Nπibi(o1)β1(i) P ( O | λ ) = ∑ i = 1 N π i b i ( o 1 ) β 1 ( i )
四、一些概率与期望的计算
1、定义 γt(i)=P(it=qi|O,λ) γ t ( i ) = P ( i t = q i | O , λ ) ,则有:
γt(i)=αt(i)βt(i)∑j=1Nαt(j)βt(j) γ t ( i ) = α t ( i ) β t ( i ) ∑ j = 1 N α t ( j ) β t ( j )
2、定义 ξt(i,j)=P(it=qi,it+1=qj|O,λ) ξ t ( i , j ) = P ( i t = q i , i t + 1 = q j | O , λ ) ,则有:
ξt(i,j)=αt(i)aijbj(ot+1)βt+1(i)∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(i) ξ t ( i , j ) = α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( i ) ∑ i = 1 N ∑ j = 1 N α t ( i ) a i j b j ( o t + 1 ) β t + 1 ( i )
3、期望
在观测O下状态i出现的期望值: ∑t=1Tγt(i) ∑ t = 1 T γ t ( i )
在观测O下由状态i转移的期望值: ∑t=1T−1γt(i) ∑ t = 1 T − 1 γ t ( i )
在观测O下由状态i转移到状态j的期望值: ∑t=1T−1ξt(i,j) ∑ t = 1 T − 1 ξ t ( i , j )
学习算法
一、监督学习方法
已给训练数据包括S个长度相同的观测序列和对应的状态序列,利用极大似然估计来估计隐马尔可夫模型的参数
1、转移概率的估计:
aˆij=Aij∑j=1NAij
a
^
i
j
=
A
i
j
∑
j
=
1
N
A
i
j
2、观测概率的估计:
bˆj(k)=Bjk∑k=1MBjk
b
^
j
(
k
)
=
B
j
k
∑
k
=
1
M
B
j
k
3、初始状态概率
πi
π
i
为S个样本中初始状态为
qi
q
i
的频率
二、Baum-Welch算法
训练数据只包括S个长度为T的观测序列,目标是学习隐马尔可夫模型的参数,将观测序列数据看作观测数据O,状态序列数据看作不可观测的隐数据I,则模型变为:
P(O|λ)=∑IP(O|I,λ)P(I|λ)
P
(
O
|
λ
)
=
∑
I
P
(
O
|
I
,
λ
)
P
(
I
|
λ
)
1、确定完全数据的对数似然函数
logP(O,I|λ)
log
P
(
O
,
I
|
λ
)
2、E步:求Q函数
Q(λ,λ¯¯¯)=∑IlogP(O,I|λ)P(O,I|λ¯¯¯)
Q
(
λ
,
λ
¯
)
=
∑
I
log
P
(
O
,
I
|
λ
)
P
(
O
,
I
|
λ
¯
)
M步:求极大
具体算法:
输入:观测数据
输出:隐马尔可夫模型参数
(1)初始化
对n=0选取
a(0)ij,bj(k)(0),π(0)i
a
i
j
(
0
)
,
b
j
(
k
)
(
0
)
,
π
i
(
0
)
得到模型
λ(0)=(A(0),B(0),π(0))
λ
(
0
)
=
(
A
(
0
)
,
B
(
0
)
,
π
(
0
)
)
(2)递推
a(n+1)ij=∑t=1T−1ξt(i,j)∑t=1T−1γt(i)
a
i
j
(
n
+
1
)
=
∑
t
=
1
T
−
1
ξ
t
(
i
,
j
)
∑
t
=
1
T
−
1
γ
t
(
i
)
bj(k)(n+1)=∑t=1,ot=vkTγt(j)∑t=1Tγt(i)
b
j
(
k
)
(
n
+
1
)
=
∑
t
=
1
,
o
t
=
v
k
T
γ
t
(
j
)
∑
t
=
1
T
γ
t
(
i
)
π(n+1)i=γ1(i)
π
i
(
n
+
1
)
=
γ
1
(
i
)
(3)终止
得到模型参数
λ(n+1)=(A(n+1),B(n+1),π(n+1))
λ
(
n
+
1
)
=
(
A
(
n
+
1
)
,
B
(
n
+
1
)
,
π
(
n
+
1
)
)