詳解EM算法與混合高斯模型(Gaussian mixture model, GMM)

   最近在看曉川老(shi)師(shu)的博士論文,接觸了混合高斯模型(Gaussian mixture model, GMM)和EM(Expectation Maximization)算法,不禁被論文中龐大的數學公式所嚇退。本文通過查閱相關資料,在複雜巧妙的推理公式中融入了自己的理解,詳細梳理了混合高斯模型和EM算法。

1 單高斯模型(Gaussian single model, GSM)

   簡單回顧一下概率論講過的高斯模型。
  高斯模型是一種常用的變量分佈模型,在數理統計領域有着廣泛的應用(……好吧讀了這麼多年書沒白費,教科書般的話語已植入骨髓)。一維高斯分佈的概率密度函數如下:
(1)f(x)=12πσexp((xμ)22σ2)f(x) = \frac{1}{{\sqrt {2\pi } \sigma }}\exp ( - \frac{{{{(x - \mu )}^2}}}{{2{\sigma ^2}}})\tag{1} 
   μ\muσ2{\sigma ^2}分別是高斯分佈的均值和方差。
  譬如將男生身高視爲變量X, 假設男生的身高服從高斯分佈,則XN(μ,σ2)X \sim N(\mu ,{\sigma ^2}),女生亦如此。只是男女生身高分佈可能具有不同的均值和方差。圖1是從谷歌圖庫中搜索到的男女生身高分佈圖,來源不清,個人覺得男生的均值身高虛高……四個記號分別表示0~3σ\sigma準則。
圖1 男女生身高分佈差異

圖1 男女生身高分佈差異

   多維變量X=(x1,x2,...xn)X = ({x_1},{x_2},...{x_n})的聯合概率密度函數爲:
(2)f(X)=1(2π)d/2Σ1/2exp[12(Xu)TΣ1(Xu)],X=(x1,x2...xn)f(X) = \frac{1}{{{{(2\pi )}^{d/2}}{{\left| \Sigma \right|}^{1/2}}}}\exp [ - \frac{1}{2}{(X - u)^T}{\Sigma ^{ - 1}}(X - u)],X = ({x_1},{x_2}...{x_n})\tag{2}
  其中:
  d:變量維度。對於二維高斯分佈,有d=2;
   u=(u1u2...un)u = \left( \begin{array}{l} {u_1}\\ {u_2}\\ ...\\ {u_n} \end{array} \right):各維變量的均值;
   Σ\Sigma:協方差矩陣,描述各維變量之間的相關度。對於二維高斯分佈,有:
(3)Σ=[δ11δ12δ21δ22] \Sigma= \left[ \begin{matrix} \delta _{11} & \delta _{12}\\ \delta _{21}& \delta _{22} \end{matrix} \right] \tag{3}

這裏寫圖片描述
圖2 二維高斯數據分佈

   圖2是二維高斯分佈產生的數據示例,參數設定爲:u=(00),Σ=[10.80.85]u = \left( \begin{array}{l} 0\\ 0 \end{array} \right),\Sigma= \left[ \begin{matrix} 1 & 0.8\\ 0.8&5 \end{matrix} \right]。關於二維高斯分佈的參數設定對爲高斯曲面的影響,這篇文章二維高斯分佈(Two-dimensional Gaussian distribution)的參數分析有提及,主要是爲了下文理解混合高斯分佈做鋪墊。服從二維高斯分佈的數據主要集中在一個橢圓內部,服從三維的數據集中在一個橢球內部。

2 混合高斯模型(Gaussian mixture model, GMM)

2.1 爲什麼要有混合高斯模型

先來看一組數據。 
     
  

這裏寫圖片描述
圖3 混合高斯分佈所產生數據

   如果我們假設這組數據是由某個高斯分佈產生的,利用極大似然估計(後文還會提及)對這個高斯分佈做參數估計,得到一個最佳的高斯分佈模型如下。

這裏寫圖片描述
圖4 用單高斯模型對樣本作分析不合理示意

   有什麼問題嗎?一般來講越靠近橢圓的中心樣本出現的概率越大,這是由概率密度函數決定的,但是這個高斯分佈的橢圓中心的樣本量卻極少。顯然樣本服從單高斯分佈的假設並不合理。單高斯模型無法產生這樣的樣本。
  實際上,這是用兩個不同的高斯分佈模型產生的數據。

