Alex_McAvoy

想要成为渔夫的猎手

隐马尔可夫模型的预测

【概述】

对于隐马尔可夫模型的预测问题,即:已知模型 λ=(A,B,π) 和观测序列 O=(o1,o2,,oT),求对给定观测序列条件概率 P(I|O) 最大的状态序列 I=(i1,i2,,iT)

有两种预测算法:

  • 近似算法:计算简单,但由于预测的状态序列可能有实际不发生的部分,故不能保证预测的状态序列整体是最有可能的状态序列
  • Viterbi 算法:计算较为复杂,本质是用动态规划求概率最大路径,一条路径对应一条状态

【近似算法】

近似算法的思想是:在每个 t 时刻,选择在该时刻最有可能出现的状态 it,从而得到一个状态序列 I=(i1,i2,,iT),将其作为预测结果

对于给定的隐马尔可夫模型 λ=(A,B,π) 和观测序列 O,在时刻 t 处于状态 qi 的概率 γt(i) 是:

γt(i)=αt(i)βt(i)j=1Nαt(j)βt(j)

在每一时刻 t,最有可能的状态 it 是:

it=argmax1iNyt(i),t=1,2,,T

从而得到状态序列 I=(i1,i2,,iT)

对于上述方法得到的状态序列,可能存在转移概率 aij=0 的相邻状态

【Viterbi 算法】

基本思想

Viterbi 算法的基本思想是动态规划,根据动态规划的原理,最优路径具有这样的特性:如果最优路径在时刻 t 通过结点 it,那么这一路径是从结点 it 到终点 iT 的部分路径,而且对于从 itiT 的所有可能的部分路径来说,必须是最优的

因为假如不是这样,那么从 itiT 就有另一条更好的部分路径存在,如果把它和从 i1 到达 it 的部分路径连接起来,就会形成一条比原来的路径更优的路径,这是矛盾的

依据这一原理,只需从 t=1 时刻开始,递推地计算在 t 时刻状态为 i 的各条部分路径的最大概率,直至得到 t=T 时刻状态为 i 的各条路径的最大概率,时刻 t=T 的最大概率即为最优路径的概率 P,最优路径的终结点 iT 也可同时得到

之后,为了找出最优路径的各个结点,从终结点 iT 开始,由后向前逐步求得结点 iT1,iT2,,i1,得到最优路径 I=(i1,i2,,iT)

算法流程

首先给出两个变量的定义

定义在时刻 t 状态为 i 的所有单个路径 (i1,i2,,it) 中概率最大值为:

δt(i)=maxi1,i2,,it1P(it=i,it1,,i1,ot,,o1|λ),i=1,2,,N

根据定义,可得 δ 的递推公式:

δt+1(i)=maxi1,i2,,itP(it+1=i,it,,i1,ot+1,,o1|λ)=[max1jNδt(j)aji]bi(ot+1)i=1,2,,N;t=1,2,,T1

定义在时刻 t 状态为 i 的所有单个路径 (i1,i2,,it1,i) 中概率最大的路径的第 t1 个结点为:

Ψt(i)=argmax1jNδt1(j)ajii=1,2,,N

输入:隐马尔可夫模型 λ=(A,B,π),观测序列 O=(o1,o2,,oT)

输出:最优路径 I=(i1,i2,,iT)

算法步骤:

Step 1:算法初始化

δ1(i)=πibi(o1),i=1,2,,NΨ1(i)=0,i=1,2,,N

Step 2:对 t=2,3,,T 递推

δt(i)=[max1jNδt1(j)aji]bi(ot+1),i=1,2,,NΨt(i)=argmax1jNδt1(j)ajii=1,2,,N

Step 3:计算最优路径的概率 P 与终结点 iT

P=max1iNδT(i)iT=argmax1iNδT(i)

Step 4:最优路径回溯,对 t=T1,T2,,1

it=Ψt+1(it+1)

求得最优路径 I=(i1,i2,,iT)

感谢您对我的支持,让我继续努力分享有用的技术与知识点!

Gitalking ...