(十)通俗易懂理解 EM演算法

2021-09-16 19:09:34 字數 3743 閱讀 4937

這篇文章不涉及數學原理上的說明,用簡單的例子說明了em演算法的出彩之處。

001、乙個非常簡單的例子

假設現在有兩枚硬幣1和2,,隨機拋擲後正面朝上概率分別為p1,p2。為了估計這兩個概率,做實驗,每次取一枚硬幣,連擲5下,記錄下結果,如下:

可以很容易地估計出p1和p2,如下:

p1 = (3+1+2)/ 15 = 0.4 p2= (2+3)/10 = 0.5

到這裡,一切似乎很美好,下面我們加大難度。

010、加入隱變數z

還是上面的問題,現在我們抹去每輪投擲時使用的硬幣標記,如下:

好了,現在我們的目標沒變,還是估計p1和p2,要怎麼做呢? 顯然,此時我們多了乙個隱變數z,可以把它認為是乙個5維的向量(z1,z2,z3,z4,z5),代表每次投擲時所使用的硬幣,比如z1,就代表第一輪投擲時使用的硬幣是1還是2。但是,這個變數z不知道,就無法去估計p1和p2,所以,我們必須先估計出z,然後才能進一步估計p1和p2。 但要估計z,我們又得知道p1和p2,這樣我們才能用最大似然概率法則去估計z,這不是雞生蛋和蛋生雞的問題嗎,如何破? 答案就是先隨機初始化乙個p1和p2,用它來估計z,然後基於z,還是按照最大似然概率法則去估計新的p1和p2,如果新的p1和p2和我們初始化的p1和p2一樣,請問這說明了什麼?(此處思考1分鐘)

這說明我們初始化的p1和p2是乙個相當靠譜的估計! 就是說,我們初始化的p1和p2,按照最大似然概率就可以估計出z,然後基於z,按照最大似然概率可以反過來估計出p1和p2,當與我們初始化的p1和p2一樣時,說明是p1和p2很有可能就是真實的值。這裡面包含了兩個互動的最大似然估計。 如果新估計出來的p1和p2和我們初始化的值差別很大,怎麼辦呢?就是繼續用新的p1和p2迭代,直至收斂。 這就是下面的em初級版。

011、em初級版 我們不妨這樣,先隨便給p1和p2賦乙個值,比如: p1 = 0.2 p2 = 0.7 然後,我們看看第一輪拋擲最可能是哪個硬幣。 如果是硬幣1,得出3正2反的概率為 0.2*0.2*0.2*0.8*0.8 = 0.00512 如果是硬幣2,得出3正2反的概率為0.7*0.7*0.7*0.3*0.3=0.03087 然後依次求出其他4輪中的相應概率。做成**如下:

按照最大似然法則: 第1輪中最有可能的是硬幣2 第2輪中最有可能的是硬幣1 第3輪中最有可能的是硬幣1 第4輪中最有可能的是硬幣2 第5輪中最有可能的是硬幣1 我們就把上面的值作為z的估計值。然後按照最大似然概率法則來估計新的p1和p2。 p1 = (2+1+2)/15 = 0.33 p2=(3+3)/10 = 0.6 設想我們是全知的神,知道每輪拋擲時的硬幣就是如本文第001部分標示的那樣,那麼,p1和p2的最大似然估計就是0.4和0.5(下文中將這兩個值稱為p1和p2的真實值)。那麼對比下我們初始化的p1和p2和新估計出的p1和p2:

看到沒?我們估計的p1和p2相比於它們的初始值,更接近它們的真實值了! 可以期待,我們繼續按照上面的思路,用估計出的p1和p2再來估計z,再用z來估計新的p1和p2,反覆迭代下去,就可以最終得到p1 = 0.4,p2=0.5,此時無論怎樣迭代,p1和p2的值都會保持0.4和0.5不變,於是乎,我們就找到了p1和p2的最大似然估計。 這裡有兩個問題: 1、新估計出的p1和p2一定會更接近真實的p1和p2? 答案是:沒錯,一定會更接近真實的p1和p2,數學可以證明,但這超出了本文的主題,請參閱其他書籍或文章。 2、迭代一定會收斂到真實的p1和p2嗎? 答案是:不一定,取決於p1和p2的初始化值,上面我們之所以能收斂到p1和p2,是因為我們幸運地找到了好的初始化值。

