有時,我們用極大似然的時候,公式中可能會有隱變數:l(
θ)=∏
i=1m
p(yi
;θ)=
∏i=1
m[∑z
p(yi
,z;θ
)]=∏
i=1m
[∑zp
(z;θ
)p(y
i|z;
θ)]
也就是 y 取什麼值是由隱含的變數 z 決定的。舉個栗子:有三個硬幣,abc,先拋a,由a的正反面決定下一步拋 b 還是拋 c ,a是正面拋b,a是反面拋c。第二次拋不管是b還是c,如果是正面就記為1,如果是反面就記為0。如果我們連續重複【a→b或c】這個過程,得到了乙個序列1,1,0,1,0,0,1,0,1,1,問:怎麼估計三枚硬幣正面出現的概率?顯然這裡a就是乙個隱變數。由於它的不同,後面第二次拋硬幣得到正面的機率也不同。
em演算法就是解決這類含有隱變數的極大似然問題的有效演算法。
em演算法的基本思想是通過優化目標函式的下界,間接優化目標函式。
打個通俗的比方,我們都聽過小和尚抱小牛的故事,老和尚讓小和尚從小就抱一頭小牛。小牛每天長大,小和尚每天都抱得動。最後小和尚變得力大無比。這裡,小和尚的力氣就是目標函式,小牛的體重就是目標函式的下界。小牛隨著時間的增長而越來越重,這就是優化下界。而小和尚由於總抱小牛,力氣也隨著增長,這就是間接優化了目標函式。
em演算法中,目標函式的下界是由jensen不等式匯出的。
具體的,若 f(
x)是凸函式,則:f(
e[x]
)⩽e[
f(x)
] 若 f
(x) 是凹函式,則:f(
e[x]
)⩾e[
f(x)
] e是求期望。
方便起見,把似然函式簡寫成如下形式:l(
θ)=∏
i=1m
[∑zp
(z;θ
)p(y
i|z;
θ)]=
∑zp(
z;θ)
p(y|
z;θ)
(4.1)
取對數:l(
θ)=logl(
θ)=log∑z
p(z;
θ)p(
y|z;
θ)(4.2)
我們希望的是對數似然函式取極大值,所以在迭代到 n 次時,我們希望 l(
θn+1
)>l(
θn) 。考慮:l(
θ)−l
(θn)
=log[∑
zp(z
;θ)p
(y|z
;θ)]
−logp(
y;θn
)(4.3)
由於對數函式是凹函式,利用jensen不等式得到:l(
θ)−l
(θn)
=log[∑
zp(z
;θ)p
(y|z
;θ)]
−logp(
y;θn
)=log[∑z
p(z|
y;θn
)p(z
;θ)p
(y|z
;θ)p
(z|y
;θn)
]−logp(y
;θn)
=logez
[p(z
;θ)p
(y|z
;θ)p
(z|y
;θn)
]−logp(y
;θn)
⩾ez[
logp(z
;θ)p
(y|z
;θ)p
(z|y
;θn)
]−logp(y
;θn)
=∑zp
(z|y
;θn)
logp(z
;θ)p
(y|z
;θ)p
(z|y
;θn)
−∑zp
(z|y
;θn)
logp(y
;θn)
=∑zp
(z|y
;θn)
logp(z
;θ)p
(y|z
;θ)p
(z|y
;θn)
p(y;
θn)(4.4)
仔細看上面推導中 n 的位置。
定義:l(θ
|θn)
=l(θ
n)+∑
zp(z
|y;θ
n)logp(z
;θ)p
(y|z
;θ)p
(z|y
;θn)
p(y;
θn)(4.5)
所以有:l(
θ)⩾l
(θ|θ
n)這樣,我們就得到了目標函式的下界。注意看(4.5)式右邊第二項,是乙個求期望的過程,也就是em演算法中的e步。之後再優化
θ 使得下界 l(
θ|θn
) 最大,就是m步。由(4.5)式,略去與
θ 無關的常數,m步優化的目標函式如下:
maxθ∑z
p(z|
y;θn
)logp(
z;θ)
p(y|
z;θ)
也就是說,每次讓下界增加,就最大程度地增加它。記: q(
θ|θn
)=∑z
p(z|
y;θn
)logp(
z;θ)
p(y|
z;θ)
=ez|
y;θ[
logp(y
,z;θ
)](4.6)
所以,e步就是:求 q(
θ|θn
) 。m步就是: 求 ar
gmax
θq(θ
|θn)
。重複直到收斂。
em演算法受初值影響大,不能保證首先到全域性最優,只能保證收斂到穩定點。
機器學習 EM演算法詳細推導和講解
今天不太想學習,炒個冷飯,講講機器學習十大演算法裡有名的em演算法,文章裡面有些個人理解,如有錯漏,還請讀者不吝賜教。然而現在我面臨的是這種情況,我手上的資料是四川人和東北人的身高合集,然而對於其中具體的每乙個資料,並沒有標定出它來自 東北人 還是 四川人 我想如果把這個資料集的概率密度畫出來,大約...
EM演算法推導
給定觀測樣本集 求帶有隱變數模型的最大似然。似然函式 l theta logp y theta log sum zp y,z theta log p y z,theta p z theta 將似然函式減去上一步的似然函式 begin l theta l theta log p y z,theta p...
機器學習 EM演算法
em演算法 最大期望演算法 expectation maximization algorithm,em 是為處理缺失資料的引數的估計問題,主要分為e步和m步交替組成,對給定的初始引數依賴較大。from numpy import import numpy as np import matplotlib...