维特比算法 (Viterbi algorithm) 是机器学习中应用非常广泛的动态规划算法,在求解隐马尔科夫、条件随机场的预测以及seq2seq模型概率计算等问题中均用到了该算法。实际上,维特比算法不仅是很多自然语言处理的解码算法,也是现代数字通信中使用最频繁的算法。在介绍维特比算法之前,先回顾一下隐马尔科夫模型,进而介绍维特比算法的计算步骤。
以下为一个简单的隐马尔科夫模型,如下图所示:
依据马尔科夫假设,上式等价于:
在隐马尔科夫链中,任意时刻t下状态的值有多个,以拼音转汉字为例,输入拼音为“yike”可能有的值为一棵,一刻或者是一颗等待,用符号xij表示状态xi的第j个可能值,将状态序列按值展开,就得到了一个篱笆网了,这也就是维特比算法求解最优路径的图结构: