zoukankan      html  css  js  c++  java
  • HMM系列之四:Forward-Backward Algorithm and Summary

    Forward-Backward Algorithm
     
    与HMM相关的有用的问题,往往是 Evaluation 和 Decoding,taeny可以评测一个模型的相对可用性,或者估计某个模型实际上在做什么。这两种做法都依赖于 HMM 参数的先验知识—— the state transition matrix, the observation matrix, 以及 the π vector.
     
    在很多情况下这些确实难以获得的,这就是 learning problem. Forward-backward algorithm可以用于 在给定观测序列以及 隐式集合 hidden set 的情况下,进行估计。
     
    一个应用场景就是语音处理的数据库,语音可以采用 Markov Process进行建模,观测 observations 可以建模为可识别的状态,可是没有直接的方式来生成 HMM 参数。
     
    Forward-backward algorithm 并不是特别难理解,可是却比 forward algorithm 和 Viterbi algorithm 要复杂。由于这个原因,这里不会详细介绍,不过会在 Summary 一章中给出参考文献。
     
    总结一下来说,这个算法先对 HMM 参数做一个初始的猜测,然后通过评价价值逐步精化 refining,降低误差。因此,实际上该算法是在执行一种梯度下降 Gradient Descent,找到一个最小的误差。
     
    对于每个执行网格 Execution Trellis 上的状态,及计算到达该状态的 forward probability,同事也计算生成该模型最终状态的 backward probability。这两种计算都可以通过递归进行。通过 adjustment 可以提高中间的概率,这些 adjustments 构成了算法的基础。
     
    Summary
     
    一般情况下,模式总是作为一个时间序列的一部分出现,这种连续性可以用来辅助识别过程。通常会对时间过程 time based process 做一些假设,例如过程的状态只依赖于前 N 个状态,这样可以得到一个 order N markov model。最简单的情况是 N =1.
     
    有很多过程状态 process states (patterns) 不能直接观察、可是却能间接地、概率地通过另一组 patterns 来进行观察,于是可以定义一个 HMM。这些模型在很多领域中都有价值。
     
    这样的时机的过程的模型可以解决三类问题:
    Evaluation:Forward Algorithm;
    Decoding: Viterbi Algorithm;
    Learning:forward-backward algorithm.
     
    HMM已经证明在很多时机系统中都有重要的价值,缺点是过于简单的假设 (over-simplification associated with the markov assumption),也就是状态只依赖于前面几个状态,而且这种依赖关系是时间无关的 time independent.
     
    对HMM的更详细的介绍可以参考:
    L R Rabiner and B H Juang, `An introduction to HMMs', iEEE ASSP Magazine, 3, 4-16.
  • 相关阅读:
    数学专业的数学与计算机专业的数学的比较(转)
    vim的复制粘贴小结(转)
    (转)会议期刊论文发表介绍(计算机科学领域)
    字符串最后一个单词的长度(华为在线训练)
    (转)初识suse——linux
    (转)C++中返回对象的情形及RVO
    mystring c++ 自己的string 封装
    std::string
    FTP 1.0
    conflicting types for xxxx错误 (转)
  • 原文地址:https://www.cnblogs.com/zhang123shuo/p/5674331.html
Copyright © 2011-2022 走看看