這裏寫圖片描述
圖5 混合高斯模型對樣本作分析示意

   正當單高斯模型抓耳撓腮的時候,混合高斯模型就大搖大擺地進場了。它通過求解兩個高斯模型,並通過一定的權重將兩個高斯模型融合成一個模型,即最終的混合高斯模型。這個混合高斯模型可以產生這樣的樣本。
  更一般化的描述爲:假設混合高斯模型由K個高斯模型組成(即數據包含K個類),則GMM的概率密度函數如下:
(3)p(x)=k=1Kp(k)p(xk)=k=1KπkN(xuk,Σk)p(x)=\sum\limits_{k = 1}^K {p(k)p(x|k) = } \sum\limits_{k = 1}^K {{\pi _k}N(x|{u_k},{\Sigma _k})} \tag{3}
  其中,p(xk)=N(xuk,Σk)p(x|k) = N(x|{u_k},{\Sigma _k})是第k個高斯模型的概率密度函數,可以看成選定第k個模型後,該模型產生x的概率;p(k)=πkp(k) = {\pi _k}是第k個高斯模型的權重,稱作選擇第k個模型的先驗概率,且滿足k=1Kπk=1\sum\limits_{k = 1}^K {{\pi _k}} = 1
  所以,混合高斯模型並不是什麼新奇的東西,它的本質就是融合幾個單高斯模型,來使得模型更加複雜,從而產生更復雜的樣本。理論上,如果某個混合高斯模型融合的高斯模型個數足夠多,它們之間的權重設定得足夠合理,這個混合模型可以擬合任意分佈的樣本。

2.2 直觀上理解混合高斯模型

   下面通過幾張圖片來幫助理解混合高斯模型。
  首先從簡單的一維混合高斯模型說起。
 

這裏寫圖片描述
圖6 一維混合高斯模型

   在圖6中,y1,y2和y3分別表示三個一維高斯模型,他們的參數設定如圖所示。y4表示將三個模型的概率密度函數直接相加,注意的是這並不是一個混合高斯模型,因爲不滿足k=1Kπk=1\sum\limits_{k = 1}^K {{\pi _k}} = 1的條件。而y5和y6分別是由三個相同的高斯模型融合生成的不同混合模型。由此可見,調整權重將極大影響混合模型的概率密度函數曲線。另一方面也可以直觀地理解混合高斯模型可以更好地擬合樣本的原因:它有更復雜更多變的概率密度函數曲線。理論上,混合高斯模型的概率密度函數曲線可以是任意形狀的非線性函數。
  下面再給出一個二維空間3個高斯模型混合的例子。
 

這裏寫圖片描述
(a) 3個類別高斯分佈截面輪廓線

這裏寫圖片描述
(b) 混合高斯分佈截面輪廓線

這裏寫圖片描述
© 二維混合高斯分佈概率密度函數圖

圖7 二維混合高斯模型

   (a) 圖表示的是3個高斯模型的截面輪廓圖,3個模型的權重係數已在圖中註明,由截面輪廓圖可知3個模型之間存在很多重疊區域。其實這也正是混合高斯模型所希望的。因爲如果它們之間的重疊區域較少,那麼生成的混合高斯模型一般較爲簡單,難以生成較爲複雜的樣本。
  設定好了3個高斯模型和它們之間的權重係數之後,就可以確定二維混合高斯分佈的概率密度函數曲面,如圖©所示。圖(b)是對於圖©概率密度曲面的截面輪廓線。從圖7也可以看出,整個混合高斯分佈曲面相對比於單高斯分佈曲面已經異常複雜。實際上,通過調整混合高斯分佈的係數(π,μ,Σ)(\pi ,\mu ,\Sigma ),可以使得圖©的概率密度曲面去擬合任意的三維曲面,從而採樣生成所需要的數據樣本。

3 極大似然估計(Maximum Likehood Estimate, MLE)(最大化對數似然函數)

