机器学习 | EM 算法原理
文章目錄
- EM 算法
- 1. EM 算法的引入
- 三硬幣模型
- 2. EM 算法
- Q 函數(shù)
- 參考文獻(xiàn)
相關(guān)文章:
機(jī)器學(xué)習(xí) | 目錄
無(wú)監(jiān)督學(xué)習(xí) | GMM 高斯混合原理及Sklearn實(shí)現(xiàn)
本文大部分內(nèi)容搬運(yùn)自李航老師的《統(tǒng)計(jì)學(xué)習(xí)方法》[1],以給出 EM 算法較為完整的定義。
EM 算法
EM 算法是一種迭代算法,1977 年由 Dempster 等人總結(jié)提出,用于含有隱變量(hidden variable)的概率模型參數(shù)的極大似然估計(jì),或極大后驗(yàn)估計(jì)。
EM 算法的每次迭代由兩步組成:E 步:求期望(expectation);M 步:求極大(maximization)。所以這一算法稱為期望極大算法(expectation maximization algorithm, EM)。
1. EM 算法的引入
概率模型有時(shí)即含有觀測(cè)數(shù)據(jù)(observable varible,已知),又含有隱變量或潛在變量(latent varible,未知),如果概率模型的變量都是觀測(cè)變量,那么給定數(shù)據(jù),可以直接使用極大似然估計(jì),或貝葉斯估計(jì)法估計(jì)模型參數(shù)。但是,當(dāng)模型含有隱變量時(shí),就不能簡(jiǎn)單地使用這些估計(jì)方法。EM 算法就是含有隱變量的概率模型參數(shù)的極大似然估計(jì)。
三硬幣模型
假設(shè)有三枚硬幣,分別記作 A,B,C。這些硬幣正面出現(xiàn)的概率分別是 π\(zhòng)piπ,ppp 和 qqq。進(jìn)行如下擲硬幣試驗(yàn):
先擲硬幣 A ,若為正面則選硬幣 B ,若為反面則選硬幣 C ;然后擲 A 選出的硬幣( B 或 C ),若為正面則記作 1,若為反面則記作 0,試驗(yàn)結(jié)束。
獨(dú)立重復(fù)試驗(yàn) nnn 次(這里 n=10n=10n=10),觀測(cè)結(jié)果如下:
1,1,0,1,0,0,1,0,1,11,1,0,1,0,0,1,0,1,11,1,0,1,0,0,1,0,1,1
假設(shè)只能觀測(cè)到擲硬幣的結(jié)果,不能觀測(cè)擲硬幣的過(guò)程,問(wèn)如何估計(jì)三硬幣正面出現(xiàn)的概率,即三硬幣模型的參數(shù)。
解 三硬幣模型可以寫作:
P(y∣θ)=∑zP(y,z∣θ)=∑zP(z∣θ)P(y∣z,θ)=πpy(1?p)1?y+(1?π)qy(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,θ)=πpy(1?p)1?y+(1?π)qy(1?q)1?y?(1)
這里,隨機(jī)變量 yyy 是觀測(cè)變量,表示一次試驗(yàn)觀測(cè)的結(jié)果是 1 或 0;隨機(jī)變量 zzz 是隱變量,表示未觀測(cè)到的擲硬幣 A 的結(jié)果;θ=(π,p,q)\theta=(\pi,p,q)θ=(π,p,q) 是模型參數(shù)。這一模型是以上數(shù)據(jù)的生成模型。注意,隨機(jī)變量 yyy 的數(shù)據(jù)可以觀測(cè),隨機(jī)變量 zzz 的數(shù)據(jù)不可觀測(cè)。
將觀測(cè)數(shù)據(jù)表示為 Y=(Y1,Y2,...,Yn)TY=(Y_1,Y_2,...,Y_n)^TY=(Y1?,Y2?,...,Yn?)T ,未觀測(cè)數(shù)據(jù)表示為 Z=(Z1,Z2,...,Zn)TZ=(Z_1,Z_2,...,Z_n)^TZ=(Z1?,Z2?,...,Zn?)T,則觀測(cè)數(shù)據(jù)的似然函數(shù)為:
P(Y∣θ)=∑ZP(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=1n[πpyj(1?p)1?yj+(1?π)qyj(1?q)1?yj](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?[πpyj?(1?p)1?yj?+(1?π)qyj?(1?q)1?yj?](3)
考慮求模型參數(shù) θ=(π,p,q)\theta=(\pi,p,q)θ=(π,p,q),即:
θ^=argmax?θlogP(Y∣θ)(4)\hat{\theta}=arg \max \limits_{\theta} logP(Y|\theta) \tag{4}θ^=argθmax?logP(Y∣θ)(4)
這個(gè)問(wèn)題沒有解析解,只有通過(guò)迭代的方法求解。EM 算法就是可以用于求解這個(gè)問(wèn)題的一種迭代算法。下面給出針對(duì)以上問(wèn)題的 EM 算法,其推導(dǎo)過(guò)程省略。
EM 算法首先選取參數(shù)的初值,記作 θ(0)=(π(0),p(0),q(0))\theta^{(0)}=(\pi^{(0)},p^{(0)},q^{(0)})θ(0)=(π(0),p(0),q(0)) ,然后通過(guò)下面的步驟迭代計(jì)算參數(shù)的估計(jì)值,直至收斂為止。第 iii 次迭代參數(shù)的估計(jì)值為 θ(i)=(π(i),p(i),q(i))\theta^{(i)}=(\pi^{(i)},p^{(i)},q^{(i)})θ(i)=(π(i),p(i),q(i))。EM 算法的第 i+1i+1i+1 次迭代如下:
E 步:計(jì)算在模型參數(shù) π(i),p(i),q(i)\pi^{(i)},p^{(i)},q^{(i)}π(i),p(i),q(i) 下觀測(cè)數(shù)據(jù) yiy_iyi? 來(lái)自擲硬幣 B 的概率:
μ(i+1)=π(i)(p(i))yj(1?p(i))1?yjπ(i)(p(i))yj(1?p(i))1?yj+(1?π(i))(q(i))yj(1?q(i))1?yj(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))yj?(1?p(i))1?yj?+(1?π(i))(q(i))yj?(1?q(i))1?yj?π(i)(p(i))yj?(1?p(i))1?yj??(5)
M 步:計(jì)算模型參數(shù)的新估計(jì)值
π(i+1)=1n∑j=1nμj(i+1)(6)\pi^{(i+1)}=\frac{1}{n} \sum_{j=1}^{n} \mu_{j}^{(i+1)} \tag{6}π(i+1)=n1?j=1∑n?μj(i+1)?(6)
p(i+1)=∑j=1nμj(i+1)yj∑j=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}p(i+1)=∑j=1n?μj(i+1)?∑j=1n?μj(i+1)?yj??(7)
q(i+1)=∑j=1n(1?μj(i+1))yj∑j=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}q(i+1)=∑j=1n?∑j=1n?(1?μj(i+1)?)yj??(8)
進(jìn)行數(shù)字計(jì)算。假設(shè)模型參數(shù)的初值取為:
π(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),對(duì) yj=1y_j=1yj?=1 與 yj=0y_j=0yj?=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,...,10
繼續(xù)迭代,得:
π(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
可以看到參數(shù)以及收斂,于是得到模型參數(shù) θ\thetaθ 的極大似然估計(jì):
π^=0.5,p^=0.6q^=0.6\hat{\pi}=0.5, \quad \hat{p}=0.6 \quad \hat{q}=0.6π^=0.5,p^?=0.6q^?=0.6
π=0.5\pi = 0.5π=0.5 表示硬幣 A 是均勻的,這一結(jié)果容易理解。
如果取初值π(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,那么得到的模型參數(shù)的極大似然估計(jì)是 π^=0.4064,p^=0.5368q^=0.6432\hat{\pi}=0.4064, \quad \hat{p}=0.5368 \quad \hat{q}=0.6432π^=0.4064,p^?=0.5368q^?=0.6432 。這就是說(shuō),EM 算法與初值的選擇有關(guān),選擇不同的初值可能得到不同的參數(shù)估計(jì)值。
一般地,用 YYY 表示觀測(cè)隨機(jī)變量的數(shù)據(jù),ZZZ 表示隱隨機(jī)變量的數(shù)據(jù)。YYY 和 ZZZ 連在一起稱為完全數(shù)據(jù)(complete-data),觀測(cè)數(shù)據(jù) YYY 又稱為不完全數(shù)據(jù)(incomplete-data)。假設(shè)給定觀測(cè)數(shù)據(jù) YYY,其概率分布是 P(Y∣θ)P(Y|\theta)P(Y∣θ),其中 θ\thetaθ 是需要估計(jì)的模型參數(shù),那么不完全數(shù)據(jù) YYY 的似然函數(shù)是 P(Y∣θ)P(Y|\theta)P(Y∣θ),對(duì)數(shù)似然函數(shù)為 L(θ)=log?P(Y∣θ)L(\theta)=\log P(Y|\theta)L(θ)=logP(Y∣θ);假設(shè) YYY 和 ZZZ 的聯(lián)合概率分布是 P(Y,Z∣θ)P(Y,Z|\theta)P(Y,Z∣θ),那么完全數(shù)據(jù)的對(duì)數(shù)似然函數(shù)是 log?P(Y,Z∣θ)\log P(Y,Z|\theta)logP(Y,Z∣θ)。
EM 算法通過(guò)迭代求 L(θ)=log?P(Y∣θ)L(\theta)=\log P(Y|\theta)L(θ)=logP(Y∣θ) 的極大似然估計(jì)。每次迭代包含兩步:E 步,求期望;M 步,求極大化。
2. EM 算法
輸入:觀測(cè)變量數(shù)據(jù) YYY,隱變量數(shù)據(jù) ZZZ,聯(lián)合分布 P(Y,Z∣θ)P(Y,Z|\theta)P(Y,Z∣θ),條件分布 P(Z∣Y.θ)P(Z|Y.\theta)P(Z∣Y.θ);
輸出;模型參數(shù) θ\thetaθ。
(1)選擇參數(shù)的初值 θ(0)\theta^{(0)}θ(0),開始迭代;
(2)E 步:記 θ(i)\theta^{(i)}θ(i) 為第 iii 次迭代參數(shù) θ\thetaθ 的估計(jì)值,在第 i+1i+1i+1 次迭代的 E 步,計(jì)算:
Q(θ,θ(i))=EZ[log?P(Y,Z∣θ)∣Y,θ(i)]=∑Zlog?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))?=EZ?[logP(Y,Z∣θ)∣Y,θ(i)]=Z∑?logP(Y,Z∣θ)P(Z∣Y,θ(i))?(9)
(3)M 步:求使 Q(θ,θ(i))Q(\theta,\theta^{(i)})Q(θ,θ(i)) 極大化的 θ\thetaθ,確定第 i+1i+1i+1 次迭代的參數(shù)的估計(jì)值 θ(i+1)\theta^{(i+1)}θ(i+1):
θ(i+1)=argmax?θQ(θ,θ(i))(10)\theta^{(i+1)}=arg \max \limits_{\theta} Q(\theta,\theta^{(i)}) \tag{10}θ(i+1)=argθmax?Q(θ,θ(i))(10)
(4)重復(fù)第 (2-3) 步,直到收斂。
下面關(guān)于 EM 算法作幾點(diǎn)說(shuō)明:
步驟 (1) 參數(shù)的初值可以任意選擇,但需注意 EM 算法對(duì)初值是敏感的;
步驟 (2) E 步求 Q(θ,θ(i))Q(\theta,\theta^{(i)})Q(θ,θ(i)) 。Q 函數(shù)式中 Z 是未觀測(cè)數(shù)據(jù),Y 是觀測(cè)數(shù)據(jù)。注意,Q(θ,θ(i))Q(\theta,\theta^{(i)})Q(θ,θ(i)) 的第 1 個(gè)表示要極大化的參數(shù),第 2 個(gè)變?cè)硎緟?shù)的當(dāng)前估計(jì)值。每次迭代實(shí)際在求 Q 函數(shù)及其極大;
步驟 (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),且每次迭代使似然函數(shù)增大或達(dá)到局部極值;
步驟 (4) 給出停止迭代的條件,一般是對(duì)較小的正值 ε1,ε2\varepsilon_1,\varepsilon_2ε1?,ε2?,若滿足:
∥θ(i+1)?θ(i)∥<ε1or∥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?or∥∥∥?Q(θ(i+1),θ(i))?Q(θ(i),θ(i))∥∥∥?<ε2?(11)
則停止迭代。
式 (9) 的函數(shù) Q(θ,θ(i))Q(\theta,\theta^{(i)})Q(θ,θ(i)) 是 EM 算法的核心,稱為 Q 函數(shù)(Q function)。
Q 函數(shù)
完全數(shù)據(jù)的對(duì)數(shù)似然函數(shù) log?P(Y,Z∣θ)\log P(Y,Z|\theta)logP(Y,Z∣θ) 關(guān)于在給定觀測(cè)數(shù)據(jù) YYY 和當(dāng)前參數(shù) θ(i)\theta^{(i)}θ(i) 下對(duì)未觀測(cè)數(shù)據(jù) Z 的條件概率分布 P(Z∣Y,θ(i))P(Z|Y,\theta^{(i)})P(Z∣Y,θ(i)) 的期望稱為 Q 函數(shù),即:
Q(θ,θ(i))=Ez[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))=Ez?[logP(Y,Z∣θ)∣Y,θ(i)](11)
參考文獻(xiàn)
[1] 周志華. 機(jī)器學(xué)習(xí)[M]. 北京: 清華大學(xué)出版社, 2016: 155-158.
總結(jié)
以上是生活随笔為你收集整理的机器学习 | EM 算法原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Madagascar环境下编程
- 下一篇: scons笔记