目录
本文系个人学习总结,为模型基础原理的概念性总结,不涉及数学原理即详细推导,若有详细了解需要,请参照文章末尾参考资料。
1. HMM模型概念
HMM所处理的问题有两个特征:1)序列型的数据,例如时间序列,状态序列。 2)序列数据分为两类,一类是可以观测到的数据,一类是隐藏在对应观测数据后的隐藏数据, 例如观测数据是我发出的语音,隐藏数据是我这段语音表达的语言。
1.1 HMM定义
定义所有隐藏状态集合Q和所有观测状态集合V:
![image-20200827170936593](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5dys050nj30jc0260sx.jpg)
对于一个长度为T的问题,我们有状态序列I和观察序列O:
![image-20200827171047934](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5e00s4svj30q204c0ta.jpg)
t=1时刻隐藏状态的概率分布:
![image-20200827172354466](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5ednikk2j30ge02w3zg.jpg)
HMM的两个重要假设:
-
齐次马尔科夫链假设
t+1时刻隐藏状态 i t + 1 = q j i_{t+1} = q_j it+1=qj只依赖于t时刻隐藏状态 i t = q j i_{t} = q_j it=qj,由此我们有时刻t到t+1的状态转移概率 a i j a_{ij} aij:
和状态转移概率矩阵A:
-
观测独立性假设
t时刻的观察状态 o t = v k o_{t}=v_k ot=vk只由t时刻的隐藏状态 i t = q j i_{t}=q_j it=qj决定,我们有:
和状态生成概率矩阵B:
1.2 HMM实例
假设我们有三个盒子,每个盒子有红白两种球:
![image-20200827170112042](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5dq2fmn7j307607240q.jpg)
规则是:一开始, 选择三个盒子的概率分别为0.2, 0.4, 0.4;当前为盒1,接下来的选盒概率分别为0.5, 0.2, 0.3;当前为盒2,接下来的选盒概率分别为0.3, 0.5, 0.2;当前为盒3,接下来的选盒概率分别为0.2, 0.3, 0.5。
抽球三次,得到观测序列 O = {红,白,红},隐藏序列 I 未知(看不到从哪个盒子抽球)
由此,我们设立HMM模型,参数为:
O = {红,白,红},T=3;V={红,白},M=2; Q={盒子1,盒子2,盒子3},N=3;
λ = ( A , B , Π ) \lambda = (A,B,\Pi) λ=(A,B,Π)
2 HMM的三个问题:
2.1 计算观察序列的概率
即 给定模型 λ = ( A , B , Π ) \lambda = (A,B,\Pi) λ=(A,B,Π),和观察序列 O = o 1 , o 2 , . . . , o T O={o_1,o_2,...,o_T} O=o1,o2,...,oT,计算 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)
2.1.1 前向算法
前向算法计算观察序列概率,基于DP的算法。
子问题: i t = q i i_{t}=q_i it=qi时观察序列 O = ( o 1 , o 2 , . . . , o t ) O=(o_1,o_2,...,o_t) O=(o1,o2,...,ot)为前向概率:
![image-20200827174413336](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5eyrppcuj30f602at8t.jpg)
递归:
总结:
复杂度: O ( T N 2 ) O(TN^2) O(TN2)
2.1.2 后向算法
子问题:求 i t = q i i_{t}=q_i it=qi时观察序列 O = ( o t , o t + 1 , . . . , o T ) O=(o_t,o_{t+1},...,o_T) O=(ot,ot+1,...,oT)为后向概率:
![image-20200827175615954](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5fbcllvij30gq01yaa7.jpg)
递归:
总结:
复杂度: O ( T N 2 ) O(TN^2) O(TN2)
2.1.3 利用前向概率和后向概率计算得到的重要的概率公式
- 给定 λ \lambda λ和O时, i t = q i i_t=q_i it=qi的概率为:
![image-20200827180244135](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5fi0w08jj30be0543zf.jpg)
-
给定 λ \lambda λ和O时, i t = q i i_t=q_i it=qi且 i t + 1 = q j i_{t+1}=q_j it+1=qj概率为:
2.2 求解HMM参数
也就是求 λ = ( A , B , Π ) \lambda = (A,B,\Pi) λ=(A,B,Π)
2.2.1 已知观测序列和隐藏序列——最大似然
D个序列,利用最大似然求解
![image-20200827181241497](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5fseihy1j30du05074m.jpg)
![image-20200827181337446](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5ftcqjwvj30fy04w74q.jpg)
![image-20200827181431342](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5fubgwilj30r6072dgt.jpg)
2.2.2 已知观测序列,隐藏序列未知——鲍姆-韦尔奇算法
原理同EM算法:
流程:
2.3 解码隐藏序列——维特比算法
给定模型和观测序列,预测最可能的隐藏序列I: m a x { P ( I ∣ O ) } max\{P(I|O)\} max{P(I∣O)}
基于DP,定义两个子问题:
-
i t = i i_t=i it=i所有的可能路径的最大概率:
递归:
-
i t = i i_t=i it=i的概率最大的路径中的 i t − 1 i_{t-1} it−1:
流程:
![image-20200827182701307](https://tva1.sinaimg.cn/large/007S8ZIlgy1gi5gecfp1qj30vp0u0tcs.jpg)
参考资料:
刘建平HMM
隐马尔可夫模型HMM