回顾
在之前的两篇文章中,我已经介绍了HMM的基本概念以及如何求解模型的参数。但是,还有一个问题仍然没有解决,那就是如何根据得到的模型得到最优的状态序列。在这篇文章中,我会来解决这个遗留的问题。
最直接的求解方式
采用局部最优的方式。那就是对于t=1,2,3,…T,都去选择那个使Ot发生概率最大的那个状态作为latent state。但是这种方法有一个问题,就是形成序列后发现存在某两个状态的转移概率为0,也就是说这样产生的序列可能是不可能存在的。那么该如何从全局最优的角度出发去思考这个问题呢?答案就是使用基于动态规划的维特比算法。
维特比算法
既然利用了动态规划的思想,那么也就是需要找到一个局部状态,以及合适的递推公式。在HMM的问题中,维特比算法定义了两个局部状态。
1.在时刻t隐藏状态为i的所有可能的状态转移路径(i1,i2,…it)发生的概率最大值。记为𝛿𝑡(𝑖)。
从而我们也可以得到𝛿的递推公式。
2.在时刻𝑡隐藏状态为𝑖的所有单个状态转移路径(𝑖1,𝑖2,…,𝑖𝑡−1,𝑖)中概率最大的转移路径中第𝑡−1个节点的隐藏状态。记为Ψ𝑡(𝑖) 。
同时我们也很容易得到它的递推公式。
根据上面的定义,我们可以写出维特比算法的整个流程如下。
参考:https://www.cnblogs.com/pinard/p/6991852.html