機器學習: EM 演算法(Expectation-Maximization Algorithm, EM)、高斯混合模型(Gaussian Mixture Model, GMM)和GMM-EM詳細推導

Tommy Huang
12 min readJul 6, 2018

--

這篇結構為

  1. 複習一些線代東西,EM會用到的。
    凸函數
    Jensen’s inequality
  2. EM 演算法(Expectation-Maximization Algorithm)
  3. 高斯混合模型(Gaussian Mixed Model)
    GMM概念
    GMM公式怎麼來的
  4. GMM-EM
    GMM-EM演算法流程
    GMM-EM詳細推導

如果只是要看GMM用EM演算法流程的,請直接看「GMM-EM演算法流程」,想看推導的再看推導,因為有點複雜。

開始之前先稍微複習EM會用到的線性代數或是最佳化理論的內容

凸函數

如果f為實數x的函數,二階微分大於等於0,則f稱為凸函數,二階微分大於0稱為嚴格凸函數。

如果f為向量x的函數,二階微分矩陣(Hessian Matrix, H)如果是半正定(determinant(H)≥0),則f稱j為凸函數,如果determinant(H)>0稱為嚴格凸函數。

Jensen’s inequality

機率論觀點,如果φ是凸函數,X是隨機變量

E: 期望值(expectation),公式如下:

f:是x的機率密度函數。

EM 演算法(Expectation-Maximization Algorithm)

假設有一組n個資料,每個樣本之間彼此獨立,這組資料的概似函數(likelihood function)為

f為機率密度函數,θ為機率密度函數的參數。

這邊我們取了個概似函數的對數,如果熟悉MLE (maximum likelihood estimation,最大概似估計)的人會比較清楚。這邊簡單說原因就是「因為一堆樣本的概似函數為每個樣本的機率密度函數相乘(統計獨立的特性),在推論上一堆東西相乘會難推導很多,所以這邊取個對數,讓概似函數變成每個樣本的機率密度函數的相加」。

Recall: 假設有兩個樣本xy,如果xy統計獨立則f(x,y)=f(x)f(y)。

假設每個樣本之間都有一些隱藏資訊z (因為EM大多用在GMM或是HMM中,所以需要假設有一個隱藏資訊),我們要找到資訊z使的概似函數最大化,

如果要直接求θ,因為有z存在會困難一點,但當z確定後,用MLE求解就容易很多。EM則是用來解決存在隱藏資訊最佳化問題的方法;因為我們無法直接最大化L(θ),所以我們可以不斷建立L(θ)的下界(E-step),然後最佳化下界(M-step),所以一般看到EM演算法都會聽到E-step和M-step兩個步驟。

剛剛的概似函數我們在前面乘上一個然後除上一個隱含變數z的機率分佈(q(z))

所以可以說

其中

φ=ln(X)是凹函數,所以上述式子可以用Jensen’s inequality表示,但等式要反向。

ln(X)是凹函數

Recall: Jensen’s inequality

因為φ=ln(X)是凹函數,所以

所以概似函數L(θ)的下界(Lower Bound, LB)出來了

下界越大代表概似函數L(θ)越大,跟MLE理念相同,我們希望估計出來的概似函數可以越大越好。

假設θ給定,那L(θ)的值取決在於q(z(i))和f((i)x, z(i)),所以我們可以透過這兩個函數使下界不斷上生,去逼近L(θ)。當不等式變成等式時,代表我們調整出來的q(z(i))和f((i)x, z(i))可以讓下界等於L(θ)。
根據Jensen’s inequality,要讓等式成立需要讓隨機變數X變成常數。

因為q(z)是機率密度函數,

因為分子除以分母是常數,當分母項和是1時,分子項相加為那個常數,因此

上述(假設θ給定到這行)就是E-step的結果。

EM演算法步驟就是不斷重複E-step和M-step直到參數收斂。

這邊沒有對E-step和M-step做很多推導,因為E-step和M-step只是概念,實際隱藏參數和概似函數參數都會依據你實際應用的模型而產生,後面講到的GMM就是其中一種。

高斯混合模型(Gaussian Mixed Model)

GMM概念

一般在講高斯模型都會假設說資料分佈來自一個高斯模型,高斯模型如下:

我這邊舉一些資料是從高斯分佈(平均數是160, 標準差是5)抽樣出來的資料(100筆),然後取直方圖,理論上樣本的分佈要跟高斯分佈要很像,實際上也很像(下圖),這邊樣本如果樣本抽越多紅色線跟藍色線就越像。

藍色是抽樣的資料,紅色是高斯分佈(N(160,5))

但假設我從高斯分佈(平均數是160, 標準差是5)抽樣100筆資料,然後從高斯分佈(平均數是180, 標準差是5)抽樣100筆資料,此刻我有兩百筆資料,我如果一樣用單一個高斯分佈去估計這200筆資料就可能有問題,如下圖:

藍色是抽樣的資料,紅色是高斯分佈(N(170,10))。

由上圖我們可以知道不能單用一個高斯分佈去估計資料,因此我這邊用2個高斯分佈相加去估計資料,此刻估計出來的分佈就會比較像實際資料的分佈,這個過程就稱為高斯混和模型,

藍色是抽樣的資料,黑色是高斯分佈(N(160,5)),綠色是高斯分佈(N(180,5)),紅色線則是黑色加綠色的高斯混合分佈(N(160,5)+N(180,5))

