EM算法深度解析

本文首發(fā)于CSDN巴元,https://blog.csdn.net/weixin_43661031/article/details/91358990论矾, 請(qǐng)勿轉(zhuǎn)載。

最近在做文本挖掘的時(shí)候遇到了EM算法沛简,雖然讀書(shū)的時(shí)候簡(jiǎn)單地接觸過(guò)硼身,但當(dāng)時(shí)并沒(méi)有深入地去了解,導(dǎo)致現(xiàn)在只記得算法的名字覆享。既然EM算法被列為數(shù)據(jù)挖掘的十大算法之一佳遂,正好借這個(gè)機(jī)會(huì),重新學(xué)習(xí)一下這個(gè)經(jīng)典的算法撒顿。學(xué)習(xí)的過(guò)程中丑罪,我發(fā)現(xiàn)網(wǎng)上的資料大多講解地不夠細(xì)致,很多地方解釋得并不明了。因此我決定拋開(kāi)別人的想法吩屹,僅從數(shù)學(xué)推導(dǎo)本身出發(fā)跪另,盡力理解每一個(gè)公式的含義,并將其對(duì)應(yīng)到實(shí)際的實(shí)驗(yàn)過(guò)程當(dāng)中煤搜。這篇博客記錄了我對(duì)與EM算法的思考與理解免绿,也是我人生中的第一篇博客,希望能夠?qū)τ谙胍獙W(xué)習(xí)EM算法的同學(xué)有所幫助擦盾。

極大似然估計(jì)與隱變量

前面談到我在做文本挖掘的時(shí)候遇到了EM算法嘲驾,EM算法用于估計(jì)模型中的參數(shù)。提到參數(shù)估計(jì)迹卢,最常見(jiàn)的方法莫過(guò)于極大似然估計(jì)——在所有的候選參數(shù)中辽故,我們選擇的參數(shù)應(yīng)該讓樣本出現(xiàn)的概率最大。相信看到這篇筆記的同學(xué)一定對(duì)極大似然估計(jì)非常熟悉腐碱,而EM算法可以看作是極大似然估計(jì)的一個(gè)擴(kuò)充誊垢,這里就讓我們用極大似然估計(jì)來(lái)解決一個(gè)簡(jiǎn)單的例子,來(lái)開(kāi)始正式的討論症见。

拋硬幣1.

有A喂走,B,C三枚硬幣谋作,我們想要估計(jì)A缴啡,B,C三枚硬幣拋出正面的概率\pi_A, \theta_B, \theta_C瓷们。我們按如下流程進(jìn)行實(shí)驗(yàn)100次:

     隨機(jī)拋一次硬幣A
     若硬幣A拋出正面,則拋10次硬幣B
     若硬幣A拋出反面秒咐,則拋10次硬幣C

記錄100次實(shí)驗(yàn)的結(jié)果如下:

硬幣A 硬幣B/C拋出正面的次數(shù)
1 1 5
2 0 8
3 1 4
... ... ...
100 0 7

我們將上面的實(shí)驗(yàn)結(jié)果表述如下:
z^{(i)}表示第i次實(shí)驗(yàn)中谬晕,硬幣A的結(jié)果,1代表正面携取,0代表反面攒钳;x^{(i)}表示第i次實(shí)驗(yàn)中,硬幣B或硬幣C拋出正面的個(gè)數(shù)雷滋,則參數(shù)\pi_A, \theta_B, \theta_C的極大似然估計(jì)分別為:
\begin{aligned} \hat\pi_A &= \frac{\sum_{i=1}^{100}\mathbb I_{z^{(i)}=1}(z^{(i)})}{100}\\[2ex] \hat\theta_B &= \frac{\sum_{i=1}^{100}\mathbb I_{z^{(i)}=1}(z^{(i)})x^{(i)}}{10\sum_{i=1}^{100}\mathbb I_{z^{(i)}=1}(z^{(i)})}\\[3ex] \hat\theta_C&=\frac{\sum_{i=1}^{100}\mathbb I_{z^{(i)}=0}(z^{(i)})x^{(i)}}{10\sum_{i=1}^{100}\mathbb I_{z^{(i)}=0}(z^{(i)})}\\ \end{aligned}
即硬幣A不撑,B,C各自拋出正面的次數(shù)占總次數(shù)的比例晤斩,其中\mathbb I(\cdot)為指示函數(shù)焕檬。

拋硬幣2.

實(shí)驗(yàn)流程與1相同,但是我們不慎遺失了硬幣A的記錄結(jié)果澳泵,導(dǎo)致我們只知道隨后十次拋出了多少次正面实愚,多少次反面,卻不知道實(shí)驗(yàn)結(jié)果來(lái)自于硬幣B還是硬幣C。在這種情況下腊敲,我們是否還能估計(jì)出\pi_A, \theta_B, \theta_C的值呢击喂?

硬幣A 硬幣B/C拋出正面的次數(shù)
1 5
2 碰辅? 8
3 懂昂? 4
... ... ...
100 7

這時(shí)候利用極大似然估計(jì)似乎行不通了没宾, 因?yàn)檫@種情況下凌彬,我們不但缺失了硬幣A產(chǎn)生的觀測(cè)值,同時(shí)也不知道哪些觀測(cè)值屬于硬幣B榕吼,哪些觀測(cè)值屬于硬幣C饿序。

