隱馬爾可夫模型:參數估計問題(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計算包含加法,因此無法採用對數運算。此時,可以設置一個輔助的比例係數,將概率值乘以該比例係數以放大概率值,避免浮點數下溢。在每次迭代結束重新估計參數值時,再將比例係數取消。