程序員也需要感性

(別打我,我可能會(huì)變?yōu)闃?biāo)題黨 hhhhhhhhh)理解EM算法背后的物理意義(idea),個(gè)人認(rèn)為比繁鎖公式(見最后插圖)推導(dǎo)重要。

人需要感性,idea更能給人一種直觀的感受,理解算法的合理性,數(shù)學(xué)推導(dǎo)只是用一種嚴(yán)謹(jǐn)?shù)脑挶磉_(dá)出來而已。就好比一個(gè)梨很甜,你可以說它含糖量95%,但真的有多甜只有你咬一口才知道吧。EM算法就好比這個(gè)梨,我想帶大家咬一口,而不是死磕繁瑣的公式。本文我會(huì)用一個(gè)及其簡(jiǎn)單的例子循序漸進(jìn)地講清楚EM背后的idea,至于數(shù)學(xué)推導(dǎo)證明其正確性,見我下一篇吧。

Expectation Maximization (EM)算法是什么呢?用我的話就是:當(dāng)你想估計(jì)兩個(gè)參數(shù)的值,這兩個(gè)參數(shù)之間又是雞和蛋的關(guān)系,知道其中一個(gè)都能得到另外一個(gè)。在這樣的情況下,用EM能夠比較好的估計(jì)出這兩個(gè)值。

001、一道小學(xué)題

假設(shè)有兩枚硬幣1和2,隨機(jī)拋擲后正面朝上的概率為P_1,P_2,為了估計(jì)這兩個(gè)概率,每一次拋一個(gè)硬幣,拋擲5次,結(jié)果如下:

硬幣 結(jié)果 統(tǒng)計(jì)
1 正正反正反 3正2反
2 反反正正反 2正3負(fù)
1 正反反反反 1正4負(fù)
2 正反反正正 3正2負(fù)
1 反正正反反 2正3負(fù)

所以我們可以直接估計(jì)出
P_1 = \frac{(3+1+2)}{15}=0.4 ,P_2=\frac{(2+3)}{10}=0.5

011、加入隱含變量z

繼續(xù)上面的問題,但我們現(xiàn)在抹去硬幣的標(biāo)記。也就是說我們不知道每輪丟的哪個(gè)硬幣:

硬幣 結(jié)果 統(tǒng)計(jì)
\ 正正反正反 3正2反
\ 反反正正反 2正3負(fù)
\ 正反反反反 1正4負(fù)
\ 正反反正正 3正2負(fù)
\ 反正正反反 2正3負(fù)

而且現(xiàn)在還多了一個(gè)隱藏變量z=\{z_1,z_2,z_3,z_4,z_5\}來表示每一輪的硬幣是1還是2,其中z_i \in \{0,1\}。但是現(xiàn)在問題是我們不知道z,就不能像上面那樣直接估計(jì)P_1和P_2。所以我們必須先估計(jì)出z,才能進(jìn)一步估計(jì)P_1和P_2。

但要估計(jì)z,我們又要知道P_1和P_2。所以,這就好比是一個(gè)雞生蛋還是蛋生雞的故事?如何破 (這里可以思考1分鐘)

慶幸的是,我們可以通過最大似然估計(jì)來解決上述的問題。也就是說我們可以初始化兩個(gè)P_1和P_2的值,然后按照最大似然概率估計(jì)出z,然后在基于z,再按照最大似然概率反過來估計(jì)出P_1和P_2。如此循環(huán)估計(jì)直到與上一輪的值相等,就意味著我們估計(jì)的值達(dá)到真實(shí)值了。

011 EM初級(jí)版

正如上面所說,我們先假設(shè)P_1 =0.2 ,P_2=0.7因此,根據(jù)001中的統(tǒng)計(jì)結(jié)果,我們可以得到第一輪中是硬幣1的概率為0.2*0.2*0.2*0.8*0.8 = 0.0512,硬幣2 的概率為0.7*0.7*0.7*0.3*0.3=0.03087。依次類推我們可以得到第2輪到第5輪,硬幣1和2的概率如下:

輪數(shù) 硬幣1 硬幣2
1 0.00512 0.03087
2 0.02048 0.01323
3 0.08192 0.00567
4 0.00512 0.03087
5 0.02048 0.01323

