关于隐马尔可夫模型中viterbi算法理解,修正大部分人理解错误
viterbi算法是一种动态规划算法,用于寻找最优隐含状态序列。(原谅我不会输公式)
- 在HMM中,viterbi算法用于实现在给定观察序列O和模型参数时查找最优隐藏状态序列。
但是我发现好多资料上提供算法不一致,使人混淆,所以将我的理解放在这,应该没问题。
算法出现歧义的地方在(2)的递推算法的理解上,max和argmax对应的是右边的整个式子还是单指中括号内部,我发现李航的《统计学习方法》中就是用max最大化中括号内部程式,该做法的问题是没考虑b(o)对维特比变量概率的影响,所以应该不对。我又看了宗成庆的《统计自然语言处理》,然后在IEEE上下载了 the viterbi algorithm,发现过程应该如下:
伪代码实现流程:
即t+1时刻维特比变量和t时刻维特比变量并没有绝对关系,每一次迭代都是从时刻1重新计算最优路径。
viterbi algorithm算法文档点击打开链接