机器学习笔记3:隐马尔科夫模型HMM(一)简介及使用前向算法求观测序列的概率

1. 模型简介

 隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,主要用于时序数据建模,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。

(1)状态变量 {y1,y2, ... ,yn},其中yi 属于 Y,表示第i个时刻的系统变量。

        状态变量通常是隐藏的,不可被观测的,所以也称为隐变量。 设每个时刻可能有N种状态,取值范围是 {s1,s2, ... ,sN}.

(2)观测变量 {x1,x2, ... ,xn }, 其中xi属于X, 表示在第i时刻的观测值。观测变量可以取连续的值,也可取离散的值,此处仅考虑取离散值的情况。每个时刻的观测值可能有M种情况,取值范围为 {o1,o2, ... ,oM}。

(3)HMM的图结构

       a. 在任意时刻,观测变量的取值仅依赖于状态变量,即xt由yt决定

       b. t时刻的状态yt仅依赖于t-1时刻的状态yt-1,这就是所谓的马尔科夫链。

       基于这种依赖关系,所有变量的联合概率分布为:


(4)三组参数:除了结构信息,要确定一个HMM,还需要以下三组参数

        a. 状态转移概率 A = [aij]N*N,    其中aij = P(yt+1 = sj | yt = si)

            即代表任意时刻t, 若状态为si,则下一状态为sj的概率。

        b. 输出观测概率:B = [bij]N*M, 其中bij = P(xt = oj | yt = si)。

            即代表任意时刻t,若状态为si, 则观测值oj被获取的概率。

        c. 初始状态概率:π = (π1,π2, ... ,πN), 其中πi = P(y1 = si)

         通常可以用其参数λ = [A, B, π]来指代。

(5)实际应用种的三个基本问题:

        第一个:给定模型λ = [A, B, π],如何有效计算其产生的观测序列X = {x1,x2, ... ,xn }的概率P(X | λ)?换言之,如何评估模型与观测序列之间的匹配程度?

       第二个: 给定模型λ = [A, B, π]和观测序列X = {x1,x2, ... ,xn },如何找到与此观测序列最匹配的状态序列Y = {y1,y2, ... ,yn} ? 换言之,如何根据观测序列推断出隐藏的模型状态 ?

       第三个: 给定观测序列X = {x1,x2, ... ,xn },如何调整模型参数λ = [A, B, π] 使得序列出现的概率P(X | λ)最大?换言之,如何训练模型使其能最好地描叙观测数据?


2. 用前向算法求HMM观测序列的概率P(X | λ):即针对解决第一个应用问题。

    (1)简介:

      前向算法本质上属于动态规划的算法,也就是我们要通过找到局部状态递推的公式,这样一步步的从子问题的最优解拓展到整个问题的最优解。

  在前向算法中,通过定义“前向概率”来定义动态规划的这个局部状态。什么是前向概率呢, 其实定义很简单:定义时刻 t时隐藏状态为si, 观测状态的序列为o1,o2,...ot的概率为前向概率。记为: si,o1,o2,...,ot. 设观测变量为x,隐含变量为y, 则

                                 αt(i) = P(o1,o2,...,ot,yt=si | λ)

  既然是动态规划,我们就要递推了,现在我们假设我们已经找到了在时刻
t
时各个隐藏状态的前向概率,现在我们需要递推出时刻t+1时各个隐藏状态的前向概率。

  (2)具体计算过程如下:

   输入:HMM模型λ = [A, B, π],观测序列(真实观测到的值)O = {o1,o2, ..., oT}

   输出:观测序列概率P(O | λ)

              1) 计算时刻1的各个隐藏状态前向概率:初始状态取第i个时,观测值为o1的概率。

                           α1(i) = πi * bi(o1),      i = 1,2,...N

                      其中bi(o1) = P(xt = o1 | yt = si)

             2) 递推时刻2,3,...T的前向概率:


      其中N是隐变量可能取值的个数。

            3) 计算最终结果:


    从递推公式可以看出,我们的算法时间复杂度是O(TN2)

     (3)部分推导细节如下

               





参考文献:周志华 《机器学习》

http://www.cnblogs.com/pinard/p/6955871.html


猜你喜欢

转载自blog.csdn.net/zhuzuwei/article/details/80548381
今日推荐