有些同學(xué)可能會(huì)提出,雖然我們無(wú)法得到三個(gè)硬幣各自產(chǎn)生的樣本羹蚣,但是我們依然可以得到每個(gè)觀測(cè)值出現(xiàn)的概率原探。比如在第一次實(shí)驗(yàn)中, 我們拋出了5次正面5次反面顽素,我們可以做如下思考:

??假設(shè)這5次正面由硬幣B得到咽弦,那么概率應(yīng)該為 C_{10}^5\theta_B^5(1 - \theta_B)^5,而這次觀測(cè)值來(lái)自于硬幣B,也就是硬幣A拋出正面的概率為\pi_A

??假設(shè)這5次正面由硬幣C得到,那么概率應(yīng)該為 C_{10}^5\theta_C^5(1 - \theta_C)^5泽本,而這次觀測(cè)值來(lái)自于硬幣C悼枢,也就是硬幣A拋出反面的概率為1-\pi_A

??綜合起來(lái),利用條件概率公式艺玲,這個(gè)觀測(cè)值出現(xiàn)的概率就是\pi_AC_{10}^5\theta_B^5(1 - \theta_B)^5+ (1- \pi_A) C_{10}^5\theta_C^5(1 - \theta_C)^5

因此我們可以將樣本整體的概率和似然函數(shù)利用\pi_A, \theta_B, \theta_C表示出來(lái),通過(guò)對(duì)似然函數(shù)求導(dǎo),令其關(guān)于\pi_A, \theta_B, \theta_C的偏導(dǎo)數(shù)等于0绷落,我們可以求出三個(gè)參數(shù)的值。

這個(gè)思路聽(tīng)上去十分合理始苇,我們可以順著這個(gè)思路進(jìn)行數(shù)學(xué)推導(dǎo)砌烁,看看可以得到什么樣的結(jié)果。首先我們計(jì)算樣本的概率:

\begin{align} &P(x^{(1)}, x^{(2)}, ..., x^{(100)};\pi_A, \theta_B,\theta_C) \\ &=\prod_{i=1}^{100}P(x^{(i)};\pi_A, \theta_B,\theta_C) \\ &=\prod_{i=1}^{100}[P(x^{(i)}, z^{(i)}=1;\pi_A, \theta_B,\theta_C) + P(x^{(i)}, z^{(i)}=0;\pi_A, \theta_B,\theta_C)]\\ &=\prod_{i=1}^{100}[P(x^{(i)}|z^{(i)}=1;\pi_A, \theta_B,\theta_C)P(z^{(i)}=1;\pi_A, \theta_B,\theta_C) + P(x^{(i)}|z^{(i)}=0;\pi_A, \theta_B,\theta_C)P(z^{(i)}=0;\pi_A, \theta_B,\theta_C)]\\ & =\prod_{i=1}^{100}[P(x^{(i)}|z^{(i)}=1;\theta_B)P(z^{(i)}=1;\pi_A) +P(x^{(i)}|z^{(i)}=0;\theta_C)P(z^{(i)}=0;\pi_A)] \end{align}

對(duì)應(yīng)的似然函數(shù)為
\begin{aligned}&L(\pi_A, \theta_B,\theta_C|x^{(1)}, x^{(2)}, ..., x^{(100)})\\ &=\sum_{i=1}^{100}log[P(x^{(i)}|z^{(i)}=1;\theta_B)P(z^{(i)}=1;\pi_A) +P(x^{(i)}|z^{(i)}=0;\theta_C)P(z^{(i)}=0;\pi_A)] \end{aligned}

其中x^{(i)}關(guān)于z^{(i)}的條件分布為
\left\{ \begin{align} &P(x^{(i)}|z^{(i)}=1;\theta_B) = C_{10}^{x^{(i)}}\theta_B^{x^{(i)}}(1 - \theta_B)^{10-x^{(i)}}\\ &P(x^{(i)}|z^{(i)}=0;\theta_C) = C_{10}^{x^{(i)}}\theta_C^{x^{(i)}}(1 - \theta_C)^{10-x^{(i)}}\\ \end{align} \right.

z^{(i)}的分布為
\left\{ \begin{align} &P(z^{(i)}=1;\pi_A) = \pi_A \\ &P(z^{(i)}=0;\pi_A) = 1- \pi_A \end{align} \right.

因此我們可以得到
\begin{align} &L(\pi_A, \theta_B,\theta_C|x^{(1)}, x^{(2)}, ..., x^{(100)})\\[2ex] &= \sum_{i=1}^{100}log[\pi_AC_{10}^{x^{(i)}}\theta_B^{x^{(i)}}(1 - \theta_B)^{10-x^{(i)}}+ (1- \pi_A) C_{10}^{x^{(i)}}\theta_C^{x^{(i)}}(1 - \theta_C)^{10-x^{(i)}}] \end{align}

至此催式,我們成功地得到了似然函數(shù)函喉。然而觀察可以發(fā)現(xiàn),這個(gè)函數(shù)是由100項(xiàng)對(duì)數(shù)函數(shù)相加組成荣月,每個(gè)對(duì)數(shù)函數(shù)內(nèi)部包含一個(gè)求和管呵,想通過(guò)求導(dǎo)并解出導(dǎo)數(shù)的零點(diǎn)幾乎是不可能的。當(dāng)然我們可以通過(guò)梯度下降來(lái)極小化這個(gè)函數(shù)哺窄,借助深度學(xué)習(xí)庫(kù)的自動(dòng)微分系統(tǒng)在實(shí)現(xiàn)上也非常容易撇寞。但是這種做法過(guò)于簡(jiǎn)單粗暴顿天,有沒(méi)有辦法來(lái)優(yōu)雅地解決這個(gè)問(wèn)題呢?在繼續(xù)討論之前蔑担,我們先將這類問(wèn)題進(jìn)行一般化表述:

我們觀測(cè)到隨機(jī)變量X產(chǎn)生的m個(gè)相互獨(dú)立的樣本\left\{x^{(1)}, x^{(2)}, ..., x^{(m)}\right\}, X的分布由聯(lián)合分布P(X, Z;\theta)決定牌废,Z是缺失數(shù)據(jù)或無(wú)法在實(shí)驗(yàn)中被直接觀測(cè)到,稱為隱變量啤握,我們想要從樣本中估計(jì)出模型參數(shù)\theta的值鸟缕。在接下來(lái)的討論中,我們假定Z的取值是離散的排抬,于是可以得到似然函數(shù)如下:
\begin{align} L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)}) &= \sum_{i=1}^mlogP(x^{(i)};\theta)\\ &= \sum_{i=1}^mlog(\sum_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta)) \end{align}\\\tag 1

