使用Viterbi训练或Baum-Welch算法来估计转移和发射概率?

9
我正在尝试使用Viterbi算法在HMM上找到最可能的路径(即状态序列)。但是,我不知道转移矩阵和发射矩阵,这需要从观测数据中估计。
为了估计这些矩阵,我应该使用哪个算法:Baum-Welch算法还是Viterbi训练算法?为什么?
如果我应该使用Viterbi训练算法,有人可以提供一个好的伪代码吗?
3个回答

14
如果有足够的资源,您应该使用Baum-Welch (forward-backward)算法来替代Viterbi training算法(即分段k-means算法),后者是一种折衷计算效率以牺牲部分Baum-Welch普适性的参数估计过程。一般来说,Baum-Welch算法将提供导致更好性能的参数,尽管存在情况不是这样的。这里有一个很好的比较研究文章。

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


参考文献建议:Speech and Language Processing人工智能的现代方法这篇论文。


0

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

相对于 Baum-Welch 算法,Viterbi 训练:

  • 速度更快
  • 但效果不如 Baum-Welch 好
  • 但通常这种权衡是值得的。

一些比较研究:

统计学堆栈交换网站上也有同样的问题:Baum-Welch和Viterbi训练之间的区别


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接