隐马尔科夫模型(HMM)学习笔记

只谈情不闲聊 提交于 2019-12-06 14:14:14

参考文献

1.李航《统计学习方法》
2.刘建平老师的博客内容
3.一文搞懂HMM

1.HMM模型的应用场景

首先我们来看看什么样的问题解决可以用HMM模型。使用HMM模型时我们的问题一般有这两个特征:
1)我们的问题是基于序列的,比如时间序列,或者状态序列。
2)我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。


2.HMM模型的基本定义

在这里插入图片描述
强调HMM的两个强假设:

【1】状态依前:即任意时刻的隐藏状态只依赖于它前一个隐藏状态
在这里插入图片描述
【2】观测独立:即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态
在这里插入图片描述
在这里插入图片描述

HMM模型的三元组表示:(A,B,π)


3.HMM观测序列生成算法

在这里插入图片描述


4.HMM模型的三个基本问题

4.1评估观测序列出现的概率

在这里插入图片描述
(1)暴力解法求HMM观测序列出现的概率
直观上的想法就是:既然模型参数已知,观测序列也已知,那么我们可以穷举所有的隐藏序列。对于每一个隐藏序列,
首先计算其出现的概率,而后计算观测序列出现的概率,则隐藏序列和观测序列同时出现的联合概率就是两个概率相乘,然后求边缘概率分布,即可得到观测序列O在模型λ下出现的条件概率。计算看起来很容易,也很直观,但是当隐藏状态数N较大时,穷举的所有隐藏序列数目将是非常可怕的,这会使得这种计算方式无法进行。

(2)用前向算法求HMM观测序列出现的概率
前向算法本质上属于动态规划的算法,也就是我们要通过找到局部状态递推的公式,这样一步步的从子问题的最优解拓展到整个问题的最优解。
前向概率定义:定义时刻 t 时,隐藏状态为 qi ,观测状态序列为 o1,o2,…ot 的概率为前向概率。
在这里插入图片描述
在这里插入图片描述
前向算法步骤:
在这里插入图片描述
(3)用后向算法求HMM观测序列出现的概率

后向概率定义:定义时刻 t 时,隐藏状态为qi ,从时刻 t+1 到最后时刻 T 的观测状态序列为 ot+1,ot+2,…,oT的概率为后向概率。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后向算法步骤:
在这里插入图片描述


4.2求解HMM模型参数

在这里插入图片描述
HMM模型参数求解根据已知的条件可以分为两种情况:

1.简单情况,就是我们已知 D 个长度为 T 的观测序列和对应的隐藏状态序列,此时我们可以很容易地用最大似然来求解模型参数,解法如下:
在这里插入图片描述
2.我们无法得到HMM样本观察序列对应的隐藏序列,只有 D 个长度为 T 的观测序列,即{(O1),(O2),…(OD)}是已知的,这种是比较困难的问题,我们采用鲍姆-韦尔奇算法进行处理:

鲍姆-韦尔奇算法,其实就是基于EM算法的求解,只不过鲍姆-韦尔奇算法出现的时代,EM算法还没有被抽象出来而已。

总体思路:
在这里插入图片描述
E步:
在这里插入图片描述
M步:
在这里插入图片描述

附:HMM常用概率的计算
在这里插入图片描述

鲍姆-韦尔奇算法步骤:
在这里插入图片描述


4.3预测最可能对应的隐藏状态序列

在这里插入图片描述
(1)直观的解法
在这里插入图片描述
(2)维特比算法
维特比算法作为一种动态规划算法,需要找到合适的局部状态,以及局部状态的递推公式。
在HMM中,维特比算法定义了两个局部状态用于递推:
在这里插入图片描述
有了这两个局部状态,我们就可以从时刻0一直递推到时刻 T,然后利用Ψ t (i) 记录的前一个最可能的状态节点回溯,直到找到最优的隐藏状态序列。

维特比算法步骤:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!