接下來(lái)懂从,我們就探討一下,如何利用EM算法解決這個(gè)問(wèn)題蹲蒲。

EM算法的數(shù)學(xué)原理

這一部分的數(shù)學(xué)推導(dǎo)番甩,主要參考了吳恩達(dá)CS229n的筆記,并且根據(jù)個(gè)人的思考和理解届搁,盡力對(duì)公式的每一步進(jìn)行詳細(xì)的解釋缘薛。我們先簡(jiǎn)單地介紹一下琴生不等式。

琴生不等式

琴生不等式有多種形式卡睦,下面給出其離散形式的表述和概率論中的表述:
1.若\phi(x)為嚴(yán)格凹函數(shù)宴胧,x_1, x_2, ...,x_n為定義域內(nèi)的n個(gè)點(diǎn),a_1, a_2, ... a_n是n個(gè)正實(shí)數(shù)表锻,且滿足\sum_{i=1}^na_i =1, 則下述不等式成立:
\phi(\sum_{i=1}^na_ix_i) >= \sum_{i=1}^na_i\phi(x_i)

當(dāng)且僅當(dāng)x_i=x_2=...=x_n時(shí)恕齐,不等式取等號(hào)。

2.若\phi(x)為嚴(yán)格凹函數(shù)瞬逊,X為實(shí)值隨機(jī)變量显歧,且期望存在,則下述不等式成立:
\phi(E(X)) >= E(\phi(X))

當(dāng)且僅當(dāng)X \equiv E(X)确镊,即X為常數(shù)時(shí)士骤,不等式取等號(hào)。

注: 這里將函數(shù)上方為凹集的函數(shù)稱為凹函數(shù)骚腥, 例如log函數(shù)就是凹函數(shù)。
相信大家對(duì)琴生不等式都十分熟悉瓶逃,因此這里就不做過(guò)多的說(shuō)明束铭。接下來(lái),我們將琴生不等式應(yīng)用到我們的問(wèn)題中厢绝。

EM算法的數(shù)學(xué)基礎(chǔ)

回到我們之前的問(wèn)題上契沫, 我們想要極大化下面這個(gè)函數(shù):
\begin{align} L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)}) &= \sum_{i=1}^mlog(P(x^{(i)};\theta)) \\ &= \sum_{i=1}^mlog(\sum_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta))\\\tag 1 \end{align}

但是我們無(wú)法對(duì)這個(gè)函數(shù)直接求導(dǎo),因此我們借助琴生不等式昔汉,對(duì)這個(gè)函數(shù)進(jìn)行變換懈万。為了讓過(guò)程看上去簡(jiǎn)潔,下面只對(duì)求和中的第i項(xiàng)進(jìn)行計(jì)算。

Q^i(x)滿足 \sum_{z^{(i)}}Q^i(z^{(i)}) = 1会通,且Q^i(z^{(i)})>=0, \forall z^{(i)}口予,則根據(jù)琴生不等式,可以得到:
\begin{align} log(\sum_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta)) &= log(\sum_{z^{(i)}}Q^i(z^{(i)})\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})})\\ &\ge \sum_{z^{(i)}}Q^i(z^{(i)})log(\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})})\\\tag 2 \end{align}

