E 步:
对观测序列
O=(o1,o2,...,oT),状态序列
S=(s1,s2,...,sT),那么数据的对数似然函数为
logP(O,S∣λ)
且
P(O,S∣λnew)=πs1bs1(o1)as1s2bs2(o2)...asT−1sTbsT(oT)
Q 函数为:
Q(λnew,λold)==P(S∣O,λold)⟮S∑logP(O,S∣λnew)P(S∣O,λold)S∑logπs1+S∑t=1∑T−1logastst+1+S∑t=1∑Tlogbst(ot)⟯
M 步:
极大化 Q 函数
Q(λnew,λold) 求模型参数
A,B,Π
因为要极大化的参数分别独立存在于三项中,所以可以对各项分别极大化。
1)对于第一项
∑Slogπs1P(S∣O,λold)=∑s=1Nlogπs1P(s1=s∣O,λold)
注意到
πs 满足约束条件
∑s=1Nlogπs1=1,利用拉格朗日乘子法,写出拉格朗日函数:
∑s=1Nlogπs1P(s1=s∣O,λold)+γ⟮∑s=1Nlogπs1−1⟯
对其求偏导并令其等于 0,得:
P(s1=s∣O,λold)+γπs=0
对 s 求和得到
γ=−P(O∣λold),将此结果代入原式可得:
πs=P(O∣λold)P(s1=s∣λold)
2)对于第二项用同样方法可得
asj=∑t=1T−1P(O,st=s∣λold)∑t=1T−1P(O,∣st=s,st+1=j,λold)
3)对于第三项,需要注意的是,只有在 0t = vk 时 bj(ot) 对 bj(k) 的偏导数才不为 0,以
I(ot=vk) 表示。接下来使用同样方法可得
bj(k)=∑t=1TP(O∣st=j,λold)∑t=1TP(O∣st=j,λold)I(ot=vk)