我正在尝试使用Viterbi算法在HMM上找到最可能的路径(即状态序列)。但是,我不知道转移矩阵和发射矩阵,这需要从观测数据中估计。
为了估计这些矩阵,我应该使用哪个算法:Baum-Welch算法还是Viterbi训练算法?为什么?
如果我应该使用Viterbi训练算法,有人可以提供一个好的伪代码吗?
为了估计这些矩阵,我应该使用哪个算法:Baum-Welch算法还是Viterbi训练算法?为什么?
如果我应该使用Viterbi训练算法,有人可以提供一个好的伪代码吗?
来自http://nlp.stanford.edu/courses/lsa352/lsa352.lec7.6up.pdf:
相对于 Baum-Welch 算法,Viterbi 训练:
- 速度更快
- 但效果不如 Baum-Welch 好
- 但通常这种权衡是值得的。
一些比较研究:
Rodríguez, Luis Javier和Inés Torres。"应用于语音识别的Baum-Welch和Viterbi训练算法的比较研究。"在伊比利亚模式识别和图像分析会议上,第847-857页。Springer Berlin Heidelberg,2003年。
统计学堆栈交换网站上也有同样的问题:Baum-Welch和Viterbi训练之间的区别。
你需要通过 Baum Welch 算法来找出隐马尔可夫模型参数。Baum Welch 使用前向和后向算法来找出 HMM 参数。
我有一个链接提供 Python 中的 Baum Welch 算法代码,可以看一下: https://jyyuan.wordpress.com/2014/01/28/baum-welch-algorithm-finding-parameters-for-our-hmm/