HMM(利用前向后向求概率)

上文讲到用直接法求概率复杂度很大,本文讲述利用前向后向算法求概率。即给定模型参数λ,以及观测序列,求条件概率 P(O|λ)

  • 前向算法(一定要记住前向概率定义)

    • 前向概率。给定模型参数λ,定义t时刻部分观测序列为 o1,o2,...,ot ,并且状态为 qi 的概率为前向概率。记为 αt(i)=P(o1,o2,..,ot and it=qi|λ) ,
    • 接下来我们就可以根据前向概率求得 P(O|λ)
      • 初值 α1(i)=P(o1 and it=qi|λ)=πibi(o1)
      • 递推 对于 t=1,2,3,...,T1
        αt+1(i)=P(o1,o2,..,ot+1 and it+1=qi|λ)
        =Nj=1P(o1,o2,..,ot and it=qj|λ)ajibi(ot+1)
        =[Nj=1αt(j)aji]bi(ot+1)
      • 终止 P(O|λ)=Ni=1αT(i)
        显然时间复杂度大幅度降低,只有 O(TN2)
  • 后向算法(和前向算法如同一辙)

    • 后向概率。给定模型参数λ,定义t时刻部分观测序列为 ot+1,ot+2,...,oT ,且状态为 qi 的概率为后向概率。记为 βt(i)=P(ot+1,ot+2,...,oT | it=qi and λ) 。这里需要和前向概率区分一下,前向概率 αt(i) 是包含当前时刻t的观测,而 βt(i) 是不包含当前时刻观测的。
    • 接下来我们根据后向算法求概率 P(O|λ)
      • 初值 βT(i)=P(oT+1,oT+2,...,oT|iT=qi and λ)=1 这里和前向概率初值稍作区别
      • 对于t = T-1,T-2,…,1
        βt(i)=P(ot+1,ot+2,...,oT|it=qi and λ)
        =Nj=1aijbj(ot+1)P(ot+2,...,oT|it+1=qj)
        =Nj=1aijbj(ot+1)βt+1(j)
      • 终止 P(O|λ)=Ni=1πibi(o1)β1(i)
  • 利用前向和后向计算一些概率(后面参数训练会用到)

    • 计算观测序列概率 P(O|λ)
      • P(O|λ)
        =Ni=1Nj=1
        P(o1,...,ot and it=qi|λ)aijbj(ot+1)
        P(ot+2,ot+3,...,oT|it+1=qj and λ)
        =Ni=1Nj=1αt(i)aijbj(ot+1)βt+1(j)
    • 计算给定模型λ和观测O,在时刻t处于状态 qi 的概率,记为 γt(i)=P(it=qi|O,λ)
      • γt(i)=P(it=qi|O,λ)
        =P(it=qi,O|λ)÷P(O|λ)
        =αt(i)βt(i)÷Ni=1αt(i)βt(i)
    • 计算给定模型λ和观测O,在时刻t处于状态 qi 并且 在时刻t+1处于状态 qt 的概率,记为 ζt(i,j)=P(it=qi,it+1=qj|O,λ)
      =P(it=qi,it+1=qj,O|λ)÷P(O|λ)
      =αt(i)aijbj(ot+1)βt+1(j)
      ÷Ni=1Nj=1αt(i)aijbj(ot+1)βt+1(j)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值