藉助於machine learning cs229和文章【1】中的內容把EM算法的過程順一遍,加深一下印象。
關於EM公式的推導,一般會有兩個證明,一個是利用Jesen不等式,另一個是將其分解成KL距離和L函數,本質是類似的。
下面介紹Jensen EM的整個推導過程。
Jensen不等式
回顧優化理論中的一些概念。設f是定義域爲實數的函數,如果對於所有的實數x,f′′(x)≥0 ,那麼f是凸函數。當x是向量時,如果其hessian矩陣H是半正定的(H≥0 ),那麼f是凸函數。如果f′′(x)>0 或者H>0 ,那麼稱f是嚴格凸函數。
Jensen不等式表述如下:
如果f是凸函數,X是隨機變量,那麼
E[f(x)]≥f(E[x])
特別地,如果f是嚴格凸函數,那麼
E[f(x)]>f(E[x])
當且僅當p(X=E(X))=1 ,也就是說X是常量。
這裏我們將f(E[X]) 簡寫爲f(EX) 。
如果用圖表示會很清晰:
圖中,實線f 是凸函數,X 是隨機變量,有0.5 的概率是a ,有0.5 的概率是b 。(就像擲硬幣一樣)。X 的期望值就是a 和b 的中值了,圖中可以看到
E[f(x)]≥f(E[x])
成立。
當f 是(嚴格)凹函數當且僅當−f 是(嚴格)凸函數。
Jensen不等式應用於凹函數時,不等號方向反向,也就是E[f(x)]≤f(E[x]) 。
EM算法
給定的訓練樣本是{x(1),...,x(m)} ,樣例間獨立,我們想找到每個樣例隱含的類別z,能使得p(x,z)最大。p(x,z)的最大似然估計如下:
l(θ)=∑i=1mlog p(x(i);θ)=∑i=1mlog∑zp(x(i),z(i);θ)
第一步是對極大似然取對數,第二步是對每個樣例的每個可能類別z求聯合分佈概率和。但是直接求
θ 一般比較困難,因爲有隱藏變量z存在,但是一般確定了z後,求解就容易了。
EM是一種解決存在隱含變量優化問題的有效方法。既然不能直接最大化
l(θ) ,我們可以不斷地建立
l(θ) 的下界(E步),然後優化下界(M步)。這句話比較抽象,看下面的。
對於每一個樣例i,讓
Qi 表示該樣例隱含變量z的某種分佈,
Qi 滿足的條件是
∑zQi(z)=1,Qi(z)≥1 。(如果z是連續性的,那麼clip_image032[2]是概率密度函數,需要將求和符號換做積分符號)。比如要將班上學生聚類,假設隱藏變量z是身高,那麼就是連續的高斯分佈。如果按照隱藏變量是男女,那麼就是伯努利分佈了。
可以由前面闡述的內容得到下面的公式:
∑i=1mlogp(x;θ)=∑i=1mlog∑z(i)p(x(i),z(i);θ)=∑i=1mlog∑zQi(z(i))p(x(i),z(i);θ)Qi(z(i))≥∑i=1m∑zQi(z(i))logp(x(i),z(i);θ)Qi(z(i))(1)(2)(3)
(1)到(2)比較直接,就是分子分母同乘以一個相等的函數。(2)到(3)利用了Jensen不等式,考慮到
log(x) 是凹函數(二階導數小於0),而且
∑zQi(z(i))p(x(i),z(i);θ)Qi(z(i))
就是
p(x(i),z(i);θ)Qi(z(i)) 的期望(回想期望公式中的Lazy Statistician規則)
設Y是隨機變量X的函數
y=g(x) (g是連續函數),那麼
(1) X是離散型隨機變量,它的分佈律爲
P(X=xk)=pk,k=1,2,... .若
∑∞k=1g(xk)pk 絕對收斂,則有
E(Y)=E[g(X)]=∑∞k=1g(xk)pk
(2) X是連續型隨機變量,它的概率密度爲
f(x) ,若
∫∞−∞g(x)f(x)dx 絕對收斂,則有
E(Y)=E[g(X)]=∫∞−∞g(x)f(x)dx
對應於上述問題,Y是
p(x(i),z(i);θ)Qi(z(i)) ,X是
z(i) ,
Qi(z(i)) 是
pk ,g是
z(i) 到
p(x(i),z(i);θ)Qi(z(i)) 的映射。這樣解釋了式子(2)中的期望,再根據凹函數時的Jensen不等式:
f(Ez(i)∼Qi[p(x(i),z(i);θ)Qi(z(i))])≥Ez(i)∼Qi[f(p(x(i),z(i);θ)Qi(z(i)))]
可以得到(3)。
這個過程可以看作是對
l(θ) 求了下界。對於
Qi 的選擇,有多種可能,那種更好的?假設
θ 已經給定,那麼
l(θ) 的值就決定於
Qi(z(i)) 和
p(x(i),z(i)) 了。我們可以通過調整這兩個概率使下界不斷上升,以逼近
l(θ) 的真實值,那麼什麼時候算是調整好了呢?當不等式變成等式時,說明我們調整後的概率能夠等價於
l(θ) 了。按照這個思路,我們要找到等式成立的條件。根據Jensen不等式,要想讓等式成立,需要讓隨機變量變成常數值,這裏得到:
p(x(i),z(i);θ)Qi(z(i))=c
c爲常數,不依賴於
z(i) 。對此式子做進一步推導,我們知道
∑zQi(z(i))=1 ,那麼也就有
∑zp(x(i),z(i);θ)=c ,(多個等式分子分母相加不變,這個認爲每個樣例的兩個概率比值都是c),那麼有下式:
Qi(z(i))=p(x(i),z(i);θ)∑zp(x(i),z(i);θ)=p(x(i),z(i);θ)p(x(i);θ)=p(z(i);x(i)θ)
至此,我們推出了在固定其他參數
θ 後,
Qi(z(i)) 的計算公式就是後驗概率,解決了
Qi(z(i)) 如何選擇的問題。這一步就是E步,建立
l(θ) 的下界。接下來的M步,就是在給定
Qi(z(i)) 後,調整
l(θ) ,去極大化
l(θ) 的下界(在固定
Qi(z(i)) 後,下界還可以調整的更大)。那麼一般的EM算法的步驟如下:
循環重複直到收斂 {
(E步)對於每一個i,計算
Qi(z(i))=p(z(i);x(i)θ)
(M步)計算
θ=argmaxθ∑i=1m∑zQi(z(i))logp(x(i),z(i);θ)Qi(z(i))
那麼究竟怎麼確保EM收斂?假定
θt 和
θt+1 是EM第t次和t+1次迭代後的結果。如果我們證明了
l(θt)≤l(θt+1) ,也就是說極大似然估計單調增加,那麼最終我們會到達最大似然估計的最大值。下面來證明,選定
θ(t) 後,我們得到E步
Qi(z(i))=p(z(i);x(i)θ)
這一步保證了在給定
θ(t) 時,Jensen不等式中的等式成立,也就是
l(θ(t))=∑i=1m∑zQi(z(i))logp(x(i),z(i);θ)Qi(z(i))
然後進行M步,固定
Qi(z(i)) ,並將
θ(t) 視作變量,由EM的操作可以推導出以下式子成立:
l(θ(t+1))≥∑i=1m∑zQi(z(i))logp(x(i),z(i);θ(t+1))Qi(z(i))≥∑i=1m∑zQi(z(i))logp(x(i),z(i);θ(t))Qi(z(i))=l(θ)(4)(5)(6)
等式(4)成立是由於琴生不等式,等式(5)成立是由於我們在M步取得是max操作。
如果我們定義
J(Q,θ)=∑i=1m∑z(i)Qi(z(i))logp(x(i),z(i);θ)Qi(z(i))
從前面的推導中我們知道
l(θ)≥J(Q,θ) ,EM可以看作是J的座標上升法,E步固定
θ ,優化
Q ,M步固定
Q 優化
θ 。
重新審視混合高斯模型
我們已經知道了EM的精髓和推導過程,再次審視一下混合高斯模型。之前提到的混合高斯模型的參數Φ 和μ ,爲了簡單,這裏在M步只給出Φ 和μ 的推導方法。
E步很簡單,按照一般EM公式得到:
w(i)j=Qi(z(i)=j)=P(z(i)=j|x(i);ϕ,μ,Σ)=ϕjp(x(i)|z(i)=j;ϕ,μ,Σ)Σj=1kϕjp(x(i)|z(i)=j;ϕ,μ,Σ)
簡單解釋就是每個樣例i的隱含類別
z(i) 爲j的概率可以通過後驗概率計算得到。
ϕ 是每個類的概率。
在M步中,我們需要在固定
Qi(z(i)) 後最大化最大似然估計,也就是
==∑i=1m∑z(i)Qi(z(i))logp(x(i),z(i);ϕ,μ,Σ)Qi(z(i))∑i=1m∑j=1kQi(z(i)=j)logp(x(i)|z(i)=j;ϕ,μ,Σ)p(z(i)=j;ϕ)Qi(z(i))∑i=1m∑j=1kw(i)jlog1(2π)n/2|Σj|1/2exp(−12(x(i)−μj)TΣ−1j(x(i)−μj)).ϕjw(i)j
這是將
z(i) 的k種情況展開後的樣子,未知參數
ϕj ,
μj 和
Σj 。
固定
ϕj ,和
Σj ,對
μj 求導得
===∇μj∑i=1m∑z(i)Qi(z(i))logp(x(i),z(i);ϕ,μ,Σ)Qi(z(i))−∇μj∑i=1m∑j=1kw(i)j12(x(i)−μj)TΣ−1j(x(i)−μj))12∑i=1mw(i)j∇μj(2μTjΣ−1jx(i)−μTjΣ−1μj)∑i=1mw(i)j(Σ−1jx(i)−Σ−1μj)
等於0時,得到
μj=∑mi=1w(i)jx(i)Σmi=1w(i)j
這就是我們之前模型中的
μ 的更新公式。
然後推導
ϕ 的更新公式。看之前得到的
∑i=1m∑j=1kw(i)jlog1(2π)n/2|Σj|1/2exp(−12(x(i)−μj)TΣ−1j(x(i)−μj)).ϕjw(i)j
分子和分母上與
ϕ 無關的常數都可以通過log提取出來,,實際上需要優化的公式是:
∑i=1m∑j=1kw(i)jlogϕj
需要知道的是,
ϕj 還需要滿足一定的約束條件就是
Σkj=1ϕj=1 。
這個優化問題我們很熟悉了,直接構造拉格朗日乘子。
L(ϕ)=∑i=1m∑j=1kw(i)jlogϕj+β(∑j=1kϕj−1)
還有一點就是
ϕj>0 ,但這一點會在得到的公式裏自動滿足。
求導得,
∂∂ϕjL(ϕ)=∑mi=1w(i)jϕj+β
等於0,得到
ϕj=∑mi=1w(i)j−β
也就是說
ϕj∝∑mi=1w(i)j 再次使用
∑kj=1ϕj=1 ,得到
−β=∑mi=1∑kj=1w(i)j=Σmi=11=m
這樣就神奇地得到了
β 。
那麼就順勢得到M步中
ϕj 的更新公式:
ϕj=1m∑mi=1w(i)j
Σ 的推導也類似,不過稍微複雜一些,畢竟是矩陣。結果在之前的混合高斯模型中已經給出。
Σ=∑mi=1w(i)j(x(i)−μj)(x(i)−μj)T∑mi=1w(i)j
關於EM證明的補充,一般情況下可以通過Jensen不等式得到∑mi=1logp(x;θ) 的下界來求解,但是將該公式展開似乎更直觀一些。
首先是將p(x;θ) 拆分開來,我們注意到p(x,z;θ)=p(x;θ)p(z|x;θ) 這裏有聯合概率,x的生成概率,z的後驗概率,取log 然後做一下變換
lnp(x;θ)=lnp(x,z;θ)−lnp(z|x;θ)=lnp(x,z;θ)−lnq(z)−[lnp(z|x;θ)−lnq(z)]=lnp(x,z;θ)q(z)−lnlnp(z|x;θ)q(z)
同時乘以
q(z) 並對
q(z) 求和得到
Σzq(z)lnp(x;θ)=Σz[q(z)(lnp(x,z;θ)q(z)−lnlnp(z|x;θ)q(z))]
由於z與
p(x;θ) 獨立,並且
σz(q)=1 ,所以又
lnp(x;θ)=Σzq(z)np(x,z;θ)q(z)−Σzq(z)lnlnp(z|x;θ)q(z)
寫作
lnp(x;θ)=L(q;θ)+KL(q||p)
看到這裏應該很明白了,在NG的推導中放縮掉的是這裏的KL距離,最後得到的是這裏的
L(q;θ) ,當
q(z) 和
p(z;x,θ) 相等時KL距離爲0,前面的推導的等式成立。
E-step
假設當前的參數爲
θold ,則Estep可以被描述爲:固定
θold 找一個分佈
q(z) ,使得
L(q,θold) 最大
由於
lnp(x;θold 與z無關則使
L(q,θold) 最大姐使KL(q||p)最小(=0),也就是說
q(z)=p(z;x,θold)
回想高斯混合分佈,用
p(z;x,μ,σ,π) 去求
E[z] ,這個時候
KL(q||p)=0
M-step:固定
q(z) 找一組參數
θnew ,使得
L(q,θnew) 最大,
lnp(x;θ) 的增大可能來自兩部分
L(q,θnew) 和
KL(q||p) (因爲此時
p(z;x,θnew) )而
q(z;x,θold),p≠q
這裏可以看到,L的下屆提高了,ln(p(x;θ) 的下屆也提高了。
參考:
【1】
http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html#2831962
【2】http://wenku.baidu.com/view/d5e6973a87c24028915fc361.html
【3】http://cs229.stanford.edu/materials.html
【4】http://freemind.pluskid.org/machine-learning/regularized-gaussian-covariance-estimation/