维特比Viterbi算法详解

版权声明:博主Github链接:https://github.com/geeklili , 本篇文章链接: https://blog.csdn.net/weixin_42057852/article/details/83310651
这个算法倒是不难,你要是在学条件随机场,恭喜你,来对地方了

维特比算法(英语:Viterbi algorithm)是一种动态规划算法。它用于寻找最有可能产生观测事件序列的维特比路径——隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。
维特比算法利用动态规划,可以解决任何一个图中的最短路径问题。维特比算法是针对一个特殊的图——篱笆网络(Lattice)的有向图最短路径的问题而提出的。它之所以重要,是因为凡是使用隐含马尔可夫模型描述的问题都可以使用它来解码,包括今天的数字通信、语音识别、机器翻译、拼音转汉字、分词等。接下来我们用一个例子来说明(拼音转汉字):

在这里插入图片描述
目前图上的所有状态已经固定,其实在计算的时候,对于同一个拼音,就有很多的汉字,所以状态并不是固定的,比如拼音:wo,则对应的汉字可能为:喔,窝,我,卧等汉字,拼音:shi,则对应的汉字又可能为:师,实,史,是等汉字。
假设每个拼音都有四个候选词,则对于第一个拼音为第一个状态,第一个状态又有四种可能的汉字,用图可以表示为:
在这里插入图片描述
1.如果概率最大的路径p(或者说最短路径)经过某个点,比如途中的X22,那么这条路径上的起始点S到X22的这段子路径Q,一定是S到X22之间的最短路径。否则,用S到X22的最短路径R替代Q,便构成一条比P更短的路径,这显然是矛盾的。证明了满足最优性原理。
2.从S到E的路径必定经过第i个时刻的某个状态,假定第i个时刻有k个状态,那么如果记录了从S到第i个状态的所有k个节点的最短路径,最终的最短路径必经过其中一条,这样,在任意时刻,只要考虑非常有限的最短路即可。
3. 结合以上两点,假定当我们从状态i进入状态i+1时,从S到状态i上各个节的最短路径已经找到,并且记录在这些节点上,那么在计算从起点S到第i+1状态的某个节点Xi+1的最短路径时,只要考虑从S到前一个状态i所有的k个节点的最短路径,以及从这个节点到Xi+1,j的距离即可。

猜你喜欢

转载自blog.csdn.net/weixin_42057852/article/details/83310651