隐马尔可夫模型:参数估计问题(BaumWelch算法)
HMM的参数估计问题:给定一个观察序列O=O1O2⋯OT,计算使P(O∣μ)最大时,模型μ=(A,B,π)的参数
μ^=μargmaxP(Otraining∣μ)
对于完全情况(complete case),产生观察序列O的状态序列Q=q1q2⋯qT已知(完全数据),可通过最大似然估计HMM参数:
πˉi=δ(q1,si)
aˉij=Q中所有从状态si转移到另一状态(包括sj自身)的次数Q中从状态si转移到sj的次数=∑t=1T−1δ(qt,si)∑t=1T−1δ(qt,si)δ(qt+1,sj)
bˉj(k)=Q到达sj的次数Q中从状态sj输出符号vk的次数=∑t=1Tδ(qt,sj)∑t=1Tδ(qt,sj)δ(Ot,vk)
其中,vk为HMM输出符号集中的第k个符号。δ(x,y)为克罗奈克(Kronecker)函数,
δ(x,y)={1,0,x=yotherwise
非完全情况(incomplete case),HMM中的状态序列Q是无法观察的(隐变量,非完全数据)。
期望最大化(expectation maximization, EM)算法:对含有隐变量的统计模型的参数最大似然估计,其基本思想为:初始时随机地给模型的参数赋值,该赋值遵循模型对参数的限制(例如,从某–状态出发的所有转移概率的和为1),给定模型参数初值后,得到模型μ0;然后根据μ0可以得到模型中隐变量的期望值(例如,从μ0得到从某一状态转移到另一状态的期望次数),用期望值替代方程(6-23)中的实际次数,可以得到模型参数新的估计值,并得到新模型μ1。根据μ1,计算模型中隐变量的期望值,然后重新估计模型参数,迭代直至参数收敛于最大似然估计值。这种迭代爬山算法可以使P(O;μ)局部最大化。
BaumWelch算法(前向后向算法,forward backward algorithm):EM算法的一种具体实现。给定HMM的参数μ和观察序列O=O1O2⋯OT,在t时该位于状态si、t+1时刻位于状态sj的概率ξt(i,j)=P(qt=si,qt+1=sj∣O;μ)(1≤t≤T、1≤i,j≤N)为:
ξt(i,j)=P(O;μ)P(qt=si,qt+1=sj,O;μ)=∑i=1N∑j=1Nαt(i)aijbj(Ot+1)βt+1(j)αt(i)aijbj(Ot+1)βt+1(j)(6-24)

给定HMMμ和观察序列O=O1O2⋯OT,在t时刻位于状态si的概率γt(i)为
γt(i)=j=1∑Nξt(i,j)(6-25)
因此,μ的参数可重新估计为:
πˉi=P(q1=si∣O;μ)=γ1(i)(6-26)
aˉij=Q中所有从状态si转移到另一状态(包括sj自身)的期望次数Q中从状态si转移到sj的期望次数=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)(6-27)
bˉj(k)=Q到达sj的期望次数Q中从状态sj输出符号vk的期望次数=∑t=1Tγt(j)∑t=1Tγt(j)δ(Ot,vk)(6-28)
算法6-4(前向后向算法,forward-backward algorithm)
- 初始化,随机给参数πi、aij、bj(k)赋值,使其满足如下约束:
i=1∑Nπi=1
j=1∑Nai,j=1,1≤i≤N
k=1∑Mbj(k)=1,1≤j≤N
得到模型μ0。令i=0,执行EM估计。
- EM计算
E步骤:由模型μi,根据方程(6-24)、(6-25)计算期望值ξt(i,j)和γt(i);
M步骤:用E步骤得到的期望值,根据方程(6-26)、(6-27)和(6-28)重新估计参数πi、aij、bj(k)的值,得到模型μi+1。
- 迭代计算
令i=i+1,重复执行EM计算,直到πi、aij、bj(k)收敛。
实际应用中,多个概率连乘会引起的浮点数下溢问题。在Viterbi算法中,由于只涉及乘法运算和求最大值问题,因此可以对概率相乘取对数运算,将乘法运算转变成加法运算,这样一方面避免能浮点数下溢问题,另一方面能提高运算速度。在前向后向算法中,也经常采用对数运算方法判断参数πi、aij、bj(k)是否收敛:
∣logP(O;μi+1)−logP(O;μi)∣<ϵ
其中,ϵ为一个足够小的正实数。在前向后向算法中,EM计算包含加法,因此无法采用对数运算。此时,可以设置一个辅助的比例系数,将概率值乘以该比例系数以放大概率值,避免浮点数下溢。在每次迭代结束重新估计参数值时,再将比例系数取消。