本文試圖用最簡單的例子、最淺顯的方式說明em(expectation maximization)演算法的應用場景和使用方法,而略去公式的推導和收斂性的證明。
maximum likelihood estimation
maximum likelihood estimation(mle)是要選擇乙個最佳引數θ*,使得從訓練集中觀察到和情況出現的概率最大。即模型:
舉例來說明。如下圖
乙個小黑球沿著乙個三角形的木樁滾入杯子a或b中,可建立乙個概率模型,由於是二值的,設服從bernoulli分布,概率密度函式為:
p是k=0的概率,也是我們要使用mle方法要確定的引數。
在上面的滾球實驗中,我們令y是待確定的引數,x是觀察到的結果。連續10次實驗,觀察到的結果是x=(b,b,b,a,b,b,b,b,b,a)。小球進入a杯的概率為p,則滿足10次實驗的聯合概率為:
為了使x發生的概率最大,令上式一階求導函式為0,得p=0.2。
含有隱含變數的彈球實驗
如上圖,現在又多了兩塊三角形木樁,分別標記序號為0,1,2。並且實驗中我們只知道小球最終進入了哪個杯子,中間的路線軌跡無從得知。
x取值於表示小球進入哪個杯子。y取值於表示小球進入杯子前最後一步走的是哪條線路。小球在3個木樁處走右邊側的概率分別是p=(p0,p1,p2)。跟上例中一樣,x表示訓練集觀測到的值,p是模型引數,而這裡的y就是"隱含變數"。
假如我們做了n次實驗,小球經過路徑0,1,2,3的次數依次是n0,n1,n2,n3,則:
帶隱含變數的mle
現在我們來考慮這個概率模型:pr(x,y;θ)。只有x是可觀察的,y和θ都是未知的。
經過一組實驗,我們觀察到x的一組取值x=(x1,x2,...,xl),則聯合概率為:
mle就是要求出最佳的引數θ*,使得:
這個時候要求θ*,」令一階求函式等於0「的方法已經行不通了,因為有隱含變數y的存在。實現上上式很難找到一種解析求法,不過一種迭代的爬山演算法可求解該問題。
expectation maximization
em是一種迭代演算法,它試圖找到一系列的估計引數θ(0),θ(1),θ(2),....使得訓練資料的marginal likelihood是不斷增加的,即:
演算法剛開始的時候θ(0)賦予隨機的值,每次迭代經歷乙個e-step和乙個m-step,迭代終止條件是θ(i+1)與θ(i)相等或十分相近。
e-step是在θ(i)已知的情況下計算x=x時y=y的後驗概率:
f(x|x)是乙個權值,它表示觀測值x在所有觀察結果x**現的頻率。
m-step:
其中在e-step已經求出來了。這時候可以用「令一階導數等於0」的方法求出θ'。
em演算法收斂性的證明需要用到jensen不等式,這裡略去不講。
舉例計算
就拿上文那個3個木樁的滾球實驗來說,做了n次實驗,滾進3個杯子的次數依次是na,nb,nc。
先給賦予乙個隨機的值。
e-step:
同時我們注意到
其它情況下y的後驗概率都為0。
m-step:
我們只需要計算非0項就可以了
上面的每行第3列和第4列相乘,最後再按行相加,就得到關於θ(i+1)的函式,分別對p0,p1,p2求偏導,令導數為0,可求出p'0,p'1,p'2。
這裡補充乙個求導公式:
我們這個例子非常簡單,計算θ(1)已經是最終的解了,當然你要計算出θ(2)才下此結論。
結束語對於一般的模型,em演算法需要經過若干次迭代才能收斂,因為在m-step依然是採用求導函式的方法,所以它找到的是極值點,即區域性最優解,而非全域性最優解。也正是因為em演算法具有區域性性,所以它找到的最終解跟初始值θ(0)的選取有很大關係。
在求解hmm的學習問題、確立高斯混合模型引數用的都是em演算法。
EM演算法 存在雜訊的EM演算法
1 em演算法的 r語言實現 步驟1 資料集準備及其描述 步驟2 構建em 演算法模型,指定分3類 步驟3 構建em 演算法模型,指定先驗概率 2 存在雜訊的 em演算法r語言實現 步驟1 資料集準備 set.seed 0 設定隨機種子 nnoise 100 dim faithful 解釋 runi...
EM演算法原理
在聚類中我們經常用到em演算法 i.e.estimation maximization 進行引數估計,在該演算法中我們通過函式的凹 凸性,在estimation和maximization兩步中迭代地進行引數估計,並保證可以演算法收斂,達到區域性最優解。ps 為了不在11.11這個吉祥的日子發blog...
EM演算法原理
在聚類中我們經常用到em演算法 i.e.expectation maximization 進行引數估計,在該演算法中我們通過函式的凹 凸性,在expectation 和maximization兩步中迭代地進行引數估計,並保證可以演算法收斂,達到區域性最優解。ps 為了不在11.11這個吉祥的日子發b...