當(dāng)且僅當(dāng)\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}為常數(shù)時(shí)涕侈,上述不等式取等號(hào)沪停。也就是說(shuō),對(duì)于任意z^{(i)}裳涛,\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}是一個(gè)與z^{(i)}無(wú)關(guān)的量木张。設(shè)對(duì)于任意z^{(i)}, \frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})} \equiv k,我們可以得到:
\begin{align} &\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})} =k \\[1.9ex] \Rightarrow \quad&P(x^{(i)},z^{(i)};\theta)=kQ^i(z^{(i)}) \\[2ex] \Rightarrow \quad&\sum_{z^{(i)}}P(x^{(i)},z^{(i)};\theta)=k\sum_{z^{(i)}}Q^i(z^{(i)})\\[1ex] \Rightarrow \quad&P(x^{(i)};\theta)=k \qquad\\ \Rightarrow \quad&Q^i(z^{(i)})= \frac{P(x^{(i)},z^{(i)};\theta)}{P(x^{(i)};\theta)}=P(z^{(i)}|x^{(i)};\theta)\\\tag 3 \end{align}

因此當(dāng)Q^i(z^{(i)}) =P(z^{(i)}|x^{(i)};\theta)時(shí)端三,不等式(2)取等號(hào)舷礼,容易驗(yàn)證此時(shí)\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})} =P(x^{(i)};\theta), 與z^{(i)}無(wú)關(guān)。將(1), (2), (3)綜合一下郊闯,我們可以得到以下結(jié)論:
\begin{align} L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)}) &= \sum_{i=1}^mlog(\sum_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta)) \\ &= \sum_{i=1}^mlog(\sum_{z^{(i)}}\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta)}P(z^{(i)}|x^{(i)};\theta)) \\ &= \sum_{i=1}^m\sum_{z^{(i)}}P(z^{(i)}|x^{(i)};\theta)log\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta)} \\ &\ge\sum_{i=1}^m\sum_{z^{(i)}}Q^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\\\tag 4 \end{align}

到這里為止妻献,我們已經(jīng)擁有了推導(dǎo)出EM算法的全部數(shù)學(xué)基礎(chǔ),基于(4)我們可以構(gòu)建出E步和M步虚婿。上面的數(shù)學(xué)推導(dǎo)雖然看上去略為復(fù)雜旋奢,但實(shí)際上只用到了三個(gè)知識(shí)點(diǎn):
??1.琴生不等式:log\sum_{z^{(i)}}Q^i(z^{(i)})\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\ge\sum_{z^{(i)}}Q^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}

??2.條件概率: P(z^{(i)}|x^{(i)};\theta)=\frac{P(x^{(i)},z^{(i)};\theta)}{P(x^{(i)};\theta)}

??3.聯(lián)合分布求和等于邊緣分布: \sum_{z^{(i)}}P(x^{(i)},z^{(i)};\theta) = P(x^{(i)};\theta)

對(duì)上面的數(shù)學(xué)推導(dǎo)有疑問(wèn)的同學(xué),可以結(jié)合上面這三點(diǎn)然痊,再將整個(gè)推導(dǎo)過(guò)程耐心地看一遍至朗。

Q函數(shù)

大部分關(guān)于EM算法的資料,只是在數(shù)學(xué)形式上引入了Q函數(shù)剧浸,即Q^i(z^{(i)})锹引,以滿足琴生不等式的使用條件,卻沒(méi)有過(guò)多地解釋Q函數(shù)本身唆香。這導(dǎo)致了很多人完全看懂了算法的推導(dǎo)嫌变,卻還是不理解這些數(shù)學(xué)公式究竟在做什么,甚至不明白EM算法為什么叫做EM算法躬它。所以在給出E步和M步之前腾啥,我想先談一談Q函數(shù)。

我們回顧一下Q函數(shù)所滿足的條件(暫時(shí)不考慮琴生不等式取等號(hào)的限制)冯吓,
\begin{cases} \sum_{z^{(i)}}Q^i(z^{(i)})=1 \\[2ex] Q^i(z^{(i)}) \ge 0 \end{cases}

Q^i(x)z^{(i)}所有可能的取值處有定義倘待。可以看出组贺,Q^i(x)z^{(i)}的樣本空間上任意的一個(gè)概率分布凸舵。因此,我們可以對(duì)不等式(4)進(jìn)行改寫(xiě)失尖。首先我們可以將含有Q的求和寫(xiě)成期望的形式:
\begin{align} log\sum_{z^{(i)}}Q^i(z^{(i)})\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})} &= log\left(\mathbb E_{Q^i}\left[ \frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\right]\right)\\[2ex] \sum_{z^{(i)}}Q^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}&=\mathbb E_{Q^i} \left[log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\right]\\\tag5 \end{align}

這里\mathbb E_{Q^i}指的是在概率分布Q^i下啊奄,求隨機(jī)變量\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}的期望渐苏。有同學(xué)會(huì)問(wèn),為什么我們平時(shí)求期望的時(shí)候只要寫(xiě)\mathbb E菇夸,并沒(méi)有指明是在哪個(gè)概率分布下的期望琼富。這是因?yàn)橐话闱闆r下,我們都清楚地知道隨機(jī)變量X所服從的分布P峻仇,并且默認(rèn)在分布P下求期望公黑。

舉個(gè)例子,我手上有一個(gè)硬幣摄咆,拋了10次凡蚜,問(wèn)拋出正面次數(shù)的期望。這種情況下吭从,大部分人會(huì)默認(rèn)硬幣是均勻的朝蜘,也就是說(shuō)拋出正面的次數(shù)X服從二項(xiàng)分布B(10, 0.5),期望\mathbb EX=\mathbb E_{B(10, 0.5)}X=5涩金。這時(shí)有人提出了質(zhì)疑谱醇,他說(shuō)我認(rèn)為你這個(gè)硬幣有問(wèn)題,拋出正面的概率只有0.3步做,那么在他眼里副渴, 期望\mathbb EX=\mathbb E_{B(10, 0.3)}X=3