有了上述概念後再來看高斯混合模型(Gaussian mixture model, GMM)會簡單很多,上面是說為什麼我們要用很多個高斯模型來形容我們的資料,至於是多少個高斯模型比較合適就是需要去測試才知道。

GMM公式怎麼來的

接下來這邊舉個例子是GMM的模型怎麼處理機率密度函數。
假設有K個袋子裡面有無窮多個糖果,每個袋子的機率密度函數都是高斯函數,當我們要拿一顆糖果出來的時候,我們要先隨一個袋子,然後從袋子拿一顆糖果出來,我們總共重複抽n次糖果,如下圖。

所以動作有
1. 先選一個袋子
這時候選袋子有是一種隨機變量,這邊假設K個袋子的隨機變量這邊假設是離散型的,連續型基本上差不多)為

2. 從袋子拿一顆糖果

從這個例子我們知道,z是無法量測的隨機變量,也就是隱藏變數,且其事前機率(priori)為

αk也就是第k個袋子(高斯分佈)被選中的事前機率,或稱為每個袋子被挑中的權重。
因此隱藏變數z的機率密度函數為

假設我們今天選中第k個袋子,然後抽中糖果x發生機率是

寫的比較general一點就是

如果看過後驗機率應該知道有一個分母項叫全機率,把所有z可能的概似函數乘上事前機率再相加

其中

Θ稱為高斯混合模型的參數集。

現在我們這個機率模式我把高斯分佈寫進去替換

這就是GMM的公式。
αk等於每個高斯分佈的界於0到1的權重,然後我們會限定權重和為1。

假設我們已經知道高斯混合模型的參數(Θ)了,此刻我們有一顆糖果x,根據它的後驗機率可以推論出來是來自第k個糖果袋子的機率,也可以解讀成這個糖果在全部袋子中,第k個袋子將負責多少比例的機率

此時wk(x)具有一個特性,全部K個糖果袋子的機率和是1

GMM概似函數估計

這邊會延續糖果的例子。
假設我們抽了n個糖果,所是事件集合是{x1,x2,…,xn},我們要用這些糖果來反推論參數,分別是

聽起來就很困難對吧,從抽出來的糖果要去推這麼多東西,EM是視乎是一個有效的估計方法。

這邊將我們抽了n個糖果的概似函數寫出來,然後取對數:

EM是一種不斷迭代的算法,所以參數會不斷的更新,這邊假設

Jensen’s inequality

所以

因為已經在算t+1次,所以第t次的參數Θ(t)固定時,可視為一個常數C不重要可以刪除。
我們定義一個函數q

上述式子可以簡化成

所以式子右邊那一串(三項相加)等於ln(L(Θ(t+1)))的下界

原本目的是希望t+1次的對數概似函數(ln(L(Θ(t+1))))最大化,但因為很困難,所以我們去最大化ln(L(Θ(t+1)))的下界會比較容義一些,因此最大化q(Θ(t),Θ(t+1))會使得ln(L(Θ(t+1)))變大。

GMM-EM

GMM-EM演算法流程:

假設給定樣本集合{x1,x2,…,xn}
1. 初始化參數
設定K個數,t(第t次計算)設定為0

2. E-step:
假設所有參數(Θ(t))已知,計算

3. M-step:
利用MLE去估計q(Θ(t),Θ(t+1))的參數Θ(t+1)

參數估計出來為:

4. 重複2~3,直到滿足收斂條件(參數收斂或是概似函數收斂)

GMM-EM詳細推導

整理一下GMM-EM
E-step:
使用(所以參數固定)

然後

M-step:

在M-step要估計的參數是什麼?
分別是

所以我們將M-step最佳化拆成兩項來看

我們先解

因為我們有限制K個糖果盒子的權重和等於1 (前面有提到)
因此q1最佳化問題為

用 Lagrange函數來解

對 Lagrange函數作偏微分找解

對上式子將所有的高斯分佈(k=1,2,…,K)都相加起來

所以就找到 αk(t+1)的解了。

再來我們解高斯機率密度函數參數(平均項量和共變異數矩陣)

從q2著手

所以我們要對q2作偏微分找參數解

此刻我們再對q2偏微分等於0求解即可求得共變異數矩陣的最佳解:
我們先對q2對平均向量做偏微分求解,即可求得平均向量的最佳解:

再來要找共變異數矩陣的解,但在那之前,我們先來個回憶一下線性代數,因為共變異數矩陣的求解需要額外的技巧

有了上面馬式距離用trace調整的方法後,我們將q2公式調整一下:

此刻我們再對q2偏微分等於0求解即可求得共變異數矩陣的最佳解:

結束@@
打這篇的心得是會推公式外加打公式,弄到眼睛脫窗。
基本上一堆公式和數學會弄到你不要不要的,如果對推論沒有興趣的,請直接看子章節「GMM-EM演算法流程」即可;對推導有興趣的可以詳讀,我打得很細。

--

--

Tommy Huang
Tommy Huang

Written by Tommy Huang

怕老了忘記這些吃飯的知識,開始寫文章記錄機器/深度學習相關內容。Medium現在有打賞功能(每篇文章最後面都有連結),如果覺得寫的文章不錯,也可以Donate給個Tipping吧。黃志勝 Chih-Sheng Huang (Tommy), mail: chih.sheng.huang821@gmail.com