隱馬爾可夫模型的學習問題:給定一個輸出序列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)收斂