回到正題全度,我們利用等式(5)改寫(xiě)不等式(4)煮剧,可以得到:
\begin{align} L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)}) &= \sum_{i=1}^mlog\sum_{z^{(i)}}P(x^{(i)}, z^{(i)};\theta)\\[2ex] &= \sum_{i=1}^m\mathbb E_{P(z^{(i)}|x^{(i)};\theta)}\left[ log\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta)} \right]\\[2ex] &\ge\sum_{i=1}^m \mathbb E_{Q^i(z^{(i)})} \left[log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\right]\\\tag6 \end{align}

這正是琴生不等式在概率論中的形式。我們可以將不等式倒過(guò)來(lái)理解:
??首先将鸵,假定隨機(jī)變量z^{(i)}服從概率分布Q^i勉盅,Q^iz^{(i)}的樣本空間上的任意一個(gè)概率分布。這里Q^i可以是一組定值顶掉,也可以是關(guān)于參數(shù)\theta的函數(shù)草娜。

??顯然,當(dāng)我們?nèi)〔煌?img class="math-inline" src="https://math.jianshu.com/math?formula=Q%5Ei" alt="Q^i" mathimg="1">時(shí)痒筒,隨機(jī)變量log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}的期望也會(huì)隨之改變宰闰。需要注意的是,由于P(x^{(i)},z^{(i)};\theta)\theta相關(guān)簿透,所以這里的期望不是一個(gè)數(shù)值移袍,而是關(guān)于\theta的函數(shù)。

??當(dāng)我們令Q^iz^{(i)}的后驗(yàn)分布P(z^{(i)}|x^{(i)};\theta)時(shí)萎战,上面的期望最大咐容。這里有兩點(diǎn)需要注意舆逃,1. 后驗(yàn)分布P(z^{(i)}|x^{(i)};\theta)也是一個(gè)關(guān)于參數(shù)\theta的函數(shù)蚂维。2. 由于期望是關(guān)于\theta的函數(shù)戳粒,所以這里的最大指的并非是最大值,而是最大的函數(shù)虫啥。

??若對(duì)于每一個(gè)i蔚约,我們都令Q^iz^{(i)}的后驗(yàn)分布P(z^{(i)}|x^{(i)};\theta),則上述期望之和等于我們要極大化的似然函數(shù)涂籽,即L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)}) = \sum_{i=1}^m\mathbb E_{P(z^{(i)}|x^{(i)};\theta)}\left[ log\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta)} \right]

通過(guò)上述分析苹祟,我們?yōu)閷ふ宜迫缓瘮?shù)的極大值點(diǎn)\hat\theta_{MLE}提供了一個(gè)思路。我們不去極大化似然函數(shù)本身评雌,而是去極大化\sum_{i=1}^m \mathbb E_{Q^i(z^{(i)})} \left[log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\right]树枫。至于如何將這個(gè)思路實(shí)際應(yīng)用,就要利用到EM算法中的E-step和M-step景东。

E-step和M-step

這一節(jié)中砂轻,我們先給出E-step和M-step的數(shù)學(xué)形式,隨后在結(jié)合拋硬幣的例子來(lái)解釋這兩步究竟在做什么斤吐。下面進(jìn)入算法的流程搔涝,首先我們?nèi)我獬跏蓟?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Ctheta_0" alt="\theta_0" mathimg="1">,按下述過(guò)程進(jìn)行迭代直至收斂:

在第t次迭代中和措,
(E-step)對(duì)于每個(gè)i庄呈,令Q_t^i(z^{(i)})=P(z^{(i)}|x^{(i)};\theta_{t-1})\tag 7
(M-step)更新\theta的估計(jì)值,令\theta_t=\mathop{argmax} \limits_\theta\sum_{i=0}^m\sum_{z^{(i)}}Q_t^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_t^i(z^{(i)})}\tag 8

EM算法從任意一點(diǎn)\theta_0出發(fā)派阱,依次利用E-step優(yōu)化Q^i诬留,M-step優(yōu)化\theta,重復(fù)上述過(guò)程從而逐漸逼近極大值點(diǎn)颁褂。而這個(gè)過(guò)程究竟是怎樣的呢故响,就讓我們一步步地揭開(kāi)EM算法的面紗。

假設(shè)我們現(xiàn)在隨機(jī)初始化了\theta_0颁独,進(jìn)入第一輪迭代:
(E-step)

\begin{align}Q_1^i(z^{(i)}) &=P(z^{(i)}|x^{(i)};\theta_0) \\[2ex] &= \frac{P(x^{(i)}|z^{(i)};\theta_0)P(z^{(i)};\theta_0)}{\sum_{z^{(i)}}P(x^{(i)}|z^{(i)};\theta_0)P(z^{(i)};\theta_0)} \end{align}

