AI產(chǎn)品經(jīng)理必修——揭開算法的面紗(EM算法)
只要有一些訓(xùn)練數(shù)據(jù),再定義一個(gè)最大化函數(shù),采用EM算法,利用計(jì)算機(jī)經(jīng)過(guò)若干次迭代,就可以得到所要的模型。這實(shí)在是太美妙了,這也許是我們的造物主刻意安排的。所以我把它稱作為上帝的算法?!獏擒?/p>
01 極大似然原理
要立即EM算法,我們先來(lái)了解一個(gè)經(jīng)典的原理——極大似然原理(也叫最大似然原理)。
看完這個(gè)示例,想必你對(duì)極大似然已經(jīng)有了初步的認(rèn)識(shí),沒(méi)錯(cuò),滿足某個(gè)條件,使得事件發(fā)生的可能性最大。上面這個(gè)例子,就是,滿足小球從乙箱中取出,使得球是黑球的概率最大。
我們?cè)賮?lái)看一個(gè)經(jīng)典的示例:
問(wèn)題:假設(shè)我們需要調(diào)查我們學(xué)校的男生和女生的身高分布。
步驟1:在校園里隨便地活捉了100個(gè)男生和100個(gè)女生,共200人。
步驟2:你開始喊:“男的左邊,女的右邊,其他的站中間!”。
步驟3:統(tǒng)計(jì)分別得到100個(gè)男生的身高和100個(gè)女生的身高。
求解:假設(shè)他們的身高是服從高斯分布的。但是這個(gè)分布的均值u和方差?2我們不知道,這兩個(gè)參數(shù)就是我們要估計(jì)的。記作θ=[u, ?]T。
用剛才的語(yǔ)境來(lái)解釋,就是,滿足這個(gè)分部的均值u和方差?2,使得我們的觀測(cè)數(shù)據(jù)(100個(gè)男生身高和100個(gè)女生的身高)出現(xiàn)的可能性最大。
總結(jié)一下,最大似然估計(jì)的目的就是:利用已知的樣本結(jié)果,反推最有可能(最大概率)導(dǎo)致這樣結(jié)果的參數(shù)值。極大似然估計(jì)提供了一種給定觀察數(shù)據(jù)來(lái)評(píng)估模型參數(shù)的方法,即:“模型已定,參數(shù)未知”。通過(guò)若干次試驗(yàn),觀察其結(jié)果,利用試驗(yàn)結(jié)果得到某個(gè)參數(shù)值能夠使樣本出現(xiàn)的概率為最大,則稱為極大似然估計(jì)。
02 EM算法(期望最大值算法)
回到例子本身,如果沒(méi)有“男的左邊,女的右邊,其他的站中間!”這個(gè)步驟,現(xiàn)在這200個(gè)人已經(jīng)混到一起了。這個(gè)時(shí)候,對(duì)于每一個(gè)樣本或者你抽取到的人,就有兩個(gè)東西需要估計(jì)的了:
- 這個(gè)人是男生還是女生?
- 男生和女生對(duì)應(yīng)的身高的高斯分布的參數(shù)是多少?
那這個(gè)問(wèn)題EM算法是怎么解決的呢?我們先來(lái)看答案。
步驟1:我們先隨便猜一下男生(身高)的正態(tài)分布的參數(shù):如均值和方差是多少。例如男生的均值是1米7,方差是0.1米(當(dāng)然了,剛開始肯定沒(méi)那么準(zhǔn))。女生的正態(tài)分布參數(shù)同理。
步驟2:計(jì)算出每個(gè)人更可能屬于第一個(gè)還是第二個(gè)正態(tài)分布中的。例如,這個(gè)人的身高是1米8,那很明顯,他最大可能屬于男生的那個(gè)分布)。這個(gè)是屬于Expectation一步。
步驟3:有了每個(gè)人的歸屬,我們已經(jīng)大概地按上面的方法將這200個(gè)人分為男生和女生兩部分了。
現(xiàn)在看出來(lái)了嗎?我們已經(jīng)分別得到了100個(gè)男生的身高和100個(gè)女生的身高。是不是回到了最大似然估計(jì)問(wèn)題?
步驟4:根據(jù)最大似然估計(jì),通過(guò)這些被大概分為男生的n個(gè)人來(lái)重新估計(jì)第一個(gè)分布的參數(shù),女生的那個(gè)分布同樣方法重新估計(jì),也就是重新求解這個(gè)分布的均值u和方差?2。這個(gè)是Maximization。
假定計(jì)算結(jié)果當(dāng)前男生的均值是1米74,方差是0.08。
看出來(lái)了嗎?這和我們最初隨便猜的那個(gè)參數(shù)不一致呀!
步驟5:重新猜。假定我們第二次猜測(cè)時(shí)取個(gè)中間值,例如男生的均值是1米72,方差是0.09。繼續(xù)步驟1——步驟2——步驟3——步驟4……如此往復(fù),直到收斂,參數(shù)基本不再發(fā)生變化為止。
我們?cè)儆靡粋€(gè)簡(jiǎn)單的例子來(lái)總結(jié)這EM算法的精髓:
小時(shí)候,老媽給一大袋糖果給你,叫你和你姐姐等分,然后你懶得去點(diǎn)糖果的個(gè)數(shù),所以你也就不知道每個(gè)人到底該分多少個(gè)。咱們一般怎么做呢?先把一袋糖果目測(cè)的分為兩袋,然后把兩袋糖果拿在左右手,看哪個(gè)重,如果右手重,那很明顯右手這代糖果多了,然后你再在右手這袋糖果中抓一把放到左手這袋,然后再感受下哪個(gè)重,然后再?gòu)闹氐哪谴ヒ恍“逊胚M(jìn)輕的那一袋,繼續(xù)下去,直到你感覺(jué)兩袋糖果差不多相等了為止。
EM算法就是這樣,假設(shè)我們想估計(jì)知道A和B兩個(gè)參數(shù),在開始狀態(tài)下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反過(guò)來(lái)知道了B也就得到了A??梢钥紤]首先賦予A某種初值,以此得到B的估計(jì)值,然后從B的當(dāng)前值出發(fā),重新估計(jì)A的取值,這個(gè)過(guò)程一直持續(xù)到收斂為止。
現(xiàn)在,我們來(lái)總結(jié)一下:
EM(Expectation Maximization)算法包括了兩個(gè)過(guò)程和一個(gè)目標(biāo)函數(shù):
E-step: 根據(jù)現(xiàn)有的聚類結(jié)果,對(duì)所以數(shù)據(jù)(點(diǎn))重新進(jìn)行劃分。如果把最終得到的分類結(jié)果看作是一個(gè)數(shù)學(xué)的模型,那么這些聚類的中心(值),以及每一個(gè)點(diǎn)和聚類的隸屬關(guān)系,可以看成是這個(gè)模型的參數(shù)。
M-step: 根據(jù)重新劃分的結(jié)果,得到新的聚類。
目標(biāo)函數(shù):上面的點(diǎn)到聚類的距離d和聚類之間的距離D,整個(gè)過(guò)程就是要最大化目標(biāo)函數(shù)。
03 EM算法在分類中的應(yīng)用
了解了EM算法,我們來(lái)看一個(gè)EM算法在文本分類中的真實(shí)應(yīng)用。
假設(shè)有N篇文本,對(duì)應(yīng)N個(gè)向量V1,V2 …Vn, (文本如何轉(zhuǎn)變?yōu)橄蛄?,之前的文章已?jīng)寫過(guò),詳見《AI產(chǎn)品經(jīng)理必修——揭開算法的面紗(余弦定理)》)希望把他們分到K類中,而這K類的中心是C1,C2 …Ck。K可以是一個(gè)固定的數(shù),比如我們認(rèn)為文本的主題只有100類;也可以是一個(gè)不定的數(shù),比如我們并不知道文本的主題有多少類,最終有多少類就分成多少類。分類步驟如下:
步驟1.隨機(jī)挑選K個(gè)點(diǎn),作為起始的中心。(E-step)
步驟2:計(jì)算所有點(diǎn)到這些聚類中心的距離,將這些點(diǎn)歸到最近的一類中。(M-step)
步驟3:重新計(jì)算每一類的中心。新的聚類中心和原先的相比會(huì)有一個(gè)位移。(E-step)
步驟4:重復(fù)上述過(guò)程,直到每次新的中心和舊的中心支局的偏移非常非常小,即過(guò)程收斂。(M-step)
步驟5:迭代(重復(fù)E-step和M-step)
現(xiàn)在,我們已經(jīng)實(shí)現(xiàn)了只利用一組觀測(cè)數(shù)據(jù)自動(dòng)對(duì)文本進(jìn)行分類。這個(gè)方法不需要任何人工干預(yù)和先驗(yàn)的經(jīng)驗(yàn),是一些純粹的數(shù)學(xué)計(jì)算,最后就完全得到了自動(dòng)的分類,這簡(jiǎn)直有點(diǎn)令人難以置信!更奇妙的是,對(duì)文本分成多少類也是由觀測(cè)數(shù)據(jù)自動(dòng)得出的。
至此,我們已經(jīng)了解了一種典型的非監(jiān)督學(xué)習(xí)算法??胺Q精妙!
本文由@CARRIE 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議
- 目前還沒(méi)評(píng)論,等你發(fā)揮!