隐马尔科夫模型——维特比算法

来源:互联网 发布:青岛衣知她有限公司 编辑:程序博客网 时间:2024/06/05 18:09

前言

隐马尔科夫有三个基本问题:概率问题、学习问题、预测问题。本文主要讨论预测问题的解法——维特比算法。阅读本文的前提是已经明白什么是隐马尔科夫模型(三要素、基本假设)。本文的所有符号及解释,请查看上一篇博客:隐马尔科夫模型——基本概念

什么是预测问题

预测问题又称之为解码问题,是指:已知状态转移矩阵、观测矩阵和观测序列,求该序列下最有可能的状态序列。

已知模型λ=(A,B,π)和观测序列O=(o1,o2,...,oT),求使条件概率P(I|O)最大的状态序列I=(i1,i2,...,iT)

维特比算法

维特比算法实际是用动态规划解决预测问题——求概率最大的路径(最优路径)最优路径具有这样的特性:如果最优路径在t时刻经过状态节点i,那么该节点到状态序列终点所经过的路径也一定是最优路径。假如不是,那么从该节点到终点就会有另外一条更有路径存在,再连接上起点到该状态节点i,会产生一条新的最优路径,原路径就不是最优的了。这是矛盾的。个人觉得类似迪杰斯特拉求最短路算法。

首先,提到两个变量:δψ

δt(i)代表在时刻t状态为i的所有路径(i1,i2,...,it)中概率最大值。

δt(i)=maxP(it=i,it1,...,i1,ot,...,o1|λ)
即时刻1到时刻t的观测状态已确定,时刻1到时刻t-1不可观测状态序列也已确定,时刻t的状态选定后,最大概率是多少。变量δ的递推公式为:
δt+1(i)=max[δt(j)aji]bi(ot+1)
代表时刻t位于状态j,时刻t+1位于转移到状态i且观测到ot+1的最大概率。此时我们并没有找到那个时刻t的最可能状态j(使时刻1到t的观测序列确定,时刻1到t-1的不可观测状态确定条件下,使当前概率最大的状态),但我们找到了该最可能状态求得的最大概率是多少。我们递推计算直到时刻T状态为j的各条路径的最大概率,就得到了最优路径的概率P。从而最优路径的终点状态iT也同时得到。随后,为了求出最优路径上的各个节点,从最终节点开始,由后往前(利用下面的变量ψ)逐步求得使下一个时刻概率最大的当前时刻状态,就可以得打最优路径各个节点,这就是维特比算法。

ψ代表时刻t状态为i所有单个路径(i1,i2,...,it1,i)中概率最大的路径的第t-1个节点为:

ψt(i)=argmax[ψt1(j)aji]i=1,2,...,N
代表从时刻t-1状态j转移到时刻t状态i概率最大时,时刻t-1的状态j是哪一个状态。

算法过程

  1. 初始化:
    δ1(i)=πibi(o1)i=1,2,...,N
    ψ1(i)=0i=1,2,...,N
  2. 递推:对t=2,3,…,T
    δt(i)=max[δt1(j)aji]bi(ot)i=1,2,..,N
    ψt(i)=argmax[δt1(j)aji]i=1,2,...,N
  3. 终止
    P=maxδT(i)
    iT=argmax[δT(i)]
  4. 最优路径回溯:对t=T-1,…,1
    it=ψt+1(it+1)
    求得最优路径I=(i1,i2,...,iT)

举例计算

应用问题已经在上一篇隐马尔科夫模型——基本概念中举过,不再重复描述。本例稍微在原来基础上改变实验次数为三次,转移矩阵概率和观测概率重新设置,具体如下:这里写图片描述
这里写图片描述