由于我們已經(jīng)假定模型參數(shù)為\theta_0彩届,所以此時(shí)Q_1^i(z^{(i)})不再是與\theta有關(guān)的函數(shù),而是由一組常數(shù)構(gòu)成的概率分布誓酒。結(jié)合拋硬幣的例子來(lái)看樟蠕,這一步是在我們已知模型參數(shù)\pi_{A0},\theta_{B0}, \theta_{C0}的基礎(chǔ)上(雖然這是我們瞎猜的),去推測(cè)每一次的觀測(cè)值是由哪個(gè)硬幣產(chǎn)生的靠柑,或者說(shuō)我們對(duì)每一次觀測(cè)值做一個(gè)軟分類寨辩。比如我們根據(jù)初始化的參數(shù),計(jì)算出Q_1^i(z^{(i)}=1)=0.2歼冰,Q_1^i(z^{(i)}=0)=0.8靡狞。可以解釋為第i個(gè)觀測(cè)值有20%的概率來(lái)自于硬幣B隔嫡,80%的概率來(lái)自于硬幣C甸怕;或者說(shuō)硬幣A拋出了0.2個(gè)正面甘穿,0.8個(gè)反面。

(M-step)\theta_1=\mathop{argmax} \limits_\theta\sum_{i=0}^m\sum_{z^{(i)}}Q_1^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_1^i(z^{(i)})}

考慮到Q_1^i(z^{(i)})是一組常數(shù)梢杭,我們可以舍棄常數(shù)項(xiàng)温兼,進(jìn)一步簡(jiǎn)化上面這個(gè)要極大化的函數(shù)
\begin{aligned} \theta_1 &=\mathop{argmax} \limits_\theta\sum_{i=0}^m\sum_{z^{(i)}}Q_1^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_1^i(z^{(i)})}\\ &=\mathop{argmax} \limits_\theta\sum_{i=0}^m\sum_{z^{(i)}}Q_1^i(z^{(i)})logP(x^{(i)},z^{(i)};\theta) \end{aligned}

由于Q_1^i(z^{(i)})不再與\theta相關(guān),因此上面的函數(shù)變成了對(duì)數(shù)函數(shù)求和的形式武契,這個(gè)函數(shù)通常來(lái)說(shuō)是容易求導(dǎo)的募判,令導(dǎo)數(shù)等于0,我們可以求出新的參數(shù)\theta_1咒唆。我們?nèi)耘f以拋硬幣為例進(jìn)行解釋届垫,
\begin{align} 令&f(\pi_A, \theta_B,\theta_C) \\ &= \sum_{i=1}^m\sum_{z^{(i)}}Q_1^i(z^{(i)})logP(x^{(i)},z^{(i)};\pi_A, \theta_B, \theta_C)\\[2ex] &= \sum_{i=1}^{100}[Q_1^i(z^{(i)}=1)logP(x^{(i)},z^{(i)}=1;\pi_A, \theta_B) + Q_1^i(z^{(i)}=0)logP(x^{(i)},z^{(i)}=0;\pi_A, \theta_C)]\\[2ex] &=\sum_{i=1}^{100}[Q_1^i(z^{(i)}=1)log(P(x^{(i)}|z^{(i)}=1;\theta_B)P(z^{(i)}=1;\pi_A)) + Q_1^i(z^{(i)}=0)log(P(x^{(i)}|z^{(i)}=0;\theta_C)P(z^{(i)}=0;\pi_A))]\\[2ex] &=\sum_{i=1}^{100}[Q_1^i(z^{(i)}=1)log(\theta_B^{x^{(i)}}(1-\theta_B)^{10-x^{(i)}}\pi_A) + Q_1^i(z^{(i)}=0)log(\theta_C^{x^{(i)}}(1-\theta_C)^{10-x^{(i)}}(1-\pi_A))]\\[2ex] &=\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)(x^{(i)}log\theta_B+(10-x^{(i)})log(1-\theta_B))+\sum_{i=1}^{100}Q_1^i(z^{(i)}=0)(x^{(i)}log\theta_C+(10-x^{(i)})log(1-\theta_C))\\[2ex] &+\sum_{i=1}^{100}[Q_1^i(z^{(i)}=1)log\pi_A+Q_1^i(z^{(i)}=0)log(1-\pi_A)] \end{align}
\frac{\partial f}{\partial \pi_A}=0, \frac{\partial f}{\partial \theta_B}=0, \frac{\partial f}{\partial \theta_C}=0, 可以得到,
\begin{align} &\pi_{A1}=\frac{\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)}{100}\\[2ex] &\theta_{B1}=\frac{\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)x^{(i)}}{10\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)}\\[3ex] &\theta_{C1}=\frac{\sum_{i=1}^{100}Q_1^i(z^{(i)}=0)x^{(i)}}{10\sum_{i=1}^{100}Q_1^i(z^{(i)}=0)} \end{align}

這三個(gè)參數(shù)的解釋是顯而易見(jiàn)的全释。我們?cè)贓-step中對(duì)每個(gè)觀測(cè)值進(jìn)行了軟分類敦腔,\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)可以看成是硬幣A拋出正面的次數(shù),所以\frac{\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)}{100}\pi_A的極大似然估計(jì)恨溜;10\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)是我們拋硬幣B的次數(shù)符衔,\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)x^{(i)}是硬幣B拋出正面的次數(shù),所以\frac{\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)x^{(i)}}{10\sum_{i=1}^{100}Q_1^i(z^{(i)}=1)}\theta_B的極大似然估計(jì)糟袁;對(duì)于\theta_C我們有相同的解釋判族。

