相關文章:
機器學習 | 目錄
無監督學習 | GMM 高斯混合原理及Sklearn實現
本文大部分內容搬運自李航老師的《統計學習方法》[1] ,以給出 EM 算法較爲完整的定義。
EM 算法
EM 算法
是一種迭代算法,1977 年由 Dempster 等人總結提出,用於含有隱變量
(hidden variable)的概率模型參數的極大似然估計
,或極大後驗估計。
EM 算法的每次迭代由兩步組成:E 步 :求期望(expectation);M 步 :求極大(maximization)。所以這一算法稱爲期望極大算法
(expectation maximization algorithm, EM)。
1. EM 算法的引入
概率模型有時即含有觀測數據
(observable varible,已知),又含有隱變量
或潛在變量
(latent varible,未知),如果概率模型的變量都是觀測變量,那麼給定數據,可以直接使用極大似然估計,或貝葉斯估計法估計模型參數。但是,當模型含有隱變量時,就不能簡單地使用這些估計方法。EM 算法就是含有隱變量的概率模型參數的極大似然估計 。
三硬幣模型
假設有三枚硬幣,分別記作 A,B,C。這些硬幣正面出現的概率分別是 π \pi π ,p p p 和 q q q 。進行如下擲硬幣試驗:
先擲硬幣 A ,若爲正面則選硬幣 B ,若爲反面則選硬幣 C ;然後擲 A 選出的硬幣( B 或 C ),若爲正面則記作 1,若爲反面則記作 0,試驗結束。
獨立重複試驗 n n n 次(這裏 n = 10 n=10 n = 1 0 ),觀測結果如下:
1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 1,1,0,1,0,0,1,0,1,1 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1
假設只能觀測到擲硬幣的結果 ,不能觀測擲硬幣的過程 ,問如何估計三硬幣正面出現的概率,即三硬幣模型的參數。
解 三硬幣模型可以寫作:
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y (1)
\begin{aligned} P(y | \theta) &=\sum_{z} P(y, z | \theta)=\sum_{z} P(z | \theta) P(y | z, \theta) \\ &=\pi p^{y}(1-p)^{1-y}+(1-\pi) q^{y}(1-q)^{1-y} \end{aligned}
\tag{1} P ( y ∣ θ ) = z ∑ P ( y , z ∣ θ ) = z ∑ P ( z ∣ θ ) P ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y ( 1 )
這裏,隨機變量 y y y 是觀測變量 ,表示一次試驗觀測的結果是 1 或 0;隨機變量 z z z 是隱變量 ,表示未觀測到的擲硬幣 A 的結果;θ = ( π , p , q ) \theta=(\pi,p,q) θ = ( π , p , q ) 是模型參數。這一模型是以上數據的生成模型。注意,隨機變量 y y y 的數據可以觀測,隨機變量 z z z 的數據不可觀測 。
將觀測數據表示爲 Y = ( Y 1 , Y 2 , . . . , Y n ) T Y=(Y_1,Y_2,...,Y_n)^T Y = ( Y 1 , Y 2 , . . . , Y n ) T ,未觀測數據表示爲 Z = ( Z 1 , Z 2 , . . . , Z n ) T Z=(Z_1,Z_2,...,Z_n)^T Z = ( Z 1 , Z 2 , . . . , Z n ) T ,則觀測數據的似然函數爲:
P ( Y ∣ θ ) = ∑ Z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) (2) P(Y|\theta)=\sum_Z P(Z|\theta)P(Y|Z,\theta) \tag{2} P ( Y ∣ θ ) = Z ∑ P ( Z ∣ θ ) P ( Y ∣ Z , θ ) ( 2 )
即
P ( Y ∣ θ ) = ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] (3)
P(Y | \theta)=\prod_{j=1}^{n}\left[\pi p^{y_{j}}(1-p)^{1-y_{j}}+(1-\pi) q^{y_{j}}(1-q)^{1-y_{j}}\right] \tag{3}
P ( Y ∣ θ ) = j = 1 ∏ n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] ( 3 )
考慮求模型參數 θ = ( π , p , q ) \theta=(\pi,p,q) θ = ( π , p , q ) ,即:
θ ^ = a r g max θ l o g P ( Y ∣ θ ) (4) \hat{\theta}=arg \max \limits_{\theta} logP(Y|\theta) \tag{4} θ ^ = a r g θ max l o g P ( Y ∣ θ ) ( 4 )
這個問題沒有解析解,只有通過迭代的方法求解。EM 算法就是可以用於求解這個問題的一種迭代算法。下面給出針對以上問題的 EM 算法,其推導過程省略。
EM 算法首先選取參數的初值,記作 θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) \theta^{(0)}=(\pi^{(0)},p^{(0)},q^{(0)}) θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) ,然後通過下面的步驟迭代計算參數的估計值,直至收斂爲止。第 i i i 次迭代參數的估計值爲 θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) \theta^{(i)}=(\pi^{(i)},p^{(i)},q^{(i)}) θ ( i ) = ( π ( i ) , p ( i ) , q ( i ) ) 。EM 算法的第 i + 1 i+1 i + 1 次迭代如下:
E 步 :計算在模型參數 π ( i ) , p ( i ) , q ( i ) \pi^{(i)},p^{(i)},q^{(i)} π ( i ) , p ( i ) , q ( i ) 下觀測數據 y i y_i y i 來自擲硬幣 B 的概率:
μ ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j (5)
\mu^{(i+1)}=\frac{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}}{\pi^{(i)}\left(p^{(i)}\right)^{y_{j}}\left(1-p^{(i)}\right)^{1-y_{j}}+\left(1-\pi^{(i)}\right)\left(q^{(i)}\right)^{y_{j}}\left(1-q^{(i)}\right)^{1-y_{j}}}
\tag{5} μ ( i + 1 ) = π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j + ( 1 − π ( i ) ) ( q ( i ) ) y j ( 1 − q ( i ) ) 1 − y j π ( i ) ( p ( i ) ) y j ( 1 − p ( i ) ) 1 − y j ( 5 )
M 步 :計算模型參數的新估計值
π ( i + 1 ) = 1 n ∑ j = 1 n μ j ( i + 1 ) (6) \pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i+1)} \tag{6} π ( i + 1 ) = n 1 j = 1 ∑ n μ j ( i + 1 ) ( 6 )
p ( i + 1 ) = ∑ j = 1 n μ j ( i + 1 ) y j ∑ j = 1 n μ j ( i + 1 ) (7) p^{(i+1)}=\frac{\sum_{j=1}^{n} \mu_{j}^{(i+1)} y_{j}}{\sum_{j=1}^{n} \mu_{j}^{(i+1)}} \tag{7} p ( i + 1 ) = ∑ j = 1 n μ j ( i + 1 ) ∑ j = 1 n μ j ( i + 1 ) y j ( 7 )
q ( i + 1 ) = ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) y j ∑ j = 1 n (8) q^{(i+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right) y_{j}}{\sum_{j=1}^{n}} \tag{8} q ( i + 1 ) = ∑ j = 1 n ∑ j = 1 n ( 1 − μ j ( i + 1 ) ) y j ( 8 )
進行數字計算。假設模型參數的初值取爲:
π ( 0 ) = 0.5 , p ( 0 ) = 0.5 , q ( 0 ) = 0.5 \pi^{(0)}=0.5,\quad p^{(0)}=0.5,\quad q^{(0)}=0.5 π ( 0 ) = 0 . 5 , p ( 0 ) = 0 . 5 , q ( 0 ) = 0 . 5
由式 (5),對 y j = 1 y_j=1 y j = 1 與 y j = 0 y_j=0 y j = 0 均有 μ j ( 1 ) = 0.5 \mu_j^{(1)}=0.5 μ j ( 1 ) = 0 . 5 。
利用迭代公式 (6-8) ,得到:
π ( 1 ) = 0.5 , p ( 1 ) = 0.6 , q ( 1 ) = 0.6 \pi^{(1)}=0.5,\quad p^{(1)}=0.6,\quad q^{(1)}=0.6 π ( 1 ) = 0 . 5 , p ( 1 ) = 0 . 6 , q ( 1 ) = 0 . 6
由式 (5),
μ j ( 2 ) = 0.5 , j = 1 , 2 , . . . , 10 \mu_j^{(2)}=0.5, \quad j=1,2,...,10 μ j ( 2 ) = 0 . 5 , j = 1 , 2 , . . . , 1 0
繼續迭代,得:
π ( 2 ) = 0.5 , p ( 2 ) = 0.6 , q ( 2 ) = 0.6 \pi^{(2)}=0.5,\quad p^{(2)}=0.6,\quad q^{(2)}=0.6 π ( 2 ) = 0 . 5 , p ( 2 ) = 0 . 6 , q ( 2 ) = 0 . 6
可以看到參數以及收斂,於是得到模型參數 θ \theta θ 的極大似然估計:
π ^ = 0.5 , p ^ = 0.6 q ^ = 0.6 \hat{\pi}=0.5, \quad \hat{p}=0.6 \quad \hat{q}=0.6 π ^ = 0 . 5 , p ^ = 0 . 6 q ^ = 0 . 6
π = 0.5 \pi = 0.5 π = 0 . 5 表示硬幣 A 是均勻的,這一結果容易理解。
如果取初值π ( 0 ) = 0.5 , p ( 0 ) = 0.6 , q ( 0 ) = 0.7 \pi^{(0)}=0.5,\quad p^{(0)}=0.6,\quad q^{(0)}=0.7 π ( 0 ) = 0 . 5 , p ( 0 ) = 0 . 6 , q ( 0 ) = 0 . 7 ,那麼得到的模型參數的極大似然估計是 π ^ = 0.4064 , p ^ = 0.5368 q ^ = 0.6432 \hat{\pi}=0.4064, \quad \hat{p}=0.5368 \quad \hat{q}=0.6432 π ^ = 0 . 4 0 6 4 , p ^ = 0 . 5 3 6 8 q ^ = 0 . 6 4 3 2 。這就是說,EM 算法與初值的選擇有關,選擇不同的初值可能得到不同的參數估計值 。
一般地,用 Y Y Y 表示觀測隨機變量 的數據,Z Z Z 表示隱隨機變量 的數據。Y Y Y 和 Z Z Z 連在一起稱爲完全數據
(complete-data),觀測數據 Y Y Y 又稱爲不完全數據
(incomplete-data)。假設給定觀測數據 Y Y Y ,其概率分佈是 P ( Y ∣ θ ) P(Y|\theta) P ( Y ∣ θ ) ,其中 θ \theta θ 是需要估計的模型參數,那麼不完全數據 Y Y Y 的似然函數是 P ( Y ∣ θ ) P(Y|\theta) P ( Y ∣ θ ) ,對數似然函數爲 L ( θ ) = log P ( Y ∣ θ ) L(\theta)=\log P(Y|\theta) L ( θ ) = log P ( Y ∣ θ ) ;假設 Y Y Y 和 Z Z Z 的聯合概率分佈是 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P ( Y , Z ∣ θ ) ,那麼完全數據的對數似然函數是 log P ( Y , Z ∣ θ ) \log P(Y,Z|\theta) log P ( Y , Z ∣ θ ) 。
EM 算法通過迭代求 L ( θ ) = log P ( Y ∣ θ ) L(\theta)=\log P(Y|\theta) L ( θ ) = log P ( Y ∣ θ ) 的極大似然估計。每次迭代包含兩步:E 步,求期望;M 步,求極大化。
2. EM 算法
輸入 :觀測變量數據 Y Y Y ,隱變量數據 Z Z Z ,聯合分佈 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P ( Y , Z ∣ θ ) ,條件分佈 P ( Z ∣ Y . θ ) P(Z|Y.\theta) P ( Z ∣ Y . θ ) ;
輸出 ;模型參數 θ \theta θ 。
(1)選擇參數的初值 θ ( 0 ) \theta^{(0)} θ ( 0 ) ,開始迭代;
(2)E 步 :記 θ ( i ) \theta^{(i)} θ ( i ) 爲第 i i i 次迭代參數 θ \theta θ 的估計值,在第 i + 1 i+1 i + 1 次迭代的 E 步,計算:
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = ∑ Z log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) (9)
\begin{aligned} Q\left(\theta, \theta^{(i)}\right) &=E_{Z}\left[\log P(Y, Z | \theta) | Y, \theta^{(i)}\right] \\ &=\sum_{Z} \log P(Y, Z | \theta) P\left(Z | Y, \theta^{(i)}\right) \end{aligned} \tag{9}
Q ( θ , θ ( i ) ) = E Z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] = Z ∑ log P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ ( i ) ) ( 9 )
(3)M 步 :求使 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 極大化的 θ \theta θ ,確定第 i + 1 i+1 i + 1 次迭代的參數的估計值 θ ( i + 1 ) \theta^{(i+1)} θ ( i + 1 ) :
θ ( i + 1 ) = a r g max θ Q ( θ , θ ( i ) ) (10) \theta^{(i+1)}=arg \max \limits_{\theta} Q(\theta,\theta^{(i)}) \tag{10} θ ( i + 1 ) = a r g θ max Q ( θ , θ ( i ) ) ( 1 0 )
(4)重複第 (2-3) 步,直到收斂。
下面關於 EM 算法作幾點說明:
步驟 (1) 參數的初值可以任意選擇,但需注意 EM 算法對初值是敏感的 ;
步驟 (2) E 步求 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 。Q 函數式中 Z 是未觀測數據,Y 是觀測數據。注意,Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 的第 1 個表示要極大化的參數,第 2 個變元表示參數的當前估計值。每次迭代實際在求 Q 函數及其極大;
步驟 (3) M 步求 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 的極大化,得到 θ ( i + 1 ) \theta^{(i+1)} θ ( i + 1 ) ,完成一次迭代 θ ( i ) → θ ( i + 1 ) \theta^{(i)}\to \theta^{(i+1)} θ ( i ) → θ ( i + 1 ) ,且每次迭代使似然函數增大或達到局部極值;
步驟 (4) 給出停止迭代的條件,一般是對較小的正值 ε 1 , ε 2 \varepsilon_1,\varepsilon_2 ε 1 , ε 2 ,若滿足:
∥ θ ( i + 1 ) − θ ( i ) ∥ < ε 1 o r ∥ Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i ) , θ ( i ) ) ∥ < ε 2 (11)
\left\|\theta^{(i+1)}-\theta^{(i)}\right\|<\varepsilon_{1} \quad or \quad\left\|Q\left(\theta^{(i+1)}, \theta^{(i)}\right)-Q\left(\theta^{(i)}, \theta^{(i)}\right)\right\|<\varepsilon_{2}\tag{11}
∥ ∥ ∥ θ ( i + 1 ) − θ ( i ) ∥ ∥ ∥ < ε 1 o r ∥ ∥ ∥ Q ( θ ( i + 1 ) , θ ( i ) ) − Q ( θ ( i ) , θ ( i ) ) ∥ ∥ ∥ < ε 2 ( 1 1 )
則停止迭代。
式 (9) 的函數 Q ( θ , θ ( i ) ) Q(\theta,\theta^{(i)}) Q ( θ , θ ( i ) ) 是 EM 算法的核心,稱爲 Q 函數(Q function)。
Q 函數
完全數據的對數似然函數 log P ( Y , Z ∣ θ ) \log P(Y,Z|\theta) log P ( Y , Z ∣ θ ) 關於在給定觀測數據 Y Y Y 和當前參數 θ ( i ) \theta^{(i)} θ ( i ) 下對未觀測數據 Z 的條件概率分佈 P ( Z ∣ Y , θ ( i ) ) P(Z|Y,\theta^{(i)}) P ( Z ∣ Y , θ ( i ) ) 的期望稱爲 Q 函數
,即:
Q ( θ , θ ( i ) ) = E z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] (11)
Q\left(\theta, \theta^{(i)}\right)=E_{z}\left[\log P(Y, Z | \theta) | Y, \theta^{(i)}\right]
\tag{11} Q ( θ , θ ( i ) ) = E z [ log P ( Y , Z ∣ θ ) ∣ Y , θ ( i ) ] ( 1 1 )
參考文獻
[1] 周志華. 機器學習[M]. 北京: 清華大學出版社, 2016: 155-158.