個人學習筆記(十四)高斯混合模型中的EM算法

       因爲在第三次比賽中用到了高斯混合模型GMM,這裏根據我自己的理解對GMM內部的EM算法做一個簡要的複習。

EM算法概述

       先來回顧一下EM算法。EM算法是通過迭代求L(θ)=logP(Yθ)L(\theta)=logP(Y|\theta)極大似然估計的方法,即我們的目標是要找到一個θ\theta,使得logP(Yθ)logP(Y|\theta)最大。
       首先選擇參數初值θ(0)\theta^{(0)},開始迭代。在第i+1i+1次迭代的E步計算QQ函數:
Q(θ,θ(i))=EZ[logP(Y,Zθ)Y,θ(i)]=ZP(ZY,θ(i))logP(Y,Zθ)Q(\theta,\theta^{(i)})=E_Z[logP(Y,Z|\theta)|Y,\theta^{(i)}]=\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta)       接着在M步計算使QQ函數極大化的θ\theta作爲θ(i+1)\theta^{(i+1)}
θ(i+1)=argmaxθQ(θ,θ(i))\theta^{(i+1)}=\arg\max_\theta Q(\theta,\theta^{(i)})       可以看到,每次迭代其實都是在求QQ函數及其極大。劃重點,QQ函數是完全數據的對數似然函數logP(Y,Zθ)logP(Y,Z|\theta)關於未觀測數據ZZ的條件概率分佈P(ZY,θ(i))P(Z|Y,\theta^{(i)})的期望。
       爲什麼每一步求QQ函數的極大,最後就能得到L(θ)L(\theta)的極大呢?一句話概括,QQ函數是L(θ)L(θ(i))L(\theta)-L(\theta^{(i)})的下界,一步步求QQ函數的極大,意味着一步步的提高L(θ)L(\theta)

QQ函數推導

       假設在第ii次迭代後θ\theta的估計值是θ(i)\theta^{(i)},考慮下面L(θ)L(θ(i))L(\theta)-L(\theta^{(i)})的表達式
L(θ)L(θ(i))=logP(Yθ)logP(Yθ(i))L(\theta)-L(\theta^{(i)})=logP(Y|\theta)-logP(Y|\theta^{(i)})       在L(θ)L(\theta)中加入隱變量ZZ,即令
P(Yθ)=ZP(Y,Zθ)P(Y|\theta)=\sum_ZP(Y,Z|\theta)       代入L(θ)L(\theta)
L(θ)=logZP(Y,Zθ)L(\theta)=log\sum_ZP(Y,Z|\theta)       爲了用Jensen不等式將log放入\sum內部,同時乘以、除以一個P(ZY,θ(i))P(Z|Y,\theta^{(i)})
L(θ)=logZP(ZY,θ(i))P(Y,Zθ)P(ZY,θ(i))L(\theta)=log\sum_ZP(Z|Y,\theta^{(i)})\frac{P(Y,Z|\theta)}{P(Z|Y,\theta^{(i)})}       利用Jensen不等式得到L(θ)L(\theta)的下界
L(θ)ZP(ZY,θ(i))logP(Y,Zθ)P(ZY,θ(i))L(\theta)\geq\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y,Z|\theta)}{P(Z|Y,\theta^{(i)})}       將L(θ)L(\theta)的下界代入L(θ)L(θ(i))L(\theta)-L(\theta^{(i)})中,得
L(θ)L(θ(i))ZP(ZY,θ(i))logP(Y,Zθ)P(ZY,θ(i))P(Yθ(i))=ZP(ZY,θ(i))logP(Y,Zθ)P(Y,Zθ(i))L(\theta)-L(\theta^{(i)})\geq\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y,Z|\theta)}{P(Z|Y,\theta^{(i)})P(Y|\theta^{(i)})}=\sum_ZP(Z|Y,\theta^{(i)})log\frac{P(Y,Z|\theta)}{P(Y,Z|\theta^{(i)})}       由於上式可轉化爲
L(θ)L(θ(i))ZP(ZY,θ(i))logP(Y,Zθ)ZP(ZY,θ(i))logP(Y,Zθ(i))L(\theta)-L(\theta^{(i)})\geq\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta)-\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta^{(i)})       因爲我們的目標是找到一個θ\theta使L(θ)L(θ(i))L(\theta)-L(\theta^{(i)})的下界極大,因此不等式右邊的後半部分可以看作常數,我們的目標便轉化爲了
θ(i+1)=argmaxθZP(ZY,θ(i))logP(Y,Zθ)\theta^{(i+1)}=\arg\max_\theta\sum_ZP(Z|Y,\theta^{(i)})logP(Y,Z|\theta)       這樣,QQ函數就出來了。

