如何感性的理解EM演算法
如果使用基於最大似然估計的模型,模型中存在隱變數,就要用EM演算法做引數估計。個人認為,理解EM演算法背後的idea,遠比看懂它的數學推導重要。idea會讓你有一個直觀的感受,從而明白演算法的合理性,數學推導只是將這種合理性用更加嚴謹的語言表達出來而已。打個比方,一個梨很甜,用數學的語言可以表述為糖分含量90%,但只有親自咬一口,你才能真正感覺到這個梨有多甜,也才能真正理解數學上的90%的糖分究竟是怎麼樣的。如果EM是個梨,本文的目的就是帶領大家咬一口。
001、一個非常簡單的例子
假設現在有兩枚硬幣1和2,,隨機拋擲後正面朝上概率分別為P1,P2。為了估計這兩個概率,做實驗,每次取一枚硬幣,連擲5下,記錄下結果,如下:
硬幣 | 結果 | 統計 |
---|---|---|
1 | 正正反正反 | 3正-2反 |
2 | 反反正正反 | 2正-3反 |
1 | 正反反反反 | 1正-4反 |
2 | 正反反正正 | 3正-2反 |
1 | 反正正反反 | 2正-3反 |
可以很容易地估計出P1和P2,如下:
P1 = (3+1+2)/ 15 = 0.4
P2= (2+3)/10 = 0.5
到這裡,一切似乎很美好,下面我們加大難度。
010、加入隱變數z
還是上面的問題,現在我們抹去每輪投擲時使用的硬幣標記,如下:
硬幣 | 結果 | 統計 |
---|---|---|
Unknown | 正正反正反 | 3正-2反 |
Unknown | 反反正正反 | 2正-3反 |
Unknown | 正反反反反 | 1正-4反 |
Unknown | 正反反正正 | 3正-2反 |
Unknown | 反正正反反 | 2正-3反 |
好了,現在我們的目標沒變,還是估計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 |
---|---|---|
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 |
按照最大似然法則:
第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 | 估計出的P1 | 真實的P1 | 初始化的P2 | 估計出的P2 | 真實的P2 |
---|---|---|---|---|---|
0.2 | 0.33 | 0.4 | 0.7 | 0.6 | 0.5 |
看到沒?我們估計的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 | 0.00512 | 0.03087 |
2 | 0.02048 | 0.01323 |
3 | 0.08192 | 0.00567 |
4 | 0.00512 | 0.03087 |
5 | 0.02048 | 0.01323 |
利用上面這個表,我們可以算出每輪拋擲中使用硬幣1或者使用硬幣2的概率。比如第1輪,使用硬幣1的概率是:
0.00512/(0.00512+0.03087)=0.14
使用硬幣2的概率是1-0.14=0.86
依次可以算出其他4輪的概率,如下:
輪數 | z_i=硬幣1 | z_i=硬幣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 |
上表中的右兩列表示期望值。看第一行,0.86表示,從期望的角度看,這輪拋擲使用硬幣2的概率是0.86。相比於前面的方法,我們按照最大似然概率,直接將第1輪估計為用的硬幣2,此時的我們更加謹慎,我們只說,有0.14的概率是硬幣1,有0.86的概率是硬幣2,不再是非此即彼。這樣我們在估計P1或者P2時,就可以用上全部的資料,而不是部分的資料,顯然這樣會更好一些。
這一步,我們實際上是估計出了z的概率分佈,這步被稱作E步。
結合下表:
硬幣 | 結果 | 統計 |
---|---|---|
Unknown | 正正反正反 | 3正-2反 |
Unknown | 反反正正反 | 2正-3反 |
Unknown | 正反反反反 | 1正-4反 |
Unknown | 正反反正正 | 3正-2反 |
Unknown | 反正正反反 | 2正-3反 |
我們按照期望最大似然概率的法則來估計新的P1和P2:
以P1估計為例,第1輪的3正2反相當於
0.14*3=0.42正
0.14*2=0.28反
依次算出其他四輪,列表如下:
輪數 | 正面 | 反面 |
---|---|---|
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 |
總計 | 4.22 | 7.98 |
P1=4.22/(4.22+7.98)=0.35
可以看到,改變了z值的估計方法後,新估計出的P1要更加接近0.4。原因就是我們使用了所有拋擲的資料,而不是之前只使用了部分的資料。
這步中,我們根據E步中求出的z的概率分佈,依據最大似然概率法則去估計P1和P2,被稱作M步。
101、總結
以上,我們用一個實際的小例子,來實際演示了EM演算法背後的idea,共性存於個性之中,通過這個例子,我們可以對EM演算法究竟在幹什麼有一個深刻感性的認識,掌握EM演算法的思想精髓。
相關推薦
如何感性的理解EM演算法
如果使用基於最大似然估計的模型,模型中存在隱變數,就要用EM演算法做引數估計。個人認為,理解EM演算法背後的idea,遠比看懂它的數學推導重要。idea會讓你有一個直觀的感受,從而明白演算法的合理性,數學推導只是將這種合理性用更加嚴謹的語言表達出來而已。打個比方,一個梨很甜,用數學的語言可以表述為糖分含量90
EM演算法及其理解
1. EM演算法是求解含有隱變數的極大似然估計引數的迭代演算法。 2. 極大似然估計可以用梯度下降法求解,但是如果概率分佈中含有隱變數的時候,先求和再求log,再求導很難。 3. 對於每一輪的迭代,先找到當前函式的一個下界函式,如果我們找到讓下界函式達到最大的引數,那麼這個引數也
EM演算法理解——從樸素貝葉斯角度出發
其實雖然說看了一天的EM演算法,但是當初是沒有理解這個問題的,但是今天看完了樸素貝葉斯,突然之間就理解了這個演算法。 也許是個巧合。 先來回顧一下樸素貝葉斯: 類別的概率 p(y1) p(y2) 特徵\類別 y1 y
高斯混合模型(GMM)及其EM演算法的理解
一個例子 高斯混合模型(Gaussian Mixed Model)指的是多個高斯分佈函式的線性組合,理論上GMM可以擬合出任意型別的分佈,通常用於解決同一集合下的資料包含多個不同的分佈的情況(或者是同一類分佈但引數不一樣,或者是不同型別的分佈,比如正態分佈和伯
CS229與《統計學習方法》的EM演算法理解和比較,收斂性證明
關於吳恩達老師的cs229講義和視訊與《統計學習方法》這本書上的EM演算法,作為初學者,強烈建議只看前者,恐怕是我比較菜只看後者的話會有很多地方不明白,比如為什麼似然函式不是 ∏
關於電感飽和的感性理解
影響 表示 就會 效果 開始 部分 一個 其中 就是 在研究電感濾波時,經常糾結電感的選型,脫離學校有點久了,把之前關於電感的那點知識都丟了,以至於沒想明白為什麽電感會飽和,而導致電感飽和的恰恰是我想要保留的直流電流,把電感和電容的概念完全等同了,以為直流電流對電感毫無
EM演算法通俗解釋
前言 EM演算法大家應該都耳熟能詳了,不過很多關於演算法的介紹都有很多公式。當然嚴格的證明肯定少不了公式,不過推公式也是得建立在瞭解概念的基礎上是吧。所以本文就試圖以比較直觀的方式談下對EM演算法的理解,儘量不引入推導和證明,希望可以有助理解演算法的思路。 介紹 EM方法是專門為優化似然函式設計
統計學習方法筆記9—EM演算法2
9.2 EM演算法的收斂性 收斂定理9.1 觀測資料的似然函式單調遞增 收斂定理9.2 EM演算法是收斂性包含對數似然函式序列的收斂性和關於引數估計序列的收斂性,即一定可以通過迭代發現似然函式的極值點。 9.3 EM演算法在高斯混合模型學習中的應用 9.3.1 高
感性理解支配樹
前言 orz一下這位大神。 本文獻給想要性感地理解支配樹的同學,如果你想更性感一點,所有證明均可跳過。 litble特別菜,有錯誤請指出,謝謝。 支配點 很久很久以前,有一張有向圖,有向圖有一個起點
讀吳恩達算-EM演算法筆記
最近感覺對EM演算法有一點遺忘,在表述的時候,還是有一點說不清,於是重新去看了這篇<CS229 Lecture notes>筆記. 於是有了這篇小札. 關於Jensen's inequality不等式: Corollary(推論): 如果函式f(x)為凸函式,那麼在 f(
[六]機器學習之EM演算法
6.1 實驗概要 通過EM演算法解決部分觀測資料的引數估計問題,使用sklearn提供的EM模組和高斯混合模型資料集,實驗EM演算法的實際效果 6.2 實驗輸入描述 本次實驗使用模擬資料集,該資料集有300條資料構成,每個樣本為3維。假定該資料由兩個高斯分佈混合得到。 &nbs
EM演算法(Expectation Maximization Algorithm)
1. Jensen不等式 設 f 是定義域為實數的函式,如果對於所有的實數 x,,那麼 f 是凸函式。當 x 是向量時,如果其hessian矩陣 H 是半正定的(),那麼 f 是凸函式。如果或者,那麼稱 f 是嚴格凸函式。 Jensen不等式表述如下: 如果 f 是凸函式,X是隨機變
理解Peterson演算法
先上演算法程式碼: int turn; int interested[2]; void enter_region(int process)//在進入臨界區前呼叫 { int other = 1 - process; interested[process] = true; tu
EM 演算法簡介
EM 演算法的思想 用擬合的思想來求隨機變數的數字特徵。 例如:模型中有兩個未知引數 A A A
循序漸進,深入理解KMP演算法
KMP演算法是三位大牛:D.E.Knuth、J.H.Morris和V.R.Pratt同時發現的。其中第一位就是《計算機程式設計藝術》的作者! KMP演算法要解決的問題就是在字串(也叫主串)中的模式(pattern)定位問題。說簡單點就是我們平時常說的關鍵字搜尋。模式串就是關鍵字(接下來
ml課程:最大熵與EM演算法及應用(含程式碼實現)
以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。 本文主要介紹最大熵模型與EM演算法相關內容及相關程式碼案例。 關於熵之前的文章中已經學習過,具體可以檢視:ml課程:決策樹、隨機森林、GBDT、XGBoost相關(含程式碼實現),補充一些 基本概念: 資訊量:資訊的度量,即
【ML1】機器學習之EM演算法(含演算法詳細推導過程)
寫在前面的話:對於EM演算法(Expectation Maximization Algorithm, 最大期望演算法), 大家如果僅僅是為了使用,則熟悉演算法流程即可。此處的演算法推導過程,僅提供給大家進階 之用。對於其應用,
【機器學習】EM演算法詳細推導和講解
眾所周知,極大似然估計是一種應用很廣泛的引數估計方法。例如我手頭有一些東北人的身高的資料,又知道身高的概率模型是高斯分佈,那麼利用極大化似然函式的方法可以估計出高斯分佈的兩個引數,均值和方差。這個方法基本上所有概率課本上都會講,我這就不多說了,不清楚的請百度。 然而現在我面臨的是這種情況,我
EM演算法_斯坦福CS229_學習筆記
Part VII EM演算法(Expectation-Maximization Algorithm) 翻過學習理論的篇章,這一講關注於非監督演算法。首先由經典的K-means演算法引出EM演算法,最後利用混合高斯模型對於EM演算法進行簡單闡述。 目錄 Part VII
機器學習導論(張志華):EM演算法
#前言 這個筆記是北大那位老師課程的學習筆記,講的概念淺顯易懂,非常有利於我們掌握基本的概念,從而掌握相關的技術。 #basic concepts EM演算法的核心是,首先假設模型符合什麼分佈,然後計算相關引數,再根據計算出的結果,重新劃分樣本分佈,然後再計算相關引數,直到收斂為止。 公式證