人工智能裏的數學修煉 | 隱馬爾可夫模型:基於EM的鮑姆-韋爾奇算法求解模型參數

人工智能裏的數學修煉 | 概率圖模型 : 隱馬爾可夫模型
人工智能裏的數學修煉 | 隱馬爾可夫模型:前向後向算法
人工智能裏的數學修煉 | 隱馬爾可夫模型 : 維特比(Viterbi)算法解碼隱藏狀態序列
人工智能裏的數學修煉 | 隱馬爾可夫模型:基於EM的鮑姆-韋爾奇算法求解模型參數

隱馬爾可夫模型的參數爲λ={A,B,π}\lambda=\{A,B,\pi\}, 對餘其參數的求解,可以分爲兩種情況。

第一種情況較爲簡單,就是我們已知長度爲TT的觀測序列和對應的隱藏狀態序列,即{(O,I)}\{(O,I)\}是已知的,此時我們可以很容易的用最大似然來求解模型參數。

第二種情況較爲複雜,很多時候,我們無法得到隱馬爾可夫模型觀察序列對應的隱藏序列,即只有{O}\{O\}是已知的,此時,我們就需要採用到鮑姆-韋爾奇算法,其實本質上也就是就是EM算法

一、鮑姆-韋爾奇算法原理

鮑姆-韋爾奇算法在每一次迭代中,都分爲E和M兩步,在E步,我們需要基於聯合分佈P(O,Iλ)P(O,I|\lambda)和條件概率P(IO,λˉ)P(I|O,\bar{\lambda})的算出期望QQ(其中λˉ\bar{\lambda}爲當前迭代中模型參數),然後在M步中極大化這個期望,獲得更新的模型參數λ\lambda。通過不停的EM迭代,使得模型參數收斂

  • E步的期望表達式爲:
    Q=IP(IO,λˉ)logP(O,Iλ)Q=\sum_{I}P(I|O,\bar{\lambda})logP(O,I|\lambda)
  • 在M步我們極大化上式,然後得到更新後的模型參數如下:
    λˉ=argmaxλˉIP(IO,λˉ)logP(O,Iλ)\bar{\lambda}=argmax_{\bar{\lambda}}\sum_{I}P(I|O,\bar{\lambda})logP(O,I|\lambda)通過,E步和M步不斷的迭代,我們可以得到收斂的參數λˉ\bar{\lambda}
    上面的式子可能有些地方不知道該如何計算,接下來講解,具體的推導和計算方法

二、鮑姆-韋爾奇算法的推導

輸入:長度爲TT的觀測序列O={(o1),(o2),...,(oT)}O=\{(o_{1}),(o_{2}),...,(o_{T})\},所有的可能的狀態集合q1,q2,...,qN{q_{1},q_{2},...,q_{N}}, 所有可能的觀測集合v1,v2,...,vM{v_{1},v_{2},...,v_{M}}
未知:隱藏的狀態序列I={(i1),(i2),...,(iT)}I=\{(i_{1}),(i_{2}),...,(i_{T})\}
目標: λ={A,B,π}\lambda=\{A,B,\pi\}

對於鮑姆-韋爾奇算法的E步,我們需要首先計算聯合分佈P(O,Iλ)P(O,I|\lambda)如下:
P(O,Iλ)=πi1bi1(o1)ai1i2bi2(o2)ai2i3...bi(T1)(oT1)ai(T1)i(T)biT(oT)P(O,I|\lambda)=\pi_{i1}b_{i1}(o_{1})a_{i1i2}b_{i2}(o_{2})a_{i2i3}...b_{i(T-1)}(o_{T-1})a_{i(T-1)i(T)}b_{iT}(o_{T})因爲條件概率P(IO,λˉ)=P(O,Iλ)P(O,λ)P(I|O,\bar{\lambda})=\frac{P(O,I|\lambda)}{P(O,\lambda)}P(O,λ)P(O,\lambda)是一個參數, 期望Q可以簡化爲
Q=IP(O,Iλˉ)logP(O,Iλ)Q=\sum_{I}P(O,I|\bar{\lambda})logP(O,I|\lambda)P(O,Iλ)P(O,I|\lambda)帶入上式,我們有
Q=IP(O,Iλˉ)logπi+I(tTlogbit(ot))P(O,Iλˉ)+I(tT1logaiti(t+1))P(O,Iλˉ)Q=\sum_{I}P(O,I|\bar{\lambda})log\pi_{i}+\sum_{I}(\sum_{t}^{T}logb_{it}(o_{t}))P(O,I|\bar{\lambda})+\sum_{I}(\sum_{t}^{T-1}loga_{iti(t+1)})P(O,I|\bar{\lambda})

接下來對於對於鮑姆-韋爾奇算法的M步,我們需要極大化Q,這要求對Q的三個子式子分別求導,可以得到
πˉi=γ1(i)\bar{\pi}_{i}=\gamma_{1}(i)其中γt(i)=P(it=qiO,λ)=P(it=qi,Oλ)P(Oλ))\gamma_{t}(i)=P(i_{t}=q_{i}|O,\lambda)=\frac{P(i_{t}=q_{i},O|\lambda)}{P(O|\lambda))}表示在觀測序列OO給定的條件下,時刻tt處於狀態qiq_{i}的概率。
aˉij=t=1T1ξt(i,j)t=1Tγt(i)\bar{a}_{ij}=\frac{\sum_{t=1}^{T-1}\xi_{t}(i,j)}{\sum_{t=1}^{T}\gamma_{t}(i)}這裏ξt(i,j)=P(it=qi,it+1=qjO,λ)\xi_{t}{(i,j)}=P(i_{t}=q_{i},i_{t+1}=q_{j}|O,\lambda)表示在觀測序列OO給定的條件下,時刻tt處於狀態qiq_{i}且時刻t+1t+1處於qjq_{j}的概率。
bˉj(k)=t1Tγt(j)I(ot=vk)t=1Tγt(j)\bar{b}_{j}(k)=\frac{\sum_{t-1}^{T}\gamma_{t}(j)I(o_{t}=v_{k})}{\sum_{t=1}^{T}\gamma_{t}(j)}

三、鮑姆-韋爾奇算法的流程

  1. 初始化參數λˉ={A,B,π}\bar{\lambda}=\{A,B,\pi\}
  2. 更新迭代參數
    πˉi=γ1(i)\bar{\pi}_{i}=\gamma_{1}(i)
    aˉij=t=1T1ξt(i,j)t=1Tγt(i)\bar{a}_{ij}=\frac{\sum_{t=1}^{T-1}\xi_{t}(i,j)}{\sum_{t=1}^{T}\gamma_{t}(i)}
    bˉj(k)=t1Tγt(j)I(ot=vk)t=1Tγt(j)\bar{b}_{j}(k)=\frac{\sum_{t-1}^{T}\gamma_{t}(j)I(o_{t}=v_{k})}{\sum_{t=1}^{T}\gamma_{t}(j)}
  3. 模型收斂,停止迭代
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章