EM算法入門教程

2021-02-23 學術人人

EM(Expectation Maximum,期望最大化)是一種迭代算法,用於對含有隱變量概率參數模型的極大似然估計或極大後驗估計。模型參數的每一次迭代,含有隱變量概率參數模型的似然函數都會增加,當似然函數不再增加或增加的值小於設置的閾值時,迭代結束。

EM算法在機器學習和計算機視覺的數據聚類領域有廣泛的應用,只要是涉及到後驗概率的應用,我們都可以考慮用EM算法去解決問題。EM算法更像是一種數值分析方法,正確理解了EM算法,會增強你機器學習的自學能力,也能讓你對機器學習算法有新的認識,本文詳細總結了EM算法原理。

目錄

1. 只含有觀測變量的模型估計

2. 含有觀測變量和未觀測變量的模型參數估計

3. EM算法流程

4. 拋硬幣問題舉例

5. 高斯混合模型的參數估計

6. 聚類蘊含的EM算法思想

7. 小結

我們首先考慮比較簡單的情況,即模型只含有觀測變量不含有隱藏變量,如何估計模型的參數?我們用邏輯斯蒂回歸模型(logistic regression model)來解釋這一過程。

假設數據集有d維的特徵向量X和相應的目標向量Y,其中,。下圖表示邏輯斯蒂回歸模型:

由之前的文章介紹,邏輯斯蒂回歸模型的目標預測概率是S型函數計算得到,定義為:

,則目標預測變量為1;反之,目標預測變量為0。其中w是待估計的模型參數向量。

機器學習模型的核心問題是如何通過觀測變量來構建模型參數w,最大似然方法是使觀測數據的概率最大化,下面介紹用最大似然方法(Maximum Likelihood Approach)求解模型參數w。

假設數據集,樣本數據,模型參數

觀測數據的對數似然函數可寫為:

由對數性質可知,上式等價於:

式(1)代入式(2),得:

其中:

由於(3)式是各個樣本的和且模型參數間並無耦合,因此用類似梯度上升的迭代優化算法去求解模型參數w。

因為:

由式(4)(5)(6)可得:

因此,模型參數w的更新方程為:

其中η是學習率。

根據梯度更新方程(7)迭代參數w,似然函數L(w)逐漸增加,當似然函數收斂時,模型參數w不再更新,這種參數估計方法稱為最大似然估計。

上節介紹當模型只含有觀測變量時,我們用極大似然估計方法計算模型參數w。但是當模型含有隱變量或潛在變量(latent)時,是否可以用極大似然估計方法去估計模型參數,下面我們討論這一問題:

假設V是觀測變量,Z是隱變量,θ是模型參數,我們考慮用極大似然估計方法去計算模型參數:

由於隱變量在log內部求和,造成不同參數間相互耦合,因此用極大似然方法估計模型參數非常難。(8)式不能估計模型參數的主要原因是隱變量,若隱變量Z已知,完全數據的似然函數為,為了書寫方便,觀測變量V,Y統一用V表示,即

那麼問題來了,如何通過已觀測變量估計隱變量Z的值?這個時候我們想到了後驗概率:

EM算法最大化完全數據在隱變量分布的對數似然函數期望,得到模型參數θ即:

現在我們總結EM算法的流程:

1)初始化模型參數

2)E步估計隱變量的後驗概率分布:

3)M步估計模型參數

4)當模型參數或對數似然函數收斂時,迭代結束;反之,返回第(2)步,繼續迭代。

上節我們介紹了EM算法的模型參數估計過程,相信大家會有個疑問:為什麼最大化下式來構建模型參數。

下面我給大家解釋這一算法的推導過程以及其中蘊含的含義:

假設隱藏變量的理論分布為,觀測數據的對數似然函數可以分解為下式:

由貝葉斯理論可知:

(9)式得:

分子分母除q(Z),得:

(10)式第二項表示相對熵,含義為隱變量後驗概率分布與理論概率分布的差異,相對熵的一個性質是:

根據(10)式我們推斷:

因此觀測數據的對數似然函數的下界為,如果我們能夠極大化這個下界,那麼同時也極大化了可觀測數據的對數似然函數。

當相對熵等於0時,即:

由上式得到隱藏變量的後驗概率分布與理論分布相等,即:

進而(11)式等號成立,即:

取得上界,現在我們需要最大化的上界,即:

當相對熵等於0時,式(12)代入式(13)得到的上界為:

式(15)的第二項對應隱變量的熵,可看成是常數,因此最大化(15)式等價於最大化,其中:

最大化(16)式對應上節介紹EM算法的M步。

重新整理算法EM的流程:

1)初始化模型參數為

2)當等式(12)成立時,取得上界,最大化等價於最大化下式:

3)最大化,返回參數

4)當收斂時,迭代結束;否則,算法返回到第(2)步繼續迭代;

為了大家清晰理解這一算法流程,下面用圖形表示EM算法的含義。

E步:模型參數是時,由(13)式可知,用黑色實心點標記;

M步:最大化,返回參數,用紅色實心點標記;

,重複E步和M步,當收斂時,迭代結束。

我們有兩種硬幣A和B,選擇硬幣A和硬幣B的概率分別為π和(1-π),硬幣A和硬幣B正面向上的概率分別為p和q,假設觀測變量為,1,0表示正面和反面,i表示硬幣拋擲次數;隱變量,1,0表示選擇硬幣A和硬幣B進行拋擲。

問題:硬幣共拋擲n次,觀測變量已知的情況下求模型參數的更新表達式。

根據EM算法,完全數據的對數似然函數的期望:

其中表示觀測數據來自擲硬幣A的概率,用表示:

最大化,得到如下更新表達式:

現在我們知道了模型參數θ的更新方程,假設共拋擲硬幣10次,觀測結果如下:1,1,0,1,0,0,1,0,1,1。

初始化模型參數為:

由式(18)得:

利用模型參數更新得:

由式(18),得:

模型參數繼續更新:

因此,收斂時,最終的模型參數為:

表示選擇硬幣A和硬幣B的概率是一樣的,如果模型參數的初始值不同,得到的最終模型參數也可能不同,模型參數的初始化和先驗經驗有關。

一維變量的高斯分布:

其中u和σ分別表示均值和標準差。

n維變量的高斯分布:

其中u是n維均值向量,是n×n的協方差矩陣。

n維變量的混合高斯分布:

該分布共由k個混合成分組成,每個混合成分對應一個高斯分布,其中是第k個高斯混合成分的均值和協方差。

是歸一化混合係數,含義為選擇第k個高斯混合成分的概率,滿足以下條件:

下圖為k=3的高斯混合成分的概率分布圖(紅色):

假設由高斯混合分布生成的觀測數據,其對數似然函數:

我們用EM算法估計模型參數,其中隱變量對應模型的高斯混合成分,即對於給定的數據x,計算該數據屬於第k個高斯混合分布生成的後驗概率,記為

根據貝葉斯定律:

最大化式(19),令

由式(20)(21)(22)(23)可得模型參數:

小結EM算法構建高斯混合模型的流程

1)初始化高斯混合模型的均值,協方差和混合係數,計算完全數據的對數似然值(式(19));

2)E步:使用當前的參數值,通過下式計算均值:

表示觀測數據x屬於第k個高斯混合成分的後驗概率;

3)M步:最大化對數似然函數,得到式(24)(25)(26)的模型更新參數;

4)根據更新的參數值,重新計算完全數據的對數似然函數:

若收斂,則得到最終的模型參數值;反之,回到算法第(2)步繼續迭代。

我們可以把聚類理解為:計算觀測數據x屬於不同簇類的後驗概率,記為,其中j是簇類個數(j=1,2,...,K),觀測數據x所屬的簇標記由如下確定:

我們可以用EM算法計算每個樣本由不同高斯混合成分生成的後驗概率,步驟可參考上一節。

【例】 如下的觀測數據,假設簇類個數K=2,初始化每個高斯混合參數得到,根據式(27)得到聚類結果:

根據上一節介紹的EM算法步驟,迭代1次後得到,根據式(27)得到聚類結果:

迭代5次後得到,根據式(27)得到聚類結果:

迭代20次後的,根據式(27)得到聚類結果:

k均值聚類是高斯混合聚類的特例,k均值假設各個維是相互獨立的,其算法過程也可用EM思想去理解:

