跟医生就医推导过程是一样的

隐马尔科夫模型HMM(一)HMM模型

    隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率

    隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

    隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列

    在隐马尔科夫模型HMM(一)HMM模型中,我们讲到了HMM模型的基础知识和HMM的三个基本问题,本篇我们就关注于HMM第一个基本问题的解决方法,即已知模型和观测序列,求观测序列出现的概率。

    首先我们回顾下HMM模型的问题一。这个问题是这样的。我们已知HMM模型的参数)

。其中)

    乍一看,这个问题很简单。因为我们知道所有的隐藏状态之间的转移概率和所有从隐藏状态到观测状态生成概率,那么我们是可以暴力求解的。

    我们可以列举出所有可能出现的长度为T

的隐藏序列)

了。

    具体暴力求解的方法是这样的:首先,任意一个隐藏序列}

出现的概率是:

T

    对于固定的状态序列}

,我们要求的观察序列}出现的概率是:

)

    则O

I联合出现的概率是:

T(oT)

    然后求边缘概率分布,即可得到观测序列O

在模型)

iT−1iTbiT(oT)

    虽然上述方法有效,但是如果我们的隐藏状态数N

非常多的那就麻烦了,此时我们预测状态有)

阶的。因此对于一些隐藏状态数极少的模型,我们可以用暴力求解法来得到观测序列出现的概率,但是如果隐藏状态多,则上述算法太耗时,我们需要寻找其他简洁的算法。

    前向后向算法就是来帮助我们在较低的时间复杂度情况下求解这个问题的。

2. 用前向算法求HMM观测序列的概率

    前向后向算法是前向算法和后向算法的统称,这两个算法都可以用来求HMM观测序列的概率。我们先来看看前向算法是如何求解这个问题的。

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

    在前向算法中,通过定义“前向概率”来定义动态规划的这个局部状态。什么是前向概率呢, 其实定义很简单:定义时刻t

时隐藏状态为t的概率为前向概率。记为:

)

    既然是动态规划,我们就要递推了,现在我们假设我们已经找到了在时刻t

时各个隐藏状态的前向概率,现在我们需要递推出时刻1

时各个隐藏状态的前向概率。

    从下图可以看出,我们可以基于时刻t

时各个隐藏状态的前向概率,再乘以对应的状态转移概率,即i的前向概率,这样我们得到了前向概率的递推关系式如下:

)

hmm前后向算法
    




隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
隐马尔科夫模型HMM(一)HMM模型

    我们的动态规划从时刻1开始,到时刻T

结束,由于T

的概率。

    下面总结下前向算法。

    输入:HMM模型)

,观测序列)

    输出:观测序列概率)

    1) 计算时刻1的各个隐藏状态前向概率:

N

    2) 递推时刻T

时刻的前向概率:

N

    3) 计算最终结果:

)

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

,比暴力解法的时间复杂度)

少了几个数量级。

3. HMM前向算法求解实例

    这里我们用隐马尔科夫模型HMM(一)HMM模型中盒子与球的例子来显示前向概率的计算。

    我们的观察集合是:

2

    我们的状态集合是:

3

    而观察序列和状态序列的长度为3.

    初始状态分布为:

T

    状态转移概率分布矩阵为:

     观测状态概率矩阵为:

    球的颜色的观测序列:

}

    按照我们上一节的前向算法。首先计算时刻1三个状态的前向概率:

    时刻1是红色球,隐藏状态是盒子1的概率为:

0.1

    隐藏状态是盒子2的概率为:

0.16

    隐藏状态是盒子3的概率为:

0.28

    现在我们可以开始递推了,首先递推时刻2三个状态的前向概率:

    时刻2是白色球,隐藏状态是盒子1的概率为:

0.077

    隐藏状态是盒子2的概率为:

0.1104

    隐藏状态是盒子3的概率为:

0.0606

    继续递推,现在我们递推时刻3三个状态的前向概率:

    时刻3是红色球,隐藏状态是盒子1的概率为:

0.04187

    隐藏状态是盒子2的概率为:

0.03551

    隐藏状态是盒子3的概率为:

0.05284

    最终我们求出观测序列:}

的概率为:

0.13022

4. 用后向算法求HMM观测序列的概率

    熟悉了用前向算法求HMM观测序列的概率,现在我们再来看看怎么用后向算法求HMM观测序列的概率。

    后向算法和前向算法非常类似,都是用的动态规划,唯一的区别是选择的局部状态不同,后向算法用的是“后向概率”,那么后向概率是如何定义的呢?

    定义时刻t

时隐藏状态为T的概率为后向概率。记为:

)

    后向概率的动态规划递推公式和前向概率是相反的。现在我们假设我们已经找到了在时刻1

时各个隐藏状态的后向概率t

的后向概率。

hmm前后向算法
    




隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数
隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
隐马尔科夫模型HMM(一)HMM模型

    这样我们得到了后向概率的递推关系式如下:

)

    现在我们总结下后向算法的流程,注意下和前向算法的相同点和不同点:

    输入:HMM模型)

,观测序列)

    输出:观测序列概率)

    1) 初始化时刻T

的各个隐藏状态后向概率:

N

    2) 递推时刻.1

时刻的后向概率:

N

    3) 计算最终结果:

)

    此时我们的算法时间复杂度仍然是)

5. HMM常用概率的计算

    利用前向概率和后向概率,我们可以计算出HMM中单个状态和两个状态的概率公式。

    1)给定模型λ

和观测序列i的概率记为:

)

    利用前向概率和后向概率的定义可知:

)

    于是我们得到:

)

    2)给定模型λ

和观测序列j的概率记为:

qj,O|λ)P(O|λ)

    而)

可以由前向后向概率来表示为:

t+1(j)

    从而最终我们得到)

的表达式如下:

∑s=1Nαt(r)arsbs(ot+1)βt+1(s)

     3) 将)

t

求和,可以得到:

    在观测序列O

下状态)

    在观测序列O

下由状态)

    在观测序列O

下由状态)

    上面这些常用的概率值在求解HMM问题二,即求解HMM模型参数的时候需要用到。我们在这个系列的第三篇来讨论求解HMM参数的问题和解法。

 

(欢迎转载,转载请注明出处。欢迎沟通交流: liujianping-ok@163.com)

相关文章:

  • 2021-05-08
  • 2022-12-23
  • 2021-07-05
  • 2021-05-15
  • 2021-09-19
猜你喜欢
  • 2021-11-28
  • 2021-09-04
  • 2021-11-19
  • 2021-05-24
  • 2021-06-22
相关资源
相似解决方案