转:DP和HDP
Dirichlet Process and Hierarchical Dirichlet Process
原文:http://hi.baidu.com/zentopus/item/46a622f5ef13e4c5a835a28e
?
Dirichlet Process and Hierarchical Dirichlet Process
?????? 在這篇文章里,我會初步地介紹Dirichlet Process以及Hierarchical Dirichlet Process,不過僅僅局限于模型本身,并不涉及其inference和具體的application。
?????? 首先,我將簡單地介紹Dirichlet分布。Dirichlet分布可以看做是分布之上的分布。其定義為對于一個K維的probability simplex:
???
?????? 我們說這組是Dirichlet distributed, 參數(shù)為如果其滿足:
???
?
?????? 如何理解這個定義呢?我們可以舉個例子:假設(shè)我們有一個從魔術(shù)店買來的骰子,我們不知道這是不是一個和普通骰子一樣均勻的骰子,即每面出現(xiàn)的概率都是1/6。那么我們現(xiàn)在就可以用一個分布來描述我們對于這個骰子的uncertainty,也就是說,我們想知道這個骰子是一個公平的骰子的概率是多少。那么這個分布,就可以是一個Dirichlet Distribution,只要我們可以將這個分布描述為上述的數(shù)學(xué)形式。我們再看一眼這個例子,投擲一次骰子,必然會有一面出現(xiàn)(這是一個好骰子),那么六面出現(xiàn)的概率總和必然為1,換句話說,我們可以用這樣一個分布來描述骰子出現(xiàn)的概率。而后我們又想知道,這樣一個分布出現(xiàn)的概率是多少,那么我們就可以用Dirichlet分布來描述它。從而我們可以說,Dirichlet分布是一個分布之上的分布。
?? ?
Dirichlet Process
??? 接下來,我們將從Dirichlet分布過渡到Dirichlet Process。
?? ?首先,我們先來看一下probability measure的概念:我們定義G為可度量空間X上的一個probability measure,如果其滿足:
???????
?????? 我們還是從剛才的骰子的例子開始,我們現(xiàn)在認為整個骰子所描述的事件空間為一個可度量的空間。一個骰子投擲出去之后,六面必然有一面出現(xiàn),那么我們可以自然地將整個空間分成為6個部分,我們稱每一個部分為一個劃分。那么針對這種六個劃分的情況,我們可以有一個對應(yīng)于這個劃分的Dirichlet分布。現(xiàn)在我們想做一些調(diào)整,我們將骰子投擲出去的結(jié)果分成了2種,一種是大{4,5,6},另外是小,對應(yīng)于{1,2,3}。那么我們可以認為整個空間,被分割成為了2個劃分,那么相應(yīng)的,我們可以對這樣一種劃分有一個對應(yīng)的Dirichlet分布。現(xiàn)在我們將其進行一個一般性的描述。假設(shè)我們現(xiàn)在有一個可度量的空間X,其上的任意一個有限(finite)劃分(partition)滿足:
?
?????? 我們說一個probability measure G服從都Dirichlet Process,如果其滿足:對于這個可度量空間上的任意一個有限劃分,以及一個實數(shù)一個probability measure G0:
?????? 這里G0稱作base measure,有些類似于這個DP的均值(mean),稱作Strength parameter, 有些類似于這個DP的inverse-variance,在描述一個DP的時候,我們寫作:
?????? 接下來,我將簡單介紹一下其對應(yīng)的幾種常見的表現(xiàn)形式
The Chinese Restaurant Process
?????? 把Chinese Restaurant Process(CRP)放在最前,是我認為這是最容易理解的一種表現(xiàn)形式。其對應(yīng)的并不是G本身,而是對應(yīng)一個從G進行sampling的過程。
?????? 假設(shè)現(xiàn)在有一家中餐館,里面有無限多的桌子,當然,不是所有桌子上都坐了人。首先進來第一個顧客,第一個顧客只能坐在一號桌子。他坐下之后點了一個菜(這個菜的分量足夠大)。然后進來了第二個顧客,他看了一眼一號桌的菜,如果他喜歡吃的話,就坐到一號桌去,如果不喜歡的話,就另外再開一桌,自己點菜。假設(shè)這個過程一直下去,當?shù)趇個顧客進店的時候,假設(shè)這時候已經(jīng)有了k桌菜,這個顧客巡視了一圈,然后尋找自己喜歡的菜。我們認為他是一個具有大眾口味的人,他選擇某一桌的概率,完全正比于這桌上坐了多少個顧客。如果他實在沒有找到喜歡的菜,他也可以新開一桌,新開一桌的概率正比于某個初始的數(shù)值。
?????? 現(xiàn)在我們數(shù)學(xué)一點來看待這個過程:假設(shè)每一個sample,對應(yīng)于一個顧客。那么我們可以認為第i個sample選擇桌子k的概率為的概率,代表了這桌的菜。這個概率正比于已經(jīng)坐在這桌的顧客數(shù)量,而這個顧客開一個新桌的概率則正比于初始化的參數(shù).
?????? 從剛才的描述中,我們已經(jīng)看出了Dirichlet Process所獲得的樣本是離散的,并且其抽樣過程中體現(xiàn)出了一種聚類的特性。而這些特性不受Base Measure是離散或者連續(xù)的影響。
?????? 出了CRP之外,還有一個非常類似的方式,稱之為Polya urn scheme(Blackwell 1973)。這個過程和CRP非常相似。假設(shè)我們現(xiàn)在有一組samples:
?????? 這組樣本是i.i.d的,并且其滿足:
?????? 我們可以這樣理解抽樣的過程:我們現(xiàn)在口袋里有很多很多球,都是不同顏色的。我們從中取出一個球,鑒別了它的顏色,然后拿一個和這個球一樣顏色的球和這個球一塊兒放回去。如此往復(fù),得到了我們現(xiàn)有的一組樣本。
?????? 我們和CRP統(tǒng)一一下,則這個過程可以表現(xiàn)為:
?????? 如果G的sample可以滿足上述的分布,我們就認為從G符合DP。
Stick-breaking Construction
?????? 除了CRP之外,我們還可以通過別的方式來構(gòu)造一個DP,這就是Stick-breaking construction。整個構(gòu)造過程如下:
?????? 我們觀察上面的這個過程,可以發(fā)現(xiàn)sample的過程,就相當于CRP中給每個桌子賦予一個值,而獲取的過程,則是確定每個桌子上的顧客數(shù)量。
?????? 我們注意到:
?????? 所以,我們可以將解釋為一個random probability measure。并且,如果是以這樣的方式產(chǎn)生的,我們可以將其寫為:
?????? GEM代表三個人名,分別為:Griffith,Engen和McCloskey
Dirichlet Process Mixture
?????? 另一個理解DP的角度,就是從一個混合模型來看。假設(shè)在一個混合模型中,我們不知道component的明確數(shù)量,這時候我們應(yīng)該怎么處理呢?常規(guī)的方法是,重復(fù)做多次試驗,每次試驗中假設(shè)不同的數(shù)量的component,而后利用AIC,BIC等判別方式來進行選擇。但是這樣的方式又耗時又費力,有沒有輕松一些的方式呢?DP mixture model給了我們一個新的選擇,其關(guān)鍵點在于,認為空間中是有無限多的mixtrue component的,但是根據(jù)我們的數(shù)據(jù),只有其中有限個的component被激活了,并且,這些激活的component的proportion滿足一個Dirichlet Distribution。下面我們就從一個有限的mixture model出發(fā),來推廣到一個DP mixtrue model。
?????? 我們假設(shè)這個mixtrue model有L個component,我們用來表示每個component的proportion,并且,我們給這個proportion加上一個對稱的Dirichlet先驗,則我們有:
?????? 我們用z代表每個sample的component assignment,即選中了哪一個component,用代表每個component的參數(shù),而這組參數(shù)符合一個分布G0,則我們有:
?????? 我們此時可以得到一個分布
?????? 而如果我們將L推向infinite,則這個模型便成為了DP mixture, 如同下圖
?????? 我們再完整地看一次DP mixture的生成過程:
Why Dirichlet Process
?????? 我們用了這么復(fù)雜的數(shù)學(xué)手段,搞出來一個DP,是為什么呢?我們觀察DP,發(fā)現(xiàn)其有一個非常重要的特性,即在抽樣的過程中,可以獲取到值相等的2個樣本。這有什么重要意義呢?這意味著這一過程本身在重復(fù)抽樣的過程中,就完成了一個聚類的過程。并且我們注意到,DP對于其Base Measure并無要求,也就是說其Base Measure可以為連續(xù)的分布。而我們知道,對于一個連續(xù)的分布,其抽樣的過程中,兩個樣本完全相同的概率為絕對的0,而DP則可以在這個分布的基礎(chǔ)上,將樣本離散化,使得2個樣本的值相同的概率不為0。
?
Hierarchical Dirichlet Process
???????
?????? 我們發(fā)現(xiàn)DP具有很好的聚類的特性,并且我們也不用事先設(shè)定好類別的數(shù)量,使得整個過程變得更為智能。
?
?????? 那么我們現(xiàn)在考慮另一個問題,假設(shè)我們已經(jīng)有了很多數(shù)據(jù),并且數(shù)據(jù)自身是按照組別出現(xiàn)的,每一組數(shù)據(jù)都可以看做一個mixture model。除了組別內(nèi)部是mixture model之外,我們還希望這些mixture component是可以share的。我們換一個角度來看這個問題:假設(shè)我們現(xiàn)在有一個巨大的空間,整個空間中包含了無數(shù)的mixture component,我們每次選擇其中的幾個,然后利用這幾個component生成一組數(shù)據(jù)。我們把一組一組的數(shù)據(jù)放在一起,就得到了我們現(xiàn)在所擁有的數(shù)據(jù)。我們現(xiàn)在希望可以用mixture model來描述這樣一種數(shù)據(jù),DP可以幫上什么忙么?
?
?????? 我們注意到,在每一組數(shù)據(jù)中,我們需要進行一次clustering,這意味著我們可以選擇DP來描述某一組數(shù)據(jù)。但是我們又希望在整個數(shù)據(jù)中share component,一個很原始的原始的想法,就是限制DP的Base Measure為離散的,從而讓我們有固定的component可以進行選擇。但是這樣就使得問題失去了一般性,并且我們還需要面對一個問題,如何選擇這樣一個Base Measure以及其component數(shù)量。這時候,我們發(fā)現(xiàn)這個問題其實和針對每一個組內(nèi)的問題是一致的,那么我們很自然地就想到了,在這一層上我們再利用一次DP來描述,從而使得我們可以克服這些麻煩的問題。那么在DP之上再引入一層DP的模型,就是Hierarchical Dirichlet Process(HDP)。其圖模型可以參看下圖
?????? 現(xiàn)在我們從生成模型的角度,來看一下這整個的過程:
Chinese Restaurant Franchise
?????? 和DP一樣,我們也可以用中餐館這樣一個描述方式來加強對于這個問題的理解。
?????? 這次,我們不是有一個中餐館,我們有一家中餐連鎖店,每一家都有一樣的一份菜單。對于第j家餐館,我們考慮其第i個顧客。和之前一樣,這個顧客走進這家餐館之后,選擇坐在已有的一桌,或者是新開辟一桌。不過這里有一點特別的是,我們允許不同的餐館中的不同的桌子點相同的菜,因為這些顧客是從同一份菜單里點菜的,當然,每桌還是只有一個菜。那么從一個餐館的層面來說,我們有:
?????? 那么,在選擇每桌的菜的層面上,我們有:
?????? 我們注意到,在整個過程中,各種菜是可以在組間和組內(nèi)共享的,這是HDP的關(guān)鍵特性。
Stick-breaking Construction
?????? 現(xiàn)在,我們再從Stick-breaking Construction的角度來看一看HDP。
?????? 從圖中我們可以看出,G0是符合DP的,根據(jù)之前我們對于DP的描述,我們有:
?????? 其中:
?????? 既然G0有support,那么自然的,以G0為Base Measure的Gj也有相同的support,則:
?????? 其中,滿足:
?????? 在給定的情況下,之間是相互獨立的。那么和之間的關(guān)系又是如何呢?
?????? 我們知道,根據(jù)DP的定義,對于可度量空間上的任意一種有限劃分{A1,A2,...,Ar},我們有:
?????? 那么,這也就意味著:
?????? 從這個式子中,我們就不難看出:
?????? 而和,我們則認為其均為probability measure。
?????? 那么對于圖中所描述的混合模型,我們的完整的生成模型為:
?????? 其中
Discussion
?????? 相同的問題,我們?yōu)槭裁匆褂肏DP?最基本的理由是,如果我們遇到這樣的數(shù)據(jù)集的時候,即一個component會不斷變化的mixture model,并且在subgroup中,component是可以共享的這樣一個數(shù)據(jù)集,我們就可以利用HDP來進行建模。實際中,HDP也已經(jīng)被廣泛的使用,應(yīng)用包括topic modeling,cognitive science等等。
?????? HDP本身是Dependent Dirichlet Process(DDP)的一種具體的形式,它能夠有效地描述這種垂直的層級關(guān)系。但是HDP也有局限性,其并不能描述即時變化,不能夠描述component的生成與消亡。而在解決這個問題上,目前我們可以依靠Poisson Process Based Dependent Dirichlet Process來給出一個方案,這其中利用了Poisson Process,Gamma Process以及DP的內(nèi)在關(guān)系,具體可以看Dahua Lin的NIPS 2010文章。有時間的話,我也會把對那個模型做一個簡單的描述。
?????? HDP可以利用Variational Inference和Gibbs Sampling來進行"求解",Wang Chong也提出了一種Online的算法,其中利用了一種不同的Stick-breaking的構(gòu)造方式,來使得上下兩層關(guān)系之間進行解耦,從而能夠進行Online的求解過程。
轉(zhuǎn)載于:https://www.cnblogs.com/lifegoesonitself/p/3423363.html
總結(jié)
- 上一篇: 404页面自动跳转javascript
- 下一篇: JQUERY AJAX无刷新异步上传文件