2)E步:通過簇類中心計算每個樣本所屬簇類的後驗概率;3)M步:最大化當前觀測數據的對數似然函數,更新簇類中心4)當觀測數據的對數似然函數不再增加時,迭代結束;反之,返回(2)步繼續迭代;

EM算法在各領域應用極廣,運用了後驗概率,極大似然方法和迭代思想構建最優模型參數,希望通過這篇文章能讓讀者對EM算法不再陌生。

推薦閱讀:

博士論文工作的基本特徵和創新能力評價存在的挑戰

不是每次都能這麼有驚無險…

一首可靠性工程哲理的古老詩歌—執事的傑作,神奇的「單馬馬車」

遺傳算法解決帶時間窗的車輛路徑規劃問題(附java代碼及詳細注釋)

分治法(Divide-and-Conquer Algorithm)經典例子分析

相關焦點

  • 【教程】html+css零基礎入門教程(十)
    為了避免出現這種顯示問題,建議針對負縮進再設置一個外邊距或一些內邊距:p{text-indent: -5em; padding-left: 5em;}效果如下:F2E.TMING F2E.TMING F2E.TMING使用百分比值text-indent 可以使用所有長度單位,包括百分比值。
  • EM算法簡介
    本文從EM算法的基本概念說起,提出對於EM算法的一些基本認知問題,而後通過拋硬幣實例讓讀者更好的理解EM算法和理解這個算法要去解決的實際問題,全文主要分為如下幾個部分:初識EM算法從拋硬幣說起 - 極大似然估計與隱變量似曾相識的模式 - K-Means推導接近EM的優化算法問題和算法的形式化應用和推廣
  • 一個入門級python爬蟲教程詳解
    這篇文章主要介紹了一個入門級python爬蟲教程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑑價值,需要的朋友可以參考下
  • 【教程】html+css零基礎入門教程之CSS邊框
    為邊框指定寬度有兩種方法:可以指定長度值,比如 2px 或 0.1em;或者使用 3 個關鍵字之一,它們分別是 thin 、medium(默認值) 和 thick。border-width: 20px;border-color: #000;B、border-style: none; border-width: 20px;C、border-style: none; border-color: #000;D、border-style: solid;border-color: #000;相關文章【教程
  • 學會這10種機器學習算法你才算入門
    庫:https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.svd.htmlhttp://scikitlearn.org/stable/modules/generated/sklearn.decomposition.PCA.html入門教程:https:/
  • EM算法詳解
    EM算法若干思考    5.1 對EM算法的初始化研究    5.2 EM算法是否一定收斂?    5.3 如果EM算法收斂,能否保證收斂到全局最大值?6. EM算法實例7. 對EM算法總結1.摘要EM(Expectation-Maximum)算法也稱期望最大化算法,曾入選「數據挖掘十大算法」中,可見EM算法在機器學習、數據挖掘中的影響力。EM算法是最常見的隱變量估計方法,在機器學習中有極為廣泛的用途,例如常被用來學習高斯混合模型(Gaussian mixture model,簡稱GMM)的參數;隱式馬爾科夫算法(HMM)、LDA主題模型的變分推斷等等。
  • 算法基礎:五大排序算法Python實戰教程
    :五大排序算法Python實戰教程排序算法的複雜度排序是每個軟體工程師和開發人員都需要掌握的技能。不同的排序算法很好地展示了算法設計上如何強烈的影響程序的複雜度、運行速度和效率。讓我們看一下前6種排序算法,看看如何在Python中實現它們!
  • 一文讓你完全入門EM算法
    EM算法在機器學習和計算機視覺的數據聚類領域有廣泛的應用,只要是涉及到後驗概率的應用,我們都可以考慮用EM算法去解決問題。EM算法更像是一種數值分析方法,正確理解了EM算法,會增強你機器學習的自學能力,也能讓你對機器學習算法有新的認識,本文詳細總結了EM算法原理。目錄1.
  • CSS 預編譯語言 Sass 快速入門教程
    後者更加兼容原生 CSS 語法,所以我們通常使用後者,接下來的教程我們也使用這種語法。 green;    } @else if $type == sass {        color: red;    } @else {        color: black;    }}// 循環,定義多個樣式@for $i from 1 through 3 {    .item-#{$i} { width: 2em
  • Matlab入門教程 | 006編程示例:計算e的近似值
    很多入門書偏重於理論介紹,讀起來好比陷入了概念術語的汪洋大海,看不到岸,令人灰心,只好望洋興嘆!可是,如果我們掌握了科學的學習方法,一點都不難!科學的學習方法就是從實例入手,通過對一個一個實例,跑代碼,舉一反三進行實操,循序漸進掌握基本命令用法和編程思想。
  • 《VirtualLab Fusion入門與進階實用教程》
    然而,隨著近代光學系統產品的發展,許多的光學元件物質,已經由幾何光學的範疇,逐漸進入「波動光學(wave optics)的微小設計領域,而VirtualLab Fusion軟體結合了「光線追跡(ray tracing)」和「場追跡(field tracing)」算法,能在所設計的產品尺度,接近或小於光源波長的時候,還能保證仿真結果的精確性。
  • 學會這10種機器學習算法,你才算入門(附教程)
    本文對通用機器學習算法進行了簡要的闡述,並列舉了它們的相關資源,從而幫助你能夠快速掌握其中的奧妙。該算法通過獲取維度縮小的數據點的方式來幫助人們克服維度難題。K均值聚類這是大家最喜歡的無監督聚類算法。給定一組向量形式的數據點,我們可以根據它們之間的距離製作點集群。這是一個期望最大化算法,它迭代地移動集群中心,然後架構每集群中心點聚焦在一起。該算法所採用的輸入是將要生成的集群的數量,以及它將嘗試聚集集群的迭代次數。
  • 10天15分鐘系列之Modeler入門教程(一)
    為了呼應各位程式設計師同行們學習數據挖掘的積極性,我們的小靈基於自己的學習經驗,錄製了一套實用性強的【免費Modeler入門教程】視頻資源,來幫助大家無壓力進入數據挖掘門檻。SPSS Modeler是一個適用於數據挖掘入門的工具,通過每天15分鐘的學習,結合案例實操,帶你系統掌握數據挖掘基本實現流程,比自學更有效率。
  • EM算法
    在推導EM算法之前,先引用《統計學習方法》中EM算法的例子:例1.
  • 時間序列預測教程;OpenAI 談對抗樣本:自然語言處理入門 | AI 開發...
    Jason Brownlee 的時間序列預測教程這是澳大利亞機器學習專家 Jason Brownlee 撰寫的教程,提供了一套用 Python 語言處理時間序列預測問題的模板。該教程一步步向讀者展示了應該用什麼工具、如何操作,以及為什麼這樣操作。
  • TypeScript 中文入門教程
    轉載:《TypeScript 中文入門教程》 17、註解 (2015-12-03 11:36)轉載:《TypeScript 中文入門教程》 16、Symbols (2015-12-03 11:35)轉載:《TypeScript 中文入門教程》 15、可迭代性 (2015-12-03 11:33)轉載:《TypeScript 中文入門教程》 14
  • 小夕的算法入門之路
    小夕都快要成XX入門指導專業戶了QAQ,小夕是要寫人工智慧和計算機乾貨的啊喂~好吧,問小夕如何入門算法的小夥伴太多了,還是寫一篇文章吧。
  • 新手入門 | 算法書籍推薦
    另外需要注意的是,這裡給的書籍路線更偏向於普通意義的學習,而不僅僅是針對算法競賽,公眾號前期還是主要針對大學剛入門的同學,這樣對於公眾號來說,也能做到由淺入深,自成體系,我自己也是溫故知新,後面會慢慢加深內容。
  • 數據挖掘算法:EM算法
    EM算法EM算法(Expectation Maximization)是在含有隱變量(latent variable)的模型下計算最大似然的一種算法。所謂隱變量,是指我們沒有辦法觀測到的變量。比如,有兩枚硬幣A、B,每一次隨機取一枚進行拋擲,我們只能觀測到硬幣的正面與反面,而不能觀測到每一次取的硬幣是否為A;則稱每一次的選擇拋擲硬幣為隱變量。
  • EM算法初探
    EM算法詳解EM算法,全稱為Expectation Maximum Algorithm,是一個基礎算法,是很多機器學習領域算法的基礎(如HMM,LDA等)。EM算法是在「概率模型中尋找參數最大似然估計或者最大後驗估計的算法,其中概率模型依賴於無法觀測的隱含變量。」