【问题标题】:Viterbi training or Baum-Welch algorithm to estimate the transition and emission probabilities?Viterbi 训练或 Baum-Welch 算法来估计转换和发射概率?
【发布时间】:2012-11-01 21:22:37
【问题描述】:

我正在尝试使用 Viterbi 算法在 HMM 上找到最可能的路径(即状态序列)。 但是,我不知道需要从观察(数据)中估计的转换和发射矩阵。

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

万一我应该使用维特比训练算法,谁能给我一个好的伪代码(不好找)?

【问题讨论】:

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


    【解决方案1】:

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

    与 Baum-Welch 相比,Viterbi Training 是:

    • 更快
    • 但效果不太好
    • 但这种权衡通常是值得的。

    一些比较研究:

    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 ProcessingArtificial Intelligence a Modern Approachthis 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/

        【讨论】:

          猜你喜欢
          • 2011-07-10
          • 1970-01-01
          • 2015-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-11
          • 2012-01-12
          • 2011-12-19
          相关资源
          最近更新 更多