人工智能裏的數學修煉 | 概率圖模型 : 隱馬爾可夫模型
人工智能裏的數學修煉 | 隱馬爾可夫模型:前向後向算法
人工智能裏的數學修煉 | 隱馬爾可夫模型 : 維特比(Viterbi)算法解碼隱藏狀態序列
人工智能裏的數學修煉 | 隱馬爾可夫模型:基於EM的鮑姆-韋爾奇算法求解模型參數
隱馬爾可夫模型的參數爲λ={A,B,π}, 對餘其參數的求解,可以分爲兩種情況。
第一種情況較爲簡單,就是我們已知長度爲T的觀測序列和對應的隱藏狀態序列,即{(O,I)}是已知的,此時我們可以很容易的用最大似然來求解模型參數。
第二種情況較爲複雜,很多時候,我們無法得到隱馬爾可夫模型觀察序列對應的隱藏序列,即只有{O}是已知的,此時,我們就需要採用到鮑姆-韋爾奇算法,其實本質上也就是就是EM算法
一、鮑姆-韋爾奇算法原理
鮑姆-韋爾奇算法在每一次迭代中,都分爲E和M兩步,在E步,我們需要基於聯合分佈P(O,I∣λ)和條件概率P(I∣O,λˉ)的算出期望Q(其中λˉ爲當前迭代中模型參數),然後在M步中極大化這個期望,獲得更新的模型參數λ。通過不停的EM迭代,使得模型參數收斂
- E步的期望表達式爲:
Q=I∑P(I∣O,λˉ)logP(O,I∣λ)
- 在M步我們極大化上式,然後得到更新後的模型參數如下:
λˉ=argmaxλˉI∑P(I∣O,λˉ)logP(O,I∣λ)通過,E步和M步不斷的迭代,我們可以得到收斂的參數λˉ。
上面的式子可能有些地方不知道該如何計算,接下來講解,具體的推導和計算方法
二、鮑姆-韋爾奇算法的推導
輸入:長度爲T的觀測序列O={(o1),(o2),...,(oT)},所有的可能的狀態集合q1,q2,...,qN, 所有可能的觀測集合v1,v2,...,vM
未知:隱藏的狀態序列I={(i1),(i2),...,(iT)}
目標: λ={A,B,π}
對於鮑姆-韋爾奇算法的E步,我們需要首先計算聯合分佈P(O,I∣λ)如下:
P(O,I∣λ)=πi1bi1(o1)ai1i2bi2(o2)ai2i3...bi(T−1)(oT−1)ai(T−1)i(T)biT(oT)因爲條件概率P(I∣O,λˉ)=P(O,λ)P(O,I∣λ)且P(O,λ)是一個參數, 期望Q可以簡化爲
Q=I∑P(O,I∣λˉ)logP(O,I∣λ)將P(O,I∣λ)帶入上式,我們有
Q=I∑P(O,I∣λˉ)logπi+I∑(t∑Tlogbit(ot))P(O,I∣λˉ)+I∑(t∑T−1logaiti(t+1))P(O,I∣λˉ)
接下來對於對於鮑姆-韋爾奇算法的M步,我們需要極大化Q,這要求對Q的三個子式子分別求導,可以得到
πˉi=γ1(i)其中γt(i)=P(it=qi∣O,λ)=P(O∣λ))P(it=qi,O∣λ)表示在觀測序列O給定的條件下,時刻t處於狀態qi的概率。
aˉij=∑t=1Tγt(i)∑t=1T−1ξt(i,j)這裏ξt(i,j)=P(it=qi,it+1=qj∣O,λ)表示在觀測序列O給定的條件下,時刻t處於狀態qi且時刻t+1處於qj的概率。
bˉj(k)=∑t=1Tγt(j)∑t−1Tγt(j)I(ot=vk)
三、鮑姆-韋爾奇算法的流程
- 初始化參數λˉ={A,B,π}
- 更新迭代參數
πˉi=γ1(i)
aˉij=∑t=1Tγt(i)∑t=1T−1ξt(i,j)
bˉj(k)=∑t=1Tγt(j)∑t−1Tγt(j)I(ot=vk)
- 模型收斂,停止迭代