我正在尝试使用Viterbi算法在HMM上找到最可能的路径(即状态序列)。然而,我不知道转换和发射矩阵,我需要从观察值(数据)中估计它们。
要估计这些矩阵,我应该使用哪种算法: Baum-Welch算法还是Viterbi训练算法?为什么?
如果我应该使用Viterbi训练算法,有没有人能给我提供一个好的伪代码(它不容易找到)?
发布于 2012-11-15 22:54:46
如果有足够的资源,您可能应该使用鲍姆-韦尔奇(前向-后向)算法,而不是维特比training算法(也称为。分段k均值算法),这是一种替代的参数估计过程,它牺牲了Baum-Welch的一些通用性来提高计算效率。一般来说,鲍姆-韦尔奇算法提供的参数会带来更好的性能,尽管在某些情况下这是not the case.这里是一个很好的comparative study。
此外,请注意,您应该使用Baum-Welch算法来估计模型的参数。这使用类似于EM算法的东西来设置发射概率和传输概率。在训练了HMM之后,您将使用维特比解码算法来计算最可能的状态序列,该序列可以生成您的观察值。
参考资料方面,我推荐使用Speech and Language Processing、Artificial Intelligence a Modern Approach或this paper
发布于 2017-01-01 11:52:43
来自http://nlp.stanford.edu/courses/lsa352/lsa352.lec7.6up.pdf
与鲍姆-韦尔奇相比,
维特比培训:
一些比较研究:
- [https://pdfs.semanticscholar.org/e58c/7d1e9d64221e5f0b424f5e22b6dede369c8d.pdf](https://pdfs.semanticscholar.org/e58c/7d1e9d64221e5f0b424f5e22b6dede369c8d.pdf) (especially, see the conclusion section)
在Statistics Stack Exchange上也提出了同样的问题:Differences between Baum-Welch and Viterbi training。
发布于 2016-06-01 19:18:25
你必须通过baum welch算法来找出隐马尔可夫模型参数。baum welch使用前向和后向算法来寻找hmm参数。
我有一个用python编写的baum welch算法代码的链接:https://jyyuan.wordpress.com/2014/01/28/baum-welch-algorithm-finding-parameters-for-our-hmm/
https://stackoverflow.com/questions/13360892
复制相似问题