我們將這個(gè)結(jié)果與拋硬幣1中極大似然估計(jì)的結(jié)果相比較可以發(fā)現(xiàn),之前結(jié)果中的指示函數(shù)\mathbb I(\cdot)變成了這里的Q(\cdot)项戴,在指示函數(shù)下形帮,某個(gè)觀測(cè)值要么來(lái)自于硬幣B,要么來(lái)自于硬幣C周叮,因此也稱為硬分類辩撑。而在Q函數(shù)下,某個(gè)觀測(cè)值可以一部分來(lái)自于硬幣B仿耽,一部分來(lái)自于硬幣C合冀,因此也稱作軟分類。

將上述兩步綜合起來(lái)项贺,EM算法可以總結(jié)如下:我們首先初始化模型的參數(shù)君躺,我們基于這個(gè)參數(shù)對(duì)每一個(gè)隱變量進(jìn)行分類,此時(shí)相當(dāng)于我們觀測(cè)到了隱變量开缎。有了隱變量的觀測(cè)值之后棕叫,原來(lái)含有隱變量的模型變成了不含隱變量的模型,因此我們可以直接使用極大似然估計(jì)來(lái)更新模型的參數(shù)奕删,再基于新的參數(shù)開(kāi)始新一輪的迭代俺泣,直到參數(shù)收斂。接來(lái)下我們就討論為什么參數(shù)一定會(huì)收斂。

EM算法的收斂性

前面寫(xiě)了太多的公式伏钠,但是這一部分我不打算給出收斂性的數(shù)學(xué)推導(dǎo)侮邀。其實(shí)數(shù)學(xué)上證明EM算法的收斂性很容易,只需要證明每一輪迭代之后贝润,參數(shù)的似然函數(shù)遞增,即L(\theta_{t+1}|x^{(1)}, x^{(2)}, ..., x^{(m)}) \ge L(\theta_{t}|x^{(1)}, x^{(2)}, ..., x^{(m)})铝宵,再結(jié)合單調(diào)有界收斂定理便可證明打掘。

下面我從最直觀的角度,展示一下EM算法迭代的全過(guò)程鹏秋。
首先我們看一下L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)})\begin{aligned}\sum_{i=1}^m\sum_{z^{(i)}}Q_t^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q_t^i(z^{(i)})}\end{aligned}之間的關(guān)系。我們之前說(shuō)過(guò),當(dāng)Q^i(z^{(i)})自由變化時(shí)钳枕,\begin{aligned}\sum_{i=1}^m\sum_{z^{(i)}}Q^i(z^{(i)})log\frac{P(x^{(i)},z^{(i)};\theta)}{Q^i(z^{(i)})}\end{aligned}的集合構(gòu)成了一族函數(shù)梦重,而當(dāng)我們固定\theta為任意\theta^\star,并令Q^i(z^{(i)})=P(z^{(i)}|x^{(i)};\theta^\star)時(shí)百拓,\begin{aligned}\left\{\sum_{i=1}^m\sum_{z^{(i)}}P(z^{(i)}|x^{(i)};\theta^\star)log\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta^\star)}, \forall \theta^\star \in \Theta\right\}\end{aligned}便構(gòu)成了函數(shù)族中一個(gè)特殊的子集琴锭,注意此時(shí)P(z^{(i)}|x^{(i)};\theta^\star)\theta^\star固定,不再與\theta有關(guān)衙传。這一族子集具有如下性質(zhì):
\begin{aligned} L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)}) &\ge \sum_{i=1}^m\sum_{z^{(i)}}P(z^{(i)}|x^{(i)};\theta^\star)log\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta^\star)} \\ L(\theta^\star|x^{(1)}, x^{(2)}, ..., x^{(m)}) &= \sum_{i=1}^m\sum_{z^{(i)}}P(z^{(i)}|x^{(i)};\theta^\star)log\frac{P(x^{(i)},z^{(i)};\theta^\star)}{P(z^{(i)}|x^{(i)};\theta^\star)} \end{aligned}

也就是說(shuō)决帖,每一個(gè)\begin{aligned}\sum_{i=1}^m\sum_{z^{(i)}}P(z^{(i)}|x^{(i)};\theta^\star)log\frac{P(x^{(i)},z^{(i)};\theta)}{P(z^{(i)}|x^{(i)};\theta^\star)}\end{aligned}都是L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)})的一個(gè)下界,且在唯一的一點(diǎn)\theta=\theta^\star處相切蓖捶,L(\theta|x^{(1)}, x^{(2)}, ..., x^{(m)})構(gòu)成了這一族曲線的包絡(luò)線地回。下面的動(dòng)圖直觀地展示了這一點(diǎn):

在這里插入圖片描述

EM算法正是在這一族曲線上進(jìn)行反復(fù)迭代,逐漸逼近似然函數(shù)的極大值點(diǎn)俊鱼。因此EM算法也可以看成是如下的流程:
??1.選定一個(gè)初始值刻像,
??2.選定在與似然函數(shù)相切的函數(shù)
??3.求出上述函數(shù)的極大值,將更新為并闲,重復(fù)上述過(guò)程直至收斂
在這里插入圖片描述

