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