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