给定一个已训练的HMM,即转移矩阵A和B 以及一个新的观察序列W=w_1,w_2,,,,w_N.。我们希望找到最佳的状态序列T=t_1,t_2,....t_N 来解释该观察序列。
这一过程可以通过使用维特比算法实现,该算法试图找到总体上最佳的状态序列 T=t_1,t_2,t_N。 一般来说我们还可以使用另一种后验解码的算法,该算法独立得为序列中每个位置i 选择后验概率最高的状态。
维特比算法:
维特比算法实际上是用动态规划解隐马尔科夫模型的预测问题,即用动态规划求概率最大的路径。
在HMM在中,这些路径对应着一个状态序列,根据动态规划的原理,如果最优状态序列在时刻i 通过结点t_i,那么这一状态序列从结点t_i 到终点t 的部分状态序列,对于从t_i 到t 所有可能的部分状态序列来说,必须是最优的。因为如果不是最优的,那么我们就能从t_i 到t 寻找一个更好的状态序列以加大获得观察序列的概率。
定义在时刻i 状态为t 的所有单个路径中概率最大值为,维特比算法可以通过使用马尔科夫假设和如下定义的两个函数计算上式当个路径的最大值。
如下计算每一个状态最可能的前面状态:
维特比算法使用一个被称为trellis 的HMM 表征,它折叠了每一个位置的所有可能状态,并做出了非常明确的独立性假设,每一个位置仅依赖于前一个位置。通过使用维特比算法,转移概率矩阵,可以将数据填充到trellis 图表中,并快速高效的找到维特比路径。