從圖中可以看出细睡,E-step的是從一個(gè)函數(shù)跳躍到另一個(gè)函數(shù),在不變的情況下帝火,直接對(duì)進(jìn)行優(yōu)化纹冤。而M-step則是沿著某一個(gè)函數(shù)曲線進(jìn)行優(yōu)化。到此為止购公,我們已經(jīng)從不同的角度深度剖析了EM算法的內(nèi)涵萌京。最后我補(bǔ)充兩點(diǎn)來(lái)結(jié)束本文的討論。

小結(jié)

本文從最基本的極大似然估計(jì)開(kāi)始宏浩,討論了模型中存在隱變量時(shí)知残,極大似然估計(jì)所遇到的困難,從而引入了EM算法比庄。我們將琴生不等式應(yīng)用于似然函數(shù)中求妹,并詳細(xì)解釋了Q函數(shù)的意義乏盐,進(jìn)而給出了E-step和M-step,和這兩步在拋硬幣例子中的實(shí)際應(yīng)用制恍。最后我們從函數(shù)圖像的角度父能,直觀地展示了EM算法收斂的過(guò)程。相信耐心讀完本文的同學(xué)净神, 對(duì)EM算法一定有了一個(gè)比較透徹的理解何吝。關(guān)于EM算法,我在這里在最后補(bǔ)充兩點(diǎn):
??1.EM算法并不能給我們提供任何額外的信息鹃唯,它只是給我們提供了一條巧妙的路徑去逼近似然函數(shù)的極大值爱榕。即使我們不用EM算法,而是借助計(jì)算機(jī)直接對(duì)似然函數(shù)求導(dǎo)坡慌,同樣可以獲得問(wèn)題的解黔酥。對(duì)于拋硬幣問(wèn)題而言,EM算法收斂之后洪橘,依舊不能告訴我們某個(gè)觀測(cè)值到底是來(lái)自B還是C跪者,而是只能給出一個(gè)概率。
??2.EM算法無(wú)法保證求出的解是全局最優(yōu)解熄求,它只能給我們一個(gè)局部最優(yōu)解坑夯,至于求出的是哪個(gè)局部最優(yōu)解,就與函數(shù)的形狀和給定的初值有關(guān)了抡四。在樣本規(guī)模不太大的情況下柜蜈,可以對(duì)參數(shù)空間進(jìn)行網(wǎng)格搜索,選取最優(yōu)的那個(gè)解指巡。至于為什么動(dòng)圖中可以求出全局最優(yōu)淑履,是因?yàn)閳D中的函數(shù)只有一個(gè)極大值點(diǎn),是一個(gè)凸優(yōu)化問(wèn)題藻雪。對(duì)于任意給定的函數(shù)求最大值秘噪,是一個(gè)至今仍沒(méi)有解決的問(wèn)題。

這篇博客里除了部分?jǐn)?shù)學(xué)推導(dǎo)參考了吳恩達(dá)的cs229n筆記勉耀, 其余的內(nèi)容基本是自己思考過(guò)程的總結(jié)指煎,故難免有疏漏和不當(dāng)之處,歡迎大家留言與我討論便斥。

ps.斷斷續(xù)續(xù)寫(xiě)了三周的時(shí)間才完工至壤,把自己的想法以一種容易理解的方式用文字表達(dá)出來(lái)的確是一個(gè)燒腦的過(guò)程,但是寫(xiě)完之后自己對(duì)于算法的理解更深了一層枢纠,所帶來(lái)的成就感也值得一行行敲公式的辛苦像街。這是我的第一篇博客,希望能將這個(gè)習(xí)慣堅(jiān)持下去吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镰绎,一起剝皮案震驚了整個(gè)濱河市脓斩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌畴栖,老刑警劉巖随静,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異吗讶,居然都是意外死亡燎猛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)关翎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鸠信,你說(shuō)我怎么就攤上這事纵寝。” “怎么了星立?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵爽茴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我绰垂,道長(zhǎng)室奏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任劲装,我火速辦了婚禮胧沫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘占业。我一直安慰自己绒怨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布谦疾。 她就那樣靜靜地躺著南蹂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪念恍。 梳的紋絲不亂的頭發(fā)上六剥,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音峰伙,去河邊找鬼疗疟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛瞳氓,可吹牛的內(nèi)容都是我干的秃嗜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锅锨!你這毒婦竟也來(lái)了叽赊?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤必搞,失蹤者是張志新(化名)和其女友劉穎必指,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恕洲,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塔橡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霜第。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葛家。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泌类,靈堂內(nèi)的尸體忽然破棺而出癞谒,到底是詐尸還是另有隱情,我是刑警寧澤刃榨,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布弹砚,位于F島的核電站,受9級(jí)特大地震影響枢希,放射性物質(zhì)發(fā)生泄漏桌吃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一苞轿、第九天 我趴在偏房一處隱蔽的房頂上張望茅诱。 院中可真熱鬧搬卒,春花似錦蹂安、人聲如沸允瞧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)麦轰。三九已至喳坠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帕胆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工芙盘, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脸秽。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓儒老,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親豹储。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贷盲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355