隐马尔科夫模型

青春壹個敷衍的年華 提交于 2019-12-06 14:35:46

上一篇简单提了一下马尔科夫模型,然后这是他的升级版隐马尔科夫模型的讲解。是状态+观测序列的组合。

首先,这是马尔科夫三个假设,有观测值序列O=O1,O2,O3,O4.....OT,有隐状态序列:Q=q1,q2,q4,q5....qT

 

隐马尔科夫的定义:

概率计算问题

HMM的概率计算问题是HMM三大问题之一。所谓概率计算就是给定一个模型参数已知的HMM和一组观测序列,求这组观测序列由这个HMM所生成的概率。概率计算问题其实评价了模型的好坏,试想如果有两个HMM和一组观测序列,第一个HMM给出的P(O|θ1)P(O|θ1)是0.8,第二个HMM给出的P(O|θ2)P(O|θ2)是0.9。如果给定多组测试观测数据都是这样,那么显然第二个HMM模型更准确一些,性能也更好。HMM的概率计算算法主要有前向算法和后向算法。直接计算法虽然理论上可行但计算复杂度过高实际中不可行,我们直接省略掉,下面先介绍前向算法,然后介绍后向算法。

前向算法

前向算法定义了一个概念,叫前向概率:给定隐马尔科夫模型λλ,定义到时刻t部分观测序列为o1,o2,...oto1,o2,...ot且状态为qiqi的概率为前向概率,记作:

αt(i)=P(o1,o2,...ot,it=qi|λ)αt(i)=P(o1,o2,...ot,it=qi|λ)


有了前向概率,我们就可以递推地求得前向概率αt(i)αt(i)及观测序列概率P(O|λ)P(O|λ)。具体递推过程为:

αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1)αt+1(i)=[∑j=1Nαt(j)aji]bi(ot+1)


其中,ajiaji是转移概率,具体为:

aji=P(it+1=qi|it=qj)aji=P(it+1=qi|it=qj)


而根据前向概率的定义:

αt(j)=P(o1,o2,...ot,it=qj|λ)αt(j)=P(o1,o2,...ot,it=qj|λ)


根据上面提到的齐次马尔科夫假设,有:

aji=P(it+1=qi|it=qj)=P(it+1=qi|o1,o2,...ot,it=qj)aji=P(it+1=qi|it=qj)=P(it+1=qi|o1,o2,...ot,it=qj)


因此可以将αt(j)ajiαt(j)aji合并为:

P(o1,o2,...ot,it=qj,it+1=qi|λ)P(o1,o2,...ot,it=qj,it+1=qi|λ)


在经过求和符号处理之后,有:

∑j=1Nαt(j)aji=P(o1,o2,...ot,it+1=qi|λ)∑j=1Nαt(j)aji=P(o1,o2,...ot,it+1=qi|λ)


然后递推式中的bi(ot+1)bi(ot+1)是观测概率,具体为:

bi(ot+1)=P(ot+1|it+1=qi)=P(ot+1|o1,o2,...ot,it+1=qi)bi(ot+1)=P(ot+1|it+1=qi)=P(ot+1|o1,o2,...ot,it+1=qi)


后面的连等成立是因为应用了前面提到的观测独立性假设。这样,最终αt+1(i)αt+1(i)就可以用概率表示为:

αt+1(i)=P(o1,o2,...ot,ot+1,it+1=qi|λ)αt+1(i)=P(o1,o2,...ot,ot+1,it+1=qi|λ)


这与我们之前对前向概率的定义是一致的。最后,为了得到P(O|λ)P(O|λ),我们只要把马尔科夫状态序列的最后一个状态的所有前向概率进行求和便可以了,具体为:

P(O|λ)=∑i=1NαT(i)=P(o1,o2,...ot,ot+1,...,oT|λ)P(O|λ)=∑i=1NαT(i)=P(o1,o2,...ot,ot+1,...,oT|λ)

 

后向算法

后向算法与前向算法类似,它定义了一个概念叫后向概率:给定隐马尔科夫模型λλ,定义在时刻t状态为qiqi的条件下,从t+1到T的部分观测序列为ot+1,ot+2,...,oTot+1,ot+2,...,oT的概率为后向概率,记作

βt(i)=P(ot+1,ot+2,...,oT|it=qi,λ)βt(i)=P(ot+1,ot+2,...,oT|it=qi,λ)


同样也可以用递推的方法求得后向概率βt(i)βt(i)及观测概率P(O|λ)P(O|λ),由于和前向算法类似,也用到了HMM的齐次马尔科夫假设和观测独立假设,这里就不详细推导了。

 

前向概率和后向概率的应用

有了前向概率和后向概率的基础,我们就可以利用它们来表示一些HMM概率计算的小问题。比如可以将观测序列概率P(O|λ)P(O|λ)统一写成:

P(O|λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)P(O|λ)=∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)


两个求和符号中的αt(i)aijbj(ot+1)βt+1(j)αt(i)aijbj(ot+1)βt+1(j)其实经过概率表示等价于:

αt(i)aijbj(ot+1)βt+1(j)=P(o1,o2,...,oT,it=qi,it+1=qj|λ)αt(i)aijbj(ot+1)βt+1(j)=P(o1,o2,...,oT,it=qi,it+1=qj|λ)


两次求和其实就是将状态qiqi和状态qjqj的所有可能取值都取一遍,N是所有可能的状态数。

 

下面给出一些概率和期望值的计算。

在时刻t处于状态qiqi的概率

 

γt(i)=P(it=qi|O,λ)=P(it=qi,O|λ)P(O|λ)=αt(i)βt(i)∑Nj=1αt(j)βt(j)γt(i)=P(it=qi|O,λ)=P(it=qi,O|λ)P(O|λ)=αt(i)βt(i)∑j=1Nαt(j)βt(j)

 

在时刻t处于状态qiqi且在时刻t+1处于状态qjqj的概率

 

ξt(i,j)=P(it=qi,it+1=qj|O,λ)=P(it=qi,it+1=qj,O|λ)P(O|λ)=αt(i)aijbj(ot+1)βt+1(j)∑Ni=1∑Nj=1αt(i)aijbj(ot+1)βt+1(j)ξt(i,j)=P(it=qi,it+1=qj|O,λ)=P(it=qi,it+1=qj,O|λ)P(O|λ)=αt(i)aijbj(ot+1)βt+1(j)∑i=1N∑j=1Nαt(i)aijbj(ot+1)βt+1(j)

 

利用γt(i)γt(i)和ξt(i,j)ξt(i,j)对各个时刻求和得到有用的期望值

(1)在观测O下状态i出现的期望值为

∑t=1Tγt(i)∑t=1Tγt(i)


解释:出现一次的概率是γt(i)γt(i),那么长度为T的观测下出现的概率就是对T求和。

 

(2)在观测O下由状态i转移的期望值为

∑t=1T−1γt(i)∑t=1T−1γt(i)


解释:即除去当前被转移到的状态剩下T-1个长度。

 

(3)在观测O下由状态i转移到状态j的期望值为

∑t=1T−1ξt(i,j)∑t=1T−1ξt(i,j)


解释:只能有T-1个由状态i转移到状态j的机会。

举个例子:

解题过程:

--------------------- 本文来自 Orange先生 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xmu_jupiter/article/details/50956389?utm_source=copy

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!