機器學習 | EM 算法原理


相關文章:

機器學習 | 目錄

無監督學習 | 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。這些硬幣正面出現的概率分別是 π\pippqq。進行如下擲硬幣試驗:

先擲硬幣 A ,若爲正面則選硬幣 B ,若爲反面則選硬幣 C ;然後擲 A 選出的硬幣( B 或 C ),若爲正面則記作 1,若爲反面則記作 0,試驗結束。

獨立重複試驗 nn 次(這裏 n=10n=10),觀測結果如下:

1,1,0,1,0,0,1,0,1,11,1,0,1,0,0,1,0,1,1

假設只能觀測到擲硬幣的結果不能觀測擲硬幣的過程,問如何估計三硬幣正面出現的概率,即三硬幣模型的參數。

三硬幣模型可以寫作:

P(yθ)=zP(y,zθ)=zP(zθ)P(yz,θ)=πpy(1p)1y+(1π)qy(1q)1y(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}

這裏,隨機變量 yy觀測變量,表示一次試驗觀測的結果是 1 或 0;隨機變量 zz隱變量,表示未觀測到的擲硬幣 A 的結果;θ=(π,p,q)\theta=(\pi,p,q) 是模型參數。這一模型是以上數據的生成模型。注意,隨機變量 yy 的數據可以觀測,隨機變量 zz 的數據不可觀測

將觀測數據表示爲 Y=(Y1,Y2,...,Yn)TY=(Y_1,Y_2,...,Y_n)^T ,未觀測數據表示爲 Z=(Z1,Z2,...,Zn)TZ=(Z_1,Z_2,...,Z_n)^T,則觀測數據的似然函數爲:

P(Yθ)=ZP(Zθ)P(YZ,θ)(2)P(Y|\theta)=\sum_Z P(Z|\theta)P(Y|Z,\theta) \tag{2}

P(Yθ)=j=1n[πpyj(1p)1yj+(1π)qyj(1q)1yj](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,q)\theta=(\pi,p,q),即:

θ^=argmaxθlogP(Yθ)(4)\hat{\theta}=arg \max \limits_{\theta} logP(Y|\theta) \tag{4}

這個問題沒有解析解,只有通過迭代的方法求解。EM 算法就是可以用於求解這個問題的一種迭代算法。下面給出針對以上問題的 EM 算法,其推導過程省略。

EM 算法首先選取參數的初值,記作 θ(0)=(π(0),p(0),q(0))\theta^{(0)}=(\pi^{(0)},p^{(0)},q^{(0)}) ,然後通過下面的步驟迭代計算參數的估計值,直至收斂爲止。第 ii 次迭代參數的估計值爲 θ(i)=(π(i),p(i),q(i))\theta^{(i)}=(\pi^{(i)},p^{(i)},q^{(i)})。EM 算法的第 i+1i+1 次迭代如下:

E 步:計算在模型參數 π(i),p(i),q(i)\pi^{(i)},p^{(i)},q^{(i)} 下觀測數據 yiy_i 來自擲硬幣 B 的概率:

μ(i+1)=π(i)(p(i))yj(1p(i))1yjπ(i)(p(i))yj(1p(i))1yj+(1π(i))(q(i))yj(1q(i))1yj(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}

M 步:計算模型參數的新估計值

π(i+1)=1nj=1nμj(i+1)(6) \pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i+1)} \tag{6}

p(i+1)=j=1nμj(i+1)yjj=1nμ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}

