隐马尔可夫模型HMM学习笔记
参考:
https://www.cnblogs.com/pinard/p/6945257.html
https://www.cnblogs.com/pinard/p/6991852.html
https://www.hankcs.com/ml/hidden-markov-model.html
例子详细计算过程:
Q是所有可能的隐藏状态的集合,V是所有可能的观测状态的集合,则

,分别表示盒子1、盒子2、盒子3,此时N=3;

,分别表示红色、白色,此时N=2;
对于一个长度为3的序列,** I** 是对应的状态序列, O 是对应的观察序列
设想我们拥有三个盒子,在每一个盒子里都放置了红球与白球,并列指出这三个盒子中的球的数量分别为:
| 盒子 | 1 | 2 | 3 |
|---|---|---|---|
| 红球数 | 5 | 4 | 7 |
| 白球数 | 5 | 6 | 3 |
按照下面的方法从盒子里抽球,开始的时候,从第一个盒子抽球的概率是0.2,从第二个盒子抽球的概率是0.4,从第三个盒子抽球的概率是0.4。以这个概率抽一次球后,将球放回。然后从当前盒子转移到下一个盒子进行抽球。规则是:如果当前抽球的盒子是第一个盒子,则以0.5的概率仍然留在第一个盒子继续抽球,以0.2的概率去第二个盒子抽球,以0.3的概率去第三个盒子抽球。如果当前抽球的盒子是第二个盒子,则以0.5的概率仍然留在第二个盒子继续抽球,以0.3的概率去第一个盒子抽球,以0.2的概率去第三个盒子抽球。如果当前抽球的盒子是第三个盒子,则以0.5的概率仍然留在第三个盒子继续抽球,以0.2的概率去第一个盒子抽球,以0.3的概率去第二个盒子抽球。如此下去,直到重复三次,得到一个球的颜色的观测序列:
O={红,白,红}
初始状态分布为:

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




观测状态概率矩阵为:



HMM最可能隐藏状态序列求解概述
在HMM模型的解码问题中,给定模型

和观测序列

,求给定观测序列O条件下,最可能出现的对应的状态序列

,即

要最大化。
维特比算法流程总结
输入:HMM模型

,观测序列

输出:最有可能的隐藏状态序列

1)初始化局部状态:


- 进行动态规划递推时刻

时刻的局部状态:


- 计算时刻T最大的

,即为最可能隐藏状态序列出现的概率。计算时刻T最大的

,即为时刻T最可能的隐藏状态。


- 利用局部状态

开始回溯。对于


最终得到最有可能的隐藏状态序列

HMM维特比算法求解上述实例
为了实现每个时刻对应着各自的两个局部状态这一目标,在时刻1时观测到的状态值设定为1(其中**o1**表示红色)。




(2) 现在开始递推三个隐藏状态在时刻2时对应的各自两个局部状态,此时观测状态为2(o2 指白色):






(3) 继续递推三个隐藏状态在时刻3时对应的各自两个局部状态,此时观测状态为1(o1 指红色):






此时已经到最后的时刻,我们开始准备回溯。此时最大概率为

,从而得到

由于

,所以

,而又由于

,所以

,
从而得到最终的最可能的隐藏状态序列为:(3,3,3)。
