隐马尔科夫模型三大问题

关于隐马尔科夫模型以及三大问题的相关概念,在之前一篇博客已经介绍过,这里就不再介绍了。这篇博客的主要内容是通过一个例子介绍解决隐马尔科夫模型三大问题的算法。下面给出例子。其中三种可观测的值是(walk,shop,clean),隐含的状态是(rainy,sunny)。你可以简单理解为你和你的女朋友异地恋,你的女朋友在她的城市每天所做的事情和你报备,但是你不知道她的城市天气如何。对于这个例子的...
摘要由CSDN通过智能技术生成

关于隐马尔科夫模型以及三大问题的相关概念,在之前一篇博客已经介绍过,这里就不再介绍了。这篇博客的主要内容是通过一个例子介绍解决隐马尔科夫模型三大问题的算法。

下面给出例子。
在这里插入图片描述
其中三种可观测的值是(walk,shop,clean),隐含的状态是(rainy,sunny)。你可以简单理解为你和你的女朋友异地恋,你的女朋友在她的城市每天所做的事情和你报备,但是你不知道她的城市天气如何。

对于这个例子的三大问题描述是:
(1)已知整个模型,观测到连续三天做的事情是:walk,shop,clean,根据模型求产生这些行为的概率是多少?
(2)同样已知模型,同样连续三天所做的事情是:walk,shop,clean,求这三天的天气如何?
(3)已知这三天所做的事情是:walk,shop,clean,其他什么全都不知道,求这个模型?

遍历算法

即直接计算法,该算法用于解决第一种问题。参考李航的《统计学习方法》一书,给出此方法的数学表述。

给定模型 λ ( A , B , π ) \lambda(A,B,\pi) λ(A,B,π),以及观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT),计算观测序列 O O O出现的概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)。通过列举所有可能的长度为 T T T的状态序列 I = ( i 1 , i 2 , ⋯   , i T ) I=(i_1,i_2,\cdots,i_T) I=(i1,i2,,iT),求状态序列 I I I和观测序列 O O O的联合概率 P ( O , I ∣ λ ) P(O,I|\lambda) P(O,Iλ),然后对此求和,得到 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

状态序列 I = ( i 1 , i 2 , ⋯   , i T ) I=(i_1,i_2,\cdots,i_T) I=(i1,i2,,iT)的概率是 P ( I ∣ λ ) = π i 1 a i 1 i 2 a i 2 i 3 ⋯ a i T − 1 i T P(I|\lambda)=\pi_{i_1}a_{i_1i_2}a_{i_2i_3}\cdots a_{i_{T-1}i_T} P(Iλ)=πi1ai1i2ai2i3aiT1iT对固定的状态序列 I = ( i 1 , i 2 , ⋯   , i T ) I=(i_1,i_2,\cdots,i_T) I=(i1,i2,,iT),观测序列 O = ( o 1 , o 2 , ⋯   , o T ) O=(o_1,o_2,\cdots,o_T) O=(o1,o2,,oT)的概率是 P ( O ∣ I , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) ⋯ b i T ( o T ) P(O|I,\lambda)=b_{i_1}(o_1)b_{i_2}(o_2)\cdots b_{i_T}(o_T) P(OI,λ)=bi1(o1)bi2(o2)biT(oT) O O O I I I同时出现的联合概率 P ( O , I ∣ λ ) = P ( O ∣ I , λ ) P ( I ∣ λ ) P(O,I|\lambda)=P(O|I,\lambda)P(I|\lambda) P(O,Iλ)=P(OI,λ)P(Iλ)然后求和得到 P ( O ∣ λ ) = ∑ I P ( O , I ∣ λ ) = ∑ I P ( O ∣ I , λ ) P ( I ∣ λ ) P(O|\lambda)=\sum_I{P(O,I|\lambda)}=\sum_I{P(O|I,\lambda)P(I|\lambda)} P(Oλ)=IP(O,Iλ)=IP(OI,λ)P(Iλ)

在本例中,观测序列 O O O就是walk,shop,clean(之后用w,s,c表示),而状态序列 I I I则是rainy,sunny(之后用R,S表示)的排列组合,比如说这三天可以是(R,R,R),或者(R,S,R)。这样的排列组合总共有八种,我们只需要计算在这八种情况下(w,s,c)的概率分别是多少,然后求和就行了。

比方说,对于(R,R,R)的情况下连续三天做了(w,s,c)的概率是 P ( w , s , c ∣ R , R , R ) = P ( R 1 ) ∗ P ( w ∣ R 1 ) ∗ P ( R 2 ∣ R 1 ) ∗ P ( s ∣ R 2 ) ∗ P ( R 3 ∣ R 1 , R 2 ) ∗ P ( c ∣ R 3 ) P(w,s,c|R,R,R)=P(R1)*P(w|R1)*P(R2|R1)*P(s|R2)*P(R3|R1,R2)*P(c|R3) P(w,s,cR,R,R)=P(R1)P(wR1)P(R2R1)P(sR2)P(R3R1,R2)P(cR3)带入数值 P ( w , s , c ∣ R , R , R ) = 0.6 ∗ 0.1 ∗ 0.7 ∗ 0.4 ∗ 0.7 ∗ 0.5 = 0.0058 P(w,s,c|R,R,R)=0.6*0.1*0.7*0.4*0.7*0.5=0.0058 P(w,s,cR,R,R)=0.60.10.70.40.70.5=0.0058这就是连续三天下雨并且做了(w,s,c)的概率。同样道理,求出其他几种情况下(w,s,c)的概率,然后求和(这里就不算了),最终得到的就是我们要求的 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

对于本例来说,状态序列和观测序列并不是很多,或许可以用此方法计算,但是如果状态序列和观测序列很多的情况下,该算法的计算量是很庞大的,是 O ( T N T ) O(TN^T) O(TNT)阶的(这里 N T N^T NT是指所有可能的状态序列,在本例中就是 2 3 = 8 2^3=8 23=8种可能),所以这种方法是不可行的。下面介绍计算 P ( O ∣ λ ) P(O|\lambda) P(Oλ)的有效算法:前向-后向算法。

前向算法

首先根据《统计学习方法》给出前向概率的定义:给定隐马尔科夫模型 λ \lambda λ,定义到时刻 t t t部分观测序列为 o 1 , o 2 , ⋯   , o t o_1,o_2,\cdots,o_t o1,o2,,ot且状态为 q i q_i qi的概率为前向概率,记为 α t ( i ) = P ( o 1 , o 2 , ⋯   , o t , i t = q i ∣ λ ) \alpha_t(i)=P(o_1,o_2,\cdots,o_t,i_t=q_i|\lambda) αt(i)=P(o1,o2,,ot,it=qiλ)可以递推地求出前向概率 α t ( i ) \alpha_t(i) αt(i)及观测序列概率 P ( O ∣ λ ) P(O|\lambda) P(Oλ)

该算法可以分为以下几步:
(1)初值 α 1 ( i ) = π i b i ( o 1 ) , i = 1 , 2 , ⋯   , N \alpha_1(i)=\pi_ib_i(o_1),i=1,2,\cdots,N α1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值