1. 程式人生 > >高斯混合模型(GMM)介紹以及學習筆記

高斯混合模型(GMM)介紹以及學習筆記

1.高斯混合模型概述

高斯密度函式估計是一種引數化模型。高斯混合模型(Gaussian Mixture Model, GMM)是單一高斯概率密度函式的延伸,GMM能夠平滑地近似任意形狀的密度分佈。高斯混合模型種類有單高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)兩類。類似於聚類,根據高斯概率密度函式(Probability Density Function, PDF)引數不同,每一個高斯模型可以看作一種類別,輸入一個樣本x,即可通過PDF計算其值,然後通過一個閾值來判斷該樣本是否屬於高斯模型。很明顯,SGM適合於僅有兩類別問題的劃分,而GMM由於具有多個模型,劃分更為精細,適用於多類別的劃分,可以應用於複雜物件建模。

1.1.單高斯模型

多維高斯(正態)分佈概率密度函式PDF定義如下:


注意與一維高斯分佈不同,其中x是維數為d的樣本向量(列向量), 是模型期望,∑是模型方差。

對於單高斯模型,由於可以明確訓練樣本是否屬於該高斯模型,故 通常由訓練樣本均值代替,∑由樣本方差代替。為了將高斯分佈用於模式分類,假設訓練樣本屬於類別C,那麼,式(1)可以改為如下形式:


式子(2)表明樣本屬於類別C的概率大小。從而將任意測試樣本輸入式(2),均可以得到一個標量然後根據閾值t來確定該樣本是否屬於該類別。

*閾值t的確定:可以為經驗值,也可以通過實驗確定。另外也有一些策略可以參考,如:首先令t=0.7,以0.05為步長一直減到0.1左右,選擇使樣本變化最小的那個閾值做為最終t值,也就是意味著所選的t值所構造的分類模型最穩定。

*幾何意義理解:單高斯分佈模型在二維空間應該近似於橢圓,在三維空間上近似於橢球。遺憾的是在很多分類問題中,屬於同一類別的樣本點並不滿足“橢圓”分佈的特性。這就引入了高斯混合模型。

1.2.高斯混合模型

高斯混合模型是單一高斯機率密度函式的延伸,由於 GMM 能夠平滑地近似任意形狀的密度分佈,因此近年來常被用在語音、影象識別等方面,得到不錯的效果。

例如:例:有一批觀察資料資料個數為n,在d維空間中的分佈不是橢球狀(如圖1(a)),那麼就不適合以一個單一的高斯密度函式來描述這些資料點的機率密度函式。此時我們採用一個變通方案,假設每個點均由一個單高斯分佈生成(如圖1(b),具體引數未知),而這一批資料共由M(明確)個單高斯模型生成,具體某個資料 屬於哪個單高斯模型未知,且每個單高斯模型在混合模型中佔的比例 未知,將所有來自不同分佈的資料點混在一起,該分佈稱為高斯混合分佈。

從數學上講,我們認為這些資料的概率分佈密度函式可以通過加權函式表示:


上式即稱為GMM,,其中


表示第j個SGM的PDF。

j需要實現確定好,就像K-means中的K一樣。是權值因子。其中的任意一個高斯分佈叫做這個模型的一個component。這裡有個問題,為什麼我們要假設資料是由若干個高斯分佈組合而成的,而不假設是其他分佈呢?實際上不管是什麼分佈,只要j取得足夠大,這個xx Mixture Model就會變得足夠複雜,就可以用來逼近任意連續的概率密度分佈。只是因為高斯函式具有良好的計算能力,所以GMM被廣泛使用。
GMM是一種聚類演算法,每個component就是一個聚類中心。即在只有樣本點,不知道樣本分類(含有隱含變數)的情況下,計算出模型引數

這顯然可以用EM演算法來求解。再用訓練好的模型去差別樣本所屬的分類,方法是:

Step1:隨機選擇K個component中的一個(被選中的概率是

Step2:把樣本代入剛選好的component,判斷是否屬於這個類別,如果不屬於則回到step1

2.高斯混合模型引數估計

2.1樣本分類已知情況下的GMM

當每個樣本所屬分類已知時,GMM的引數非常好確定,直接利用Maximum Likelihood。設樣本容量為N,屬於K個分類的樣本數量分別是

,屬於第k個分類的樣本集合是L(k)




2.2.樣本分類未知情況下的GMM

有N個數據點,服從某種分佈,我們想要找到一組引數,使得生成這些資料點的概率最大,這個概率就是:

稱為似然函式(Likelihood Function)。通常單個點的概率很小,連乘之後資料會更小,容易造成浮點數下溢,所以一般取對數,變成:


稱為log-likelihood function。

GMM的log-likelihood function就是:


這裡每個樣本所屬的類別是不知道的。Z是隱含變數。

我們就是要找到最佳的模型引數,使得(10)式所示的期望最大,“期望最大化演算法”名字由此而來。

EM法求解:

EM要求解的問題一般形式是:


Y是隱含變數,我們已經知道如果資料點的分類標籤Y是已知的,那麼求解模型引數直接利用Maximum Likelihood就可以了。EM演算法的基本思路是:隨機初始化一組引數根據後驗概率來更新Y的期望E(Y),然後用E(Y)代替Y求出新的模型引數。如此迭代直到趨於穩定。
E-Step E就是Expectation的意思,就是假設模型引數已知的情況下求隱含變數Z分別取的期望,亦即Z分別取的概率。在GMM中就是求資料點由各個 component生成的概率。

注意到我們在Z的後驗概率前面乘以了一個權值因子,它表示在訓練集中資料點屬於類別的頻率,在GMM中它就是


M-StepM就是Maximization的意思,就是用最大似然的方法求出模型引數。現在我們認為上一步求出的就是“資料點由component k生成的概率”。根據公式(5),(6),(7)可以推出: