EM算法,全稱爲Expectation Maximum Algorithm,是一個基礎算法,是很多機器學習領域算法的基礎(如HMM,LDA等)。EM算法是在概率模型中尋找參數最大似然估計或者最大後驗估計的算法,其中概率模型依賴於無法觀測的隱含變量。
它經過兩個步驟交替進行計算:
計算期望(E步),基於現有的模型參數(或者隨機初始化的模型)對隱含變量的值進行猜測(估計),利用隱含變量現有的估計值,計算其最大似然的估計值。
最大化(M步),最大化在E步上求得的最大似然值來計算參數的值。M步上找到的參數估計值被用於下一個E步計算中,這個過程不斷交替進行。
EM解決的問題
我們經常會從樣本觀察數據中,找出樣本的模型參數。其中最常用的就是最大似然估計。但是在一些情況下,我們觀察得到的數據有未觀察到的隱含數據,此時我們未知的有隱含數據和模型參數,因此無法直接使用最大似然估計。
EM算法解決這個問題的思路是使用啓發式的迭代方法。既然我們無法直接求出模型的參數,那麼我們可以先猜想隱含數據——E步,接着基於觀察數據和猜測的隱含數據一起來進行最大似然估計,進而求得我們模型分佈的參數——M步。由於我們之前的隱藏數據是猜測的,所以此時得到的模型參數並不一定是最好的結果。因此,我們基於當前得到的模型參數來繼續猜測隱含數據,然後進行最大似然估計求出模型分佈參數。以此類推,不斷迭代,直到模型分佈參數基本不變化或變化很小,算法收斂停止。
一個最直觀的EM算法是K-Means聚類算法 。在K-Means聚類時,每個聚類的質心可以看成是隱含數據。我們會假設K K K 個初始化質心,即EM算法的E步;然後計算每個樣本和K K K 個質心之間的距離,並把樣本聚類到最近的那個質心類中,即EM算法的M步。重複這個E步和M步質心不在變化爲止。
EM算法的數學基礎
極大似然估計
似然函數
在數理統計學中,似然函數是一種關於統計模型中參數的函數,表示模型參數中的似然性(某種事件發生的可能性)。顯然,極大似然就是最大可能性的意思。
多數情況下我們是根據已知條件來推算結果,而最大似然估計是已知結果來尋求使該結果出現的可能性最大的條件,以此作爲估計值。
假定已知某個參數B B B 時,推測事件A A A 發生的概率爲:
P ( A ∣ B ) = P ( A , B ) P ( B )
P(A|B) = \frac{P(A,B)}{P(B)}
P ( A ∣ B ) = P ( B ) P ( A , B )
由貝葉斯公式,可以得出:
P ( B ∣ A ) = P ( B ) ⋅ P ( A ∣ B ) P ( A )
P(B|A) = \frac{P(B)\cdot P(A|B)}{P(A)}
P ( B ∣ A ) = P ( A ) P ( B ) ⋅ P ( A ∣ B )
一般來說,事件A A A 發生的概率與某一未知參數B B B 有關,B B B 的取值不同,則事件A A A 發生的概率P ( A ∣ B ) P(A|B) P ( A ∣ B ) 也不同,當我們在一次試驗中事件A A A 發生了,則認爲此時的B ^ \hat B B ^ 值應該是B B B 的所有取值中使得P ( A ∣ B ) P(A|B) P ( A ∣ B ) 達到最大的那一個,極大似然估計法就是要選取這樣的B ^ \hat B B ^ 值作爲參數B B B 的估計值,使選取的樣本在被選的總體中出現的可能性爲最大。
直觀的例子: 設甲箱子中有99 99 9 9 個白球,1 1 1 個黑球;乙箱中有1 1 1 個白球,99 99 9 9 個黑球。現隨機取出一箱,再從抽取的一箱中隨機取出一球,結果是黑球,這一黑球從乙箱取出的概率比從甲箱取出的概率大的多,這時我們自然更多地相信這個黑球是取自乙箱的。
極大似然估計舉例
假設我們要調查我們學校的男生和女生的身高分佈。假設我們在校園裏隨機找了男女生分別100 100 1 0 0 個,共200 200 2 0 0 人。我們將他們按性別劃分爲兩組,然後先統計抽樣得到的100 100 1 0 0 個男生的身高。假設身高都服從正態分佈,但是分佈的參數均值μ \mu μ 和方差σ 2 \sigma^2 σ 2 我們不知道。這也正是我們所要估計得參數,記爲θ = [ μ , σ 2 ] T \theta = [\mu,\sigma^2]^T θ = [ μ , σ 2 ] T 。問題相當於已知樣本集X X X ,求P ( θ ∣ X ) P(\theta|X) P ( θ ∣ X )
**我們知道樣本所服從的概率分佈和模型的一些樣本,需要求解該模型的參數。**如圖:
下面我們通過使用最大似然估計來估計出我們模型的參數。
設樣本集X = x 1 , x 2 , . . . x N , N = 100 , P ( x i ∣ θ ) X = {x_1,x_2,...x_N},N=100,P(x_i|\theta) X = x 1 , x 2 , . . . x N , N = 1 0 0 , P ( x i ∣ θ ) 爲概率密度函數,表示抽到男生x i x_i x i (身高)的概率。我們一般假設每個樣本之間是獨立同分布的,所以我同時抽到他們的概率就是他們各自概率的乘積,也就是樣本集X X X 中各個樣本的聯合概率:
L ( θ ) = L ( x 1 , x 2 , . . . . x N ; θ ) = ∏ i = 1 N p ( x i ∣ θ )
L(\theta) = L(x_1,x_2,....x_N;\theta) = \prod_{i=1}^N p(x_i|\theta)
L ( θ ) = L ( x 1 , x 2 , . . . . x N ; θ ) = i = 1 ∏ N p ( x i ∣ θ )
通常情況下,因爲這裏的L ( θ ) L(\theta) L ( θ ) 是連乘的,所以我們一般取對數。
L ( θ ) = ∑ i = 1 N log p ( x i ∣ θ )
L(\theta) = \sum_{i = 1}^N \log p(x_i|\theta)
L ( θ ) = i = 1 ∑ N log p ( x i ∣ θ )
似然函數L ( θ ) L(\theta) L ( θ ) 反映了在概率密度函數的參數是θ \theta θ 時,得到樣本集X X X 的概率。我們需要找到這樣一個參數θ ^ \hat\theta θ ^ ,使抽到X X X 這組樣本的概率最大,也就是需要其對應的似然函數L ( θ ) L(\theta) L ( θ ) 最大。滿足這樣條件的θ ^ \hat\theta θ ^ 叫做θ \theta θ 的最大似然估計量,記爲:
θ ^ = arg max θ L ( θ )
\hat\theta = \arg \max_\theta L(\theta)
θ ^ = arg θ max L ( θ )
極大似然估計步驟 :
寫出似然函數;
取對數得到對數似然函數並整理
求導數,令其導數爲0 0 0 得到似然方程
解似然方程,得到的參數即爲所求
Jensen不等式
設f f f 是定義域爲實數的函數,如果對於所有的實數x x x ,f ( x ) f(x) f ( x ) 的二次導數大於等於0 0 0 ,那麼f f f 是凸函數 。當x x x 是向量時,如果Hessian矩陣H H H 是半正定的(H > = 0 H>=0 H > = 0 ),那麼f f f 是凸函數。如果f ′ ′ ( x ) > 0 , H > 0 f''(x) > 0,H>0 f ′ ′ ( x ) > 0 , H > 0 ,那麼是嚴格的凸函數。
Jensen不等式 :如果f f f 是凸函數,X X X 是隨機變量,那麼有E [ f ( X ) ] > = f ( E [ X ] ) E[f(X)] >= f(E[X]) E [ f ( X ) ] > = f ( E [ X ] ) ,也就是函數的期望大於等於期望的函數 。特別地,如果f f f 是嚴格的凸函數,那麼E [ f ( x ) ] = f ( E [ x ] ) E[f(x)] = f(E[x]) E [ f ( x ) ] = f ( E [ x ] ) 當且僅當P ( X = E [ X ] ) = 1 P(X = E[X]) = 1 P ( X = E [ X ] ) = 1 時成立,也就是說X X X 是常數。
對於凹函數 ,不等號方向反向 E [ f ( X ) ] < = f ( E [ X ] ) E[f(X)] <= f(E[X]) E [ f ( X ) ] < = f ( E [ X ] ) 。
如圖:
圖中實現f f f 是凸函數,X X X 是隨機變量,有0.5 0.5 0 . 5 的概率是a a a ,有0.5 0.5 0 . 5 的概率是b b b 。X X X 的期望值就是a a a 和b b b 的中值了,從上圖中我們可以看到E [ f ( x ) ] > = f ( E [ x ] ) E[f(x)] >= f(E[x]) E [ f ( x ) ] > = f ( E [ x ] ) 成立。
EM算法
問題描述
極大似然估計用一句話概括就是:知道結果X X X ,反推模型參數θ \theta θ 。
對於上面我們舉的男女身高的例子,極大似然估計的目標就是根據男女分別100 100 1 0 0 個身高樣本,來分別估計男女生身高的正態分佈的參數μ 1 , σ 1 , μ 2 , σ 2 \mu_1,\sigma_1,\mu_2,\sigma_2 μ 1 , σ 1 , μ 2 , σ 2 。但是極大似然估計面臨的概率分佈只有一個或者知道結果是通過哪個概率分佈實現的,只不過你不知道這個概率分佈的參數。現在我們讓情況更復雜一些:
我們挑選的這200 200 2 0 0 人混在一起了,也就是說我們擁有200 200 2 0 0 人的身高數據,但是我們不知道每個人是男生還是女生,此時的男女性別就像是一個隱變量(latent variable) 。
通常來說,我們只有精確的知道了男女生身高的正態分佈參數,才能更好的知道每一個人是男生和女生哪個概率更大一些。但是反過來,我們必須知道每個人是男生還是女生才能用最大似然估計儘可能準確地估計男女各自身高的正態分佈參數。
EM算法就是爲了解決這種問題而存在的。
EM算法中的隱變量
一般的用X X X 表示觀測到的隨機變量的數據,Z Z Z 表示隱隨機變量的數據(因爲我們觀測不到結果是從哪個概率分佈中得出的,所以將這個叫做隱變量,它一般是離散的)。X X X 和Z Z Z 連在一起稱爲完全數據,單獨一個X X X 我們稱爲觀測數據。
其實我們可以發現,我們所面臨的問題其實就是Z Z Z 是未知的,如果隱變量Z Z Z 已知,那麼問題就可以用極大似然估計來求解了。因此,EM算法的基本思想就是:
先給模型參數θ \theta θ 一個隨機初始化的初值θ 0 \theta_0 θ 0
根據模型參數θ \theta θ 和給定的觀測數據,求未觀測數據z z z 的條件概率分佈期望
利用上一步已經求出的z z z ,進行極大似然估計,得到更優的θ ′ \theta' θ ′
不斷進行2,3步的迭代,直到收斂
EM算法的另一個例子-拋硬幣
如上圖,現在我們拋兩枚硬幣A A A 和B B B ,如果知道每次拋的是A A A 還是B B B ,那麼就直接可以估計每種硬幣的參數θ A , θ B \theta_A,\theta_B θ A , θ B (正面朝上的概率)。如果我們只觀測到5 5 5 輪循環,每輪拋硬幣10 10 1 0 次,而並不知道每輪是拋的哪個硬幣(這就是隱變量),那麼我們就無法直接估計參數θ A , θ B \theta_A,\theta_B θ A , θ B 。這時我們可以使用EM算法,先對參數θ A , θ B \theta_A,\theta_B θ A , θ B 進行隨機初始化,然後根據模型參數去計算隱變量的條件概率。比如對於第一組數據“HTTTHHTHTH”,爲A A A 的可能性爲:0. 6 5 × ( 1 − 0.6 ) 5 0.6^5 \times (1-0.6)^5 0 . 6 5 × ( 1 − 0 . 6 ) 5 ,爲B B B 的可能性爲:0. 5 5 × 0. 5 5 0.5^5\times0.5^5 0 . 5 5 × 0 . 5 5 ,二者進行歸一化得出隱變量有0.45 0.45 0 . 4 5 的概率是硬幣A A A ,有0.55 0.55 0 . 5 5 的概率是硬幣B B B 。得到隱變量z z z 後我們可以去進行M步計算極大似然估計求得更好的θ ′ \theta' θ ′ ,…以此類推。
EM算法的推導
對m m m 個樣本觀察數據x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) x=(x^{(1)},x^{(2)},...x^{(m)}) x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) 中,找出樣本的模型參數θ \theta θ ,最大化模型分佈的對數似然函數如下:
θ = a r g max θ ∑ i = 1 m l o g P ( x ( i ) ; θ )
\theta = arg \max \limits_{\theta}\sum\limits_{i=1}^m logP(x^{(i)};\theta)
θ = a r g θ max i = 1 ∑ m l o g P ( x ( i ) ; θ )
如果我們得到的觀察數據有未觀察到的隱含數據z = ( z ( 1 ) , z ( 2 ) , . . . z ( m ) ) z=(z^{(1)},z^{(2)},...z^{(m)}) z = ( z ( 1 ) , z ( 2 ) , . . . z ( m ) ) ,此時我們模型的最大化(極大化)模型分佈的對數似然函數如下:
θ = a r g max θ ∑ i = 1 m l o g P ( x ( i ) ; θ ) = a r g max θ ∑ i = 1 m l o g ∑ z ( i ) P ( x ( i ) , z ( i ) ; θ )
\theta = arg \max \limits_{\theta}\sum\limits_{i=1}^m logP(x^{(i)};\theta) = arg \max \limits_{\theta}\sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta)
θ = a r g θ max i = 1 ∑ m l o g P ( x ( i ) ; θ ) = a r g θ max i = 1 ∑ m l o g z ( i ) ∑ P ( x ( i ) , z ( i ) ; θ )
對於參數估計,我們本質上還是想獲得一個使似然函數最大化的那個參數θ \theta θ ,現在的上式與之前不同的是我們似然函數之中多了一個未知的變量z z z 。也就是說我們的目標是找到合適的θ \theta θ 和z z z 使得似然函數最大。那我們也許會想,僅僅是多了個未知變量而已,我們也可以分別對θ \theta θ 和z z z 求偏導,再令其爲0 0 0 ,求出對應的解即可。但是,這裏我們看到上式包含了“和”的對數,求導之後的形式非常複雜,所以很難求出對應的解析解。因此EM算法採用了一些技巧,讓我們接着往下看。
∑ i = 1 m l o g ∑ z ( i ) P ( x ( i ) , z ( i ) ; θ ) = ∑ i = 1 m l o g ∑ z ( i ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ≥ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) (1)
\begin{aligned} \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta) & = \sum\limits_{i=1}^m log\sum\limits_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \\ & \geq \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \end{aligned}
\tag{1}
i = 1 ∑ m l o g z ( i ) ∑ P ( x ( i ) , z ( i ) ; θ ) = i = 1 ∑ m l o g z ( i ) ∑ Q i ( z ( i ) ) Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) ≥ i = 1 ∑ m z ( i ) ∑ Q i ( z ( i ) ) l o g Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) ( 1 )
第一步我們引入了一個未知分佈(隱變量z z z 的概率分佈)Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) ,其中∑ z ( i ) Q i ( z ( i ) ) = 1 \sum_{z^(i)}Q_i(z^{(i)}) = 1 ∑ z ( i ) Q i ( z ( i ) ) = 1 。(這一步其實我們什麼都沒有做,只是對分子分母進行了縮放)。
第二步我們使用的是上面我們提到過的J e n s e n Jensen J e n s e n 不等式。因爲這裏log \log log 函數是一個凹函數(二次導師爲− 1 x 2 \frac{-1}{x^2} x 2 − 1 ),所以根據Jensen不等式我們有E [ f ( x ) ] ≤ f ( E [ x ] ) E[f(x)] \leq f(E[x]) E [ f ( x ) ] ≤ f ( E [ x ] ) 。至此,我們就將“和”的對數變爲了對數的“和”,再求導就很容易了。
上式中的∑ z ( i ) Q i ( z ( i ) ) log P ( x i , z ( i ) ; θ ) Q i ( z ( i ) ) \sum\limits_{z^{(i)}}Q_i(z^{(i)})\log\frac{P(x_i,z^{(i)};\theta)}{Q_i(z^{(i)})} z ( i ) ∑ Q i ( z ( i ) ) log Q i ( z ( i ) ) P ( x i , z ( i ) ; θ ) ,其實就是函數log P ( x i , z ( i ) ; θ ) Q i ( z ( i ) ) \log\frac{P(x_i,z^{(i)};\theta)}{Q_i(z^{(i)})} log Q i ( z ( i ) ) P ( x i , z ( i ) ; θ ) 關於Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) 的期望。爲什麼?回想期望公式中的lazy Statistician規則如下:
設Y Y Y 是隨機變量X X X 的函數Y = g ( X ) Y = g(X) Y = g ( X ) (g g g 是連續函數),那麼
X X X 是離散型隨機變量,它的分佈律爲P ( X = x k ) = p k , k = 1 , 2 , … P(X = x_k) = p_k,k = 1,2,\dots P ( X = x k ) = p k , k = 1 , 2 , … ,
∑ k = 1 ∞ g ( x k ) p k \sum\limits_{k = 1}^{\infty}g(x_k)p_k k = 1 ∑ ∞ g ( x k ) p k 絕對收斂,則有E ( Y ) = E ( g ( X ) ) = ∑ k = 1 ∞ g ( x k ) p k E(Y) = E(g(X)) = \sum\limits_{k
= 1}^{\infty}g(x_k)p_k E ( Y ) = E ( g ( X ) ) = k = 1 ∑ ∞ g ( x k ) p k 。
X X X 是連續型隨機變量,它的概率密度爲f ( x ) f(x) f ( x ) ,若∫ ∞ ∞ g ( x ) f ( x ) d x \int\limits_{
\infty}^{\infty}g(x)f(x)dx ∞ ∫ ∞ g ( x ) f ( x ) d x 絕對收斂,則有E ( Y ) = E ( g ( X ) ) = ∫ ∞ ∞ g ( x ) f ( x ) d x E(Y) = E(g(X)) = \int\limits_{
\infty}^{\infty}g(x)f(x)dx E ( Y ) = E ( g ( X ) ) = ∞ ∫ ∞ g ( x ) f ( x ) d x .
考慮到E ( X ) = ∑ x ⋅ p ( x ) E(X) = \sum x\cdot p(x) E ( X ) = ∑ x ⋅ p ( x ) ,則有E ( f ( x ) ) = ∑ f ( x ) ⋅ p ( x ) E(f(x)) = \sum f(x)\cdot p(x) E ( f ( x ) ) = ∑ f ( x ) ⋅ p ( x ) ,又因爲有∑ z ( i ) Q i ( z ( i ) ) = 1 \sum\limits_{z^{(i)}}Q_i(z^{(i)}) = 1 z ( i ) ∑ Q i ( z ( i ) ) = 1 ,所以我們可以使用Jensen不等式得到(1)式中的不等式:
f ( E Q i ( z ( i ) ) [ P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ] ) ≥ E Q i ( z ( i ) ) [ f ( P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) ) ]
f\left(E_{Q_i(z^{(i)})}\left[\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \right]\right) \geq E_{Q_i(z^{(i)})}\left[f\left(\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} \right)\right]
f ( E Q i ( z ( i ) ) [ Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) ] ) ≥ E Q i ( z ( i ) ) [ f ( Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) ) ]
到這裏我們就應該很清楚了,但是我們大家可能發現這裏是一個不等號 ,而我們是想求得似然函數的最大值 ,那麼應該怎麼辦呢?
其實上式(1)相當於對似然函數求了下界 ,因此我們可以通過調整使得下界不斷的變大從而似然函數也不斷的變大,以逼近真實值。那麼什麼時候調整好了呢?當不等式等於等式時說明二者已經等價了。如圖:
我們先固定θ \theta θ ,調整Q ( z ) Q(z) Q ( z ) 使得下界J ( z , Q ) J(z,Q) J ( z , Q ) 上升至與L ( θ ) L(\theta) L ( θ ) 在此θ \theta θ 處相等(綠色曲線到藍色曲線),然後固定Q ( z ) Q(z) Q ( z ) ,調整θ \theta θ 使當前的下界J ( z , Q ) J(z,Q) J ( z , Q ) 達到最大值(θ t \theta_t θ t 到θ t + 1 \theta_{t + 1} θ t + 1 ),然後再固定θ t \theta_t θ t ,調整Q ( z ) Q(z) Q ( z ) 使下界和L ( θ ) L(\theta) L ( θ ) 相等,。。。直到收斂到似然函數L ( θ ) L(\theta) L ( θ ) 的最大值處θ ′ \theta' θ ′ 。
那麼等式成立的條件是什麼呢?
根據Jensen不等式中等式成立的條件X X X 爲常數,這裏等式成立的條件爲:
P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) ) = c , c 爲 常 數
\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})} =c, c爲常數
Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ ) = c , c 爲 常 數
由於Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) 是一個未知的分佈且有∑ z ( i ) Q i ( z ( i ) ) = 1 \sum\limits_{z^{(i)}}Q_i(z^{(i)}) =1 z ( i ) ∑ Q i ( z ( i ) ) = 1 ,因此我們可以進行一個變換:
∑ z ( i ) P ( x ( i ) , z ( i ) ; θ ) = ∑ z ( i ) Q i ( z ( i ) ) c
\sum\limits_{z^{(i)}}P(x^{(i)},z^{(i)};\theta) = \sum\limits_{z^{(i)}}Q_i(z^{(i)})c
z ( i ) ∑ P ( x ( i ) , z ( i ) ; θ ) = z ( i ) ∑ Q i ( z ( i ) ) c
也就是 :
∑ z ( i ) P ( x ( i ) , z ( i ) ; θ ) = c
\sum\limits_{z^{(i)}}P(x^{(i)},z^{(i)};\theta) = c
z ( i ) ∑ P ( x ( i ) , z ( i ) ; θ ) = c
因此我們可以得到:
Q i ( z ( i ) ) = P ( x ( i ) , z ( i ) ; θ ) c = P ( x ( i ) , z ( i ) ; θ ) ∑ z ( i ) P ( x ( i ) , z ( i ) ; θ ) = P ( x ( i ) , z ( i ) ; θ ) P ( x ( i ) ; θ ) = P ( z ( i ) ∣ x ( i ) ; θ )
\begin{aligned}
Q_i(z^{(i)}) &= \frac{P(x^{(i)},z^{(i)};\theta)}{c}\\
&= \frac{P(x^{(i)},z^{(i)};\theta)}{\sum\limits_{z^{(i)}}P(x^{(i)},z^{(i)};\theta)}\\
&=\frac{P(x^{(i)},z^{(i)};\theta)}{P(x^{(i)};\theta)} \\
&= P(z^{(i)}|x^{(i)};\theta)
\end{aligned}
Q i ( z ( i ) ) = c P ( x ( i ) , z ( i ) ; θ ) = z ( i ) ∑ P ( x ( i ) , z ( i ) ; θ ) P ( x ( i ) , z ( i ) ; θ ) = P ( x ( i ) ; θ ) P ( x ( i ) , z ( i ) ; θ ) = P ( z ( i ) ∣ x ( i ) ; θ )
至此,我們推出了在固定θ \theta θ 之後,Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) 如何選擇的問題——使下界拉昇的Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) 的計算公式就是條件概率(後驗概率)。這一步就是E E E 步,固定θ \theta θ ,建立L ( θ ) L(\theta) L ( θ ) 的下界,並求得使L ( θ ) L(\theta) L ( θ ) 等於下界J ( z , Q ) J(z,Q) J ( z , Q ) 時等號成立的Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) .
接下來是M M M 步,就是在E E E 步求出Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) 後,固定Q i Q_i Q i ,調整 θ \theta θ ,去最大化下界J ( z , Q ) J(z,Q) J ( z , Q ) ,畢竟在固定Q i ( z ( i ) ) Q_i(z^{(i)}) Q i ( z ( i ) ) 後,下界還可以更大。
即在M M M 步我們需要最大化下式:
a r g max θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) )
arg \max \limits_{\theta} \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{(i)}, z^{(i)};\theta)}{Q_i(z^{(i)})}
a r g θ max i = 1 ∑ m z ( i ) ∑ Q i ( z ( i ) ) l o g Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ )
由於M M M 步我們固定Q i Q_i Q i ,所以去掉上式中的常數部分,則我們需要極大化的對數似然下界 爲:
a r g max θ ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ )
arg \max \limits_{\theta} \sum\limits_{i=1}^m \sum\limits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)}, z^{(i)};\theta)}
a r g θ max i = 1 ∑ m z ( i ) ∑ Q i ( z ( i ) ) l o g P ( x ( i ) , z ( i ) ; θ )
至此,我們應該理解了EM算法中E步和M步的具體含義。
EM算法的流程
輸入:觀察數據x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) x=(x^{(1)},x^{(2)},...x^{(m)}) x = ( x ( 1 ) , x ( 2 ) , . . . x ( m ) ) ,聯合分佈p ( x , z ; θ ) p(x,z ;\theta) p ( x , z ; θ ) ,條件分佈p ( z ∣ x ; θ ) p(z|x; \theta) p ( z ∣ x ; θ ) ,最大迭代次數J J J 。
隨機的初始化模型參數θ \theta θ 爲θ 0 \theta_0 θ 0
for j from 1 to J開始EM算法迭代:
a) E步: 計算聯合分佈的條件概率期望:
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) ; θ ) L ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) Q i ( z ( i ) ) log P ( x ( i ) , z ( i ) ; θ )
Q_i(z^{(i)}) = P(z^{(i)}|x^{(i);\theta}) \\
L(\theta,\theta^j) = \sum\limits_{i = 1}^m\sum\limits_{z^{(i)}} Q_i(z^{(i)})\log P(x^{(i)},z^{(i)};\theta)
Q i ( z ( i ) ) = P ( z ( i ) ∣ x ( i ) ; θ ) L ( θ , θ j ) = i = 1 ∑ m z ( i ) ∑ Q i ( z ( i ) ) log P ( x ( i ) , z ( i ) ; θ )
b) M步: 固定Q i Q_i Q i ,極大化L ( θ , θ j ) L(\theta,\theta^j) L ( θ , θ j ) :
θ j + 1 = a r g max θ L ( θ , θ j )
\theta^{j+1} = arg \max \limits_{\theta}L(\theta, \theta^{j})
θ j + 1 = a r g θ max L ( θ , θ j )
c) 如果θ j + 1 \theta^{j + 1} θ j + 1 已收斂,則算法結束。否則繼續回到步驟a)進行E步迭代。
輸出:模型參數θ \theta θ
EM算法收斂性的證明
關於EM算法收斂性的證明,我們覺得B站上shuhuai008給出的兩種方法非常直觀https://www.bilibili.com/video/av31906558/?p=2
https://www.bilibili.com/video/av31906558/?p=3
EM算法的流程並不複雜,但是還是有兩個問題需要我們思考:
EM算法能保證收斂嗎?
EM算法如果保證收斂,那麼保證能收斂到全局最優解嗎?
要證明EM算法的收斂性,我們要證明我們的對數似然函數的值在迭代過程中值在增大。 即:
∑ i = 1 m l o g P ( x ( i ) ; θ j + 1 ) ≥ ∑ i = 1 m l o g P ( x ( i ) ; θ j )
\sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) \geq \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j})
i = 1 ∑ m l o g P ( x ( i ) ; θ j + 1 ) ≥ i = 1 ∑ m l o g P ( x ( i ) ; θ j )
也就是說,如果最大似然函數的值一直在增加,那麼最終我們會達到最大似然估計得最大值。
由於
L ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) ) l o g P ( x ( i ) , z ( i ) ; θ )
L(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j}))log{P(x^{(i)}, z^{(i)};\theta)}
L ( θ , θ j ) = i = 1 ∑ m z ( i ) ∑ P ( z ( i ) ∣ x ( i ) ; θ j ) ) l o g P ( x ( i ) , z ( i ) ; θ )
令:
H ( θ , θ j ) = ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) ) l o g P ( z ( i ) ∣ x ( i ) ; θ )
H(\theta, \theta^{j}) = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j}))log{P( z^{(i)}|x^{(i)};\theta)}
H ( θ , θ j ) = i = 1 ∑ m z ( i ) ∑ P ( z ( i ) ∣ x ( i ) ; θ j ) ) l o g P ( z ( i ) ∣ x ( i ) ; θ )
上面兩式相減得到:
∑ i = 1 m l o g P ( x ( i ) ; θ ) = L ( θ , θ j ) − H ( θ , θ j ) \sum\limits_{i=1}^m logP(x^{(i)};\theta) = L(\theta, \theta^{j}) - H(\theta, \theta^{j})
i = 1 ∑ m l o g P ( x ( i ) ; θ ) = L ( θ , θ j ) − H ( θ , θ j )
在上式中分別取θ \theta θ 爲θ j \theta^j θ j 和θ j + 1 \theta^{j + 1} θ j + 1 並相減得到:
∑ i = 1 m l o g P ( x ( i ) ; θ j + 1 ) − ∑ i = 1 m l o g P ( x ( i ) ; θ j ) = [ L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ] − [ H ( θ j + 1 , θ j ) − H ( θ j , θ j ) ]
\sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) - \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j}) = [L(\theta^{j+1}, \theta^{j}) - L(\theta^{j}, \theta^{j}) ] -[H(\theta^{j+1}, \theta^{j}) - H(\theta^{j}, \theta^{j}) ]
i = 1 ∑ m l o g P ( x ( i ) ; θ j + 1 ) − i = 1 ∑ m l o g P ( x ( i ) ; θ j ) = [ L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ] − [ H ( θ j + 1 , θ j ) − H ( θ j , θ j ) ]
要證明EM算法的收斂性,我們只需要證明上式的右邊是非負的即可。
由於θ j + 1 \theta^{j + 1} θ j + 1 使得L ( θ , θ j ) L(\theta, \theta^{j}) L ( θ , θ j ) 極大,因此有:
L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ≥ 0
L(\theta^{j+1}, \theta^{j}) - L(\theta^{j}, \theta^{j}) \geq 0
L ( θ j + 1 , θ j ) − L ( θ j , θ j ) ≥ 0
而對於第二部分,我們有:
H ( θ j + 1 , θ j ) − H ( θ j , θ j ) = ∑ i = 1 m ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) l o g P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) P ( z ( i ) ∣ x ( i ) ; θ j ) ≤ ∑ i = 1 m l o g ( ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j ) P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) P ( z ( i ) ∣ x ( i ) ; θ j ) ) = ∑ i = 1 m l o g ( ∑ z ( i ) P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) ) = 0
\begin{aligned} H(\theta^{j+1}, \theta^{j}) - H(\theta^{j}, \theta^{j}) & = \sum\limits_{i=1}^m\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j})log\frac{P( z^{(i)}|x^{(i)};\theta^{j+1})}{P( z^{(i)}|x^{(i)};\theta^j)} \\ & \leq \sum\limits_{i=1}^mlog(\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j})\frac{P( z^{(i)}|x^{(i)};\theta^{j+1})}{P( z^{(i)}|x^{(i)};\theta^j)}) \\ & = \sum\limits_{i=1}^mlog(\sum\limits_{z^{(i)}}P( z^{(i)}|x^{(i)};\theta^{j+1})) = 0 \end{aligned}
H ( θ j + 1 , θ j ) − H ( θ j , θ j ) = i = 1 ∑ m z ( i ) ∑ P ( z ( i ) ∣ x ( i ) ; θ j ) l o g P ( z ( i ) ∣ x ( i ) ; θ j ) P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) ≤ i = 1 ∑ m l o g ( z ( i ) ∑ P ( z ( i ) ∣ x ( i ) ; θ j ) P ( z ( i ) ∣ x ( i ) ; θ j ) P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) ) = i = 1 ∑ m l o g ( z ( i ) ∑ P ( z ( i ) ∣ x ( i ) ; θ j + 1 ) ) = 0
其中第(4)式用到了Jensen不等式,只不過和第二節的使用相反而已,第(5)式用到了概率分佈累積爲1的性質。
至此,我們得到了:∑ i = 1 m l o g P ( x ( i ) ; θ j + 1 ) − ∑ i = 1 m l o g P ( x ( i ) ; θ j ) ≥ 0 \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j+1}) - \sum\limits_{i=1}^m logP(x^{(i)};\theta^{j}) \geq 0 i = 1 ∑ m l o g P ( x ( i ) ; θ j + 1 ) − i = 1 ∑ m l o g P ( x ( i ) ; θ j ) ≥ 0 ,證明了EM算法的收斂性。
從上面的推導可以看出,EM算法可以保證收斂到一個穩定點,d但是卻不能保證收斂到全局極大值點,因此它是局部最優的算法。 當然如果我們的優化目標L ( θ , θ j ) L(\theta, \theta^{j}) L ( θ , θ j ) 是凸的,則EM算法可以保證收斂到全局最大值,這點和梯度下降法這樣的迭代算法相同。
EM算法的另一種解釋
如果我們定義:
J ( Q , θ ) = ∑ i ∑ z ( i ) Q i ( z ( i ) ) log P ( x ( i ) , z ( i ) ; θ ) Q i ( z ( i ) )
J(Q,\theta) = \sum\limits_i\sum\limits_{z^{(i)}}Q_i(z^{(i)})\log \frac{P(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}
J ( Q , θ ) = i ∑ z ( i ) ∑ Q i ( z ( i ) ) log Q i ( z ( i ) ) P ( x ( i ) , z ( i ) ; θ )
從前面的推導我們知道L ( θ ) ≥ J ( Q , θ ) L(\theta) \geq J(Q,\theta) L ( θ ) ≥ J ( Q , θ ) ,EM可以看作是座標上升法,E步固定θ \theta θ ,優化Q Q Q ;M步固定Q Q Q ,優化θ \theta θ 。
座標上升法(Coordinate ascent):
圖中的直線式迭代優化的路徑,可以看到每一步都會向最優值前進一步,而且前進路線是平行於座標軸的,因爲每一步只優化一個變量。
這猶如在x-y座標系中找一個曲線的極值,然而曲線函數不能直接求導,因此什麼梯度下降方法就不適用了。但固定一個變量後,另外一個可以通過求導得到,因此可以使用座標上升法,一次固定一個變量,對另外的求極值,最後逐步逼近極值。
對應到EM上,就是:**E步:固定θ,優化Q;M步:固定Q,優化θ;交替將極值推向最大。 **
Reference