Advertisement

关于HMM(隐马尔可夫模型)

阅读量:

什么是HMM

隐式马尔可夫模型(Hidden Markov Model, HMM)属于统计学领域中的模型,在描述含有隐含未知参数的状态变化规律方面具有重要应用。该模型能够有效地刻画这个过程所包含的具有隐藏未知参数的马尔可夫链。

常见的例子

小明拥有的两个硬币分别为A和B,在本例中它们的正反面发生概率并不相同。具体而言,A硬币正面向上的发生概率设定为0.6,B硬币正面向上的发生概率则为0.7。根据这些设定,在未来的连续六次抛掷实验中,我们观察到如下结果:

硬币(Z) A B B A B A
结果(x)

这种时候就会存在三个问题:

在开始连续多次抛掷硬币的过程中,在每一次抛之前都需要回答两个关键问题:首先是在开始时选择的是哪一枚硬币?其次是在已知前一枚所使用的硬币类型的情况下,请问下一枚应该使用哪一种类型的硬币?这两个问题是建立HMM模型的基础。针对第一个问题,则存在一个初始概率分布P(π),它决定了第一枚的状态属于哪一类状态——即第一枚的状态选择遵循这个分布。一旦确定了起始状态为某一类态之后,则需关注首次抛掷的结果是否正面或者反面——这一步骤相当于从该起点生成了一次观测结果;随后还需要关注下一次抛掷的状态选择——也就是下一枚使用的是哪一种类型的硬币——这一步骤则涉及到转移概率的问题。例如,在第二次抛掷中得到的是状态B,则有转移概率P(B|A);依此类推……

针对我们上面的投掷硬币的问题,HMM模型的三个参数为(π,A,B)

在这里插入图片描述

其中π代表第一个位置P(A)=0.3,P(B)=0.7
A代表转移矩阵P(A|A)=0.3, P(B|A)=0.5, P(A|B)=0.4, P(B|B)=0.6
B代表生成矩阵P(正|A)=0.4,P(反|A)=0.6,P(正|B)=0.2,P(反|B)=0.8
那么下面针对HMM的三大经典问题来做出说明:

1. 概率问题

基于假设λ=(π, A, B)我们已经明确了HMM模型的相关参数配置,则为了计算得到图中所展示的具体观测序列x=(正面、反面、正面、正面、反面、正面)发生的概率

暴力解法

而此时此刻,在我们的研究中存在一个未知的量Z_t被称为状态序列。当需要计算观测值x_t的概率时,默认的做法是最直接的方法就是枚举所有可能导致结果x_t的情况,并对每一种可能性对应的概率进行求和运算以获得最终的结果。具体而言,在实际操作中我们需要考虑的状态空间可能会非常庞大,在这种情况下逐一列举所有可能性不仅耗时还容易遗漏某些情况因而这种方法虽然直观但并不高效

F B算法
复制代码
      F/B算法分为Forward和Backward算法,其中通过
      p(Zk|x)=p(Zk, X1:k)*p(Xk+1|Zk)可以算出概率

2. 预测问题

基于已知的HMM模型参数λ=(π, A, B)以及观测序列x=(正-反-正-正-反-正),我们需要确定最有可能的状态序列Z。简单来说,Viterbi算法将这一复杂的求解过程拆解为一系列的小步骤:首先解决每个状态zi的推断问题。这种分阶段的方法使得我们能够高效地找到最优的状态序列。

硬币(Z) z1 z2 z3 z4 z5 z6
结果(x)

以Z6为例,在状态序列Z=(z₁,z₂,z₃,z₄,z₅,z₆)的情况下,
概率值P_Z₆等于P_Z₅乘以条件概率 P(z₆ | z₅),再乘以 P(正面 | z_6)
即:
概率值 P_Z_5等于 P_Z_4 乘以条件概率 P(z_5 | z_4),再乘以 P(反面 | z_5)
同理,
概率值 P_Z_4 等于 P_Z_3 乘以条件概率 P(z_4 | z_3),再乘以 P(正面 | z_4)
依此类推,
直到:
概率值 P_{Z₁} 等于 条件概率 P(正面 | z₁)乘初始分布 π

在这里插入图片描述

然后我们反过来看,首先p(Z1)=p(正|z1) * π, 那么
p(Z1-A)=p(正|A)p(A)=0.4 0.3=0.12或者
p(Z1-B)=p(正|B)p(B)=0.2 0.7=0.14
然后p(Z2)=p(Z1) * p(z2|z1) * p(反|z2) ,那么
p(Z2-A-1)=p(Z1-A)*p(A|A)*p(反|A)=0.0216
p(Z2-A-2)=p(Z1-B)*p(A|B)*p(反|A)=0.0336
由于0.0336>0.0216,那么可将0.0336这条路径记录下来,舍弃0.0216这条
这时候
p(Z2-A)=p(Z1-B)*p(A|B)*p(反|A)=0.0336
同样可得
p(Z2-B)=p(Z1-A)*p(B|A)*p(反|B)=p(Z1-B)*p(B|B)*p(反|B)=0.0672
(这里到B的两条路径概率一样,可任取一条)
…………
然后一直算下次,算到Z6
过程中把每次概率大的那条路径存储下来,这样就可以减少算法的复杂。

3.学习问题

已知观测序列为X={x₁,x₂,…,x_T},确定模型参数λ=(A,B,π),使该模型下的观测序列的概率密度函数P(x|λ)达到最大值

全部评论 (0)

还没有任何评论哟~