100、em高階版 下面,我們思考下,上面的方法還有沒有改進的餘地? 我們是用最大似然概率法則估計出的z值,然後再用z值按照最大似然概率法則估計新的p1和p2。也就是說,我們使用了乙個最可能的z值,而不是所有可能的z值。 如果考慮所有可能的z值,對每乙個z值都估計出乙個新的p1和p2,將每乙個z值概率大小作為權重,將所有新的p1和p2分別加權相加,這樣的p1和p2應該會更好一些。 所有的z值有多少個呢?顯然,有2^5=32種,需要我們進行32次估值?? 不需要,我們可以用期望來簡化運算。

利用上面這個表,我們可以算出每輪拋擲中使用硬幣1或者使用硬幣2的概率。比如第1輪,使用硬幣1的概率是:

0.00512/(0.00512+0.03087)=0.14

使用硬幣2的概率是1-0.14=0.86

依次可以算出其他4輪的概率,如下:

上表中的右兩列表示期望值。看第一行,0.86表示,從期望的角度看,這輪拋擲使用硬幣2的概率是0.86。相比於前面的方法,我們按照最大似然概率,直接將第1輪估計為用的硬幣2,此時的我們更加謹慎,我們只說,有0.14的概率是硬幣1,有0.86的概率是硬幣2,不再是非此即彼。這樣我們在估計p1或者p2時,就可以用上全部的資料,而不是部分的資料,顯然這樣會更好一些。 這一步,我們實際上是估計出了z的概率分布,這步被稱作e步。 結合下表:

我們按照期望最大似然概率的法則來估計新的p1和p2:

以p1估計為例,第1輪的3正2反相當於 0.14*3=0.42正 0.14*2=0.28反

這裡有必要對這個進行解釋一下,因為我看到這裡的時候也有點沒轉過彎。 p1: 硬幣1拋正面的概率,如何求呢? p1 = (用硬幣1拋正面的次數)/(用硬幣1拋的正反面所有次數)

我們平時認為次數都是整數,但這裡引入了概率,所以有了0.14 原來:要麼是硬幣1,要麼是硬幣2, 如果第一輪確定用硬幣1,則次數正面次數是3,反面是2,則p1的概率為3/(3+2)=0.6 現在:用硬幣1的概率是0.14, 所以第一輪用硬幣1拋正面的次數是0.14 * 3, 反面是0.14 * 2 現在是對「次數」 乘了 「用硬幣1的概率」,0.14僅僅是為了說明在第二輪到第五輪拋擲的時候,使用硬幣1的概率是不同的。

但本質上,還是用下面的公式在計算:

p1 = (用硬幣1拋正面的次數)/(用硬幣1拋的所有次數)

依次算出其他四輪,列表如下:

可以看到,改變了z值的估計方法後,新估計出的p1要更加接近0.4。原因就是我們使用了所有拋擲的資料,而不是之前只使用了部分的資料。

這步中,我們根據e步中求出的z的概率分布,依據最大似然概率法則去估計p1和p2,被稱作m步。

101、總結

以上,我們用乙個實際的小例子,來實際演示了em演算法背後的idea,共性存於個性之中,通過這個例子,我們可以對em演算法究竟在幹什麼有乙個深刻感性的認識,掌握em演算法的思想精髓。

英文文章:what is the expectation maximization algorithm? chuong b do & serafim batzoglou

原文文章:如何感性地理解em演算法?

(六)通俗易懂理解 viterbi演算法

動態規劃是運籌學的乙個分支,是求解決策過程最優化的數學方法,通常情況下應用於最優化問題,這類問題一般有很多個可行的解,每個解有乙個值,而我們希望從中找到最優的答案。在電腦科學領域,應用動態規劃的思想解決的最基本的乙個問題就是 尋找有向無環圖 籬笆網路 當中兩個點之間的最短路徑 實際應用於地圖導航 語...

通俗易懂的EM演算法

假設現在有兩枚硬幣1和2,隨機拋擲後正面朝上概率分別為p1,p2。為了估計這兩個概率,做實驗,每次取一枚硬幣,連擲5下,記錄下結果,如下 硬幣結果統計1 正正反正反 3正 2反 2反反正正反 2正 3反 1正反反反反 1正 4反 2正反反正正 3正 2反 1反正正反反 2正 3反 可以很容易地估計出...

TCP IP協議六 通俗易懂說網路協議 ARP

將ip位址解析為乙太網mac位址 在網路傳輸中,主機a要發資料給主機b,那麼a需要知道b的ip位址才能通訊,由於ip位址必須要封裝成幀才能通過物理網路傳送,因此還需要知道對方的實體地址,所以裝置上需要存在乙個從ip位址到實體地址的對映關係,那麼arp應運而生。其中,每個欄位的含義如下。硬體型別 指明...