隱馬爾可夫模型:參數估計問題

隱馬爾可夫模型:參數估計問題(BaumWelch算法)

HMM的參數估計問題:給定一個觀察序列O=O1O2OTO = O_{1} O_{2} \cdots O_{T},計算使P(Oμ)P(O | \mu)最大時,模型μ=(A,B,π)\mu = (\mathbf{A}, \mathbf{B}, \mathbf{\pi})的參數

μ^=arg maxμP(Otrainingμ)\hat{\mu} = \argmax_{\mu} P(O_{\text{training}} | \mu)

對於完全情況(complete case),產生觀察序列OO的狀態序列Q=q1q2qTQ = q_{1} q_{2} \cdots q_{T}已知(完全數據),可通過最大似然估計HMM參數:

πˉi=δ(q1,si)\bar{\pi}_{i} = \delta(q_{1}, s_{i})

aˉij=Q中從狀態si轉移到sj的次數Q中所有從狀態si轉移到另一狀態(包括sj自身)的次數=t=1T1δ(qt,si)δ(qt+1,sj)t=1T1δ(qt,si)\begin{aligned}\bar{a}_{ij} & = \frac{ Q\text{中從狀態}s_{i}\text{轉移到}s_{j}\text{的次數} }{ Q\text{中所有從狀態}s_{i}\text{轉移到另一狀態(包括}s_{j}\text{自身)的次數} } \\ & = \frac{ \sum_{t = 1}^{T - 1} \delta(q_{t}, s_{i}) \delta(q_{t + 1}, s_{j}) }{ \sum_{t = 1}^{T - 1} \delta(q_{t}, s_{i}) } \end{aligned}

bˉj(k)=Q中從狀態sj輸出符號vk的次數Q到達sj的次數=t=1Tδ(qt,sj)δ(Ot,vk)t=1Tδ(qt,sj)\begin{aligned}\bar{b}_{j}(k) & = \frac{ Q\text{中從狀態}s_{j}\text{輸出符號}v_{k}\text{的次數} }{ Q\text{到達}s_{j}\text{的次數} } \\ & = \frac{ \sum_{t = 1}^{T} \delta(q_{t}, s_{j}) \delta(O_{t}, v_{k}) }{ \sum_{t = 1}^{T} \delta(q_{t}, s_{j}) } \end{aligned}

其中,vkv_{k}爲HMM輸出符號集中的第kk個符號。δ(x,y)\delta(x, y)爲克羅奈克(Kronecker)函數,

δ(x,y)={1,x=y0,otherwise\delta(x, y) = \begin{cases} 1, & x = y \\ 0, & \text{otherwise} \end{cases}

非完全情況(incomplete case),HMM中的狀態序列QQ是無法觀察的(隱變量,非完全數據)。

期望最大化(expectation maximization, EM)算法:對含有隱變量的統計模型的參數最大似然估計,其基本思想爲:初始時隨機地給模型的參數賦值,該賦值遵循模型對參數的限制(例如,從某–狀態出發的所有轉移概率的和爲1),給定模型參數初值後,得到模型μ0\mu_{0};然後根據μ0\mu_{0}可以得到模型中隱變量的期望值(例如,從μ0\mu_{0}得到從某一狀態轉移到另一狀態的期望次數),用期望值替代方程(6-23)中的實際次數,可以得到模型參數新的估計值,並得到新模型μ1\mu_{1}。根據μ1\mu_{1},計算模型中隱變量的期望值,然後重新估計模型參數,迭代直至參數收斂於最大似然估計值。這種迭代爬山算法可以使P(O;μ)P(O; \mu)局部最大化。

BaumWelch算法(前向後向算法,forward backward algorithm):EM算法的一種具體實現。給定HMM的參數μ\mu和觀察序列O=O1O2OTO = O_{1} O_{2} \cdots O_{T},在tt時該位於狀態sis_{i}t+1t + 1時刻位於狀態sjs_{j}的概率ξt(i,j)=P(qt=si,qt+1=sjO;μ)\xi_{t}(i, j) = P(q_{t} = s_{i}, q_{t + 1} = s_{j} | O; \mu)1tT1 \leq t \leq T1i,jN1 \leq i, j \leq N)爲:

ξt(i,j)=P(qt=si,qt+1=sj,O;μ)P(O;μ)=αt(i)aijbj(Ot+1)βt+1(j)i=1Nj=1Nαt(i)aijbj(Ot+1)βt+1(j)(6-24)\begin{aligned} \xi_{t}(i, j) & = \frac{P(q_{t} = s_{i}, q_{t + 1} = s_{j}, O; \mu)}{P(O; \mu)} \\ & = \frac{\alpha_{t}(i) a_{ij} b_{j}(O_{t + 1}) \beta_{t + 1}(j)}{\sum_{i = 1}^{N} \sum_{j = 1}^{N} \alpha_{t}(i) a_{ij} b_{j}(O_{t + 1}) \beta_{t + 1}(j)} \\ \end{aligned} \tag {6-24}

