维特比训练或鲍姆 - 韦尔奇算法来估计过渡和排放概率?

时间:2012-11-13 12:35:44

标签: algorithm hidden-markov-models viterbi expectation-maximization

我正在尝试使用维特比算法在HMM上找到最可能的路径(即状态序列)。 但是,我不知道过渡和发射矩阵,我需要从观测结果(数据)中估算出来。

要估算这些矩阵,我应该使用哪种算法:Baum-Welch还是Viterbi训练算法?为什么呢?

如果我应该使用维特比训练算法,任何人都可以为我提供一个好的伪码(它不容易找到)吗?

3 个答案:

答案 0 :(得分:13)

如果有足够的资源,您应该使用Baum-Welch(前向 - 后向)算法而不是Viterbi 训练算法(也称为分段k均值算法),这是一个替代参数估计过程,牺牲了Baum-Welch的一些计算效率的一般性。一般来说,Baum-Welch算法会给出能够提高性能的参数,尽管有些情况下not the case.这是一个不错的comparative study

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


参考方面我建议Speech and Language ProcessingArtificial Intelligence a Modern Approachthis paper

答案 1 :(得分:0)

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

  与Baum-Welch相比,维特比训练是:

     
      
  • 快得多
  •   
  • 但是效果不好
  •   
  • 但这种权衡往往是值得的。
  •   

一些比较研究:

在统计堆栈交换中提出了同样的问题:Differences between Baum-Welch and Viterbi training

答案 2 :(得分:-1)

你必须通过baum welch算法来找出隐藏的马尔可夫模型参数。 baum welch使用前向和后向算法找出hmm参数。

我在python中有一个baum welch算法代码链接只需检查它: https://jyyuan.wordpress.com/2014/01/28/baum-welch-algorithm-finding-parameters-for-our-hmm/