【机器学习基础】算法工程师必备的机器学习--EM
『運籌OR帷幄』原創
作者:華校專
作者信息:
華校專,曾任阿里巴巴資深算法工程師、智易科技首席算法研究員,現任騰訊高級研究員,《Python 大戰機器學習》的作者。
編者按:
算法工程師必備系列更新啦!繼上次推出了算法工程師必備的貝葉斯分類器后,小編繼續整理了必要的機器學習知識,全部以干貨的內容呈現,哪里不會學哪里,老板再也不用擔心你的基礎問題!本章介紹EM算法。
如果概率模型的變量都是觀測變量,則給定數據之后,可以直接用極大似然估計法或者貝葉斯估計法來估計模型參數。但是當模型含有隱變量時,就不能簡單的使用這些估計方法。此時需要使用EM 算法。
EM 算法是一種迭代算法。
EM 算法專門用于含有隱變量的概率模型參數的極大似然估計,或者極大后驗概率估計。
EM算法的每次迭代由兩步組成:
E步求期望。
M步求極大。所以EM算法也稱為期望極大算法。
1 示例
1.1 身高抽樣問題
假設學校所有學生中,男生身高服從正態分布 , 女生身高服從正態分布 。現在隨機抽取200名學生,得到這些學生的身高 ,求參數 的估計。
定義隱變量為 ,其取值為 ,分別表示男生、女生 。
(1) 如果隱變量是已知的,即已知每個學生是男生還是女生 ,則問題很好解決:
(1.1) 統計所有男生的身高的均值和方差,得到 :
其中 表示滿足 的 構成的集合。 分別表示平均值和方差。(1.2) 統計所有女生的身高的均值和方差,得到 :
其中 表示滿足 的 構成的集合。 分別表示平均值和方差。(2) 如果已知參數 ,則任意給出一個學生的身高 ,可以知道該學生分別為男生/女生的概率。
則有: 因此也就知道該學生更可能為男生,還是更可能為女生。因此:參數 學生是男生/女生,這兩個問題是相互依賴,相互糾纏的。
為解決該問題,通常采取下面步驟:
(1) 先假定參數的初始值:
(2) 迭代 :
(2.1) 根據 來計算每個學生更可能是屬于男生,還是屬于女生。這一步為E 步(Expectation),用于計算隱變量的后驗分布 。
(2.2) 根據上一步的劃分,統計所有男生的身高的均值和方差,得到 ;統計所有女生的身高的均值和方差,得到 。這一步為 M 步(Maximization ),用于通過最大似然函數求解正態分布的參數。
(2.3) 當前后兩次迭代的參數變化不大時,迭代終止。
已知三枚硬幣 A,B,C ,這些硬幣正面出現的概率分別為 。進行如下試驗:
先投擲硬幣 A,若是正面則選硬幣 B;若是反面則選硬幣 C 。
然后投擲被選出來的硬幣,投擲的結果如果是正面則記作 1;投擲的結果如果是反面則記作0 。
獨立重復地 次試驗,觀測結果為:1,1,0,1,0,...0,1。現在只能觀測到投擲硬幣的結果,無法觀測投擲硬幣的過程,求估計三硬幣正面出現的概率。
設:
注意:隨機變量 的數據可以觀測,隨機變量 的數據不可觀測
隨機變量 是觀測變量,表示一次試驗觀察到的結果,取值為 1 或者0
隨機變量 是隱變量,表示未觀測到的投擲A硬幣的結果,取值為 1 或者 0
是模型參數 則:
將觀測數據表示為 ,未觀測數據表示為 。由于每次試驗之間都是獨立的,則有:
考慮求模型參數 的極大似然估計,即:
這個問題沒有解析解,只有通過迭代的方法求解,EM算法就是可以用于求解該問題的一種迭代算法。
EM算法求解:首先選取參數的初值,記作 ,然后通過下面的步驟迭代計算參數的估計值,直到收斂為止:設第 次迭代參數的估計值為:, 則EM算法的第 次迭代如下:
第一個式子:通過后驗概率 估計值的均值作為先驗概率 的估計。
第二個式子:通過條件概率 的估計來求解先驗概率 的估計。
第三個式子:通過條件概率 的估計來求解先驗概率 的估計。
E步:計算模型在參數 下,觀測數據 來自于投擲硬幣 B 的概率:
它其實就是 ,即:已知觀測變量 的條件下,觀測數據 來自于投擲硬幣 B 的概率。
M 步:計算模型參數的新估計值:
EM 算法的解釋:
初始化:隨機選擇三枚硬幣 A,B,C 正面出現的概率 的初始值 。
E 步:在已知概率 的情況下,求出每個觀測數據 是來自于投擲硬幣 B 的概率。即: 。于是對于 次實驗,就知道哪些觀測數據是由硬幣 B 產生,哪些是由硬幣 C 產生。
M 步:在已知哪些觀測數據是由硬幣 B 產生,哪些是由硬幣 C 產生的情況下:
(1) 就等于硬幣 B 產生的次數的頻率。
(2) 就等于硬幣B 產生的數據中,正面向上的頻率。
(3) 就等于硬幣 C 產生的數據中,正面向上的頻率。
2 EM算法原理
2.1 觀測變量和隱變量
令 表示觀測隨機變量, 表示對應的數據序列;令 表示隱隨機變量, 表示對應的數據序列。 和 連在一起稱作完全數據,觀測數據 又稱作不完全數據。
假設給定觀測隨機變量 ,其概率分布為 ,其中 是需要估計的模型參數,則不完全數據 的似然函數是 , 對數似然函數為 。假定 和 的聯合概率分布是 ,完全數據的對數似然函數是 ,則根據每次觀測之間相互獨立,有:
由于 發生,根據最大似然估計,則需要求解對數似然函數:
的極大值。其中 表示對所有可能的Z 求和,因為邊緣分布 。該問題的困難在于:該目標函數包含了未觀測數據的的分布的積分和對數。
EM 算法通過迭代逐步近似極大化 。假設在第 次迭代后, 的估計值為:。則希望 新的估計值能夠使得 增加,即: 。為此考慮兩者的差:
這里 已知,所以 可以直接計算得出。
Jensen 不等式:如果 是凸函數,x 為隨機變量,則有: 。
如果 是嚴格凸函數,當且僅當 是常量時,等號成立。
當 滿足 時,將 視作概率分布。設隨機變量 滿足概率分布 ,則有: 。
考慮到條件概率的性質,則有 。因此有:
等號成立時,需要滿足條件:
其中 為隨機變量 的取值個數。
令
則有: ,因此 是 的一個下界。
任何可以使得 增大的 ,也可以使 增大。為了使得 盡可能增大,則選擇使得 取極大值的 : 。
根據定義有: 。因為此時有:
求極大值:
其中:
與 無關,因此省略。2.2.2 算法
EM 算法:
聯合分布和條件分布的形式已知(比如說高斯分布等),但是參數未知(比如均值、方差)
輸出:模型參數
算法步驟:
(1) 選擇參數的初值 ,開始迭代。
(2) E步:記 為第 次迭代參數 的估計值,在第 步迭代的 E 步,計算:
其中
表示:對于觀測點 , 關于后驗概率 的期望。(3) M步:求使得 最大化的 ,確定 次迭代的參數的估計值 $\theta^{(i+1)}
(4) 重復上面兩步,直到收斂。
輸入:
(1) 觀測變量數據
(2) 聯合分布 ,以及條件分布
通常收斂的條件是:給定較小的正數 ,滿足: 或者 。
是算法的核心,稱作 函數。其中:
第一個符號表示要極大化的參數(未知量)。
第二個符號表示參數的當前估計值(已知量)。
EM算法的直觀理解:EM算法的目標是最大化對數似然函數 。
直接求解這個目標是有問題的。因為要求解該目標,首先要得到未觀測數據的分布 。如:身高抽樣問題中,已知身高,需要知道該身高對應的是男生還是女生。但是未觀測數據的分布就是待求目標參數 的解的函數。這是一個“雞生蛋-蛋生雞” 的問題。
EM算法試圖多次猜測這個未觀測數據的分布 。每一輪迭代都猜測一個參數值 ,該參數值都對應著一個未觀測數據的分布 。如:已知身高分布的條件下,男生/女生的分布。
然后通過最大化某個變量來求解參數值。這個變量就是 變量,它是真實的似然函數的下界 。
(1) 如果猜測正確,則 就是真實的似然函數。(2) 如果猜測不正確,則 就是真實似然函數的一個下界。
隱變量估計問題也可以通過梯度下降法等算法求解,但由于求和的項數隨著隱變量的數目以指數級上升,因此代價太大。
EM算法可以視作一個非梯度優化算法。
無論是梯度下降法,還是EM 算法,都容易陷入局部極小值。
2.2.3 收斂性定理
定理一:設 為觀測數據的似然函數, 為EM算法得到的參數估計序列, 為對應的似然函數序列,其中 。則: 是單調遞增的,即:
定理二:設 為觀測數據的對數似然函數, 為EM算法得到的參數估計序列, 為對應的對數似然函數序列,其中 。
關于“滿足一定條件”:大多數條件下其實都是滿足的。
如果 有上界,則 會收斂到某一個值 。
在函數 與 滿足一定條件下,由 EM 算法得到的參數估計序列 的收斂值 是 的穩定點。
定理二只能保證參數估計序列收斂到對數似然函數序列的穩定點 ,不能保證收斂到極大值點。
EM算法的收斂性包含兩重意義:
關于對數似然函數序列 的收斂。
關于參數估計序列 的收斂。前者并不蘊含后者。
實際應用中,EM 算法的參數的初值選擇非常重要。
參數的初始值可以任意選擇,但是 EM 算法對初值是敏感的,選擇不同的初始值可能得到不同的參數估計值。
常用的辦法是從幾個不同的初值中進行迭代,然后對得到的各個估計值加以比較,從中選擇最好的(對數似然函數最大的那個)。
EM 算法可以保證收斂到一個穩定點,不能保證得到全局最優點。其優點在于:簡單性、普適性。
3 EM算法與高斯混合模型
3.1 高斯混合模型
高斯混合模型(Gaussian$ mixture model,GMM):指的是具有下列形式的概率分布模型:
其中 是系數,滿足 :
。
是高斯分布密度函數,稱作第 個分模型,
如果用其他的概率分布密度函數代替上式中的高斯分布密度函數,則稱為一般混合模型。
3.2 參數估計
假設觀察數據
由高斯混合模型 生成,其中 可以通過EM算法估計高斯混合模型的參數 。可以設想觀察數據 是這樣產生的:
首先以概率 選擇第 個分模型 。
然后以第 個分模型的概率分布 生成觀察數據 。 這樣,觀察數據 是已知的,觀測數據 來自哪個分模型是未知的。 對觀察變量 ,定義隱變量 ,其中 。
完全數據的對數似然函數為:
其對數為:
后驗概率為:
即:
則 函數為:求極大值:
根據偏導數為 0,以及 得到:(1) :
其中:
其物理意義為:所有的觀測數據 中,產生自第 個分模型的觀測數據的數量。
(2) :
其中:
其物理意義為:所有的觀測數據 中,產生自第 個分模型的觀測數據的總和。
(3) :
其中:
其物理意義為:所有的觀測數據 中,產生自第 個分模型的觀測數據,偏離第 個模型的均值( )的平方和。
高斯混合模型參數估計的EM算法:
輸入:
(1) 觀察數據
(2) 高斯混合模型的分量數 K
輸出:高斯混合模型參數
算法步驟:
(1) 隨機初始化參數 。
(2) 根據 迭代求解 ,停止條件為:對數似然函數值或者參數估計值收斂。
其中:
(2.1)
其物理意義為:所有的觀測數據 中,產生自第 個分模型的觀測數據的數量。(2.2)
其物理意義為:所有的觀測數據 中,產生自第 個分模型的觀測數據的總和。
(2.3)
其物理意義為:所有的觀測數據 中,產生自第 個分模型的觀測數據,偏離第 個模型的均值()的平方和。
4 EM 算法與 模型
kmeans算法:給定樣本集
針對聚類所得簇劃分 ?最小化平方誤差:其中 是簇 的均值向量。
定義觀測隨機變量為 ,觀測數據為 。定義隱變量為 ,它表示 所屬的簇的編號。設參數 , 則考慮如下的生成模型:
其中 表示距離 最近的中心點所在的簇編號。即:
若 最近的簇就是 代表的簇,則生成概率為 。
若 最近的簇不是 代表的簇,則生成概率等于 0 。
計算后驗概率:
即:
若 最近的簇就是 代表的簇,則后驗概率為 1 。
若 最近的簇不是 代表的簇,則后驗概率為 0 。
計算 函數:
設距離 最近的聚類中心為 ,即它屬于簇 ,則有:
則有:
定義集合
,它表示屬于簇 的樣本的下標集合。則有:則有:
這剛好就是 k-means 算法的目標:最小化平方誤差。
由于求和的每一項都是非負的,則當每一個內層求和
都最小時,總和最小。即: 得到: 其中 表示集合的大小。這就是求平均值來更新簇中心。 $$5.1 函數
F函數:假設隱變量 的概率分布為 ,定義分布 與參數 的函數 為:
其中 是分布 的熵。 通常假定 是 的連續函數,因此 為 和 的連續函數。
函數 有下列重要性質:
對固定的 ,存在唯一的分布 使得極大化 。此時 ,并且 隨著 連續變化。
若 , 則 。
定理一:設 為觀測數據的對數似然函數, 為 EM 算法得到的參數估計序列,函數
則:如果 在 和 有局部極大值,那么 也在 有局部極大值。
如果 在 和 有全局極大值,那么 也在 有全局極大值。
定理二:EM算法的一次迭代可由 F 函數的極大-極大算法實現:設 為第 次迭代參數 的估計, 為第 次迭代函數 的估計。在第 次迭代的兩步為:
對固定的 ,求 使得 極大化。
對固定的 ,求 使得 極大化。
5.2 算法1
GEM算法1(EM算法的推廣形式):
輸入:
(1) 觀測數據
(2) 函數
輸出:模型參數
算法步驟:
(1) 初始化參數 ,開始迭代。
(2) 第 次迭代:
(2.1) 記 為參數 的估計值, 為函數 的估計值。求 使得 極大化。
(2.2) 求 使得 極大化。
(2.3) 重復上面兩步直到收斂。
該算法的問題是,有時候求 極大化很困難。
5.3 算法2
GEM算法2(EM算法的推廣形式):
輸入:
(1) 觀測數據
(2) 函數
輸出:模型參數
算法步驟:
(1) 初始化參數 ,開始迭代。
(2) 第 次迭代:
(2.1) 記 為參數 的估計值, 計算
(2.2) 求 使得
(2.3) 重復上面兩步,直到收斂。
此算法不需要求 的極大值,只需要求解使它增加的 即可。
5.4 算法3
GEM算法3(EM算法的推廣形式):
輸入:
(1) 觀測數據
(2) 函數
輸出:模型參數
算法步驟:
(1) 初始化參數
開始迭代(2) 第 次迭代:
(2.1) 記
為參數 的估計值, 計算(2.2) 進行 次條件極大化:
(2.2.1) 首先在 保持不變的條件下求使得 達到極大的
(2.2.2) 然后在
的條件下求使得 達到極大的(2.2.3) 如此繼續,經過 次條件極大化,得到
使得(2.3) 重復上面兩步,直到收斂。
該算法將 EM 算法的 M 步分解為 次條件極大化,每次只需要改變參數向量的一個分量,其余分量不改變。
文章須知
文章作者:華校專?
責任編輯:征帆 周巖 logic
審核編輯:阿春
微信編輯:征帆
本文由『運籌OR帷幄』原創發布
如需轉載請在公眾號后臺獲取轉載須知
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯 獲取本站知識星球優惠券,復制鏈接直接打開: https://t.zsxq.com/y7uvZF6 本站qq群704220115。加入微信群請掃碼:
1.2 三硬幣模型
2.2 算法
2.2.1 原理
總結
以上是生活随笔為你收集整理的【机器学习基础】算法工程师必备的机器学习--EM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python基础】安利3个Python
- 下一篇: 【深度学习】图文并茂!用Keras LS