隐马尔科夫模型 (HMM) 中的三个主要问题及相关算法 (待续)

隐马尔科夫模型 (HMM) 中的三个主要问题及相关算法

终于赶完了所有的due,现在可以坐下来整理一下隐马尔科夫模型 (HMM) 了。HMM是马尔科夫模型的推广,其同时对观测到的事件 (observed event) 和其背后的隐含状态 (hidden event) 建模,在Speech Recognition,Part-of-speech Tagging等问题上均有应用。本文针对HMM中的三个主要问题:评价(Evaluation or Likelihood Computation)、解码 (Decoding) 和训练 (Training) 以及其对应的算法给以详细的介绍。


0. HMM的定义

下面让我们首先给出HMM的定义,一个HMM主要由以下几个部分组成

  • N 个状态,我们用 Q=q1q2qN 来表示
  • 转移概率矩阵 An×n={aij},i,j{1,2,,N} ,其中 aij 表示从状态 i 转移到状态 j 的概率,因此有 Ni=1aij=1,i
  • 包含T个观测结果的序列,用 O=o1o2oT 来表示
  • 一系列生成概率 (emission probability),记作 B={bi(ot)},i{1,2,,N},t{1,2,,T} ,表示状态 i 产生观测结果 ot 的概率
  • 两个特殊状态:起始状态 q0 和终止状态 qF ,这两个状态不会产生观测值

1. 评价问题和前向算法 (Evaluation: The Forward Algorithm)

所谓评价问题便是去计算HMM关于某一特定观测序列的似然比 (likelihood),具体来说便是:

评价问题:给定一个HMM模型,参数为 λ=(A,B) 和一个观测序列 O=o1o2oT ,计算观测序列的似然比 P(O|λ)

要计算观测序列 O=o1o2oT 的似然比 P(O|λ) ,我们需要知道产生这一观测序列所对应的状态序列 Q=q1q2qT ,其中状态 qi 产生观测结果 oi 。如果已知这样一组状态序列,那么我们的似然比便可以按照下边的公式计算出来:

P(O,Q|λ)=P(O|Q,λ)×P(Q|λ)=i=1TP(oi|qi)×P(qi|qi1)
然而在评价问题中,由于没有给定观测序列所对应的状态序列,因此似然比的计算需要遍历到所有可能的状态序列,因此在评价问题中似然比的计算应使用下边的公式:
P(O|λ)=QP(O,Q|λ)=QP(O|Q,λ)×P(Q|λ)
考虑到HMM有 N 个状态且观测序列的长度为 T ,因此所有可能的 (隐含) 状态序列个数为 NT ,在实际中当 N T 很大时,这种按照定义的计算方法代价非常高,因此我们要采用下边的复杂度为 O(N2T) 前向算法 (Forward Algorithm)。

前向算法是一种动态规划算法,它通过存储中间的临时变量 (概率) 到一系列中间变量 (forward trellis) αt(j) 来简化计算,其表示在获得最初 t 个观测值 o1,,ot 后,处于状态 j 的概率,即

αt(j)=P(o1,o2ot,qt=j|λ)
这里 qt=j 即表示隐含状态序列中第 t 个状态为状态 j 。那么具体如何计算 αt(j) 呢,我们需要对所有到达状态 j 的序列进行求和,那么如果利用 αt(j) 的递推特性,我们可以得到下边的表达式:
αt(j)=i=1Nαt1(i)×aij×bj(ot)
这个式子不难理解,假定我们已经获得了在最初 t1 个观测值 o1,,ot1 后,处于状态 i 的概率 αt1(i) ,那么利用转移概率矩阵和生成概率矩阵的值,我们便可以得到从状态 i 转移到状态 j 并生成观测值 ot 的概率,最后对所有可能的状态 i 求和便得到我们需要的 αt(j)

基于这一中间变量的形式,那我们最终所要求的似然比便可以表示为 αT(qF) ,即在获得完整观测序列后处于终止状态的概率。有了这一递推式和目标,再结合初始条件便可以得到完整的前向算法如下:

前向算法

  1. 初始化
    α1(j)=a0j×bj(o1);1jN
  2. 递归 (注意状态 0 和 F 不会产生观测值)
    αt(j)=i=1Nαt1(i)×aij×bj(ot);1jN,1<tT
  3. 终止
    P(O|λ)=αT(qF)=i=1NαT(i)×aiF

2. 解码问题和维特比算法 (Decoding: The Viterbi Algorithm)

(待续)

你可能感兴趣的:(概率图模型,自然语言处理,机器学习)