前面看了Kmean跟GMM,所以 EM 到底是什麼呢?我們今天就來看一下比較general一點的介紹
我們現在有一組資料 x 們,他們的參數是theta們,潛在變數們就寫成 Z,我們就可以把log likelihood寫成
接著我們做一個很簡單但是很神奇的動作,就是除q(z)再乘q(z)
這樣一來我就可以把log裡面變成期望值了,再利用log是concave的性質就可以寫成
而右邊那個式子我們就寫作 L(q, theta)
可以看到log likelihood一定會大於 L ,所以這是一個lower bound。那他跟真正的log likelihood會差多少呢?就是簡單的相減,我們先把 L 重新拆開
然後相減
用個小技巧,因為q(z)是機率值,全部相加會是一,所以把他乘上log likelihood
可以得到
log相減就是相除,所以
這就是KL散度
所以我們就可以把log likelihood寫成
那EM就分別是
示意圖如下(圖片出自 prml: p451)
所以EM流程的意思就是,先有一個theta,即可算出一個 p ,接著讓 q = p,使KL散度最小(也就是提昇至紅線高度),有了 q 與舊的theta,我們就可以透過最大化 L ,得到一個新的 theta(也就是提昇至新的藍線高度),由於KL散度必定大於等於零,所以確定這樣的反覆作業一定會收斂。
這就是EM演算法的大致的想法,而各種應用的演算法都只是以此為基礎建立的,只要你的模型設定好潛在變數,基本上就可以用了,例如之前的GMM,他的潛在變數就是那個 z ,而以此所推出來的就是 gamma!所以可以看到在GMM中,我們固定gamma更新參數,再固定參數更新gamma,這就是EM演算法的一個實踐!
然而 z 不一定會像GMM中只是一個二元的,或是只有一個,而是可能會有很多很多實數值,所以這個
在高維度的情況下很難計算,於是之後則有了Approximate inference去近似計算,然而這個部份篇幅有限,就不繼續介紹了,有興趣的朋友可以看PRML第十章,有相當完整的介紹!