高斯混合模型與EM算法圖文詳解

一、前言 

高斯混合模型(Gaussian Mixture Model)簡稱GMM,是一種業界廣泛使用的聚類算法。它是多個高斯分佈函數的線性組合,理論上GMM可以擬合出任意類型的分佈,通常用於解決同一集合下的數據包含多種不同的分佈的情況。高斯混合模型使用瞭期望最大(Expectation Maximization, 簡稱EM)算法進行訓練,故此我們在瞭解GMM之後,也需要瞭解如何通過EM算法訓練(求解)GMM。

二、高斯混合模型(GMM) 

在瞭解高斯混合模型之前,我們先瞭解一下這種模型的具體參數模型-高斯分佈。高斯分佈又稱正態分佈,是一種在自然界中大量存在的,最為常見的分佈形式。

如上圖,這是一個關於身高的生態分佈曲線,關於175-180對稱,中間高兩邊低,相信大傢在高中已經很瞭解瞭,這裡就不再闡述。

現在,我們引用《統計學習方法》-李航 書中的定義,如下圖:

根據定義,我們可以理解為,GMM是多個高斯分佈的加權和,並且權重α之和等於1。這裡不難理解,因為GMM最終反映出的是一個概率,而整個模型的概率之和為1,所以權重之和即為1。高斯混合模型實則不難理解,接下來我們介紹GMM的訓練(求解)方法。

PS.從數學角度看,對於一個概率模型的求解,即為求其最大值。從深度學習角度看,我們希望降低這個概率模型的損失函數,也就是希望訓練模型,獲得最大值。訓練和求解是不同專業,但相同目標的術語。

三、最大似然估計 

想要瞭解EM算法,我們首先需要瞭解最大似然估計這個概念。我們通過一個簡單的例子來解釋一下。

假設,我們需要調查學校男女生的身高分佈。我們用抽樣的思想,在校園裡隨機抽取瞭100男生和100女生,共計200個人(身高樣本數據)。我們假設整個學校的身高分佈服從於高斯分佈。但是這個高斯分佈的均值u和方差∂2我們不知道,這兩個參數就是我們需要估計的值。記作θ=[u, ∂]T。

由於每個樣本都是獨立地從p(x|θ)中抽取的,並且所有的樣本都服從於同一個高斯分佈p(x|θ)。那麼我們從整個學校中,那麼我抽到男生A(的身高)的概率是p(xA|θ),抽到男生B的概率是p(xB|θ)。而恰好抽取出這100個男生的概率,就是每個男生的概率乘積。用下式表示:

    

這個概率反映瞭,在概率密度函數的參數是θ時,得到X這組樣本的概率。在公式中,x已知,而θ是未知,所以它是θ的函數。這個函數放映的是在不同的參數θ取值下,取得當前這個樣本集的可能性,因此稱為參數θ相對於樣本集X的似然函數(likehood function)。記為L(θ)。

我們先穿插一個小例子,來闡述似然的概念。 

某位同學與一位獵人一起外出打獵,一隻野兔從前方竄過。隻聽一聲槍響,野兔應聲到下,如果要你推測,這一發命中的子彈是誰打的?你就會想,隻發一槍便打中,由於獵人命中的概率一般大於這位同學命中的概率,看來這一槍是獵人射中的。

這個例子所作的推斷就體現瞭極大似然法的基本思想,我們並不知道具體是誰打的兔子,但是我們可以估計到一個看似正確的參數。回到男生身高的例子中。在整個學校中我們一次抽到這100個男生(樣本),而不是其他的人,那麼我們可以認為這100個男生(樣本)出現的概率最大,用上面的似然函數L(θ)來表示。

所以,我們就隻需要找到一個參數θ,其對應的似然函數L(θ)最大,也就是說抽到這100個男生(的身高)概率最大。這個叫做θ的最大似然估計量,記為:

因為L(θ)是一個連乘函數,我們為瞭便於分析,可以定義對數似然函數,運用對數的運算規則,把連乘轉變為連加:

PS.這種數學方法在MFCC中我們曾經用過,可以回溯一下上一篇文章。

此時,我們要求θ,隻需要使θ的似然函數L(θ)極大化,然後極大值對應的θ就是我們的估計。在數學中求一個函數的最值問題,即為求導,使導數為0,解方程式即可(前提是函數L(θ)連續可微)。在深度學習中,θ是包含多個參數的向量,運用高等數學中的求偏導,固定其中一個變量的思想,即可求出極致點,解方程。

總結而言:

最大似然估計,隻是一種概率論在統計學的應用,它是參數估計的方法之一。說的是已知某個隨機樣本滿足某種概率分佈,但是其中具體的參數不清楚,參數估計就是通過若幹次試驗,觀察其結果,利用結果推出參數的大概值。最大似然估計是建立在這樣的思想上:已知某個參數能使這個樣本出現的概率最大,我們當然不會再去選擇其他小概率的樣本,所以幹脆就把這個參數作為估計的真實值。

求最大似然函數估計值的一般步驟:

  • 寫出似然函數;
  • 對似然函數取對數,並整理;(化乘為加)
  • 求導數,令導數為0,得到似然方程;
  • 解似然方程,得到的參數即為所求。

四、EM算法 

期望最大(Expectation Maximization, 簡稱EM)算法,稱為機器學習十大算法之一。它是一種從不完全數據或有數據丟失的數據集(存在隱含變量)中求解概率模型參數的最大似然估計方法。

現在,我們重新回到男女生身高分佈的例子。我們通過抽取100個男生身高,並假設身高分佈服從於高斯分佈,我們通過最大化其似然函數,可以求的高斯分佈的參數θ=[u, ∂]T瞭,對女生同理。但是,假如這200人,我們隻能統計到其身高數據,但是沒有男女信息(其實就是面對200個樣本,抽取得到的每個樣本都不知道是從哪個分佈抽取的,這對於深度學習的樣本分類很常見)。這個時候,我們需要對樣本進行兩個東西的猜測或者估計瞭。

EM算法就可以解決這個問題。假設我們想估計知道A和B兩個參數,在開始狀態下二者都是未知的,但如果知道瞭A的信息就可以得到B的信息,反過來知道瞭B也就得到瞭A。可以考慮首先賦予A某種初值,以此得到B的估計值,然後從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。

在男女生身高分佈的例子中,我們運用EM算法的思想。首先隨便猜一下男生的高斯分佈參數:均值和方差。假設均值是1.7米,方差是0.1米,然後計算出每個人更可能屬於第一個還是第二個正態分佈中。這是第一步,Expectation。在分開瞭兩類之後,我們可以通過之前用的最大似然,通過這兩部分,重新估算第一個和第二個分佈的高斯分佈參數:均值和方差。這是第二步,Maximization。然後更新這兩個分佈的參數。這是可以根據更新的分佈,重新調整E(Expectation)步驟…如此往復,迭代到參數基本不再發生變化。

這裡原作者提到瞭一個數學思維,很受啟發,轉給大傢看一眼(比較雞湯和囉嗦,大傢可以跳過)

這時候你就不服瞭,說你老迭代迭代的,你咋知道新的參數的估計就比原來的好啊?為什麼這種方法行得通呢?有沒有失效的時候呢?什麼時候失效呢?用到這個方法需要註意什麼問題呢?呵呵,一下子拋出那麼多問題,搞得我適應不過來瞭,不過這證明瞭你有很好的搞研究的潛質啊。呵呵,其實這些問題就是數學傢需要解決的問題。在數學上是可以穩當的證明的或者得出結論的。那咱們用數學來把上面的問題重新描述下。(在這裡可以知道,不管多麼復雜或者簡單的物理世界的思想,都需要通過數學工具進行建模抽象才得以使用並發揮其強大的作用,而且,這裡面蘊含的數學往往能帶給你更多想象不到的東西,這就是數學的精妙所在啊)

五、EM算法的簡單理解方式 

在提出EM算法的推導過程之前,先提出中形象的理解方式,便於大傢理解整個EM算法,如果隻是實現深度學習模型,個人認為可以不需要去看後面的算法推導,看這個就足夠瞭。

坐標上升法(Coordinate ascent):

圖中的直線式迭代優化的途徑,可以看到每一步都會向最優值靠近,而每一步前進的路線都平行於坐標軸。那麼我們可以將其理解為兩個未知數的方程求解。倆個未知數求解的方式,其實是固定其中一個未知數,求另一個未知數的偏導數,之後再反過來固定後者,求前者的偏導數。EM算法的思想,其實也是如此。使用坐標上升法,一次固定一個變量,對另外的求極值,最後逐步逼近極值。對應到EM上,E步:固定θ,優化Q;M步:固定Q,優化θ;交替將極值推向最大。 

六、EM算法推導 

現在很多深度學習框架可以簡單調用EM算法,實際上這一段大傢可以不用看,直接跳過看最後的總結即可。但是如果你希望瞭解一些內部的邏輯,可以看一下這一段推導過程。

假設我們有一個樣本集{x(1),…,x(m)},包含m個獨立的樣本(右上角為樣本序號)。但每個樣本i對應的類別z(i)是未知的(相當於聚類),也即隱含變量。故我們需要估計概率模型p(x,z)的參數θ(在文中可理解為高斯分佈),但是由於裡面包含隱含變量z,所以很難用最大似然求解,但如果z知道瞭,那我們就很容易求解瞭。

首先放出似然函數公式,我們接下來對公式進行化簡:

對於參數估計,我們本質上的思路是想獲得一個使似然函數最大化的參數θ,現在多出一個未知變量z,公式(1)。那麼我們的目標就轉變為:找到適合的θ和z讓L(θ)最大。

對於多個未知數的方程分別對未知的θ和z分別求偏導,再設偏導為0,即可解方程。

因為(1)式是和的對數,當我們在求導的時候,形式會很復雜。

這裡我們需要做一個數學轉化。我們對和的部分,乘以一個相等的函數,得到(2)式,利用Jensen不等式的性質,將(2)式轉化為(3)式。(Jensen不等式數學推到比較復雜,知道結果即可)

Note:

Jensen不等式表述如下:

如果f是凸函數,X是隨機變量,那麼:E[f(X)]>=f(E[X])

特別地,如果f是嚴格凸函數,當且僅當X是常量時,上式取等號。參考鏈接: https://blog.csdn.net/zouxy09/article/details/8537620

至此,上面的式(2)和式(3)不等式可以寫成:似然函數L(θ)>=J(z,Q),那麼我們可以通過不斷的最大化這個下界J(z,Q)函數,來使得L(θ)不斷提高,最終達到它的最大值。

現在,我們推導出瞭在固定參數θ後,使下界拉升的Q(z)的計算公式就是後驗概率,解決瞭Q(z)如何選擇的問題。這一步就是E步,建立L(θ)的下界。接下來的M步,就是在給定Q(z)後,調整θ,去極大化L(θ)的下界J(在固定Q(z)後,下界還可以調整的更大)。

總結而言

EM算法是一種從不完全數據或有數據丟失的數據集(存在隱藏變量)中,求解概率模型參數的最大似然估計方法。

EM的算法流程:

1>初始化分佈參數θ;

重復2>, 3>直到收斂:

2>E步驟(Expectation):根據參數初始值或上一次迭代的模型參數來計算出隱性變量的後驗概率,其實就是隱性變量的期望。作為隱藏變量的現估計值:

3>M步驟(Maximization):將似然函數最大化以獲得新的參數值:

這個不斷迭代的過程,最終會讓E、M步驟收斂,得到使似然函數L(θ)最大化的參數θ。

在L(θ)的收斂證明:

 總結

本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: