EM
推導
X={x1,x2,⋯,xN}: 觀察數據
z: 潛在變量
似然估計函數
logP(X;θ)=logi∏NP(xi;θ)=i∑NlogP(xi;θ)(1)
我們的目標是找到最大化似然估計函數的參數θ
θargmaxlogP(X;θ)(2)
現有
P(x,z;θ)=P(x;θ)P(z∣x;θ)(3)
因此
logP(x;θ)=logP(z∣x;θ)P(x,z;θ)=logP(x,z;θ)−logP(z∣x;θ)(4)
假設z屬於Q(z;ϕ)分佈
logP(x;θ)=logP(x,z;θ)−logP(z∣x;θ)−logQ(z;ϕ)−logQ(z;ϕ)=(logP(x,z;θ)−logQ(z;ϕ))−(logP(z∣x;θ)−logQ(z;ϕ))=logQ(z;ϕ)P(x,z;θ)−logQ(z;ϕ)logP(z∣x;θ)(5)
公式5左右兩邊求關於z的期望
left=∫zQ(z;ϕ)logP(x;θ)dz=logP(x;θ)∫zQ(z;ϕ)dz=logP(x;θ)(6)
因爲∫zQ(z;ϕ)dz=1。
right=∫zQ(z;ϕ)logQ(z;ϕ)P(x,z;θ)dz−∫zQ(z;ϕ)logQ(z;ϕ)logP(z∣x;θ)dz=ELBO+KL(Q(z;ϕ)∣∣P(z∣x;θ))(7)
公式7第一項稱爲ELBO(evidence lower bound),第二項是KL散度。
因此,我們得到
logP(x;θ)=ELBO+KL(Q(z;ϕ)∣∣P(z∣x;θ))(8)
因爲KL(⋅)≥0,因此logP(x;θ)≥ELBO,當且僅當Q(z;ϕ)=P(z∣x;θ)時,等號成立。ELBO相當於一個下界,不斷地提高ELBO,就能不斷提高logP(x;θ),達到我們的目的——最大化似然估計函數。
假設我們有θ(t),我們想要最大化ELBO,即最小化KL(Q(z;ϕ)∣∣P(z∣x;θ)):
ϕ(t)=ϕargminKL(Q(z;ϕ)∣∣P(z∣x;θ(t)))=ϕargmaxELBO(ϕ,θ(t))(9)
當得到最優的ϕ(t),有Q(z;ϕ(t))=P(z∣x;θt)。實際情況下很難得到最優的ϕ(t),我們的目的時儘可能最大化ELBO。當我們計算出ELBO後,我們可以反過來求θ(t+1)=θargmaxELBO(ϕ(t),θ)。
通過不斷重複這個兩個最大化的過程,我們就可以近似地求出最大化似然估計函數的參數θ。
繼續看看ELBO(ϕ(t),θ)
ELBO(ϕ(t),θ)=∫zQ(z;ϕ(t))logQ(z;ϕ(t))P(x,z;θ)dz=∫zQ(z;ϕ(t))logP(x,z;θ)dz−∫zQ(z;ϕ(t))logQ(z;ϕ(t)dz=Ez∽Q(z;ϕ(t))[logP(x,z;θ)]−Ez∽Q(z;ϕ(t))[logQ(z;ϕ(t)](10)
公式10的最後一行的第一項是關於z的期望,第二項是一個常數(ϕ(t)已知),所以
θ(t+1)=θargmaxELBO(ϕ(t),θ)=θargmaxEz∽Q(z;ϕ(t))[logP(x,z;θ)](11)
因此EM算法叫做期望最大化算法。
總結,EM算法的迭代過程如下
- E-step: 固定θ(t),ϕ(t)=ϕargmaxEz∽Q(z;ϕ(t))[logP(x,z;θ)];
- M-step: 固定ϕ(t),θ(t+1)=θargmaxEz∽Q(z;ϕ(t))[logP(x,z;θ)]。
E-step和M-step的順序可以互換。
EM算法收斂性證明
簡單的證明:只要θ(t)→θ(t+1),logP(x;θ(t))≤logP(x;θ(t+1)),就能保證算法收斂。
從公式4出發,兩邊求關於z的期望
left=∫zQ(z;ϕ(t))logP(x;θ)dz=logP(x;θ)∫zQ(z;ϕ(t))dz=logP(x;θ)(12)
right=∫zQ(z;ϕ(t))logP(x,z;θ)dz−∫zQ(z;ϕ(t))logP(z∣x;θ)dz(13)
因爲ϕ(t)根據公式9求解得到的,假設我們得到的是最優解,則Q(z;ϕ(t))=P(z∣x;θt),代入公式13得
right=∫zP(z∣x;θ(t))logP(x,z;θ)dz−∫zP(z∣x;θ(t))logP(z∣x;θ)dz=H1(θ,θ(t))−H2(θ,θ(t))(14)
我們分別用H1和H2指代公式14的兩項。
由公式12和14得
logP(x;θ)=H1(θ,θ(t))−H2(θ,θ(t))(15)
因爲θ(t+1)=θargmaxEz∽Q(z;ϕ(t))[logP(x,z;θ)],所以有H1(θ(t+1),θ(t))≥H1(θ(t),θ(t))。接下來,只要證明−H2(θ(t+1),θ(t))≥−H2(θ(t),θ(t)),就能證明logP(x;θ(t+1))≥logP(x;θ(t+1))。
現在
==H2(θ(t+1),θ(t))−H2(θ(t),θ(t))∫zP(z∣x;θ(t))logP(z∣x;θ(t+1))dz−∫zP(z∣x;θ(t))logP(z∣x;θ(t))dz∫zP(z∣x;θ(t))logP(z∣x;θ(t))P(z∣x;θ(t+1))dz(16)
證明公式16小於等於0:
方法1:公式16是負KL散度−KL(P(z∣x;θ(t))∣∣P(z∣x;θ(t+1)))≤0。
方法2:公式16等於Ez∽P(z∣x,θ(t))[logP(z∣x;θ(t))P(z∣x;θ(t+1))]。根據Jensen不等式E[log(x)]≤logE[x],因此
≤===Ez∽P(z∣x,θ(t))[logP(z∣x;θ(t))P(z∣x;θ(t+1))]logEz∽P(z∣x,θ(t))[P(z∣x;θ(t))P(z∣x;θ(t+1))]log∫zP(z∣x;θ(t))P(z∣x;θ(t))P(z∣x;θ(t+1))dzlog∫zP(z∣x;θ(t+1))dzlog1=0(17)
例子
拋硬幣,有兩個硬幣,但是兩個硬幣的材質不同導致其出現正反面的概率不一樣,目前我們只有一組觀測數據,要求出每一種硬幣投擲時正面向上的概率。總共投了五輪,每輪投擲五次。假設我們不知道每一次投擲用的是哪一種硬幣,等於是現在的問題加上了一個隱變量,就是每一次選取的硬幣的種類。
(圖片來自https://blog.csdn.net/u010834867/article/details/90762296)
設兩個硬幣分別是AB,P(正|A)=x1,P(反|A)=1−x1,P(正|B)=x2,P(正|B)=x2。
假設第i次實驗選擇硬幣A的概率是P(zi=A)=yi,選擇硬幣B的概率是P(zi=B)=1−yi。
看實驗i的數據j,用xij表示,似然估計函數爲
logP(x)=logi∏j∏P(xij)=i∑j∑logP(xij)
P(xij)=P(z∣x)P(x,z)=P(z∣x)P(z)P(x∣z)
其中P(z∣x)不好求出來。我們使用EM算法來解x1和x2。
首先,我們求出期望,
=++++Ez∽Q(z;ϕ(t))[logP(x,z;θ)]y1logy1(x1x1(1−x1)x1(1−x1))y2logy2((1−x1)(1−x1)x1x1(1−x1))y3logy3(x1(1−x1)(1−x1)(1−x1)(1−x1))y4logy4(x1(1−x1)(1−x1)x1x1)y5logy5((1−x1)x1x1(1−x1)(1−x1))+++++(1−y1)log(1−y1)(x2x2(1−x2)x2(1−x2))(1−y2)log(1−y2)((1−x2)(1−x2)x2x2(1−x2))(1−y3)log(1−y3)(x2(1−x2)(1−x2)(1−x2)(1−x2))(1−y4)log(1−y4)(x2(1−x2)(1−x2)x2x2)(1−y5)log(1−y5)((1−x2)x2x2(1−x2)(1−x2))
假設x1=0.2,x2=0.7,代入上式得
=++++Ez∽Q(z;ϕ(t))[logP(x,z;θ)]y1log0.00512y1y2log0.02048y2y3log0.08192y3y4log0.00512y4y5log0.02048y5+++++(1−y1)log0.03087(1−y1)(1−y2)log0.01323(1−y2)(1−y3)log0.00567(1−y3)(1−y4)log0.03087(1−y4)(1−y5)log0.01323(1−y5)
(圖片來自https://blog.csdn.net/u010834867/article/details/90762296)
現在求
maxEz∽Q(z;ϕ(t))[logP(x,z;θ)]
爲了簡單運行,我們取Q(z;ϕ(t))爲y={0,1,1,0,1},即z={B,A,A,B,A}。雖然求出來的期望不是最大的,但不影響算法的收斂。因爲z的結果已經固定了,可以直接計算θ(t+1):
x1=(2+1+2)/15=0.33,x2=(3+3)/10=0.6
接着不斷迭代,直到z或者x1和x2收斂。
若有不恰當之處,請指正。