EM演算法及其應用(一)
來自專欄數據科學の雜談
EM演算法是期望最大化 (Expectation Maximization) 演算法的簡稱,用於含有隱變數的情況下,概率模型參數的極大似然估計或極大後驗估計。EM演算法是一種迭代演算法,每次迭代由兩步組成:E步,求期望 (expectation),即利用當前估計的參數值來計算對數似然函數的期望值;M步,求極大 (maximization),即求參數 來極大化E步中的期望值,而求出的參數 將繼續用於下一個E步中期望值的估計。EM演算法在機器學習中應用廣泛,本篇和下篇文章分別探討EM演算法的原理和其兩大應用 —— K-means和高斯混合模型。
================= 1、先驗知識 ==================
一、凸函數、凹函數和 Jensen不等式
設 為定義在區間 上的實值函數,對於任意 ,有:
則 為凸函數 (convex function),如下圖所示。相應的,若上式中 變為 ,則 為凹函數 (concave function)。 凸函數的判定條件是二階導 ,而凹函數為 。後文要用到的對數函數$ln(x)$的二階導為 ,所以是凹函數。
Jensen不等式就是上式的推廣,設 為凸函數, ,則:
如果是凹函數,則將不等號反向,若用對數函數來表示,就是:
若將 視為一個概率分布,則可表示為期望值的形式,在後文中同樣會引入概率分布:
二、KL散度
KL散度(Kullback-Leibler divergence) 又稱相對熵 (relative entropy),主要用于衡量兩個概率分布p和q的差異,也可理解為兩個分布對數差的期望。
KL散度總滿足 ,而當且僅當 時, 。 一般來說分布 比較複雜,因而希望用比較簡單的 去近似 ,而近似的標準就是KL散度越小越好。
KL散度不具備對稱性,即 ,因此不能作為一個距離指標。
三、極大似然估計和極大後驗估計
極大似然估計 (Maximum likelihood estimation) 是參數估計的常用方法,基本思想是在給定樣本集的情況下,求使得該樣本集出現的「可能性」最大的參數 。將參數 視為未知量,則參數 對於樣本集X的對數似然函數為:
這個函數反映了在觀測結果X已知的條件下, 的各種值的「似然程度」。這裡是把觀測值X看成結果,把參數 看成是導致這個結果的原因。參數$ heta$雖然未知但是有著固定值 (當然這是頻率學派的觀點),並非事件或隨機變數,無概率可言,因而改用 「似然(likelihood)" 這個詞。
於是通過求導求解使得對數似然函數最大的參數 , ,即為極大似然法。
極大後驗估計 (Maximum a posteriori estimation) 是貝葉斯學派的參數估計方法,相比於頻率學派,貝葉斯學派將參數 視為隨機變數,並將其先驗分布 包含在估計過程中。運用貝葉斯定理,參數 的後驗分布為:
上式中 不依賴於 因而為常數項可以捨去,則最終結果為
================ 2、EM演算法初探 =================
概率模型有時既含有觀測變數 (observable variable),又含有隱變數 (hidden variable),隱變數顧名思義就是無法被觀測到的變數。如果都是觀測變數,則給定數據,可以直接使用極大似然估計。但如果模型含有隱變數時,直接求導得到參數比較困難。而EM演算法就是解決此類問題的常用方法。
對於一個含有隱變數 的概率模型,一般將 稱為完全數據,而觀測數據 為不完全數據。
我們的目標是極大化觀測數據 關於參數 的對數似然函數。由於存在隱變數,因而也可表示為極大化 的邊緣分布 (marginal distribution),即:
上式中存在「對數的和」—— ,如果直接求導將會非常困難。因而EM演算法採用曲線救國的策略,構建 式的一個下界,然後通過極大化這個下界來間接達到極大化 的效果。
要想構建下界,就需要運用上文中的Jensen不等式。記 為第t步迭代參數的估計值,考慮引入一個分布 ,由於
為凹函數
因而可以利用Jensen不等式求出 的下界:
式構成了 的下界,而 式的右邊為 的熵 ,其獨立於我們想要優化的參數 ,因而是一個常數。所以極大化 的下界 式就等價於極大化 , (Q函數) 亦可表示為 ,其完整定義如下:
基於觀測數據 和 當前參數 計算未觀測數據 的條件概率分布 ,則Q函數為完全數據的對數似然函數關於 的期望。
此即E步中期望值的來歷。
接下來來看M步。在 式中若令 ,則下界 式變為:
可以看到在第t步, 的下界與 相等,又由於極大化下界與極大化Q函數等價,因而在M步選擇一個新的 來極大化 ,就能使 (這裡為了便於理解就將 與 式等同了),也就是說 是單調遞增的,通過EM演算法的不斷迭代能保證收斂到局部最大值。
EM演算法流程:
輸入: 觀測數據 ,隱變數 ,聯合概率分布
輸出:模型參數
1) 初始化參數
2) E步: 利用當前參數 計算Q函數,
3) M步: 極大化Q函數,求出相應的
4) 重複 2. 和3. 步直至收斂。
EM演算法也可用於極大後驗估計,極大後驗估計僅僅是在極大似然估計的基礎上加上參數 的先驗分布,即 ,則取對數後變為 ,由於後面的 不包含隱變數 ,所以E步中求Q函數的步驟不變。而在M步中需要求新的參數 ,因此需要包含這一項,所以M步變為
================ 3、EM演算法深入 =================
上一節中遺留了一個問題:為什麼式 中引入的分布是 而不是其他分布? 下面以另一個角度來闡述。
假設一個關於隱變數 的任意分布 ,則運用期望值的定義, 式變為:
式的右端為 和後驗分布 的KL散度,由此 被分解為 和 。由於KL散度總大於等於0,所以 是 的下界,如圖:
由此可將EM演算法視為一個坐標提升(coordinate ascent)的方法,分別在E步和M步不斷提升下界 ,進而提升 。
在E步中,固定參數 ,當且僅當 ,即 時, 達到最大,而 的條件是 ,因此這就是式 中選擇分布 的原因,如此一來 也就與 式一致了。
在M步中,固定分布 ,選擇新的 來極大化 。同時由於 ,所以 ,導致 提升的幅度會大於 提升的幅度,如圖:
因此在EM演算法的迭代過程中,通過交替固定 和 來提升下界 ,進而提升對數似然函數 ,從而在隱變數存在的情況下實現了極大似然估計。在下一篇中將探討EM演算法的具體應用。
Reference :
- Christopher M. Bishop. Pattern Recognition and Machine Learning
2. 李航.《統計學習方法》
3. CS838. The EM Algorithm
推薦閱讀:
※平方誤差和絕對值損失的總體解
※RF、GBDT、XGBoost常見面試題整理
※SVM問題定義、推導
※一個框架解決幾乎所有機器學習問題
※最新調查:Python 成數據分析、數據科學與機器學習的第一大語言
TAG:機器學習 | ExpectationMaximization |