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.