按照最大似然的準(zhǔn)則:
第1輪中最有可能的是硬幣2
第2輪中最有可能的是硬幣1
第3輪中最有可能的是硬幣1
第4輪中最有可能的是硬幣2
第5輪中最有可能的是硬幣1
即:
z=\{2,1,1,2,1\}
因此,P_1 = \frac{(2+1+2)}{15}=0.33 ,P_2=\frac{(3+3)}{10}=0.6是不是比我們假設(shè)的值更加接近(0.4和0.5)。接下來我們繼續(xù)用得到的P_1和P_2的值重復(fù)上述的步驟。最后就會(huì)得到P_1 = \frac{(3+1+2)}{15}=0.4 ,P_2=\frac{(2+3)}{10}=0.5

這里有兩個(gè)問題:
Q1: 每一輪新估計(jì)的P_1和P_2會(huì)更加接近真實(shí)值嗎?
A1:會(huì),一定會(huì)!數(shù)學(xué)上可以證明,但這不是我這篇文章想討論的范圍,有興趣的看我下一篇理論推導(dǎo)。
Q2:最后一定會(huì)收斂于真實(shí)值嗎?
A2 :不一定,取決于初始值。我們上面的例子能收斂是因?yàn)槌跏贾登『媚苓_(dá)到。

100、EM進(jìn)階版

OK,我們繼續(xù)上面的問題。上面我們用隨機(jī)的兩個(gè)P_1,P_2估計(jì)出最可能的z,而不是所有的z。想一想是不是?

如果我們考慮所有的z,并估計(jì)出對(duì)應(yīng)的 P_1,P_2,并按照相應(yīng)的權(quán)重對(duì)z也進(jìn)行加權(quán),最后得到的就會(huì)更加靠譜了。

z一共有2^5種可能。那我們要把32種可能都窮盡嗎?那也不用全算,我們可以用期望來簡(jiǎn)化。

結(jié)合上面,我們可以算出每輪是硬幣1,2的概率,以第一輪為例:是硬幣1的概率為\frac{0.00512}{0.00512+0.03087}=0.14,則硬幣2的概率為1-0.14=0.86。依次類推,其他4輪的概率如下:

輪數(shù) 硬幣1 硬幣2
1 0.14 0.86
2 0.61 0.39
3 0.94 0.06
4 0.14 0.86
5 0.61 0.39

上表中的右兩列表示期望值??吹谝恍校?.86表示,從期望的角度看,這輪拋擲使用硬幣2的概率是0.86。相比于前面的方法,我們按照最大似然概率,直接將第1輪估計(jì)為用的硬幣2,此時(shí)的我們更加謹(jǐn)慎,我們只說,有0.14的概率是硬幣1,有0.86的概率是硬幣2,不再是非此即彼。這樣我們?cè)诠烙?jì)P1或者P2時(shí),就可以用上全部的數(shù)據(jù),而不是部分的數(shù)據(jù),顯然這樣會(huì)更好一些。

這一步,我們實(shí)際是估計(jì)出了z的概率分布,這就是Expectation 。

結(jié)合第一個(gè)表,我們按照期望最大似然的法則來估計(jì)新的P_1和 P_2
P_1估計(jì)為例,第一輪的3正2反相當(dāng)于:0.14*3=0.42正,0.14*2=0.28反
依次算出其他四輪:

輪數(shù) 正面 反面
1 0.42 0.28
2 1.22 1.83
3 0.94 3.76
4 0.42 0.28
5 1.22 1.83
總計(jì) 4.22 7.98

因此,P_1=\frac{4.22}{(4.22+7.98)}=0.35.

可以看到,改變了z值的估計(jì)方法后,新估計(jì)出的P_1要更加接近0.4。原因就是我們使用了所有拋擲的數(shù)據(jù),而不是之前只使用了部分的數(shù)據(jù)。

這步中,我們根據(jù)E步中求出的z的概率分布,依據(jù)最大似然概率法則去估計(jì)P_1和P_2,被稱作M步。

1.png

2.png
3.png
4.png

101、總結(jié)

以上,我們用一個(gè)實(shí)際的小例子,來實(shí)際演示了EM算法背后的idea,共性存于個(gè)性之中,通過這個(gè)例子,我們可以對(duì)EM算法究竟在干什么有一個(gè)深刻感性的認(rèn)識(shí),掌握EM算法的思想精髓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容