参考文献
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) 记录的前一个最可能的状态节点回溯,直到找到最优的隐藏状态序列。
维特比算法步骤:
来源:CSDN
作者:达瓦里氏吨吨吨
链接:https://blog.csdn.net/fantacy10000/article/details/90379877