本文試圖用最簡單的例子、最淺顯的方式說明EM(Expectation Maximization)算法的應用場景和使用方法,而略去公式的推導和收斂性的證明。
以下內容翻譯自《Data-Intensive Text Processing with MapReduce》。
Maximum Likelihood Estimation
Maximum Likelihood Estimation(MLE)是要選擇一個最佳參數θ*,使得從訓練集中觀察到和情況出現的概率最大。即模型:
舉例來說明。如下圖
一個小黑球沿着一個三角形的木樁滾入杯子a或b中,可建立一個概率模型,由於是二值的,設服從Bernoulli分布,概率密度函數為:
p是k=0的概率,也是我們要使用MLE方法要確定的參數。
在上面的滾球實驗中,我們令Y是待確定的參數,X是觀察到的結果。連續10次實驗,觀察到的結果是X=(b,b,b,a,b,b,b,b,b,a)。小球進入a杯的概率為p,則滿足10次實驗的聯合概率為:
為了使X發生的概率最大,令上式一階求導函數為0,得p=0.2。
含有隱含變量的彈球實驗
如上圖,現在又多了兩塊三角形木樁,分別標記序號為0,1,2。並且實驗中我們只知道小球最終進入了哪個杯子,中間的路線軌跡無從得知。
X取值於{a,b,c}表示小球進入哪個杯子。Y取值於{0,1,2,3}表示小球進入杯子前最后一步走的是哪條線路。小球在3個木樁處走右邊側的概率分別是p=(p0,p1,p2)。跟上例中一樣,X表示訓練集觀測到的值,p是模型參數,而這里的Y就是"隱含變量"。
假如我們做了N次實驗,小球經過路徑0,1,2,3的次數依次是N0,N1,N2,N3,則:
帶隱含變量的MLE
現在我們來考慮這個概率模型:Pr(X,Y;θ)。只有X是可觀察的,Y和θ都是未知的。
經過一組實驗,我們觀察到X的一組取值x=(x1,x2,...,xl),則聯合概率為:
MLE就是要求出最佳的參數θ*,使得:
這個時候要求θ*,”令一階求函數等於0“的方法已經行不通了,因為有隱含變量Y的存在。實現上上式很難找到一種解析求法,不過一種迭代的爬山算法可求解該問題。
Expectation Maximization
EM是一種迭代算法,它試圖找到一系列的估計參數θ(0),θ(1),θ(2),....使得訓練數據的marginal likelihood是不斷增加的,即:
算法剛開始的時候θ(0)賦予隨機的值,每次迭代經歷一個E-Step和一個M-Step,迭代終止條件是θ(i+1)與θ(i)相等或十分相近。
E-Step是在θ(i)已知的情況下計算X=x時Y=y的后驗概率:
f(x|X)是一個權值,它表示觀測值x在所有觀察結果X中出現的頻率。
M-Step:
其中在E-Step已經求出來了。這時候可以用“令一階導數等於0”的方法求出θ'。
EM算法收斂性的證明需要用到Jensen不等式,這里略去不講。
舉例計算
就拿上文那個3個木樁的滾球實驗來說,做了N次實驗,滾進3個杯子的次數依次是Na,Nb,Nc。
先給賦予一個隨機的值。
E-Step:
同時我們注意到
其它情況下Y的后驗概率都為0。
M-Step:
我們只需要計算非0項就可以了
上面的每行第3列和第4列相乘,最后再按行相加,就得到關於θ(i+1)的函數,分別對p0,p1,p2求偏導,令導數為0,可求出p'0,p'1,p'2。
這里補充一個求導公式:
我們這個例子非常簡單,計算θ(1)已經是最終的解了,當然你要計算出θ(2)才下此結論。
結束語
對於一般的模型,EM算法需要經過若干次迭代才能收斂,因為在M-Step依然是采用求導函數的方法,所以它找到的是極值點,即局部最優解,而非全局最優解。也正是因為EM算法具有局部性,所以它找到的最終解跟初始值θ(0)的選取有很大關系。