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)详解

基于GMM-HMM的语音识别系统

基于GMM-HMM的语音识别系统

HMM模型和Viterbi算法