隐马尔可夫模型(七)——隐马尔可夫模型的学习问题(前向后向算法)-阿里云开发者社区

开发者社区> 人工智能> 正文

隐马尔可夫模型(七)——隐马尔可夫模型的学习问题(前向后向算法)

简介:

隐马尔可夫模型的学习问题:给定一个输出序列O=O1O2...OT,如何调节模型μ=(A,B,π)的参数,使得P(O|M)最大。

      最大似然估计是一种解决方法,如果产生的状态序列为Q=q1q2...qT,根据最大似然估计,可以通过以下公式推算:

        πi‘ = δ(q1,si)

        aij' =  Q中从状态qi转移到qj的次数/Q中从状态qi转移到另一状态(包括qj)的次数

             

        bj(k)' = Q中从状态qj发出符号Vk的次数/ Q中到达状态qj的次数

                 

      δ(x,y)为克罗奈克函数,当x=y时,δ(x,y)=1;否则,δ(x,y)=0

      但是注意,在实际中,状态Q=q1q2...qT是观察不到的(隐变量),因此上述的这种求法是有问题的。幸好希望最大化,可以用于含有隐变量的统计模型的参数最大似然估计。基本思想是初始时,随机的给模型参数赋值,但是要遵循模型对参数的限制,例如,从一个状态发出的所有状态转移概率之和为1,得到模型μ0。然后根据μ0中的具体值,带入下式,可以得到u1.依次往下迭代,直到收敛于最大似然估计值。这种迭代爬山算法可以局部使P(O|μ)最大。称为Baum-Welch算法或前向后向算法。

      给定HMM的参数μ和观察序列O=O1O2...OT,在时间t位于状态si,在时间t+1位于状态sj的概率为ξt(i,j)=P(qt=si,qt+1=sj|O,μ),公式推导如下:

               ................(1)

       给定HMM μ 和序列O=O1O2...OT,在时间t位于状态si的概率为:.........(2)

       这样求μ的参数估计重新改写:

        πi‘ = r1(i) ...........(3)

        aij' =  Q中从状态qi转移到qj的次数/Q中从状态qi转移到另一状态(包括qj)的次数

             = ..........(4)

             

        bj(k)' = Q中从状态qj发出符号Vk的次数/ Q中到达状态qj的次数

                 = ..............(5)

前向后项算法

     step1 初始化: 随机地给定参数 πi, aij, bj(k),使其满足条件:

                       

                       由此得到μ0,令i=0

      step2 EM计算:

                   E步骤:根据(1)(2)式计算期望ξt(i,j) 和 rt(i)

                   M步骤:根据期望ξt(i,j) 和 rt(i),带入(3)(4)(5)重新得到πi, aij, bj(k),得到μi+1

       step3 循环计算: i = i+1, 直到πi, aij, bj(k)收敛

 





本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/archive/2012/12/06/2806263.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章