因爲在第三次比賽中用到了高斯混合模型GMM,這裏根據我自己的理解對GMM內部的EM算法做一個簡要的複習。
EM算法概述
先來回顧一下EM算法。EM算法是通過迭代求L(θ)=logP(Y∣θ)的極大似然估計的方法,即我們的目標是要找到一個θ,使得logP(Y∣θ)最大。
首先選擇參數初值θ(0),開始迭代。在第i+1次迭代的E步計算Q函數:
Q(θ,θ(i))=EZ[logP(Y,Z∣θ)∣Y,θ(i)]=Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ) 接着在M步計算使Q函數極大化的θ作爲θ(i+1):
θ(i+1)=argθmaxQ(θ,θ(i)) 可以看到,每次迭代其實都是在求Q函數及其極大。劃重點,Q函數是完全數據的對數似然函數logP(Y,Z∣θ)關於未觀測數據Z的條件概率分佈P(Z∣Y,θ(i))的期望。
爲什麼每一步求Q函數的極大,最後就能得到L(θ)的極大呢?一句話概括,Q函數是L(θ)−L(θ(i))的下界,一步步求Q函數的極大,意味着一步步的提高L(θ)。
Q函數推導
假設在第i次迭代後θ的估計值是θ(i),考慮下面L(θ)−L(θ(i))的表達式
L(θ)−L(θ(i))=logP(Y∣θ)−logP(Y∣θ(i)) 在L(θ)中加入隱變量Z,即令
P(Y∣θ)=Z∑P(Y,Z∣θ) 代入L(θ)得
L(θ)=logZ∑P(Y,Z∣θ) 爲了用Jensen不等式將log放入∑內部,同時乘以、除以一個P(Z∣Y,θ(i))得
L(θ)=logZ∑P(Z∣Y,θ(i))P(Z∣Y,θ(i))P(Y,Z∣θ) 利用Jensen不等式得到L(θ)的下界
L(θ)≥Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y,Z∣θ) 將L(θ)的下界代入L(θ)−L(θ(i))中,得
L(θ)−L(θ(i))≥Z∑P(Z∣Y,θ(i))logP(Z∣Y,θ(i))P(Y∣θ(i))P(Y,Z∣θ)=Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ(i))P(Y,Z∣θ) 由於上式可轉化爲
L(θ)−L(θ(i))≥Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ)−Z∑P(Z∣Y,θ(i))logP(Y,Z∣θ(i)) 因爲我們的目標是找到一個θ使L(θ)−L(θ(i))的下界極大,因此不等式右邊的後半部分可以看作常數,我們的目標便轉化爲了
θ(i+1)=argθmaxZ∑P(Z∣Y,θ(i))logP(Y,Z∣θ) 這樣,Q函數就出來了。
GMM中的EM算法
高斯混合模型的概率分佈表達式是這樣的
P(y∣θ)=k=1∑Kαkϕ(y∣θk) 共有K個高斯分佈,概率P(y∣θ)是K個概率分佈密度的加權和。每個高斯分佈共有3個參數需要求取,αk代表每個高斯分佈的權值,θk=(μk,σk2)代表每個高斯分佈的均值和方差。
那麼如果我們現在有一系列的觀測點Y=(y1,y2,⋯,yN),如何用EM算法求取高斯混合模型的參數呢?同樣是E步求Q函數,M步求極大,但這裏不寫推導過程,而是去感性理解。
首先取參數的初始值αk,μk,σk2,開始迭代。在GMM中,隱變量Z代表了每個觀測點屬於哪個高斯分佈,所以在E步,我們對隱變量Z在給定樣本下的條件分佈求期望,也就是求每個觀測點屬於各高斯分佈的概率,設點yj屬於高斯分佈k的概率爲γ^jk,則
γ^jk=∑k=1Kαkϕ(yj∣θk)αkϕ(yj∣θk), j=1,2,⋯,N; k=1,2,⋯,K 到了M步,我們可以用求出來的γ^jk去重新計算各高斯分佈的參數,這本質上是一個求期望極大的過程。針對第k個高斯分佈的權值αk,它應該等於每個觀測點屬於此高斯分佈的概率的平均值,即
α^k=N∑j=1Nγ^jk, k=1,2,⋯,K 針對第k個高斯分佈的均值μk,它應該等於每個觀測點關於其屬於第k個高斯分佈的概率的期望,即
μ^k=∑j=1Nγ^jk∑j=1Nγ^jkyj, k=1,2,⋯,K 最後是第k個高斯分佈的方差σk2,它應該等於每個觀測點與均值μk之差的平方關於其屬於第k個高斯分佈的概率的期望,即
σ^k2=∑j=1Nγ^jk∑j=1Nγ^jk(yj−μk)2, k=1,2,⋯,K
得到了每個高斯分佈當前的α^k,μ^k,σ^k2後,返回E步繼續迭代。