EM演算法學習筆記 1 對EM演算法的簡單理解

2022-03-23 02:00:45 字數 1596 閱讀 3893

因做實驗的需要,最近在學習

em演算法,演算法介紹的資料網上是有不少,可是沒有一篇深入淺出的介紹,演算法公式太多,比較難懂,畢竟她是

ml領域

10大經典演算法之一

,且一般是結合

gmm模型的引數估計來介紹

em的。看過不少

em的資料,現將自己對

em演算法用稍微通俗點的文字寫下來,當然你可以用

gmm這個具體的例子來幫助理解。

問題的提出:給定一些樣本資料

x,且知道該資料是有

k個高斯混合產生的,現在要用給的樣本資料

x去估計模型的引數

sida,即在該引數

sida下產生

x資料的概率最大。

(其實就是個

mle估計

)原問題等價與求

sida,使得滿足

max(logp((x/sida))),那麼我們為什麼不直接用

mle去估計呢?通過關於

em演算法各種推導公式

(我這裡基本把這些公式都省略掉,因為介紹這方面的資料有不少

)可以看出,對數裡面有求和的項,說白了,就算用

mle的方法去做解不出來,因為各種求偏導什麼的很難求。

所以在em演算法中有個假設,即我們不僅知道觀測到的資料

x,而且還知道它屬於隱變數

z的哪一類

(在gmm中,隱變數

z表示各個單高斯模型

)。此時原問題的求解等價於求

sida,使得滿足

max(logp((x,z)/sida))。

為什麼2中就能用

mle解決呢,又通過檢視

em演算法各種公式推導可以看出,

2與1的不同在與

2中那些對數符號裡面沒有了求和項,所以各種求導方法等在此可以應用。

但是我們的

z變數是隱含的,也就是說未知的,那麼

2中的mle該怎麼做呢?通過查詢

em演算法的公式推導過程可以看出,

2中的求

max(logp((x,z)/sida))中的

sida可以等價與求

max[ez(logp(x,z)/sida)],即求

logp((x,z)/sida)關於變數

z的期望最大。

既然是求其關於

z的期望,那麼我們應該知道

z的概率分布才行。比較幸運的是在

em體系中,關於

z的分布也是很容易求得的,即

z的後驗分布

p(z/x,sida)很容易求出來。

e-step:首先隨便取一組引數

sida,求出

5中z的後驗分布,同時求出

logp((x,z)/sida)關於

z的期望,即

ez(logp((x,z)/sida))。

m-step:前面已經講到,

6中的期望最大用

mle很容易解決,所以

m-step時採用

mle求得新的引數

sida,又從前面的介紹可知,

6中的期望最大時的引數等價於原問題的求解的引數。

返回6,

7之間迭代,直到滿足

logp((x,z)/sida)基本不再變化。

EM演算法學習筆記詳解

基於李航的 統計學習方法 對em演算法學習的介紹性筆記。一.預備知識 在正式介紹em演算法之前,先介紹推導em演算法用到的數學基礎知識,包括凹凸函式,jensen不等式。上凸函式 函式f x 滿足對定義域上任意兩個數a,b都有f a b 2 f a f b 2 下凸函式 函式f x 滿足對定義域上任...

EM演算法學習 三

在前兩篇文章中,我們已經大致的講述了關於em演算法的一些基本理論和一些基本的性質,以及針對em演算法的缺點進行的優化改進的新型em演算法,研究之後大致就能夠進行初步的了解.現在在這最後一篇文章,我想對em演算法的應用進行一些描述 em演算法在多元正態分佈缺失的資料下一般都是有較為廣泛的應用,所以在這...

機器學習 03 EM演算法學習筆記

假設有兩枚硬幣a和b,每次選乙個硬幣來拋10次。現在已經進行了5輪 也就是選了5次硬幣,並分別拋了10次 結果如下 h表示正面,t表示反面 假定隨機拋擲後正面朝上概率分別為pa,pb。為了估計這兩個硬幣朝上的概率,咱們輪流拋硬幣a和b,每一輪都連續拋5次,總共5輪 硬幣結果統計a 正正反正反 3正 ...