機器學習_學習筆記系列(92):高斯混合模型(Gaussian Mixture Models)

--

前幾回我們介紹了各種不同類型的演算法,像k-mean、DBSCAN和CLIQUE等等,今天我們要來介紹新的clustering演算法「Gaussian Mixture Models」。

Gaussian Mixture Models

再高斯模型當中,我們是以gaussian function來描述我們資料分布的情況

其中𝜇代表密度函數的中心點、Σ代表密度函數的共變異矩陣、d代表資料的維度。而再求解上,我們會用所謂的「Maximum Likelihood Estimation」使

有最大值。而為了放便計算,我們通常都會取ln值

如此一來我們現在想要取最大值,只要對J以𝜇和Σ做微分就可以了。最後我們就可以得到我們的解

但是因為我們所有的資料不會是一個橢圓或圓形的分布,比較可能是多個橢圓或圓形的分布。所以說我們勢必要以多個gaussian function,也就是多個不同的𝜇和Σ來描述我們資料分布的情況

其中C代表gaussian function的數量,α為加權數其滿足

但是我們可以看到因為現在我們一次多了非常多的參數,其中包話所有gaussian function的權重、平均和變異數,所以我們必須得用迭代的方式來求解所有參數。

所以對於GMM的演算法流程如下

  1. 以k-mean的方式先初步算出所有gaussian function的平均數,並將所有變異數設為1,α都設為1/C。
  2. 將參數帶入,計算β值

3. 以計算出的β值計算新的平均值

4. 以新的平均值計算新的變異數

(這邊得注意σ_c為d×d的矩陣)

5. 計算新權重

6. 把上述所有新得到的參數再帶回第二步直到參數收斂為止。

Example

接下來我們來看其在MNIST手寫辨識的表現

P.S.在這邊我們先用t-SNE把資料降到二維,接著再以GMM做clustering。

從這邊我們可以看到,GMM模型可以抓到整個資料的分布趨勢,並以gaussian function擬和數據分布。

Python Sample Code:

Github:

Reference:

[1] Reynolds, D. A. (2009). Gaussian mixture models. Encyclopedia of biometrics, 741, 659–663.

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet