當前位置:首頁 » 操作系統 » 混合高斯模型演算法

混合高斯模型演算法

發布時間: 2023-07-30 21:33:56

Ⅰ EM演算法和混合高斯模型(一)

EM(Expectation Maximization)演算法是一種迭代演算法,用於含有隱變數的概率模型參數的極大似然估計,或極大後驗估計。EM演算法的每次迭代由兩步組成:E步,求期望(expectation);M步,求極大值,因而被稱為期望極大演算法,簡稱EM演算法。

本文從EM演算法的引入說起,簡單介紹EM演算法的推導過程,以及其在高斯混合模型中的應用。更多的關於EM演算法的推導細節,可參見 人人都懂EM演算法 。

假設我們需要調查我們學校學生的身高分布。我們先假設學校所有學生的身高服從正態分布 。( 注意:極大似然估計的前提一定是要假設數據總體的分布,如果不知道數據分布,是無法使用極大似然估計的 ),這個分布的均值μ和標准差為σ 未知,如果我們估計出這兩個參數,那我們就得到了最終的結果。那麼怎樣估計這兩個參數呢?

學校的學生這么多,我們不可能挨個統計吧?這時候我們需要用到概率統計的思想,也就是抽樣,根據樣本估算總體。假設我們隨機抽到了 200 個人(也就是 200 個身高的樣本數據,為了方便表示,下面「人」的意思就是對應的身高)。然後統計抽樣這 200 個人的身高。根據這 200 個人的身高估計均值 μ和方差σ 。例子來自 人人都懂EM演算法 。

現在我們假設這200個人的身高服從一個正態分布N(μ,σ),因此可以直接使用極大似然估計方法估計出這個分布的參數μ和σ。

但是,這200個人的身高真的是服從同一個正態分布嗎?實際情況並不是這樣的,男生和女生分別服從兩種不同的正態分布,即男生 女生各服從一個正態分布 ,( 注意:EM演算法和極大似然估計的前提是一樣的,都要假設數據總體的分布,如果不知道數據分布,是無法使用EM演算法的 ),而且假設我們現在只有身高數據,丟失了性別數據,那麼該怎樣評估學生的身高分布呢?

這個時候,對於每一個樣本或者你抽取到的人,就有兩個問題需要估計了,一是這個人是男的還是女的,二是男生和女生對應的身高的正態分布的參數是多少。這兩個問題是相互依賴的:

但是現在我們既不知道每個學生是男生還是女生,也不知道男生和女生的身高分布。這就成了一個先有雞還是先有蛋的問題了。雞說,沒有我,誰把你生出來的啊。蛋不服,說,沒有我,你從哪蹦出來啊。為了解決這個你依賴我,我依賴你的循環依賴問題,總得有一方要先打破僵局,不管了,我先隨便整一個值出來,看你怎麼變,然後我再根據你的變化調整我的變化,然後如此迭代著不斷互相推導,最終就會收斂到一個解(草原上的狼和羊,相生相剋)。這就是EM演算法的基本思想了。

EM的意思是「Expectation Maximization」,具體方法為:

上面的學生屬於男生還是女生我們稱之為隱含參數,女生和男生的身高分布參數稱為模型參數。

EM 演算法解決這個的思路是使用啟發式的迭代方法,既然我們無法直接求出模型分布參數,那麼我們可以先猜想隱含參數(EM 演算法的 E 步),接著基於觀察數據和猜測的隱含參數一起來極大化對數似然,求解我們的模型參數(EM演算法的M步)。由於我們之前的隱含參數是猜測的,所以此時得到的模型參數一般還不是我們想要的結果。我們基於當前得到的模型參數,繼續猜測隱含參數(EM演算法的 E 步),然後繼續極大化對數似然,求解我們的模型參數(EM演算法的M步)。以此類推,不斷的迭代下去,直到模型分布參數基本無變化,演算法收斂,找到合適的模型參數。

在開始介紹EM演算法之前,讓我們先來了解一個重要的定理——Jensen不等式。

如下圖,如果函數f(x)是凸函數,x是隨機變數,有 0.5 的概率是 a,有 0.5 的概率是 b, x的期望值就是 a 和 b 的中值了,那麼:

對於m個相互獨立的樣本:

假如沒有隱含變數z, 我們僅需要找到合適的θ極大化對數似然函數即可:

現在我們給定一個θ值(初始化θ),那麼logL(θ)的值就取決於Q i (z)和P(x (i) ,z (i) )。我們可以通過調整這兩個概率使下屆逼近logL(θ)的真實值,當不等式變為等式時,說明我們調整後的下屆就等於logL(θ)了。由Jeson不等式可知,等式成立的條件是隨機變數是常數,則有:

如果Q i (z (i) ) = P(z (i) |x (i) , θ),則(2)式使我們包含隱藏數據的對數似然函數的一個下屆。如果我們能極大化這個下屆,則也在嘗試極大化我們的對數似然函數。即我們需要極大化下式:

由於對logaf(x)求導的結果與f(x)的系數無關((ln(ax))'= (lna + lnx)'=1/x),因此對θ求極大似然時,可以去掉式中的常數部分Q i (z (i) ):

現在,讓我們來總結一下EM演算法的流程。

輸入:觀察數據x = (x (1) , x (2) , ... , x (m) ), 聯合分布P(x, z|θ),條件分布P(z|x,θ),極大迭代次數J。
(1)隨機初始化模型參數θ值;
(2)迭代求解各個分布模型的參數以及各個模型的概率:
for j from 1 to J:

輸出:模型參數θ

圖中的直線式迭代優化的路徑,可以看到每一步都會向最優值前進一步,而且前進路線是平行於坐標軸的,因為每一步只優化一個變數。

這猶如在x-y坐標系中找一個曲線的極值,然而曲線函數不能直接求導,因此什麼梯度下降方法就不適用了。但固定一個變數後,另外一個可以通過求導得到,因此可以使用坐標上升法,一次固定一個變數,對另外的求極值,最後逐步逼近極值。對應到EM上,E步:固定 θ,優化Q;M步:固定 Q,優化 θ;交替將極值推向極大。

E步 :初始化θ A =0.6和θ B =0.5(θ A 和θ B 分別表示兩個硬幣出現正面的概率),計算每次擲硬幣選擇A和B的概率,例如第一個實驗中選擇A的概率為:

M步 :求出似然函數下屆Q(θ,θ i ), y i 代表第j次試驗正面朝上的個數,μ j 代表第j次試驗選擇硬幣A的概率,1-μ j 代表第j次試驗選擇硬幣B的概率。

參考:
人人都懂EM演算法
《統計學習方法》. 李航

Ⅱ GraphCut——GrabCut

此種演算法是對圖像進行分割操作,其將一幅圖像轉換成圖形結構來描述,通過找到圖中的最小割,從而將圖像中的前景與背景進行分割。

1、GraphCut

如上圖所示,將圖中的像素點作為圖中的點集,相鄰像素通過邊相連,另外多出的兩個點S,T分別代表的是歸於前景的點和歸於背景的點。對每個邊設置相應的權重,圖割的目的就在於利用最小割的方法將邊緣部分進行分割,此時的能量值(損失值)最小,由此得到對應的S,T集合,達到分割的目的。過程如下圖所示(其中B,O代表事先設置的種子點,由此知道分割出來的部分哪個代表背景,哪個代表目標;B代表該點屬於背景點,O代表該點屬於目標點):

2、GrabCut:

GrabCut是基於GraphCut的改進演算法,通過交互的方式得出前景與背景。

為什麼畫個框就能分割出前景與背景呢?

在框選出區域後,則將選框以外的部分視為背景區域,將選框以內的區域視為可能的前景區域。然後通過計算前景高斯混合模型(GMM)和背景GMM,然後對每一個像素的rgb值代入單個的高斯模型進行計算,選取值最大的那個模型作為該像素點的歸屬,然後再建立一個圖,對該圖求解最小隱此割,如此循環直至收斂,由此判斷得出選框內的前景區域與背景區域。

那關鍵在於如何得出前景與背景的GMM呢?

不同於GraphCut中的一次性求解圖的最衡野小割問題,GrabCut中採用的是迭代優化的方式逐步求解得出GMM。其具體過程如下圖所示:·

*其實對於這兩個演算法的具體實現並不是很清楚,在這兒只是想大體了解有這樣的一種分割的演算法,故也就不深究其是如何具體實現的了~另外Opencv中已經實現了GrabCut演算法,可以去玩玩~~

的確玩了一回,在進行區域分割的時候,通過將圖咐攜喊像進行二值化處理後,將其作為掩模來進行grabcut操作。但是處理速度比較慢,並且分割的准確性主要依賴二值圖像的質量~。

Ⅲ GMM模型是什麼

就是用高斯概率密度函數(正態分布曲線)精確地量化事物,將一個事物分解為若乾的基於高斯概率密度函數(正態分布曲線)形成的模型。GMMs已經在數值逼近、語音識別、圖像分類、圖像去噪、圖像重構、故障診斷、視頻分析、郵件過濾、密度估計、目標識別與跟蹤等領域取得了良好的效果。

對圖像背景建立高斯模型的原理及過程:圖像灰度直方圖反映的是圖像中某個灰度值出現的頻次,也可以認為是圖像灰度概率密度的估計。如果圖像所包含的目標區域和背景區域相比比較大,且背景區域和目標區域在灰度上有一定的差異,那麼該圖像的灰度直方圖呈現雙峰-谷形狀。

主要步驟

1、為圖像的每個像素點指定一個初始的均值、標准差以及權重。

2、收集N(一般取200以上,否則很難得到像樣的結果)幀圖像利用在線EM演算法得到每個像素點的均值、標准差以及權重)。

3、從N+1幀開始檢測,檢測的方法:

對每個像素點:

1)將所有的高斯核按照ω/σ降序排序

2)選擇滿足公式的前M個高斯核:M= arg min(ω/σ>T)

3)如果當前像素點的像素值在中有一個滿足:就可以認為其為背景點。

Ⅳ 高斯混合模型(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(θ)的收斂證明:

熱點內容
柱頂要加密 發布:2025-03-14 21:16:11 瀏覽:852
魔聲藍牙耳機怎麼在安卓顯示電量 發布:2025-03-14 21:15:32 瀏覽:617
智慧易店伺服器地址是啥 發布:2025-03-14 20:57:49 瀏覽:886
小米ID密碼忘記了有什麼危害 發布:2025-03-14 20:45:28 瀏覽:610
大麥路由器怎麼改密碼 發布:2025-03-14 20:35:42 瀏覽:87
資料庫片語 發布:2025-03-14 20:27:21 瀏覽:248
角色卡演算法 發布:2025-03-14 20:08:48 瀏覽:650
linux伺服器安全加固 發布:2025-03-14 19:59:21 瀏覽:779
android系統資料庫 發布:2025-03-14 19:44:27 瀏覽:237
beats安卓手機怎麼彈窗 發布:2025-03-14 19:33:38 瀏覽:222