● 最大化對數似然函數(log-likelihood function)的意義

   首先直觀化地解釋一下最大化對數似然函數要解決的是什麼問題。
  假設我們採樣得到一組樣本yt{y_t},而且我們知道變量Y服從高斯分佈(本文只提及高斯分佈,其他變量分佈模型類似),數學形式表示爲YN(μ,Σ)Y \sim N(\mu ,\Sigma )。採樣的樣本如圖8所示,我們的目的就是找到一個合適的高斯分佈(也就是確定高斯分佈的參數μ,Σ\mu ,\Sigma),使得這個高斯分佈能產生這組樣本的可能性儘可能大。
 

這裏寫圖片描述
圖8 最大化似然函數的意義

   那怎麼找到這個合適的高斯分佈呢(在圖8中的表示就是1~4哪個分佈較爲合適)?這時候似然函數就閃亮登場了。
  似然函數數學化:設有樣本集Y=y1,y2...yNY = {y_1},{y_2}...{y_N}p(ynμ,Σ)p({y_n}|\mu ,\Sigma )是高斯分佈的概率分佈函數,表示變量Y=ynY = {y_n}的概率。假設樣本的抽樣是獨立的,那麼我們同時抽到這N個樣本的概率是抽到每個樣本概率的乘積,也就是樣本集Y的聯合概率。此聯合概率即爲似然函數:
(4)L(μ,Σ)=L(y1,y2...yN;μ,Σ)=n=1Np(yn;μ,Σ)L(\mu ,\Sigma ) = L({y_1},{y_2}...{y_N};\mu ,\Sigma ) = \prod\limits_{n = 1}^N {p({y_n};\mu ,\Sigma )}\tag{4}
  對式子(4)進行求導並令導數爲0(即最大化似然函數,一般還會先轉化爲對數似然函數再最大化),所求出的參數就是最佳的高斯分佈對應的參數。
  所以最大化似然函數的意義就是:通過使得樣本集的聯合概率最大來對參數進行估計,從而選擇最佳的分佈模型。
  對於圖8產生的樣本用最大化似然函數的方法,最終可以得到序號1對應的高斯分佈模型是最佳的模型。

4 EM算法(最大化Q函數)

4.1 爲什麼要有EM算法(EM算法與極大似然估計分別適用於什麼問題)

● 嘗試用極大似然估計的方法來解GMM模型

   解GMM模型,實際上就是確定GMM模型的參數(μ,Σ,π)(\mu ,\Sigma ,\pi ),使得由這組參數確定的GMM模型最有可能產生採樣的樣本。
  先試試看用極大似然估計的方法來解GMM模型會出現什麼樣的問題。
  如第3小節所述,要利用極大似然估計求解模型最重要的一步就是求出似然函數,即樣本集出現的聯合概率。而對於混合高斯模型,如何求解某個樣本yt{y_t}的概率?顯然我們得先知道這個樣本來源於哪一類高斯模型,然後求這個高斯模型生成這個樣本的概率p(yt)p({y_t})
  但是問題來了:我們只有樣本。不知道樣本到底來源於哪一類的高斯模型。那麼如何求解樣本的生成概率p(yt)p({y_t})
  先引入一個隱變量γ\gamma。它是一個K維二值隨機變量,在它的K維取值中只有某個特定的元素γk{\gamma _k}的取值爲1,其它元素的取值爲0。實際上,隱變量描述的就是:每一次採樣,選擇第k個高斯模型的概率,故有:
(5)p(γk=1)=πkp({\gamma _k} = 1) = {\pi _k}\tag{5}
  當給定了γ\gamma的一個特定的值之後(也就是知道了這個樣本從哪一個高斯模型進行採樣),可以得到樣本y的條件分佈是一個高斯分佈,滿足:
(6)p(yγk=1)=N(yμk,Σk)p(y|{\gamma _k} = 1) = N(y|{\mu _k},{\Sigma _k})\tag{6}
  而實際上,每個樣本到底是從這K個高斯模型中哪個模型進行採樣的,是都有可能的。故樣本y的概率爲:
(7)p(y)=γp(γ)p(yγ)=k=1KπkN(yμk,Σk)p(y) = \sum\nolimits_\gamma {p(\gamma )} p(y|\gamma ){\rm{ = }}\sum\limits_{{\rm{k}} = 1}^K {{\pi _k}N(y|{\mu _k},{\Sigma _k})} \tag{7}
  樣本集Y(n個樣本點)的聯合概率爲:
(8)L(μ,Σ,π)=L(y1,y2...yN;μ,Σ,π)=n=1Np(yn;μ,Σ,π)=n=1Nk=1KπkN(ynμk,Σk)L(\mu ,\Sigma ,\pi ) = L({y_1},{y_2}...{y_N};\mu ,\Sigma ,\pi ) = \prod\limits_{n = 1}^N {p({y_n};\mu ,\Sigma ,\pi )} = \prod\limits_{n = 1}^N {\sum\limits_{{\rm{k}} = 1}^K {{\pi _k}N({y_n}|{\mu _k},{\Sigma _k})} } \tag{8}
  對數似然函數表示爲:
(9)lnL(μ,Σ,π)=n=1Nlnk=1KπkN(ynμk,Σk)\ln L(\mu ,\Sigma ,\pi ) = \sum\limits_{n = 1}^N {\ln \sum\limits_{{\rm{k}} = 1}^K {{\pi _k}N({y_n}|{\mu _k},{\Sigma _k})} } \tag{9}
  好了,然後求導,令導數爲0,得到模型參數(μ,Σ,π)(\mu ,\Sigma ,\pi )
  貌似問題已經解決了,喜大普奔。
  然而仔細觀察可以發現,對數似然函數裏面,對數裏面還有求和。實際上沒有辦法通過求導的方法來求這個對數似然函數的最大值。
  MLE(極大似然估計)略顯沮喪。這時候EM算法走過來,安慰着說:兄弟別哭,老哥幫你。

● 極大似然估計與EM算法適用問題分析

   下面先闡述一下極大似然估計與EM算法分別適用於解決什麼樣的問題。
 

這裏寫圖片描述
圖9 極大似然估計適用問題

這裏寫圖片描述
圖10 EM算法適用問題

   如果我們已經清楚了某個變量服從的高斯分佈,而且通過採樣得到了這個變量的樣本數據,想求高斯分佈的參數,這時候極大似然估計可以勝任這個任務;而如果我們要求解的是一個混合模型,只知道混合模型中各個類的分佈模型(譬如都是高斯分佈)和對應的採樣數據,而不知道這些採樣數據分別來源於哪一類(隱變量),那這時候就可以借鑑EM算法。EM算法可以用於解決數據缺失的參數估計問題(隱變量的存在實際上就是數據缺失問題,缺失了各個樣本來源於哪一類的記錄)。
  下面將介紹EM算法的兩個步驟:E-step(expectation-step,期望步)和M-step(Maximization-step,最大化步);

4.2 E-step

我們現有樣本集Y=(y1,y2...yT)Y = ({y_1},{y_2}...{y_T}),通過隱變量γt,k{\gamma _{t,k}}(表示yt{y_t}這個樣本來源於第k個模型)的引入,可以將數據展開成完全數據:
(yt,γt,1,γt,2...γt,K),t=1,2...T({y_t},{\gamma _t}_{,1},{\gamma _{t,2}}...{\gamma _{t,K}}),t = 1,2...T

所謂的完全數據,就是不缺失的數據。只有樣本集Y=(y1,y2...yT)Y = ({y_1},{y_2}...{y_T})的數據是不完整的,存在信息缺失的。若yt{y_t}由第1類採樣而來,則有γt,1=1,γt,2=0...γt,K=0{\gamma _t}_{,1} = 1,{\gamma _{t,2}} = 0...{\gamma _{t,K}} = 0,表示爲(yt,1,0,...0)({y_t},1,0,...0)
  所以要求能採到這組數據的可能性,需要分兩步走:①第t個樣本由哪一類產生?②如果第t個樣本由第k類產生,那麼第k類產生第t個樣本的概率爲多少?
  綜合考慮上面兩步,有了完全數據的似然函數:
(10)p(y,γμ,Σ,π)=t=1Tp(yt,γt,1,γt,2...γt,Kμ,Σ,π)       =t=1Tk=1K(πkN(yt;μk,Σk))γt,k       =k=1Kπkt=1Tγt,kt=1T(N(yt;μk,Σk))γt,k\begin{array}{l} p(y,\gamma |\mu ,\Sigma ,\pi ) = \prod\limits_{t = 1}^T {p({y_t},{\gamma _t}_{,1},{\gamma _{t,2}}...{\gamma _{t,K}}|\mu ,\Sigma ,\pi )} \\ {\rm{        }} = \prod\limits_{t = 1}^T {\prod\limits_{k = 1}^K {{{({\pi _k}N({y_t};{\mu _k},{\Sigma _k}))}^{{\gamma _{t,k}}}}} } \\ {\rm{        }} = \prod\limits_{k = 1}^K {\pi _k^{\sum\nolimits_{t = 1}^T {^{{\gamma _{t,k}}}} }} \prod\limits_{t = 1}^T {{{(N({y_t};{\mu _k},{\Sigma _k}))}^{{\gamma _{t,k}}}}} \end{array} \tag{10}
  第1個等號到第2個等號的理解:若yt{y_t}由第1類採樣而來,則有γt,1=1,γt,2=0...γt,K=0{\gamma _t}_{,1} = 1,{\gamma _{t,2}} = 0...{\gamma _{t,K}} = 0
(11)p(yt,γt,1,γt,2...γt,Kμ,Σ,π)=k=1K(πkN(yt;μk,Σk))γt,k              =(π1N(yt;μ1,Σ1))γt,1(π2N(yt;μ2,Σ2))γt,2...(πKN(yt;μK,ΣK))γt,K              =(π1N(yt;μ1,Σ1))1(π2N(yt;μ2,Σ2))0...(πKN(yt;μK,ΣK))0              =π1N(yt;μ1,Σ1)\begin{array}{l} p({y_t},{\gamma _t}_{,1},{\gamma _{t,2}}...{\gamma _{t,K}}|\mu ,\Sigma ,\pi ){\rm{ = }}\prod\limits_{k = 1}^K {{{({\pi _k}N({y_t};{\mu _k},{\Sigma _k}))}^{{\gamma _{t,k}}}}} \\ {\rm{               = }}{({\pi _1}N({y_t};{\mu _1},{\Sigma _1}))^{{\gamma _{t,1}}}}{({\pi _2}N({y_t};{\mu _2},{\Sigma _2}))^{{\gamma _{t,2}}}}...{({\pi _K}N({y_t};{\mu _K},{\Sigma _K}))^{{\gamma _{t,K}}}}\\ {\rm{                }} = {({\pi _1}N({y_t};{\mu _1},{\Sigma _1}))^1}{({\pi _2}N({y_t};{\mu _2},{\Sigma _2}))^0}...{({\pi _K}N({y_t};{\mu _K},{\Sigma _K}))^0}\\ {\rm{                }} = {\pi _1}N({y_t};{\mu _1},{\Sigma _1}) \end{array} \tag{11}
  注意式子(11)與式子(7)的差別:如果求p(yt)p({y_t})則需要考慮yt{y_t}有可能來源於k個類;而如果求的是p(yt,γt,1,γt,2...γt,K)p({y_t},{\gamma _t}_{,1},{\gamma _{t,2}}...{\gamma _{t,K}})則已經限定了yt{y_t}只會來源於某個類。
  第2個等式到第3個等式的理解:先交換累乘符號。由於πk{\pi _k}與t無關,故而可以從內部的累乘符號中提取出來。
  實際上完全數據的似然函數描述的就是採集到這些樣本的可能性。
  完全數據的對數似然函數爲:
(12)lnp(y,γμ,Σ,π)=k=1K(t=1Tγt,k)lnπk+t=1Tγt,k(ln(2π)12lnΣk12(ytμt)T(Σk)1(ytμt))\ln p(y,\gamma |\mu ,\Sigma ,\pi ) = \sum\limits_{k = 1}^K {(\sum\limits_{t = 1}^T {{\gamma _{t,k}}} )\ln {\pi _k}} + \sum\limits_{t = 1}^T {{\gamma _{t,k}}} ( - \ln (2\pi ) - \frac{1}{2}\ln \left| {{\Sigma _k}} \right| - \frac{1}{2}{({y_t} - {\mu _t})^T}{({\Sigma _k})^{ - 1}}({y_t} - {\mu _t})) \tag{12}
  這一步應該沒啥問題吧。。。注意的是,此處考慮的是二維高斯分佈的情況,對應於式子(2)中的d=2。
  我們的目標就是找出一組參數(μ,Σ,π)(\mu *,\Sigma *,\pi *)使得lnp(y,γμ,Σ,π)\ln p(y,\gamma |\mu ,\Sigma ,\pi )最大。
  那麼問題來了:lnp(y,γμ,Σ,π)\ln p(y,\gamma |\mu ,\Sigma ,\pi )中含有隱變量γ\gammaγ\gamma的存在使得我們沒法最大化lnp(y,γμ,Σ,π)\ln p(y,\gamma |\mu ,\Sigma ,\pi ) 。如果我們知道了γ\gamma,那麼最大化lnp(y,γμ,Σ,π)\ln p(y,\gamma |\mu ,\Sigma ,\pi )就顯得水到渠成。
  但是坑爹的就是:我們只有採樣數據yt{y_t}γ\gamma未知。
  那麼怎麼辦呢?γ\gamma來一個估計
  猜想我們給了一組起始參數(μ0,Σ0,π0)({\mu ^0},{\Sigma ^0},{\pi ^0})或者優化過的第i次迭代的參數(μi,Σi,πi)({\mu ^i},{\Sigma ^i},{\pi ^i}),也就是說每一個高斯分佈的參數我們都有了,γ\gamma做的事不就是決定每個樣本由哪一個高斯分佈產生的嘛,有了每個高斯分佈的參數那我們就可以猜想每個樣本最有可能來源於哪個高斯分佈沒錯吧!Done!
  爲此我們不最大化lnp(y,γμ,Σ,π)\ln p(y,\gamma |\mu ,\Sigma ,\pi )(也無法最大化它),而是最大化Q函數。Q函數如下:
Q(μ,Σ,π,μi,Σi,πi)=Eγ[lnp(y,γμ,Σ,π)Y,μi,Σi,πi]=Eγ[k=1K(t=1Tγt,kyt,μi,Σi,πi)lnπk+t=1T(γt,kyt,μi,Σi,πi)(ln(2π)12lnΣk12(ytμt)T(Σk)1(ytμt))]=k=1K(t=1TE(γt,kyt,μi,Σi,πi)lnπk+t=1TE(γt,kyt,μi,Σi,πi)(ln(2π)12lnΣk12(ytμt)T(Σk)1(ytμt)))\begin{array}{l} Q(\mu ,\Sigma ,\pi ,{\mu ^i},{\Sigma ^i},{\pi ^i}) = {E_\gamma }[\ln p(y,\gamma |\mu ,\Sigma ,\pi )|Y,{\mu ^i},{\Sigma ^i},{\pi ^i}]\\ = {E_\gamma }[\sum\limits_{k = 1}^K {(\sum\limits_{t = 1}^T {{\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i}} )\ln {\pi _k}} + \sum\limits_{t = 1}^T {({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})} ( - \ln (2\pi ) - \frac{1}{2}\ln \left| {{\Sigma _k}} \right| - \frac{1}{2}{({y_t} - {\mu _t})^T}{({\Sigma _k})^{ - 1}}({y_t} - {\mu _t}))]\\ = \sum\limits_{k = 1}^K {(\sum\limits_{t = 1}^T {E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})} \ln {\pi _k}} + \sum\limits_{t = 1}^T {E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})} ( - \ln (2\pi ) - \frac{1}{2}\ln \left| {{\Sigma _k}} \right| - \frac{1}{2}{({y_t} - {\mu _t})^T}{({\Sigma _k})^{ - 1}}({y_t} - {\mu _t}))) \end{array}
  其中,E(γt,kyt,μi,Σi,πi)E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})就是對γ\gamma的估計:
(14)E(γt,kyt,μi,Σi,πi)=p(γt,k=1yt,μi,Σi,πi)          =p(γt,k=1,ytμi,Σi,πi)p(yt)          =p(γt,k=1,ytμi,Σi,πi)k=1Kp(γt,k=1,ytμi,Σi,πi)          =p(ytγt,k=1,μi,Σi,πi)p(γt,k=1μi,Σi,πi)k=1Kp(ytγt,k=1,μi,Σi,πi)p(γt,k=1μi,Σi,πi)          =πkiN(yt;μki,Σki)k=1KπkiN(yt;μki,Σki)\begin{array}{l} E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i}){\rm{ = }}p({\gamma _{t,k}} = 1|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})\\           = \frac{{p({\gamma _{t,k}} = 1,{y_t}|{\mu ^i},{\Sigma ^i},{\pi ^i})}}{{p({y_t})}}\\           = \frac{{p({\gamma _{t,k}} = 1,{y_t}|{\mu ^i},{\Sigma ^i},{\pi ^i})}}{{\sum\nolimits_{k = 1}^K {p({\gamma _{t,k}} = 1,{y_t}|{\mu ^i},{\Sigma ^i},{\pi ^i})} }}\\           = \frac{{p({y_t}|{\gamma _{t,k}} = 1,{\mu ^i},{\Sigma ^i},{\pi ^i})p({\gamma _{t,k}} = 1|{\mu ^i},{\Sigma ^i},{\pi ^i})}}{{\sum\nolimits_{k = 1}^K {p({y_t}|{\gamma _{t,k}} = 1,{\mu ^i},{\Sigma ^i},{\pi ^i})p({\gamma _{t,k}} = 1|{\mu ^i},{\Sigma ^i},{\pi ^i})} }}\\           = \frac{{\pi _k^iN({y_t};\mu _k^i,\Sigma _k^i)}}{{\sum\nolimits_{k = 1}^K {\pi _k^iN({y_t};\mu _k^i,\Sigma _k^i)} }} \end{array} \tag{14}
  這公式是不是很可怕??別急,帶上幾點聲明,再去看公式就很好理解了!
  ① Q函數描述的其實就是在給定(μi,Σi,πi)({\mu ^i},{\Sigma ^i},{\pi ^i})參數下,先對樣本Y做一個最有可能的劃分(每個樣本來源於各個類的可能性,即對γ\gamma的估計E(γt,kyt,μi,Σi,πi)E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})),再描述能夠產生這組樣本的可能性(Q函數);
  ② 有了對於γ\gamma的估計之後,Q函數只和樣本有關(傳統意義上的似然函數亦如此,完全數據的似然函數還與γ\gamma有關),而不再含有隱變量,從而使得最大化Q函數成爲可能;
  ③ 最大化Q函數的過程實則就是使得能夠產生這組樣本的可能性最大,與最大化似然函數的思路如出一轍。

4.3 M-step

有個Q函數,就可以對Q函數進行最大化,得到下一次迭代的模型參數了,即:
(15)μi+1,Σi+1,πi+1=argmaxQ(μ,Σ,π,μi,Σi,πi){\mu ^{i{\rm{ + }}1}},{\Sigma ^{i{\rm{ + }}1}},{\pi ^{i{\rm{ + }}1}}{\rm{ = }}\arg \max Q(\mu ,\Sigma ,\pi ,{\mu ^i},{\Sigma ^i},{\pi ^i}) \tag{15}
  對Q函數進行求導,並另其導數爲0,可得:
(16)μki+1=t=1TπkiN(yt;μki,Σki)k=1KπkiN(yt;μki,Σki)ytE(γt,kyt,μi,Σi,πi),k=1,2...K\mu _k^{i + 1} = \frac{{\sum\nolimits_{t = 1}^T {\frac{{\pi _k^iN({y_t};\mu _k^i,\Sigma _k^i)}}{{\sum\nolimits_{k = 1}^K {\pi _k^iN({y_t};\mu _k^i,\Sigma _k^i)} }}} {y_t}}}{{E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})}},k = 1,2...K \tag{16}
(17)Σki+1=t=1TπkiN(yt;μki,Σki)k=1KπkiN(yt;μki,Σki)(ytμki)2E(γt,kyt,μi,Σi,πi),k=1,2...K\Sigma _k^{i + 1} = \frac{{\sum\nolimits_{t = 1}^T {\frac{{\pi _k^iN({y_t};\mu _k^i,\Sigma _k^i)}}{{\sum\nolimits_{k = 1}^K {\pi _k^iN({y_t};\mu _k^i,\Sigma _k^i)} }}} {{({y_t} - \mu _k^i)}^2}}}{{E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})}},k = 1,2...K\tag{17}
(18)πki+1=E(γt,kyt,μi,Σi,πi)T,k=1,2...K\pi _k^{i + 1} = \frac{{E({\gamma _{t,k}}|{y_t},{\mu ^i},{\Sigma ^i},{\pi ^i})}}{T},k = 1,2...K\tag{18}

  其中μki+1,Σki+1,πki+1\mu _k^{i + 1},\Sigma _k^{i + 1},\pi _k^{i + 1}分別表示第(i+1)次迭代,第k個類的均值,協方差矩陣和所佔的權重。

