Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?
Posted
技术标签:
【中文标题】Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?【英文标题】:Viterbi training or Baum-Welch algorithm to estimate the transition and emission probabilities? 【发布时间】:2012-11-01 21:22:37 【问题描述】:我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。 但是,我不知道需要从观察(数据)中估计的转换和发射矩阵。
要估计这些矩阵,我应该使用哪种算法:Baum-Welch 或 Viterbi 训练算法?为什么?
万一我应该使用维特比训练算法,谁能给我一个好的伪代码(不好找)?
【问题讨论】:
【参考方案1】:来自http://nlp.stanford.edu/courses/lsa352/lsa352.lec7.6up.pdf:
与 Baum-Welch 相比,Viterbi Training 是:
更快 但效果不太好 但这种权衡通常是值得的。
一些比较研究:
罗德里格斯、路易斯·哈维尔和伊内斯·托雷斯。 “Comparative study of the Baum-Welch and Viterbi training algorithms applied to read and spontaneous speech recognition。”在伊比利亚模式识别和图像分析会议上,第 847-857 页。斯普林格柏林海德堡,2003 年。
https://pdfs.semanticscholar.org/e58c/7d1e9d64221e5f0b424f5e22b6dede369c8d.pdf(特别是,看结论部分)Statistics Stack Exchange 上提出了同样的问题:Differences between Baum-Welch and Viterbi training。
【讨论】:
【参考方案2】:如果有足够的资源,您可能应该使用 Baum-Welch(向前-向后)算法而不是 Viterbi 训练 算法(又名分段 k 均值算法),这是一种替代参数估计过程,牺牲了 Baum-Welch 的一些通用性来提高计算效率。一般来说,Baum-Welch 算法会给出导致更好性能的参数,尽管在某些情况下这是not the case. 这是一个不错的comparative study。
此外,请注意,您应该使用 Baum-Welch 算法来估计模型的参数。这使用类似于 EM 算法的方法设置发射概率和传输概率。训练 HMM 后,您将使用 Viterbi 解码 算法来计算最有可能产生观察结果的状态序列。
在参考方面我会推荐Speech and Language Processing、Artificial Intelligence a Modern Approach 或this paper
【讨论】:
【参考方案3】:你必须通过 baum welch 算法来找出隐藏的马尔可夫模型参数。 baum welch 使用前向和后向算法找出 hmm 参数。
我有一个 Python 中 baum welch 算法代码的链接,只需检查一下即可: https://jyyuan.wordpress.com/2014/01/28/baum-welch-algorithm-finding-parameters-for-our-hmm/
【讨论】:
以上是关于Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?的主要内容,如果未能解决你的问题,请参考以下文章
ML-13-3隐马尔科夫模型HMM--Baum-Welch(鲍姆-韦尔奇)
用Python自己写一个分词器,python实现分词功能,隐马尔科夫模型预测问题之维特比算法(Viterbi Algorithm)的Python实现
大道至简机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解---预测问题:维特比算法(Viterbi Algorithm)详解