9

我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。但是,我不知道转换和发射矩阵,我需要从观察(数据)中估计。

要估计这些矩阵,我应该使用哪种算法:Baum-Welch 或 Viterbi 训练算法?为什么?

如果我应该使用维特比训练算法,谁能给我一个好的伪代码(不容易找到)?

4

3 回答 3

14

给定足够的资源,您可能应该使用 Baum-Welch(向前-向后)算法而不是 Viterbi训练算法(又名分段 k 均值算法),这是一种替代参数估计过程,牺牲了 Baum-Welch 的一些通用性以提高计算效率. 一般来说,Baum-Welch 算法会给出导致更好性能的参数,尽管在某些情况下情况并非如此。这是一个很好的比较研究

此外,请注意您应该使用 Baum-Welch 算法来估计模型的参数。这使用类似于 EM 算法的方法设置发射概率和传输概率。训练 HMM 后,您将使用 Viterbi解码算法来计算最有可能产生观察结果的状态序列。


参考方面,我会推荐Speech and Language ProcessingArtificial Intelligence a Modern Approach这篇论文

于 2012-11-15T14:54:46.217 回答
0

来自http://nlp.stanford.edu/courses/lsa352/lsa352.lec7.6up.pdf

与 Baum-Welch 相比,Viterbi Training 是:

  • 快多了
  • 但效果不太好
  • 但这种权衡往往是值得的。

一些比较研究:

在 Statistics Stack Exchange: Differences between Baum-Welch and Viterbi training上也提出了同样的问题。

于 2017-01-01T03:52:42.987 回答
-1

你必须通过鲍姆韦尔奇算法找出隐藏的马尔可夫模型参数。baum welch 使用前向和后向算法来找出 hmm 参数。

我有一个 python 中 baum welch 算法代码的链接,只需检查一下即可: https ://jyyuan.wordpress.com/2014/01/28/baum-welch-algorithm-finding-parameters-for-our-hmm/

于 2016-06-01T11:18:25.387 回答