又看了一次EM 算法,還有高斯混合模型,最大似然估計


先列明材料:

高斯混合模型的推導計算(英文版):

http://www.seanborman.com/publications/EM_algorithm.pdf

這位翻譯寫成中文版:

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

高斯混合模型的流程:

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html

最大似然估計:

http://blog.csdn.net/yanqingan/article/details/6125812

GMM的EM算法實現

http://blog.csdn.net/abcjennifer/article/details/8198352

 

   一個高斯混合模型(GMM) 包含多個一維的高斯分布(GM),按例子來說,如果班級上同學的性別是知道的,身高也是知道的,那么對班級同學構建的GMM 可以這樣,GM 的個數取2,分別表示男生身高高斯分布和女生的身高高斯分布,首先通過男生女生來划分 單個 GM 的權重,即男生\女生占班的比重,然后 男生的身高數據 計算出高斯分布,女生的也是,這樣 就構建好一個GMM 了。

    

    當然上面的例子是理想化的計算,假如對一組樣本 n-by-d 進行聚類,n 表示樣本數,d 表示樣本的維

    對一個GMM 的訓練通過EM 和最大似然估計計算,需要確定的是 GMM 中各GM 的權重w,和各GM 里面樣本均值 u 和 協方差矩陣 ∑ (d-by-d matrix),即GM 分布的兩個參數。同屬一個GM 的樣本就是同一個類,所以多少類變有多少個GM.

  通過最大似然估計作為GMM 訓練的結束判斷,最大似然估計根據 X 在GMM 分布中的期望作為判斷(這句話不准確,看上面GMM推導).

     對於一個樣本點,其在GMM中的概率p(x)如下,其中K 為GM 的個數,樣本x 在K 個GM 中的概率p(x|k) 的疊加,p(k)為 k-th GM 的權重:

     然后利用最大似然估計,N 個樣本點的p(x)之積最大的時候,則參數確定了,因為多項式之積難算,去了log 之后變成了之和,N() 是一維高斯分布,如下:

 下面是另外一種表達,參考上上式中第一個等號,下面的m 等同上面的N,zi 是類標號即上面的k,下面公式第二等號有兩個p,后p 等同於GM 的權重,前者p 就是一個上面公式的N ()一維高斯分布,注意下式第二個累加的變量是類標號,不是樣本標號:

   為了使上面的L 取最大值,那么使兩個p 都取最大便可以了,這需要用到em算法,固定A,更新B,然后換過來,固定B,更新A,迭代到L的變化低於閥值。

 

初始化:

    因為我們有初始化的標號,所以可以初始化各GM 的權重w(π),樣本均值u 和協方差∑。初始化完成后,便可以進入EM迭代過程。

e-step:

    先進行 e-step,這一步是假設知道了個GM 3個參數,即假設這個GMM 模型已經訓練好了,那么將N個訓練樣本當作新樣本輸入,便可以求各樣本到各GM 的概率,一個 N-by-K matrix,然后就知道了各樣本的類標號,一行中的概率最大值咯,下面就是這個矩陣的計算公式:

注意的是這里運算的x 是d-by-1 矩陣,即一個sample,與前面的x 矩陣有點不同。

    好了,問題來了,這個γ 究竟對應於上面公式的哪一部分呢?答案是 都不對應!

    既然這樣,為什么計算呢?為了更新類標號!

   注意到這個γ 是小數來的,如果不進行上面的一行中概率最大值修改為1,其他修改為0,則一個sample 的類標號將是權重0.xx了,不再是1、0,正常操作時這樣,在迭代過程中一直保持權重類標號,到正真需要的時候,例如判斷樣本的歸宿時候,則給出1、0類標號。

ps:

    注意到 γ 的分子是不是跟L 很像? 這其實實際計算上面,N() 是一樣的,但π 不一樣阿!這需要看e-step 的假設了,GMM 模型已經知道,輸入的樣本標號不知道,那么這個π 是訓練數據得出來的π,不是輸入樣本的π(雖然數值數值上一樣但邏輯上不同)!所以需要求出γ 才能夠知道樣本的標號,然后計算出GM 的權重,才是L 中的π值,想省事的就先判斷后進行m-step,畢竟m-step才是意義上計算π的地方。

     

    e-step結束了,其實我們已經可以知道了L 的右邊的p,將γ 每行疊加生成 1-by-k 矩陣,便是各GM 的標號疊加,除以樣本數便是權重了,進入m-step.

m-step:

     進入M-step,則是看作已經到了輸入樣本的類標號,這就跟初始化很類似了,已知標號然后求GM的參數,區別是 初始化時候的標號為1、0,現在可能成小數了,計算公式如下:

  

    解釋下,第一條就是k-th GM 的樣本均值,γ則是e-step 計算得出的值。

    第二條是協方差計算公式了。

    權重的更新藏在第三行,計算可以看上面幾行有寫。

收斂判斷:

    當前的log-likehood  就是用e-step 中的N(),和m-step 中的π,計算下式,與上一步的做對比。

 


免責聲明!

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



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