EM算法学习笔记
一.EM算法解決的問題
要了解EM算法,就先了解這個算法是干啥的,十大算法之一頭銜怎么來的。當然這個頭銜是專家們投票得來,只是這個投票跟現在的選秀節目投票不一樣,EM是憑借硬實力勝出的,有鐵桿粉絲稱之為“神的算法”。
EM算法之前,先要了解極大似然估計方法,這個在轉發的博文《從最大似然到EM算法淺解》里面有講解了。
極大似然估計能解決很大一部分的參數估計問題了,類似邏輯回歸,RBM等等,都看到了它的影子,確實及其常用。
然而極大似然估計也是有極限的,起碼基本的要求是:樣本都是來自同一個分布的,然后就幫忙估計這個分布的參數(如高斯分布,就估計均值和方差,這兩個量都是參數)。
當遇到下面的情況:樣本來自多個分布的。簡單地說就是樣本的一部分來自分布A,又有一部分來自分布B,……,這樣就有多個分布了(當然,資深的數學愛好者還會認為這么說不對,他們認為應該是樣本里面的每一個個體都是一部分屬于分布A,一部分屬于分布B,……,也就是說樣本的每個個體都是按概率屬于多個分布的)。然后還有一個制約就是:每個樣本都不知道來自哪個分布的。
要估計這么多個分布的參數,極大似然估計就不行了,這一團糟的場面它處理不了。
EM算法就是專門解決這種疑難雜癥的,方法也快刀斬亂麻:直接每個個體胡亂指一個分布,然后就分別去估計每個分布的參數;估好后再根據情況把每個個體調節一下,該屬哪個分布就分配到哪個去,然后再估計每個分布的參數(江湖上也是這么來的,一開始小弟們都隨便認個老大,結成各個幫派,然后幫派之間又選取新老大,選完后不爽的小弟就跳槽到他爽的老大那去;跳完后各個幫派又開始選老大,小弟又洗牌,最后穩定下來的,就成了江湖)。
為了方便描述,舉個例子,暫且認為江湖上只有兩個門派,高富帥派和矮窮丑派。有一天武林要舉行炫富大賽,兩大門派都派了4名高手去參加比賽。比賽過程不多說了,倒是這次比賽亮出來的財富亮瞎了某武林高手的狗眼,他很生氣,就派人抓了這8個人,當然為了比賽,這8位高手都穿得西裝革履的,外表看不出來哪個幫派的。這位高手很想知道哪些人是高富帥派的,哪些是矮窮丑派的,而且還想知道這兩派的實力,所以要知道這兩派的財富的均值和方差,還要知道兩派分別來了多少人。
這個時候,這位高手就只能用EM算法了。
二.EM算法數學描述
EM算法分兩步,E步和M步,總的流程如下:
E步:對于每一個樣本,計算這個樣本屬于各個分布的概率(指派每個樣本個體的歸屬,也就是求出來每個樣本屬于各個分布的概率,從而確定這個分布的概率密度函數,離散型的就是求到了概率)
M步:最大化似然Q函數,求得參數θ(這個θ包括了樣本所屬的每個分布的里面的所有參數,如100個高斯分布,就求出了100個均值和100個方差),Q函數定義如下
其中的表示樣本xi屬于各個分布的概率密度函數,注意z這個東西,它可能有多種取值,也可能是個向量,甚至是連續的。是離散的情況的時候,只需要求每一種情況的概率,如果z^((i) )是連續值的時候,要用概率密度函數或者概率函數表示,表示參數θ的上一輪的迭代值或者初始值。
總之在E步就需要得到每個樣本所屬的類別,這個類別指定可能只需要用一些簡單的量,那就把這個量求出來就可以了。E步求這個“所屬類別”的目的是為了寫出Q函數的形式來,而且這個形式不帶著隱變量,也就是z這個東西。這樣是為了保證能在求解問題的過程中不需要考慮隱變量,從而能想求解極大似然那樣,得到一個閉式解或者迭代的解法。
M步中的那個Q函數(名字千百種,這里就叫這種吧),是每個樣本個體的對數似然函數在條件概率分布下的期望(注意求期望其實是求積分),然后再對每個樣本的值都累加起來,得到了總的最大化的目標。
?
三.EM算法數學基礎
來些數學上的描述,把符號交代一下吧。
問題可以描述成:給定觀測到的樣本集合x1,x2,x3…,xn,目標是找到每一個樣本個體隱含的類別z(注意z可能是由一個向量表示的),使得p(x,z)最大。
解法還是極大似然那一套,目標函數定義為
要求的參數原來是θ,但是無端端多了個z,就不好辦了,閉式的迭代式都搞不出來了。
搞不出來也得想辦法搞,觀察樣本個體xi的對數似然,再看聯合概率,先不管參數θ,用貝葉斯定理展開
取樣本xi對隱變量z的分布(也就是樣本xi屬于各個類別的概率)的總和,得到下面的全概率
把上面的東西加上來
這里可以看到,每個樣本的對數似然函數都分成了兩部分,分開討論吧,令
?? ? ? ? ? ? ? ? ? ? ? ? (1)
那么可以用下面的示意圖來表達對數似然函數值的分解
每個樣本個體都可以這樣劃分的,所以對數似然函數變成了下面的樣子
前半部分就是Q函數,后半部分就是每個樣本p分布和q分布的KL距離。
再看看E步做的事情,,這樣的結果令每個樣本的q和p分布相同了,那么就會出現KL(q||p)的值為0,這是KL距離的定義,但是由于等式(1)的存在,所以總的lnp(x_i;θ)值是不變的,那么就是L(q,θ)的值提高了,這就保證了的累加和的下界被提高了,也就是對數似然函數的下界提高了。就像下面的圖表示的一樣。
再來看看M步做的事情,求Q函數的最大化,獲取了新的θ值θ^new。這樣導致的結果就是Q函數的值提升了,而且p和q分布又不一致了,KL距離再度變大了,從而整體的對數似然函數的值也提升了。就像下面的圖表示的一樣。
這樣兩步不斷地做,對數似然函數就不斷地被提升,直到逐漸收斂到一個對數似然函數序列的穩定點。如下面的示意圖。
當然不能保證收斂到極大值點。初值選取對這個也有影響的,這個就不多討論了。
?
四.EM算法實際例子
現在開始看(一)的那個例子,假設這八個人的財富值分別是0.8,0.9,1.0,1.3,9.8,9.9,10.0,10.3。
一開始不知道怎么搞,當然在之前就認為他們各自的財富屬于一個正態分布的,就亂假設:
假設矮窮丑派是1類,高富帥派是2類,用k指定,
再假設矮窮丑派財富均值,標準差,也就是;
再假設高富帥派財富均值,標準差,也就是;
當然,需要的話可以把這個寫成一個矩陣,這里就不糾結符號的寫法了
再假設矮窮丑派的人數比例是,高富帥派的人數比例是。
一、開始E步,計算每個樣本歸屬,首先計算每個樣本屬于每個類別的概率值,根據
來計算,得到一個樣本歸屬的矩陣A
0.0167 0.0001
0.0342 0.0001
0.0659 0.0001
0.3229 0.0001
0.0001 0.1111
0.0001 0.0067
0.0001 0.0038
0.0001 0.0007
又因為,這里要注意,這個聯合概率還是得好好理解的,不然就混了。根據公式計算每個樣本屬于每個類的概率,再歸一化后得到如下矩陣B,這個就是指派矩陣了。第一行說明第一個樣本個體有0.9999的概率屬于矮窮丑派,只有0.0001的概率屬于高富帥派。
0.9999 0.0001
0.9999 0.0001
0.9999 0.0001
0.9999 0.0001
0.0009 0.9991
0.0147 0.9852
0.0256 0.9743
0.1250 0.8750
二、開始M步
最大化Q函數
其中i=1,2……8,k=1,2。
且
把上面的值代進去,然后解這個優化問題,得到參數。
從這組參數看來,已經相當靠譜了,再迭代一輪,基本到最優解了。
搞幾輪就能知道,矮窮丑派的財富均值是1.0,方差是0.1870,有4個人;高富帥派的財富均值是10.0,方差是0.1870,也有4個人。
還有就是注意那個Q函數的問題,其實分母是沒啥用的,常量,可以考慮去掉再做最優化。
?
致謝
互聯網上JerryLead,zouxy09等多位博主以及LeoZhang的指導。
李航的書,以及PMLR的作者。
?
?
參考文獻
[1]?http://blog.csdn.net/zouxy09/article/details/8537620?@ zouxy09的博客
[2]?http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html@JerryLead的博客
[3]《統計學習方法》 李航
文章來源:http://blog.csdn.net/mytestmy/article/details/38778147
總結