⑴ 高斯混合模型(GMM)和EM演算法
學號:20021110074 電院 姓名:梁雪玲
【嵌牛導讀】:GMM與EM演算法的學習與推導。
【嵌牛鼻子】:GMM EM
【嵌牛提問】:GMM是什麼?EM演算法是什麼?二者之間的關系?演算法的推導?如何深入學習?
【嵌牛正文】:
在深度學習的路上,從頭開始了解一下各項技術。本人是DL小白,連續記錄我自己看的一些東西,大家可以互相交流。
本文參考:
http://www.ituring.com.cn/article/497545(GMM)
https://blog.csdn.net/xmu_jupiter/article/details/50889023(GMM)
http://www.cnblogs.com/wjy-lulu/p/7010258.html(EM演算法)
https://blog.csdn.net/zouxy09/article/details/8537620(EM演算法)
一、前言
高斯混合模型(Gaussian Mixture Model)簡稱GMM,是一種業界廣泛使用的聚類演算法。它是多個高斯分布函數的線性組合,理論上GMM可以擬合出任意類型的分布,通常用於解決同一集合下的數據包含多種不同的分布的情況。高斯混合模型使用了期望最大(Expectation Maximization, 簡稱EM)演算法進行訓練,故此我們在了解GMM之後,也需要了解如何通過EM演算法訓練(求解)GMM。
二、高斯混合模型(GMM)
在了解高斯混合模型之前,我們先了解一下這種模型的具體參數模型-高斯分布。高斯分布又稱正態分布,是一種在自然界中大量存在的,最為常見的分布形式。
如上圖,這是一個關於身高的生態分布曲線,關於175-180對稱,中間高兩邊低,相信大家在高中已經很了解了,這里就不再闡述。
現在,我們引用《統計學習方法》-李航 書中的定義,如下圖:
根據定義,我們可以理解為,GMM是多個高斯分布的加權和,並且權重α之和等於1。這里不難理解,因為GMM最終反映出的是一個概率,而整個模型的概率之和為1,所以權重之和即為1。高斯混合模型實則不難理解,接下來我們介紹GMM的訓練(求解)方法。
PS.從數學角度看,對於一個概率模型的求解,即為求其最大值。從深度學習角度看,我們希望降低這個概率模型的損失函數,也就是希望訓練模型,獲得最大值。訓練和求解是不同專業,但相同目標的術語。
三、最大似然估計
想要了解EM演算法,我們首先需要了解最大似然估計這個概念。我們通過一個簡單的例子來解釋一下。
假設,我們需要調查學校男女生的身高分布。我們用抽樣的思想,在校園里隨機抽取了100男生和100女生,共計200個人(身高樣本數據)。我們假設整個學校的身高分布服從於高斯分布。但是這個高斯分布的均值u和方差∂2我們不知道,這兩個參數就是我們需要估計的值。記作θ=[u, ∂]T。
由於每個樣本都是獨立地從p(x|θ)中抽取的,並且所有的樣本都服從於同一個高斯分布p(x|θ)。那麼我們從整個學校中,那麼我抽到男生A(的身高)的概率是p(xA|θ),抽到男生B的概率是p(xB|θ)。而恰好抽取出這100個男生的概率,就是每個男生的概率乘積。用下式表示:
這個概率反映了,在概率密度函數的參數是θ時,得到X這組樣本的概率。在公式中,x已知,而θ是未知,所以它是θ的函數。這個函數放映的是在不同的參數θ取值下,取得當前這個樣本集的可能性,因此稱為參數θ相對於樣本集X的似然函數(likehood function)。記為L(θ)。
我們先穿插一個小例子,來闡述似然的概念。
某位同學與一位獵人一起外出打獵,一隻野兔從前方竄過。只聽一聲槍響,野兔應聲到下,如果要你推測,這一發命中的子彈是誰打的?你就會想,只發一槍便打中,由於獵人命中的概率一般大於這位同學命中的概率,看來這一槍是獵人射中的。
這個例子所作的推斷就體現了極大似然法的基本思想,我們並不知道具體是誰打的兔子,但是我們可以估計到一個看似正確的參數。回到男生身高的例子中。在整個學校中我們一次抽到這100個男生(樣本),而不是其他的人,那麼我們可以認為這100個男生(樣本)出現的概率最大,用上面的似然函數L(θ)來表示。
所以,我們就只需要找到一個參數θ,其對應的似然函數L(θ)最大,也就是說抽到這100個男生(的身高)概率最大。這個叫做θ的最大似然估計量,記為:
因為L(θ)是一個連乘函數,我們為了便於分析,可以定義對數似然函數,運用對數的運算規則,把連乘轉變為連加:
PS.這種數學方法在MFCC中我們曾經用過,可以回溯一下上一篇文章。
此時,我們要求θ,只需要使θ的似然函數L(θ)極大化,然後極大值對應的θ就是我們的估計。在數學中求一個函數的最值問題,即為求導,使導數為0,解方程式即可(前提是函數L(θ)連續可微)。在深度學習中,θ是包含多個參數的向量,運用高等數學中的求偏導,固定其中一個變數的思想,即可求出極致點,解方程。
總結而言:
最大似然估計,只是一種概率論在統計學的應用,它是參數估計的方法之一。說的是已知某個隨機樣本滿足某種概率分布,但是其中具體的參數不清楚,參數估計就是通過若干次試驗,觀察其結果,利用結果推出參數的大概值。最大似然估計是建立在這樣的思想上:已知某個參數能使這個樣本出現的概率最大,我們當然不會再去選擇其他小概率的樣本,所以乾脆就把這個參數作為估計的真實值。
求最大似然函數估計值的一般步驟:
(1)寫出似然函數;
(2)對似然函數取對數,並整理;(化乘為加)
(3)求導數,令導數為0,得到似然方程;
(4)解似然方程,得到的參數即為所求。
四、EM演算法
期望最大(Expectation Maximization, 簡稱EM)演算法,稱為機器學習十大演算法之一。它是一種從不完全數據或有數據丟失的數據集(存在隱含變數)中求解概率模型參數的最大似然估計方法。
現在,我們重新回到男女生身高分布的例子。我們通過抽取100個男生身高,並假設身高分布服從於高斯分布,我們通過最大化其似然函數,可以求的高斯分布的參數θ=[u, ∂]T了,對女生同理。但是,假如這200人,我們只能統計到其身高數據,但是沒有男女信息(其實就是面對200個樣本,抽取得到的每個樣本都不知道是從哪個分布抽取的,這對於深度學習的樣本分類很常見)。這個時候,我們需要對樣本進行兩個東西的猜測或者估計了。
EM演算法就可以解決這個問題。假設我們想估計知道A和B兩個參數,在開始狀態下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反過來知道了B也就得到了A。可以考慮首先賦予A某種初值,以此得到B的估計值,然後從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。
在男女生身高分布的例子中,我們運用EM演算法的思想。首先隨便猜一下男生的高斯分布參數:均值和方差。假設均值是1.7米,方差是0.1米,然後計算出每個人更可能屬於第一個還是第二個正態分布中。這是第一步,Expectation。在分開了兩類之後,我們可以通過之前用的最大似然,通過這兩部分,重新估算第一個和第二個分布的高斯分布參數:均值和方差。這是第二步,Maximization。然後更新這兩個分布的參數。這是可以根據更新的分布,重新調整E(Expectation)步驟...如此往復,迭代到參數基本不再發生變化。
這里原作者提到了一個數學思維,很受啟發,轉給大家看一眼(比較雞湯和啰嗦,大家可以跳過)
這時候你就不服了,說你老迭代迭代的,你咋知道新的參數的估計就比原來的好啊?為什麼這種方法行得通呢?有沒有失效的時候呢?什麼時候失效呢?用到這個方法需要注意什麼問題呢?呵呵,一下子拋出那麼多問題,搞得我適應不過來了,不過這證明了你有很好的搞研究的潛質啊。呵呵,其實這些問題就是數學家需要解決的問題。在數學上是可以穩當的證明的或者得出結論的。那咱們用數學來把上面的問題重新描述下。(在這里可以知道,不管多麼復雜或者簡單的物理世界的思想,都需要通過數學工具進行建模抽象才得以使用並發揮其強大的作用,而且,這裡面蘊含的數學往往能帶給你更多想像不到的東西,這就是數學的精妙所在啊)
五、EM演算法的簡單理解方式
在提出EM演算法的推導過程之前,先提出中形象的理解方式,便於大家理解整個EM演算法,如果只是實現深度學習模型,個人認為可以不需要去看後面的演算法推導,看這個就足夠了。
坐標上升法(Coordinate ascent):
圖中的直線式迭代優化的途徑,可以看到每一步都會向最優值靠近,而每一步前進的路線都平行於坐標軸。那麼我們可以將其理解為兩個未知數的方程求解。倆個未知數求解的方式,其實是固定其中一個未知數,求另一個未知數的偏導數,之後再反過來固定後者,求前者的偏導數。EM演算法的思想,其實也是如此。使用坐標上升法,一次固定一個變數,對另外的求極值,最後逐步逼近極值。對應到EM上,E步:固定θ,優化Q;M步:固定Q,優化θ;交替將極值推向最大。
六、EM演算法推導
現在很多深度學習框架可以簡單調用EM演算法,實際上這一段大家可以不用看,直接跳過看最後的總結即可。但是如果你希望了解一些內部的邏輯,可以看一下這一段推導過程。
假設我們有一個樣本集{x(1),…,x(m)},包含m個獨立的樣本(右上角為樣本序號)。但每個樣本i對應的類別z(i)是未知的(相當於聚類),也即隱含變數。故我們需要估計概率模型p(x,z)的參數θ(在文中可理解為高斯分布),但是由於裡麵包含隱含變數z,所以很難用最大似然求解,但如果z知道了,那我們就很容易求解了。
首先放出似然函數公式,我們接下來對公式進行化簡:
對於參數估計,我們本質上的思路是想獲得一個使似然函數最大化的參數θ,現在多出一個未知變數z,公式(1)。那麼我們的目標就轉變為:找到適合的θ和z讓L(θ)最大。
對於多個未知數的方程分別對未知的θ和z分別求偏導,再設偏導為0,即可解方程。
因為(1)式是和的對數,當我們在求導的時候,形式會很復雜。
這里我們需要做一個數學轉化。我們對和的部分,乘以一個相等的函數,得到(2)式,利用Jensen不等式的性質,將(2)式轉化為(3)式。(Jensen不等式數學推到比較復雜,知道結果即可)
Note:
Jensen不等式表述如下:
如果f是凸函數,X是隨機變數,那麼:E[f(X)]>=f(E[X])
特別地,如果f是嚴格凸函數,當且僅當X是常量時,上式取等號。參考鏈接: https://blog.csdn.net/zouxy09/article/details/8537620
至此,上面的式(2)和式(3)不等式可以寫成:似然函數L(θ)>=J(z,Q),那麼我們可以通過不斷的最大化這個下界J(z,Q)函數,來使得L(θ)不斷提高,最終達到它的最大值。
現在,我們推導出了在固定參數θ後,使下界拉升的Q(z)的計算公式就是後驗概率,解決了Q(z)如何選擇的問題。這一步就是E步,建立L(θ)的下界。接下來的M步,就是在給定Q(z)後,調整θ,去極大化L(θ)的下界J(在固定Q(z)後,下界還可以調整的更大)。
總結而言
EM演算法是一種從不完全數據或有數據丟失的數據集(存在隱藏變數)中,求解概率模型參數的最大似然估計方法。
EM的演算法流程:
1>初始化分布參數θ;
重復2>, 3>直到收斂:
2>E步驟(Expectation):根據參數初始值或上一次迭代的模型參數來計算出隱性變數的後驗概率,其實就是隱性變數的期望。作為隱藏變數的現估計值:
3>M步驟(Maximization):將似然函數最大化以獲得新的參數值:
這個不斷迭代的過程,最終會讓E、M步驟收斂,得到使似然函數L(θ)最大化的參數θ。
在L(θ)的收斂證明:
⑵ 05 EM演算法 - 高斯混合模型 - GMM
04 EM演算法 - EM演算法收斂證明
GMM (Gaussian Mixture Model, 高斯混合模型)是指該演算法由多個高斯模型線性疊加混合而成。每個高斯模型稱之為component。
GMM演算法 描述的是數據的本身存在的一種分布,即樣本特徵屬性的分布,和預測值Y無關。顯然GMM演算法是無監督的演算法,常用於聚類應用中,component的個數就可以認為是類別的數量。
回到昨天說的例子:隨機選擇1000名用戶,測量用戶的身高;若樣本中存在男性和女性,身高分別服從高斯分布N(μ1,σ1)和N(μ2,σ2)的分布,試估計參數:μ1,σ1,μ2,σ2;
1、如果明確的知道樣本的情況(即男性和女性數據是分開的),那麼我們使用極大似然估計來估計這個參數值。
2、如果樣本是混合而成的,不能明確的區分開,那麼就沒法直接使用極大似然估計來進行參數的估計。
我們可以認為當前的1000條數據組成的集X,是由兩個高斯分布疊加而成的(男性的分布和女性的分布)。
如果能找到一種辦法把每一個高斯分布對應的參數π、 μ、σ求出來,那麼對應的模型就求解出來了。
如果模型求解出來後,如何對數據進行聚類?
這個公式求出來的分別是男性和女性身高分布的概率密度,如果把π、 μ、σ都求出來,以後我們可以構建出一個 能夠根據樣本特徵 計算出樣本屬於男性或女性的可能性。
實際做樣本分類的時候,我們把樣本X的特徵x1~xn分別代入兩個公式中,求出來的兩個結果分別是:樣本X的性別是男、是女的可能性。如果是男的可能性大於是女的可能性,我們就把樣本X歸入男性的分類。
假定 GMM 由k個Gaussian分布線性疊加而成,那麼概率密度函數如下:
分析第1個等式:
p(x): 概率密度函數,k個Gaussian分布線性疊加而成的概率密度函數。
∑p(k)p(x|k): k個某種模型疊加的概率密度函數。
p(k): 每個模型占的權重,即上面提到的π。
p(x|k): 給定類別k後,對應的x的概率密度函數。
分析第2個等式: 目標 - 將公式寫成高斯分布的樣子。
π k : 即p(k)
p(x;μ k ,∑ k ): 多元高斯(正態)分布。有了觀測數據x後,在 給定了條件 下的高斯分布。這個 條件 是 1、第k個分類的均值μ k ; 2、第k個分類的方差∑ k ;
深入分析p(x;μ k ,∑ k )的參數:
如果樣本有n個特徵,所有的特徵x1~xn一起服從一個多元的高斯分布(正態分布),所有特徵的均值應該是一個向量 (μ 1 ~μ n );
μ k : 第k個分類的情況下(第k個高斯分布的情況下對應的每一列的均值);μ k = (μ k1 ~μ kn )
∑ k : 協方差矩陣(對稱陣)。現在有n個特徵,協方差矩陣是一個n×n的矩陣。現在我們要算的是:
cov(x1,x1),cov(x1,x2),...,cov(x1,xn)
cov(x2,x1),cov(x2,x2),...,cov(x2,xn)
....
cov(xn,x1),cov(x1,x2),...,cov(xn,xn)
其中, 對角線 cov(x1,x1)、cov(x2,x2), ... ,cov(xn,xn)中,x1和x1的協方差 = x1的方差;即cov(x1,x1) = var(x1);所以 對角線上兩個特徵的協方差 = 對應的特徵的方差。
協方差 (Covariance)在 概率論 和 統計學 中用於衡量兩個變數的總體 誤差 。而 方差 是協方差的一種特殊情況,即當兩個變數是相同的情況。
協方差表示的是兩個變數的總體的 誤差 ,這與只表示一個變數誤差的 方差 不同。 如果兩個 變數 的變化趨勢一致,也就是說如果其中一個大於自身的期望值,另外一個也大於自身的期望值,那麼兩個變數之間的協方差就是正值。 如果兩個變數的變化趨勢相反,即其中一個大於自身的期望值,另外一個卻小於自身的期望值,那麼兩個變數之間的協方差就是負值。
理解了公式後,再來看看公式在圖像上是如何體現的:
如果樣本X只有一個特徵x1,在二維的坐標繫上的表示出來。特徵x1是由n個單變數樣本的高斯分布疊加而成的。向量x1 k = ∑ k (x1 (1) ,x1 (2) ,~,x1 (n) ),如k=(男、女),累加男性分類下的特徵高斯分布和女性分類下的高斯分布;
圖中 紅色曲線 表示原有數據的分布情況,我認為這個原有數據是由多個比較的高斯分布疊加而成的, 藍色曲線 表示單個單個高斯分布的分布情況。向量x1 = (x1 (1) ,x1 (2) ,~,x1 (n) );
PS: 藍1+藍2=紅 體現的就是公式 p(x) = ∑πp(x;μ,∑k);
在得知數據的特徵 x=(x1~xn) 後,如果我們想把數據合理得聚類到一個分類中,我們該如何去計算呢?
既然我已經得到了k個高斯分布對應的概率密度函數(現在設k=3,共3個分類),將當前特徵的x=(x1~xn)代入我們的概率密度函數: p(x) = ∑πp(x;μ,∑k);
我們分別計算p(藍1)、p(藍2)、p(藍3),藍色三條線各對應k分類中的一個,哪個數大,我認為當前的樣本該分到哪一類。
GMM演算法的兩個前提:
1、數據服從高斯分布;
2、我們人為定義了分類個數k。
問:我們人為假定了高斯分布的分類個數k,就類似於我們聚簇時分的聚簇中心個數一樣。參數π、μ、σ該如何求出來?
答:和K-Means演算法一樣,我們可以用 EM演算法 來求解這個問題。 GMM也滿足EM演算法的聚類思想,首先人為得定義了聚類的個數k,從數據特徵X中發掘潛在關系的一種模型。而且我還默認數據是服從多個高斯分布的。
GMM演算法中的隱含條件是:第k個模型占的權重 - 、 第k個高斯分布的情況下對應的每一列的均值 - 、協方差矩陣 cov(xi,xj) - ;因為本質上我們是知道數據原有的分類狀況的,只是無法觀測到隱含在數據中的這些特性,使用EM的思想可以迭代得求解出這些隱含變數。
對聯合概率密度函數求對數似然函數:
對聯合概率密度函數求對數後,原本 連乘 的最大似然估計變成了 連加 的函數狀態。
EM演算法求解 - E步:
套用公式後,我們可以假定隱含變數z的分布:Q(z (i) = j);
我們認為分布wj (i) = 第i個觀測值對應的隱含分類第z (i) 類; = 以(看不見的參數π、μ、∑)為參數的情況下,輸入第i觀測值的特徵x後得到的分類z (i) 類;
EM演算法求解 - M步:
M步第1行就是上一章通過化簡找到 下界 的那個函數:
1、對均值求偏導:
2、對方差求偏導:
3、對概率使用拉格朗日乘子法求解:
06 EM演算法 - 案例一 - EM分類初識及GMM演算法實現
⑶ 高斯混合模型(GMM)及EM演算法的初步理解
高斯混合模型(Gaussian Mixed Model)指的是多個高斯分布函數的線性組合,理論上GMM可以擬合出任意類型的分布,通常用於解決同一集合下的數據包含多個不同的分布的情況(或者是同一類分布但參數不一樣,或者是不同類型的分布,比如正態分布和伯努利分布)。
如圖1,圖中的點在我們看來明顯分成兩個聚類。這兩個聚類中的點分別通過兩個不同的正態分布隨機生成而來。但是如果沒有GMM,那麼只能用一個的二維高斯分布來描述圖1中的數據。圖1中的橢圓即為二倍標准差的正態分布橢圓。這顯然不太合理,畢竟肉眼一看就覺得應該把它們分成兩類。
這時候就可以使用GMM了!如圖2,數據在平面上的空間分布和圖1一樣,這時使用兩個二維高斯分布來描述圖2中的數據,分別記為N(μ1,Σ1)和N(μ2,Σ2) 。圖中的兩個橢圓分別是這兩個高斯分布的二倍標准差橢圓。可以看到使用兩個二維高斯分布來描述圖中的數據顯然更合理。實際上圖中的兩個聚類的中的點是通過兩個不同的正態分布隨機生成而來。如果將兩個二維高斯分布N(μ1,Σ1)和N(μ2,Σ2) 合成一個二維的分布,那麼就可以用合成後的分布來描述圖2中的所有點。最直觀的方法就是對這兩個二維高斯分布做線性組合,用線性組合後的分布來描述整個集合中的數據。這就是高斯混合模型(GMM)。
高斯混合模型(GMM)的數學表示:
期望極大(Expectation Maximization)演算法,也稱EM演算法,是一種迭代演算法,由Dempster et. al 在1977年提出,用於含有隱變數的概率參數模型的極大似然估計。
EM演算法作為一種數據添加演算法,在近幾十年得到迅速的發展,主要源於當前科學研究以及各方面實際應用中數據量越來越大的情況下,經常存在數據缺失或者不可用的的問題,這時候直接處理數據比較困難,而數據添加辦法有很多種,常用的有神經網路擬合、添補法、卡爾曼濾波法等,但是EM演算法之所以能迅速普及主要源於它演算法簡單,穩定上升的步驟能相對可靠地找到「最優的收斂值」。
(個人的理解就是用含有隱變數的含參表達式不斷擬合,最終能收斂並擬合出不含隱變數的含參表達式)
模型的EM訓練過程,直觀的來講是這樣:我們通過觀察采樣的概率值和模型概率值的接近程度,來判斷一個模型是否擬合良好。然後我們通過調整模型以讓新模型更適配采樣的概率值。反復迭代這個過程很多次,直到兩個概率值非常接近時,我們停止更新並完成模型訓練。現在我們要將這個過程用演算法來實現,所使用的方法是模型生成的數據來決定似然值,即通過模型來計算數據的期望值。通過更新參數μ和σ來讓期望值最大化。這個過程可以不斷迭代直到兩次迭代中生成的參數變化非常小為止。該過程和k-means的演算法訓練過程很相似(k-means不斷更新類中心來讓結果最大化),只不過在這里的高斯模型中,我們需要同時更新兩個參數:分布的均值和標准差.[3]
GMM常用於聚類。如果要從 GMM 的分布中隨機地取一個點的話,實際上可以分為兩步:首先隨機地在這 K 個 Component 之中選一個,每個 Component 被選中的概率實際上就是它的系數Πk ,選中 Component 之後,再單獨地考慮從這個 Component 的分布中選取一個點就可以了──這里已經回到了普通的 Gaussian 分布,轉化為已知的問題。
根據數據來推算概率密度通常被稱作 density estimation 。特別地,當我已知(或假定)概率密度函數的形式,而要估計其中的參數的過程被稱作『參數估計』。
(推導和迭代收斂過程這里省略,可參考資料1)
一個實際的例子:用GMM對iris數據集進行聚類,並通過make_ellipses表示出來
make_ellipses方法概念上很簡單,它將gmm對象(訓練模型)、坐標軸、以及x和y坐標索引作為參數,運行後基於指定的坐標軸繪制出相應的橢圓圖形。
在特定條件下,k-means和GMM方法可以互相用對方的思想來表達。在k-means中根據距離每個點最接近的類中心來標記該點的類別,這里存在的假設是每個類簇的尺度接近且特徵的分布不存在不均勻性。 這也解釋了為什麼在使用k-means前對數據進行歸一會有效果。高斯混合模型則不會受到這個約束 ,因為它對每個類簇分別考察特徵的協方差模型。
K-means演算法可以被視為高斯混合模型(GMM)的一種特殊形式。 整體上看,高斯混合模型能提供更強的描述能力,因為聚類時數據點的從屬關系不僅與近鄰相關,還會依賴於類簇的形狀。n維高斯分布的形狀由每個類簇的協方差來決定。在協方差矩陣上添加特定的約束條件後,可能會通過GMM和k-means得到相同的結果。
在k-means方法中使用EM來訓練高斯混合模型時對初始值的設置非常敏感。而對比k-means,GMM方法有更多的初始條件要設置。實踐中不僅初始類中心要指定,而且協方差矩陣和混合權重也要設置。可以運行k-means來生成類中心,並以此作為高斯混合模型的初始條件。由此可見並兩個演算法有相似的處理過程,主要區別在於模型的復雜度不同。
高斯混合模型的基本假設是 已知類別的比例 和 類別的個數 ,但是不知道每個樣例的具體標簽,據此用EM的模式為每個樣本進行最優的標注。也就是說它適合的是 無標簽學習的分類問題 ,並且需要已知基本假設。
整體來看,所有無監督機器學習演算法都遵循一條簡單的模式:給定一系列數據,訓練出一個能描述這些數據規律的模型(並期望潛在過程能生成數據)。 訓練過程通常要反復迭代,直到無法再優化參數獲得更貼合數據的模型為止。
【1】https://blog.csdn.net/jinping_shi/article/details/59613054 高斯混合模型(GMM)及其EM演算法的理解
【2】https://cloud.tencent.com/developer/news/231599 機器學習中的數學(4)-EM演算法與高斯混合模型(GMM)
【3】https://zhuanlan.hu.com/p/31103654 一文詳解高斯混合模型原理
⑷ 高斯混合模型GMM
最近在學習語音識別,由於傳統的基於HMM-GMM架構的語音識別具有成熟的理論、工具鏈,且其一直以來神秘感讓人十分好奇;所以我打算從傳統框架入手學習,並嘗試認真地弄懂相關技術;在看了一些語音識別相關簡介後,知道雖然GMM模型在很多年前,在」混合模型「(hybrid model)中就被DNN所取代了;甚至在當今深度學習背景下,HMM也有被完全取代的趨勢;但是從學習的角度,我覺得GMM仍然是很好的學習材料。
其中:D為數據空間的維數,K為混合分支個數
在 多元正態分布 文中,中我們證實了 的積分為1,在這里由積分的線性性質有:
所以需要 ,且為了保證概率都為正數,這里還要求 都大於0,這時 成為合法的密度函數。
下面關於參數的極大似然估計主要學習PRML書中的相關討論,這里我只是補充了一些推導過程中的數學細節,這些數學細節書上一般不會寫出來,所以這里我決定自己推推看,讓心裡更加踏實。
為了不至於使得下面ML估計的公式推導太亂,我們在這里提前把部分相關的導數計算好。
1. 設二次型為 ,其中 為D維列向量,而 為D階方陣,而 為點 處的切空間(tangent space)中的向量,根據下式:
顯然 是關於切空間中向量 的線性函數;且 顯然是關於 的高階部分,即當 時, 。
即:
以上便是函數的可微性定義,因而導數(雅可比矩陣)為: 。
進而,若 是對稱矩陣,則
2. 同樣是上面的二次型,這次我們把參數矩陣看作變數,即 ,有: ,寫成矩陣形式就有:
3. 行列式的求導,行列式函數: ,是n階實方陣空間上的實值函數;事實上我們直接將行列式看作原型是 的函數即可,因為這里我們關心的求導運算跟矩陣的代數運算沒有關系,因此可以忽略其結構;從線代課本可知有兩種方式定義行列式:
1)組合式定義: ,其中 是n階方陣, 是n元對稱群, 是其中任取的置換,也可以將 看作 的一個全排列,而 是全排列 的符號。
2)遞歸定義,按第k行展開:
其中: 是矩陣的第k行第j列元素, 是元素 對應的餘子式,而記 為元素 的代數餘子式。
在這里應該用遞歸定義比較方便,比如要對元素 求導: 來自第 行、第 列,又因為按照行列式的遞歸定義(3)式,同樣的第 行,但是不同的列 上的元素 的餘子式 顯然不會包括當前被求導元素 ,因為它不會包含第 行除了 以外的任何元素。因此,我們有:
即行列式關於第 元素的偏導數,就是該元素對應的代數餘子式。因此把所有的偏導數整理到矩陣裡面,就有:
其中 為 的伴隨矩陣的轉置。
再次,若 為對稱矩陣,且可逆,則根據公式 有: ,即 的伴隨矩陣也是對稱的。
現在我們用一組數據 來擬合GMM模型,假設數據之間是獨立的,則該組數據在模型上的對數似然為:
下面根據微分學計算該似然函數取得極大值的必要條件,由於需要滿足約束 ,根據Lagrange乘子法,求下面關於參數 的函數 的極大值點:
先對 求導 ,根據多元復合函數的鏈式求導法則,有:
,其中 為密度函數指數部分的二次型,即:
令 ,則: ,其中:根據之前的推導,雅可比矩陣 ,而雅可比矩陣 ,所以: 。
按照書中所說將 定義為 關於隱變數的後驗概率,則(6)式變為: ,寫成梯度形式,就有: ,令其等於 ,並利用 的非奇異性,兩邊同時左乘 ,將其解出來得:
下面對協方差矩陣求導: 為了保持一致,我們還是用 代替 作為行列式函數;但是這里為了方便,我們不直接對協方差矩陣求導,而是對其逆矩陣求導,我們令 ,重寫一遍(0)式:
在上式中,令 ,則根據乘法求導法則有:
其中,根據上面的(4)式有:
因為 是對稱矩陣,故而 也是對稱矩陣(由 易知),再利用上面證過的(5)式就得到了上式。
令其乘以 ,有:
再利用上面證好的(2)式,有:
其中:
同樣,令其乘以 ,有:
最後將(9),(10)兩式代入(8)式,整理整理就得到:
令其等於 ,且注意到 ,我們得到:
最後,我們對混合系數 求導:
我們發現其中: 與 只相差一個 ,令 ,並在等式兩邊同乘以 得:
現在,對一個特定的k,將 代入(11)式,得:
由於無法閉式求解,可以用EM演算法來迭代式地拉高數據在模型參數上的似然,抄一抄書本上的演算法,加深一下印象:
1. 初始化GMM所有分支的均值向量 、協方差矩陣 ,以及各分支的混合系數 ;
2. E Step : 固定當前模型參數,計算 ,即書上所說的分支 要為解釋數據 承擔的那部分責任,即後驗概率分布:
3. M Step : 利用當前的後驗概率分布,重新估計模型的所有參數:
4. 計算對數似然:
檢查參數或者對數似然值是否已經達到收斂條件;若否,返回第2步,繼續訓練。
⑸ GMM演算法使用
我畢設用到GMM ,有相關資料嘛,交流下唄~
⑹ GMM模型是什麼
就是用高斯概率密度函數(正態分布曲線)精確地量化事物,將一個事物分解為若乾的基於高斯概率密度函數(正態分布曲線)形成的模型。GMMs已經在數值逼近、語音識別、圖像分類、圖像去噪、圖像重構、故障診斷、視頻分析、郵件過濾、密度估計、目標識別與跟蹤等領域取得了良好的效果。
對圖像背景建立高斯模型的原理及過程:圖像灰度直方圖反映的是圖像中某個灰度值出現的頻次,也可以認為是圖像灰度概率密度的估計。如果圖像所包含的目標區域和背景區域相比比較大,且背景區域和目標區域在灰度上有一定的差異,那麼該圖像的灰度直方圖呈現雙峰-谷形狀。
主要步驟
1、為圖像的每個像素點指定一個初始的均值、標准差以及權重。
2、收集N(一般取200以上,否則很難得到像樣的結果)幀圖像利用在線EM演算法得到每個像素點的均值、標准差以及權重)。
3、從N+1幀開始檢測,檢測的方法:
對每個像素點:
1)將所有的高斯核按照ω/σ降序排序
2)選擇滿足公式的前M個高斯核:M= arg min(ω/σ>T)
3)如果當前像素點的像素值在中有一個滿足:就可以認為其為背景點。