HMM基础-HMM训练-前向后向算法

来源:互联网 发布:js 时间轴 编辑:程序博客网 时间:2024/05/23 20:23

HMM中第三个问题就是如何进行对HMM进行训练A和B

本章主要通过前向-后向(forward-backward)算法或者叫Baum-Welch算法来主要讲解如何对矩阵A和B进行训练

HMM训练描述为:

给定HMM状态集合,和一系列观测序列,如何对A和B进行训练。

符号C(ij) 记做从状态i转移到状态j的个数,则转移矩阵为:


其中Q为状态集合。

符号β记做后项概率,表示:给定λ,和t时刻状态在j情况下,看到观测序列Ot+1 ...OT的概率

即:


类似前向算法,后向算法可以描述如下:

1.初始化:


2.递归计算:


3.终止:


其后向递归过程如下所示:


符号ξ记做:给定观测序列情况下,t时刻状态为i,t+1时刻状态为j的概率,描述为:


因为:


所以:把X看成qt=i,qt+1=,把Y看成O,Z看成λ,则:


其中上式分子符号not-quite-ξ记做:


展开not-quite-ξ可得:


图下图所示:


ξ分母P(O|λ)为:


把分子not-quite-ξ和分母P(O|λ)带入到ξ中,最后可得


把ξ带入最上面提到C(i->j)中可得aˆij 



根据a来计算ξ的过程为E-step,根据ξ来算a的过程为M-step,E-step和M-step构成了forward-backward算法的过程

以上就是求矩阵A的前向后项算法(forward-backward)的过程。

同样,我们来求矩阵B。


符号γ记做:给定观测序列,t时刻在状态j的概率,数学表示为:


形象的描述如下图所示:


更形象的说γ也叫作状态占用概率(state occupation probabilities )或占有个数(occupation counts 

数学展开,可得:


继续展开,可得:(E-step)


为了计算b,分子为:观测值O为vk ,所有时间上γ相加的和,分母上为,所有时间上γ相加的和

即(M-step):


以上为计算矩阵B的前向后向(forward-backward)计算过程

综上所述,总结如下:


以上为训练HMM矩阵A和B的过程.

实际中,HMM中状态j的发射概率密度函数bj(x)用GMM建模,那么


对应的均值,方差为:




对应的状态转移概率为:



公式推导详细参见:

http://blog.csdn.net/duishengchen/article/details/40113919

http://www.cnblogs.com/xingshansi/p/6584555.html



1 0