??最近在實際工作中用到了高斯混合模型(Gaussian Mixture Model)辕坝,遂寫一篇筆記來整理記錄相關知識點领突,以便復查鞏固。
1. 高斯模型(Gaussian model君旦,GM)
簡單回顧一下本科概率論講過的高斯模型。
高斯模型是一種常用的變量分布模型金砍,又稱正態(tài)分布局蚀,在數(shù)理統(tǒng)計領域有著廣泛的應用捞魁。
當樣本數(shù)據(jù) X 是一維數(shù)據(jù)(Univariate)時至会,高斯分布遵從下方概率密度函數(shù)(Probability Density Function)(下文簡稱pdf)如下:其中
為數(shù)據(jù)均值(期望),
為數(shù)據(jù)標準差(Standard deviation)谱俭。
當樣本數(shù)據(jù) X 是多維數(shù)據(jù)(Multivariate)時奉件,高斯分布pdf為:
其中,
為數(shù)據(jù)均值(期望)昆著,
為協(xié)方差(Covariance)县貌,描述各維變量之間的相關度,D 為數(shù)據(jù)維度凑懂。
2. 混合高斯模型(Gaussian mixture model, GMM)
??高斯混合模型可以看作是由 K 個單高斯模型組合而成的模型煤痕,這 K 個子模型是混合模型的隱變量(Hidden variable)。一般來說接谨,一個混合模型可以使用任何概率分布摆碉,這里使用高斯混合模型是因為高斯分布具備很好的數(shù)學性質以及良好的計算性能。
2.1 為什么要有混合高斯模型
先來看一組數(shù)據(jù)脓豪。
實際上超陆,這是用兩個不同的高斯分布模型產生的數(shù)據(jù)牺弹。
更一般化的描述為:假設混合高斯模型由K個高斯模型組成(即數(shù)據(jù)包含K個類)退唠,則GMM的概率密度函數(shù)如下:其中
-
是第k個高斯模型的概率密度函數(shù),可以看成選定第k個模型后荤胁,該模型產生x的概率瞧预;
-
?是第k個高斯模型的權重,稱作選擇第k個模型的先驗概率仅政,且滿足
垢油。
??所以,混合高斯模型并不是什么新奇的東西圆丹,它的本質就是融合幾個單高斯模型滩愁,來使得模型更加復雜,從而產生更復雜的樣本辫封。理論上硝枉,如果某個混合高斯模型融合的高斯模型個數(shù)足夠多倦微,它們之間的權重設定得足夠合理,這個混合模型可以擬合任意分布的樣本责球。
3. 模型參數(shù)學習
對于單高斯模型拓劝,我們可以用最大似然法(Maximum likelihood)估算參數(shù)的值
這里我們假設了每個數(shù)據(jù)點都是獨立的(Independent)郑临,似然函數(shù)由概率密度函數(shù)(PDF)給出。
由于每個點發(fā)生的概率都很小笛匙,乘積會變得極其小,不利于計算和觀察妹孙,因此通常我們用 Maximum Log-Likelihood 來計算(因為 Log 函數(shù)具備單調性蠢正,不會改變極值的位置,同時在 0-1 之間輸入值很小的變化可以引起輸出值相對較大的變動):
對其進行求導并令導數(shù)為0笨触,所求出的參數(shù)就是最佳的高斯分布對應的參數(shù)雹舀。
所以最大化似然函數(shù)的意義就是:通過使得樣本集的聯(lián)合概率最大來對參數(shù)進行估計说榆,從而選擇最佳的分布模型。
對于高斯混合模型串慰,Log-Likelihood 函數(shù)是:如何計算高斯混合模型的參數(shù)呢唱蒸?這里我們無法像單高斯模型那樣使用最大似然法來求導求得使 likelihood 最大的參數(shù),因為對于每個觀測數(shù)據(jù)點來說庆捺,事先并不知道它是屬于哪個子分布的(hidden variable)疼燥,因此 log 里面還有求和蚁堤,對于每個子模型都有未知的
,直接求導無法計算撬即。需要通過迭代的方法求解呈队。
4. EM算法
EM 算法是一種迭代算法,1977 年由 Dempster 等人總結提出粒竖,用于含有隱變量(Hidden variable)的概率模型參數(shù)的最大似然估計。
每次迭代包含兩個步驟:
- E-step:求期望
for all
- M-step:求極大沿后,計算新一輪迭代的模型參數(shù)
這里不具體介紹一般性的 EM 算法朽砰,(通過 Jensen 不等式得出似然函數(shù)的下界 Lower bound,通過極大化下界做到極大化似然函數(shù)漆弄,有l(wèi)og(E(x))>=E(log(x)))造锅,只介紹怎么在高斯混合模型里應用從來推算出模型參數(shù)。
通過 EM 迭代更新高斯混合模型參數(shù)的方法(我們有樣本數(shù)據(jù)和一個有
個子模型的高斯混合模型券坞,想要推算出這個高斯混合模型的最佳參數(shù)):
- 首先初始化參數(shù)
- E-step:依據(jù)當前參數(shù),計算每個數(shù)據(jù)
來自子模型
的可能性
- M-step:計算新一輪迭代的模型參數(shù)
重復計算 E-step 和 M-step 直至收斂.
至此倍靡,我們就找到了高斯混合模型的參數(shù)塌西。需要注意的是筝尾,EM 算法具備收斂性,但并不保證找到全局最大值站辉,有可能找到局部最大值损姜。解決方法是初始化幾次不同的參數(shù)進行迭代,取結果最好的那次汰蓉。