Forward-backward算法和Viterbi算法有啥区别?
Posted
技术标签:
【中文标题】Forward-backward算法和Viterbi算法有啥区别?【英文标题】:What is the difference between Forward-backward algorithm and Viterbi algorithm?Forward-backward算法和Viterbi算法有什么区别? 【发布时间】:2010-12-26 07:22:05 【问题描述】:n-gram 模型上的 Forward-backward 算法和隐马尔可夫模型 (HMM) 上的 Viterbi 算法有什么区别?
当我回顾这两种算法的实现时,我唯一发现的是交易概率来自不同的概率模型。
这两种算法有区别吗?
【问题讨论】:
【参考方案1】:Forward-Backward 算法结合了前向步和后向步来获得在特定时间处于每个状态的概率。因此,对所有时间步执行此操作可以为我们提供每次最可能的状态序列(尽管不能保证是有效序列,因为它考虑了每一步的单个状态,并且可能发生概率p(q_i -> q_j)=0
在过渡模型),换句话说:
,其中
另一方面,维特比算法通过最大化不同的最优性标准来找到给定观察序列的最可能的状态序列:
我建议你参考这篇著名的论文以获得详细的解释(参见问题 #2):
LAWRENCE R. RABINER,关于 隐马尔可夫模型和选择 语音识别中的应用
【讨论】:
【参考方案2】:简而言之:
如果只想预测某个特定时间最可能的标记是什么,则使用 Forward-Backward。它将考虑每个可能的序列并对它们进行平均以找到当时最可能的令牌。因此,当您考虑所有可能的序列时,您将返回的序列将不是真正的序列,而是最可能的标记的集合。
维特比用于查找最可能的事件序列。这将查看每个序列并简单地选择最有可能的序列。
【讨论】:
【参考方案3】:看看Rabiner's paper 的第 262 - 264 页,应该都清楚了。 以下是对您的问题的直接引用的答案——来自这篇论文:
"...需要注意的是,维特比算法是类似的(除了 对于回溯步骤)在执行中向前 前向后向算法的计算(公式 19-21)。这 主要区别是(公式 33a)中的最大化 状态,它用于代替(等式)中的求和过程 20)。”
【讨论】:
以上是关于Forward-backward算法和Viterbi算法有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
PSO算法、蚁群算法和遗传算法matlab求解函数最值问题,程序怎么编写?
算法 -- 数据结构和算法的关系算法定义和特性算法设计的要求算法效率的度量方法函数的渐近增长算法时间复杂度 算法空间复杂度