GMM這是圖像處理,模式識別和深度學習領域一個百嚼不爛的話題。很多人被一堆數學公式,迭代求和和看似毫無聯系的likehood EM算法搞得糊里糊塗。
其實就算羡慕着很多牛氣哄哄的學霸炫耀公式推理的IT普工們,我們有沒有問過自己,我們真的知道GMM嗎?於是有些人和我一樣有了如下的思考和疑問:
1.到底什么是高斯混合模型?最好能一句話或者簡單的話說明白,至少讓我一輩子也忘不掉這個該死的算法。。。
2.GMM是如此復雜有效,能讓GMM算法向富士康的iphone流水線一樣,雖然精密龐雜但卻能完整直觀的展現在我們面前嗎?
3.可以再詳細一點嗎?
4.為什么會有這個算法模型?GMM存在的意義是什么,能解決什么問題?
5.GMM真的是萬能的嗎?它有什么問題,我如何避免或修正他們?
6.。。。。
為了徹底解決這些看似簡單原生態的問題,我拜讀了很多大牛的文章,寫了代碼做了實驗,只為一睹GMM芳顏:
1.到底什么是高斯混合模型?最好能一句話或者簡單的話說明白,至少讓我一輩子也忘不掉這個該死的算法。。。
一句話,就一句話:GMM——道生一一生二二生三三生萬物。(我相信很多中國人,至今都不會斷句這句話。。。)
是的,我說GMM來自與哲學,而老子則直接告訴你他就是"道"。GMM是人們認識自然萬物相生相克的規律,是大腦對自然認識后的長時間歸納與沉淀。GMM的核心思想就是任意的形態(不管是可見的光,圖像,還是抽象的多維度變量模型,比如經濟金融危機模型),都來可以用高斯核函數來累積加權得到,經管這些核可能不止一個,有不同的維度,不一的中心,甚至相差很大的波動。這都不妨礙他們謙卑的遵循高斯概率模型的函數性質,都能分解成為那個迷人的公式:
公式(1)
再后來我們擁有了計算機,而且當離散數學這一學科方法的出現,連續Gauss模型要完成計算機的模擬,所以離散化的概率密度函數就表示成這樣了:
公式(2)
相信這里學渣們又開始煩了,神馬意思?又一坨!
相信我,這是你后面降妖除魔的朱砂,就算你不認同這坨東東,那我告訴你,即使他是一坨,那也是一坨可遇不可求的『狗黃金』,只能這樣解釋了,我已詞盡xx!
解釋一下,x是樣本變量,p(x)是樣本之與你大GMM模型的概率(真實的叫法是概率密度,其實概率即是概率密度的積累積分,打住,渣爺們,這個括號你當沒看見),K是你要最終分的類別個數(這個有講究,后書分解),很多paper里講K is compenents of GMM。后面的是指x由第k個高斯模型生成的概率,那么
是什么?paper中多叫『reponse matrix』,我們叫他第k類的權重,就是這個高斯model在所有model里的對樣本x屬於k類的一個貢獻大小,簡單講就是江湖里老k入會時的股份,以后牛叉了,股份可以增加哦。。。,接下來,就是那句名言:有人的地方就是江湖。苦逼的GMM為了形成強大的黑客帝國,不斷迭代進步,這一的進步的同時,各幫派的上位斗爭也開始驚心動魄地上演:
1)對於GMM最終的那個強大model來說,我不關心你們的爭斗,只要你們都能上交最多的利潤p(x),我就高興(這里就是gmm的一個bug,paper上叫局部最優缺陷),如果各幫派能在自己最大利潤的情況下,和諧相處達到平衡,那就最好不過了,說明老大的公司已經開啟印鈔模式,走上迎娶白富美的大道啦。。。於是,江湖規矩變因運而生!!!
公式(3),但是老大是台machine啊,離散的p(xi)是很小的,計算機無法存儲有些太小的浮點值,怎么辦?數學就像股票界的"狗庄"一樣,猥瑣的出現了——Log()函數!又一幕氣死學渣,樂死學霸的戲劇上演了。於是規矩就成了:
公式(4),其實我可以再詳細一點的,否則學霸要鄙視了,
於是規矩終歸這里(Champions belong to here eventually):
公式(5),這里的N(xxx)函數就是上面的概率密度的數學規范表示。這就是大名鼎鼎的log-likehood function,如果能求出他,找到最大值,那么這時對應的高斯模型就是最終的模型,每個model對樣本的作用加權出的p(xi)自然就可以完成分類(這里涉及一個量化標准,自己找paper,到這個時候還敢做『伸手黨』,估計你是到不了雙十一了,直接剁了雙爪,哈哈)。下面的核心任務就是最精彩的空手套白狼的游戲了——如何解出這個最大似然函數,揭開屌絲們朝思暮想的GMM妹妹真容了!
至此,第一個問題算是憋完了,各位就這么看吧!再說,估計得便秘了。。。
2.GMM是如此復雜有效,能讓GMM算法向富士康的iphone流水線一樣,雖然精密龐雜但卻能完整直觀的展現在我們面前嗎?
我想說:能!大部分說GMM復雜,無非是因為怕公式,不明所以。不是庖丁,不知牛之大概,牛何解邪?要有個直觀的呈現,無非就是要准備的了輸入,下得去流水線,搞懂制造工藝流程,最后還能裝箱出廠,完成iphone般高大上的輸出。那么接下來就讓我們看看GMM算法的整個工序流程:
首先是訓練樣本N個,每個樣本xi中含有D維的變量,最終想要分到K個結果類中,每個維度變量對應上面概率密度函數中的一個均值中心u,和一個該高斯核生成這個xi的"模型權重wi"。用矩陣表示應該更易理解:樣本X(N*D),均值U(D*K),權重wi(N*K).這是第一步輸入問題和輸入的簡單矩陣模型,下面就是到底要最什么?這個問題在問題1中有講訴,就是求能使GMM模型達到利益最大化的那個max likehood function的極值。
於是第二步制造工藝就是求極值,眾所周知求極值,那肯定是要用到導數啦,但是你仔細翻翻高數的課本,你會發現maxlikehood function與課本里乘積的概率形式又有些差別,好像總差點什么,沒關系讓數學來做,既然求導復雜難度大,不利於計算設計解耦,那么是否有另外的解決方法?真有,EM算法!(渣爺們估計又一片罵聲。。。)ok,我來解釋一下,為什么想到EM,這得從EM的本質和特點來講,EM來自與假設驗證的收斂思想。講簡單一點就是,如果一個來源與真實情況(你可以理解為來自真實樣本)的假設,只要有個驗證模型(我們這里就是指高斯模型)存在,我就可以驗證你剛才的假設與模型的輸出結果的差異,然后再通過這個差異來建立新的假設,再輸入模型繼續驗證。當你連續的假設差異(這里應該准確的講是正向差異)足夠小時,是否意味着這時的假設和模型的吻合度足夠高?系統足夠穩定?當然!
這里其實有些坑,比如我的驗證模型為什么是高斯,其實只要能證明模型在你關心的中心附近收斂,波動有限,你也可以選取。
由於這種收斂和驗證都是來源與樣本假設,那問題來了,這種假設是否真的准確?答案是否定的,你EM得到的穩定模型只是個局部樣本最優。為什么,原因很簡單:你的樣本是抽樣采集的,你無法保證你的實驗樣本(海中一粟)能反應真實事件的各種復雜情況,最大的保證只能說盡量代表真實情況。
那么問題又來了,我如何保證我的樣本,如果沒有辦法,那GMM就沒有應用價值了?答案是有的,還記得你信號與系統中不起眼的地方有個抽樣定理嗎?抽樣的頻率要至少為樣本頻率的2倍,否則采樣結果不能保證反應樣本的主要信息。
so,。。。這個你該懂了吧。
3.可以再詳細一點嗎?(學覇自動忽略這一節,這是抽取JerryLead大神的思路說給學渣聽的,謝謝~)
天空飄來8個字:秒殺學霸不是事兒!當然可以,學渣們現在開始——帶你裝逼帶你飛!
大EM算法:前面做了一個邏輯分析,為什么引入EM算法來求極值。其實這是缺少數學論證的,本身就是一種假設上的假設驗證,因此有必要從數學角度來論證這個問題確實可以用數學的方法去解決。
首先,你要理解一些數學概念,比如jensen不等式(凹函數f(E(x))>=E[f(x)]),高數上的凹凸函數(log是一個凹函數)。現在我們可以把maxlikehood函數寫的更數學一些,這里就是做了個空手用來套『白狼』,這個空手就是隱含類別z,這是個什么東東?在數學上我們認為它也是各分布,只不過是簡單的多項式分布,就是為了描述某個樣本樣列xi屬於類k的表示,就是zi=k,就是上面說的wi=p(zi=j|xi,u,sigma,類權重),就是滿足『樣列屬於類k的一個權重』。這里有個邏輯要說一下,只有我們確定了這個隱含分類zi(空手)之后,我們的樣列xi才能說符合某個高斯分布,即。由此可以得到聯合分布
,看到沒這就是公式(2)。(這里有些數學條件限制,后面附上鏈接,各位願意了解的可以仔細看看JerryLead的推導,這里只做必要解釋)ok,下面再對maxlikehood function做細化:
公式(6)
這時候就是Jenssen和log凹函數的作用了,上面的公式就變成了這樣:
公式(7)log()移到了里面,乘積被分解為和。
公式(8),下面解釋一下:
第一個就是我們上面問題里的Wk,不是wi。上面3各公式,分別表示類j的權重,中心,與方差波動。OK,至此一個EM循環就over了。
最后大牛jerryLead的一張圖來顯示一下EM loop:
循環下面步驟,直到收斂: {
(E步)對於每一個i和j,計算
(M步),更新參數:
}
這里不想再貼別人的圖了,因為我覺得該解釋的地方都解釋了。。。。,再說,估計學霸們要說我惡心抄襲了(雖然只是幾個占地方的公式,但確實對不住JerryLead大神,願神保佑!哈哈)
至此GMM算法就掄完了。。。。下面是一些提后話
4.為什么會有這個算法模型?GMM存在的意義是什么,能解決什么問題?
1)前面這個問題,有點扯,真的,就像你問為什么有人類一樣?而且我也並不想像學霸那樣翻歷史書,告訴你在xxx時間背景下,他就誕生了!
當你看到了一下現象,認識一下事物,特別是一些人后,我們總按照千百年的進化慣性,去有意無意的分解總結事物,以期望認識新的事物。比如你認識陽光,你又用三棱鏡分解了他成不同頻率的七色光,然后你有用計算機模擬出組成他們的RGB三原色。於是一天你看到了一種從未見過的花,你會很自信的說我可以把它的顏色存儲下來。但是事實上事物中蘊含太多的未知,只是鑒於人類對未來的恐懼的一種慣性反應——分解它,用最小的元素去理解他,這樣你就不會害怕。。。。
2)GMM的意義,在於我們可以嘗試用一種正態分布的模型去模擬一些獨立元素組成的事物與其事物的區別。
就比如在米缸里找出大豆一樣,但前提是這兩者用可量化的不同,比如形狀,密度。。。。
5.GMM真的是萬能的嗎?它有什么問題,我如何避免或修正他們?
1)前面其實都有提到,比如極值的局部最優問題?模型的個數真的就只需要compent個嗎?,輸入的樣本維度如果不獨立怎么辦(估計上帝都不敢肯定這個問題)?
2)避免和修正:可以用有監督學習來初始化zi,可以盡量提高采樣頻率,可以量化樣本維度,可以改進輸出量化方法。。。。等等。。。
6.感謝很多願意分享的人,下面附錄一下我還記得和參考過的大神blog:
1)http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html
2)http://blog.csdn.net/zouxy09/article/details/9982495
3)。。。對不起忘記了。。。。
也許精彩才剛剛開始。。。。