前言
隐马尔科夫有三个基本问题:概率问题、学习问题、预测问题。本文主要讨论预测问题的解法——维特比算法。阅读本文的前提是已经明白什么是隐马尔科夫模型(三要素、基本假设)。本文的所有符号及解释,请查看上一篇博客:隐马尔科夫模型——基本概念
什么是预测问题
预测问题又称之为解码问题,是指:已知状态转移矩阵、观测矩阵和观测序列,求该序列下最有可能的状态序列。
已知模型
λ=(A,B,π) 和观测序列O=(o1,o2,...,oT) ,求使条件概率P(I|O) 最大的状态序列I=(i1,i2,...,iT) 。
维特比算法
维特比算法实际是用动态规划解决预测问题——求概率最大的路径(最优路径)最优路径具有这样的特性:如果最优路径在t时刻经过状态节点i,那么该节点到状态序列终点所经过的路径也一定是最优路径。假如不是,那么从该节点到终点就会有另外一条更有路径存在,再连接上起点到该状态节点i,会产生一条新的最优路径,原路径就不是最优的了。这是矛盾的。个人觉得类似迪杰斯特拉求最短路算法。
首先,提到两个变量:
算法过程
- 初始化:
δ1(i)=πibi(o1),i=1,2,...,N ψ1(i)=0,i=1,2,...,N - 递推:对t=2,3,…,T
δt(i)=max[δt−1(j)aji]bi(ot),i=1,2,..,N ψt(i)=argmax[δt−1(j)aji],i=1,2,...,N - 终止
P∗=maxδT(i) i∗T=argmax[δT(i)] - 最优路径回溯:对t=T-1,…,1求得最优路径
i∗t=ψt+1(i∗t+1) I∗=(i∗1,i∗2,...,i∗T)
举例计算
应用问题已经在上一篇隐马尔科夫模型——基本概念中举过,不再重复描述。本例稍微在原来基础上改变实验次数为三次,转移矩阵概率和观测概率重新设置,具体如下: