知道結果反推過程的神奇算法:EM算法

我們手裡有三個硬幣,A,B,C,他們出現正面的概率是x,y,z。遊戲規則是先擲出A,如果是正面選擇B再擲一次記錄結果,如果A是反面則選擇C再擲一次記錄結果。經過N次實驗,我們得到了一組觀察值(0,1,1,0。。。。1),現在問A\\B\\C出現正面的概率x,y,z分別是多少。也可以換個角度理解這個問題,就是我們只知道事件發生的結果,是不是能反向推知事件的過程呢?答案是可以的!

用EM算法可以幫助我們從結果出發(後驗概率),推知未知過程的信息(隱變量)。這裡面有個前提條件,就是我們知道事件發生的概率模型(均勻分佈、二項分佈還是高斯分佈,比如男生身高的分佈滿足高斯分佈),例題中的硬幣就滿足0-1分佈。在已知概率分佈模型的情況下,可以用極大似然估計法來估計模型的參數。假設參數未知,假設實驗之間是相互獨立的,那麼實驗結果的聯合概率分佈即為L=P1*P2....P2,也就是我們要找的似然函數,因為是乘積形式,通常取log變成合的形式。logL=P1+..._Pn,就是求該似然函數的極大值。P則是包含了隱變量的條件概率分佈,如例題P(Y|x,y,z) = P(Y,Z|x,y,z) = P(Z|x,y,z)P(Y|Z,x,y,z)。

實際運算中我們先假設一組參數值,通過極大似然估計得到L最優參數的估計(E步),然後將得到的最優參數估計更新原有的參數值進而進行迭代(M步),一直跌到到參數不再變化為止得到最優解。大家一定要記住應用EM算法的前提條件就是已知隨機事件的概率分佈,如果不知道概率分佈是無法寫出極大似然估計的,也就無從應用EM方法。

知道結果反推過程的神奇算法:EM算法


分享到:


相關文章: