高斯混合和EM算法


 首先介紹高斯混合模型:

高斯混合模型是指具有以下形式的概率分布模型:

 

 

 

 

 

 

 

 

一般其他分布的混合模型用相應的概率密度代替(1)式中的高斯分布密度即可。

 

 


 

 

給定訓練集,我們希望構建該數據聯合分布

這里,其中是概率,並且,用表示可能的取值。

因此,我們構建的模型就是假設是由生成,而是從中隨機選擇出來的,那么就服從個依賴於的高斯分布中的一個。這就是一個高斯混合模型

是潛在隨機變量,即它是隱藏的或者觀察不到的,這將使得估計問題變得棘手。

上面公式太多,作一個總結,總體意思是關於的條件分布符合高斯分布(即正態分布),這個是潛在變量,它的值未知,但是服從多項式分布,於是關於的條件分布就是高斯混合模型,而是一個潛在變量值不確定,進而導致高斯混合模型的概率估計也變得棘手

可以看出,我們構建的高斯混合模型參數有,為了估計出這些參數,寫出參數的似然函數:

變量意味着每一個來自於個高斯分布中的哪一個,如果我們知道變量的值,最大化似然函數問題將變得容易,似然函數將會變成如下形式:

那么參數的最大似然估計可以計算出:

可以看出,當已知的時候,最大似然函數的的估計與前面討論過的高斯判別分析模型(關於高斯判別模型參見生成式學習算法)幾乎一樣,除了這里替代了高斯判別模型中類別標簽的角色。

但是在這個問題中是未知的,該怎么辦?就得運用EM算法。在應用到我們的這個問題中,EM算法分兩步,在E步驟中,算法試圖猜測出的值,在M步驟中,根據E步驟猜測的值更新參數。需要注意的是在M步驟中假定E步驟中的猜測是正確的,算法流程如下:

E-step: 對於每一個,令:

  

M-step: 更新參數:

  

重復上面兩步直至收斂(參數不再發生明顯變化)

在E-step中計算關於的后驗概率時,參數用的都是當前的值,第一步時可以隨機初始化,用貝葉斯公式,我們可以得到:

分子上的是由均值為,方差為的高斯分布在處的概率密度給出,由參數

給出. 在E-step中對的猜測只是猜測它是某個值得概率,被稱作“軟猜測”,與之對應的“硬猜測”就是一個最好的猜測,即不是0就是1.

和上面我們在推導已知時,參數估計的公式相比,EM算法中的參數更新僅僅是用代替了.

EM算法和k-means算法(參考我的博文K-means聚類算法原理和C++實現)很類似,除了k-means是一個“硬” 類別分配(為每個樣本選擇一個確定的類別),而這里是以概率的“軟”分配(就是取某個值的概率)。同k-means一樣,EM算法也容易陷入局部最優,所以多次運行,每次都將參數初始化為不同的值將會是一個很好的解決辦法。

 

EM算法就是不斷重復猜測的值,但是到底是如何進行的呢,如何保證收斂性呢,在下一篇博文將繼續討論,從而使得EM算法能夠更加容易應用到各種存在潛在變量的參數估計問題中,而且將討論如何保證算法收斂。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM