zoukankan      html  css  js  c++  java
  • 隐马尔可夫模型(七)——隐马尔可夫模型的学习问题(前向后向算法)(转载)

    隐马尔可夫模型的学习问题:给定一个输出序列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)收敛

  • 相关阅读:
    Java 基础
    Java 数据类型
    Spring 拦截器实现事物
    SSH 配置日记
    Hibernate 知识提高
    Jsp、Servlet
    leetcode 97. Interleaving String
    leetcode 750. Number Of Corner Rectangles
    leetcode 748. Shortest Completing Word
    leetcode 746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/jason-wyf/p/6219116.html
Copyright © 2011-2022 走看看