q(i+1)=j=1n(1μj(i+1))yjj=1n(8) q^{(i+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(i+1)}\right) y_{j}}{\sum_{j=1}^{n}} \tag{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

由式 (5),對 yj=1y_j=1yj=0y_j=0 均有 μj(1)=0.5\mu_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

由式 (5),

μj(2)=0.5,j=1,2,...,10\mu_j^{(2)}=0.5, \quad j=1,2,...,10

繼續迭代,得:

π(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

可以看到參數以及收斂,於是得到模型參數 θ\theta 的極大似然估計:

π^=0.5,p^=0.6q^=0.6\hat{\pi}=0.5, \quad \hat{p}=0.6 \quad \hat{q}=0.6

π=0.5\pi = 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.4064,p^=0.5368q^=0.6432\hat{\pi}=0.4064, \quad \hat{p}=0.5368 \quad \hat{q}=0.6432 。這就是說,EM 算法與初值的選擇有關,選擇不同的初值可能得到不同的參數估計值


一般地,用 YY 表示觀測隨機變量的數據,ZZ 表示隱隨機變量的數據。YYZZ 連在一起稱爲完全數據(complete-data),觀測數據 YY 又稱爲不完全數據(incomplete-data)。假設給定觀測數據 YY,其概率分佈是 P(Yθ)P(Y|\theta),其中 θ\theta 是需要估計的模型參數,那麼不完全數據 YY 的似然函數是 P(Yθ)P(Y|\theta),對數似然函數爲 L(θ)=logP(Yθ)L(\theta)=\log P(Y|\theta);假設 YYZZ 的聯合概率分佈是 P(Y,Zθ)P(Y,Z|\theta),那麼完全數據的對數似然函數是 logP(Y,Zθ)\log P(Y,Z|\theta)

EM 算法通過迭代求 L(θ)=logP(Yθ)L(\theta)=\log P(Y|\theta) 的極大似然估計。每次迭代包含兩步:E 步,求期望;M 步,求極大化。

2. EM 算法

輸入:觀測變量數據 YY,隱變量數據 ZZ,聯合分佈 P(Y,Zθ)P(Y,Z|\theta),條件分佈 P(ZY.θ)P(Z|Y.\theta)

輸出;模型參數 θ\theta

(1)選擇參數的初值 θ(0)\theta^{(0)},開始迭代;

(2)E 步:記 θ(i)\theta^{(i)} 爲第 ii 次迭代參數 θ\theta 的估計值,在第 i+1i+1 次迭代的 E 步,計算:

Q(θ,θ(i))=EZ[logP(Y,Zθ)Y,θ(i)]=ZlogP(Y,Zθ)P(ZY,θ(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}

(3)M 步:求使 Q(θ,θ(i))Q(\theta,\theta^{(i)}) 極大化的 θ\theta,確定第 i+1i+1 次迭代的參數的估計值 θ(i+1)\theta^{(i+1)}

θ(i+1)=argmaxθQ(θ,θ(i))(10)\theta^{(i+1)}=arg \max \limits_{\theta} Q(\theta,\theta^{(i)}) \tag{10}

(4)重複第 (2-3) 步,直到收斂。


下面關於 EM 算法作幾點說明:

步驟 (1) 參數的初值可以任意選擇,但需注意 EM 算法對初值是敏感的

步驟 (2) E 步求 Q(θ,θ(i))Q(\theta,\theta^{(i)}) 。Q 函數式中 Z 是未觀測數據,Y 是觀測數據。注意,Q(θ,θ(i))Q(\theta,\theta^{(i)}) 的第 1 個表示要極大化的參數,第 2 個變元表示參數的當前估計值。每次迭代實際在求 Q 函數及其極大;

步驟 (3) M 步求 Q(θ,θ(i))Q(\theta,\theta^{(i)}) 的極大化,得到 θ(i+1)\theta^{(i+1)},完成一次迭代 θ(i)θ(i+1)\theta^{(i)}\to \theta^{(i+1)},且每次迭代使似然函數增大或達到局部極值;

步驟 (4) 給出停止迭代的條件,一般是對較小的正值 ε1,ε2\varepsilon_1,\varepsilon_2,若滿足:

θ(i+1)θ(i)<ε1orQ(θ(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}

則停止迭代。


式 (9) 的函數 Q(θ,θ(i))Q(\theta,\theta^{(i)}) 是 EM 算法的核心,稱爲 Q 函數(Q function)。

Q 函數

完全數據的對數似然函數 logP(Y,Zθ)\log P(Y,Z|\theta) 關於在給定觀測數據 YY 和當前參數 θ(i)\theta^{(i)} 下對未觀測數據 Z 的條件概率分佈 P(ZY,θ(i))P(Z|Y,\theta^{(i)}) 的期望稱爲 Q 函數,即:

Q(θ,θ(i))=Ez[logP(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}

參考文獻

[1] 周志華. 機器學習[M]. 北京: 清華大學出版社, 2016: 155-158.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章