4.4 一個例子梳理EM算法的整個過程

   EM算法的核心思想是:通過迭代的過程來找到一組最優的參數(μ,Σ,π)(\mu *,\Sigma *,\pi *),使得這組參數表示的模型最有可能產生現有的採樣數據。每次迭代的過程就是參數矯正的過程。
 

這裏寫圖片描述
圖11 EM算法參數優化過程

   現假設初始化一組參數(μ0,Σ0,π0)({\mu ^0},{\Sigma ^0},{\pi ^0})。在這組參數下,2類二維高斯分佈如圖11綠色橢圓所示。然後利用現有的參數,E-step開始對樣本數據進行劃分(對γ\gamma進行估計)。藍色的樣本大多都被劃分給第1類模型,橘黃色的樣本大多都被劃分給第2類模型。但是第1類模型還有優化空間:第1類模型還不能使得藍色樣本出現的聯合概率達到最大。第2類模型也是如此。M-step便優化了2類模型的參數,得到新的參數(μ1,Σ1,π1)({\mu ^1},{\Sigma ^1},{\pi ^1}),使得優化後2類高斯分佈如圖11紅色橢圓所示。其中,第1類模型主要優化的是模型均值(即橢圓的中心),第二類模型主要優化的是模型協方差矩陣(即橢圓的長軸、短軸和長短軸的方向)。然後重複進行E-step和M-step,直到參數(μ,Σ,π)(\mu ,\Sigma ,\pi )收斂。
  最後談談混合高斯模型的參數π\pi
  混合高斯模型的參數μ,Σ\mu ,\Sigma比較好理解,用於描述各個高斯分佈的形狀,對於它們的調整也比較直觀:使得本高斯分佈能夠更好地接納被劃分到這類分佈的樣本。而爲什麼要有參數π\pi?它描述的是各個高斯分佈所佔的比重,如果不加“歧視”的話(樣本來源於各個高斯分佈的可能性一致),則有πk=1/K{\pi _k} = 1/K;而如果對於某一類高斯分佈(即爲i)有側重的話,則相應的πi{\pi _i}較大,體現在圖11中就是被分配給各個類的樣本數佔樣本總數的比例。如果一輪優化後,某一類高斯分佈又接納了更多樣本,則其πi{\pi _i}變大,反之變小(所以圖11從綠色橢圓調整爲紅色橢圓實際上兩個類所對應的權重也被優化了)。
  而從本質上來看參數π\pi,則是爲了混合高斯模型能有更好的曲面擬合能力。當參數π\pi退化爲某一類高斯分佈的權重遠遠大於其他類高斯分佈的時候,混合高斯模型就退化成了單高斯模型!

5 總結

   圖12和圖13梳理了高斯分佈和混合高斯分佈參數估計的邏輯流程。
 

這裏寫圖片描述
圖12 高斯分佈參數估計邏輯流程

這裏寫圖片描述
圖13 混合高斯分佈參數估計邏輯流程

   相對比於高斯分佈的參數估計,混合高斯分佈的參數估計更加複雜。主要原因在於隱變量的存在。而爲什麼混合高斯分佈的參數估計需要多次迭代循環進行?是因爲EM算法中對於γ\gamma的估計利用的是初始化或者第i步迭代的參數(μi,Σi,πi)({\mu ^i},{\Sigma ^i},{\pi ^i}),這對於樣本的分類劃分是有誤差的。所以它只能通過多次迭代優化尋找更佳的參數來抵消這一誤差。
  終於把這篇文章梳理完了。世界盃要結束了,僞球迷也想見證一下冠軍誕生。至此,本文結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章