GMM中的EM算法

       高斯混合模型的概率分佈表達式是這樣的
P(yθ)=k=1Kαkϕ(yθk)P(y|\theta)=\sum_{k=1}^K\alpha_k\phi(y|\theta_k)       共有KK個高斯分佈,概率P(yθ)P(y|\theta)KK個概率分佈密度的加權和。每個高斯分佈共有3個參數需要求取,αk\alpha_k代表每個高斯分佈的權值,θk=(μk,σk2)\theta_k=(\mu_k,\sigma_k^2)代表每個高斯分佈的均值和方差。
       那麼如果我們現在有一系列的觀測點Y=(y1,y2, ,yN)Y=(y_1,y_2,\cdots,y_N),如何用EM算法求取高斯混合模型的參數呢?同樣是E步求QQ函數,M步求極大,但這裏不寫推導過程,而是去感性理解。
       首先取參數的初始值αk,μk,σk2\alpha_k,\mu_k,\sigma_k^2,開始迭代。在GMM中,隱變量ZZ代表了每個觀測點屬於哪個高斯分佈,所以在E步,我們對隱變量ZZ在給定樣本下的條件分佈求期望,也就是求每個觀測點屬於各高斯分佈的概率,設點yjy_j屬於高斯分佈kk的概率爲γ^jk\hat \gamma_{jk},則
γ^jk=αkϕ(yjθk)k=1Kαkϕ(yjθk),  j=1,2, ,N; k=1,2, ,K\hat\gamma_{jk}=\frac{\alpha_k\phi(y_j|\theta_k)}{\sum_{k=1}^K\alpha_k\phi(y_j|\theta_k)},  j=1,2,\cdots,N; k=1,2,\cdots,K       到了M步,我們可以用求出來的γ^jk\hat\gamma_{jk}去重新計算各高斯分佈的參數,這本質上是一個求期望極大的過程。針對第kk個高斯分佈的權值αk\alpha_k,它應該等於每個觀測點屬於此高斯分佈的概率的平均值,即
α^k=j=1Nγ^jkN,  k=1,2, ,K\hat\alpha_k=\frac{\sum_{j=1}^N\hat\gamma_{jk}}{N},  k=1,2,\cdots,K       針對第kk個高斯分佈的均值μk\mu_k,它應該等於每個觀測點關於其屬於第kk個高斯分佈的概率的期望,即
μ^k=j=1Nγ^jkyjj=1Nγ^jk,  k=1,2, ,K\hat\mu_k=\frac{\sum_{j=1}^N\hat\gamma_{jk}y_j}{\sum_{j=1}^N\hat\gamma_{jk}},  k=1,2,\cdots,K       最後是第kk個高斯分佈的方差σk2\sigma_k^2,它應該等於每個觀測點與均值μk\mu_k之差的平方關於其屬於第kk個高斯分佈的概率的期望,即
σ^k2=j=1Nγ^jk(yjμk)2j=1Nγ^jk,  k=1,2, ,K\hat\sigma_k^2=\frac{\sum_{j=1}^N\hat\gamma_{jk}(y_j-\mu_k)^2}{\sum_{j=1}^N\hat\gamma_{jk}},  k=1,2,\cdots,K
       得到了每個高斯分佈當前的α^k,μ^k,σ^k2\hat\alpha_k,\hat\mu_k,\hat\sigma_k^2後,返回E步繼續迭代。

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