在這裏插入圖片描述

給定HMMμ\mu和觀察序列O=O1O2OTO = O_{1} O_{2} \cdots O_{T},在tt時刻位於狀態sis_{i}的概率γt(i)\gamma_{t}(i)

γt(i)=j=1Nξt(i,j)(6-25)\gamma_{t}(i) = \sum_{j = 1}^{N} \xi_{t}(i, j) \tag {6-25}

因此,μ\mu的參數可重新估計爲:

πˉi=P(q1=siO;μ)=γ1(i)(6-26)\bar{\pi}_{i} = P(q_{1} = s_{i} | O; \mu) = \gamma_{1}(i) \tag {6-26}

aˉij=Q中從狀態si轉移到sj的期望次數Q中所有從狀態si轉移到另一狀態(包括sj自身)的期望次數=t=1T1ξt(i,j)t=1T1γt(i)(6-27)\begin{aligned}\bar{a}_{ij} & = \frac{ Q\text{中從狀態}s_{i}\text{轉移到}s_{j}\text{的期望次數} }{ Q\text{中所有從狀態}s_{i}\text{轉移到另一狀態(包括}s_{j}\text{自身)的期望次數} } \\ & = \frac{ \sum_{t = 1}^{T - 1} \xi_{t}(i, j) }{ \sum_{t = 1}^{T - 1} \gamma_{t}(i) } \end{aligned} \tag {6-27}

bˉj(k)=Q中從狀態sj輸出符號vk的期望次數Q到達sj的期望次數=t=1Tγt(j)δ(Ot,vk)t=1Tγt(j)(6-28)\begin{aligned}\bar{b}_{j}(k) & = \frac{ Q\text{中從狀態}s_{j}\text{輸出符號}v_{k}\text{的期望次數} }{ Q\text{到達}s_{j}\text{的期望次數} } \\ & = \frac{ \sum_{t = 1}^{T} \gamma_{t}(j) \delta(O_{t}, v_{k}) }{ \sum_{t = 1}^{T} \gamma_{t}(j) } \end{aligned} \tag {6-28}

算法6-4(前向後向算法,forward-backward algorithm)

  1. 初始化,隨機給參數πi\pi_{i}aija_{ij}bj(k)b_{j}(k)賦值,使其滿足如下約束:

i=1Nπi=1\sum_{i = 1}^{N} \pi_{i} = 1

j=1Nai,j=1,1iN\sum_{j = 1}^{N} a_{i, j} = 1, 1 \leq i \leq N

k=1Mbj(k)=1,1jN\sum_{k = 1}^{M} b_{j}(k) = 1, 1 \leq j \leq N

得到模型μ0\mu_{0}。令i=0i = 0,執行EM估計。

  1. EM計算

E步驟:由模型μi\mu_{i},根據方程(6-24)、(6-25)計算期望值ξt(i,j)\xi_{t}(i, j)γt(i)\gamma_{t}(i)

M步驟:用E步驟得到的期望值,根據方程(6-26)、(6-27)和(6-28)重新估計參數πi\pi_{i}aija_{ij}bj(k)b_{j}(k)的值,得到模型μi+1\mu_{i + 1}

  1. 迭代計算

i=i+1i = i + 1,重複執行EM計算,直到πi\pi_{i}aija_{ij}bj(k)b_{j}(k)收斂。

實際應用中,多個概率連乘會引起的浮點數下溢問題。在Viterbi算法中,由於只涉及乘法運算和求最大值問題,因此可以對概率相乘取對數運算,將乘法運算轉變成加法運算,這樣一方面避免能浮點數下溢問題,另一方面能提高運算速度。在前向後向算法中,也經常採用對數運算方法判斷參數πi\pi_{i}aija_{ij}bj(k)b_{j}(k)是否收斂:

logP(O;μi+1)logP(O;μi)<ϵ| \log P(O; \mu_{i + 1}) - \log P(O; \mu_{i}) | \lt \epsilon

其中,ϵ\epsilon爲一個足夠小的正實數。在前向後向算法中,EM計算包含加法,因此無法採用對數運算。此時,可以設置一個輔助的比例係數,將概率值乘以該比例係數以放大概率值,避免浮點數下溢。在每次迭代結束重新估計參數值時,再將比例係數取消。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章