什麼是狄利克雷分布?狄利克雷過程又是什麼?
希望能給出明確的數學定義和表達式。
感謝。
最近問的人有點多,打算寫一系列「簡單易懂地理解XXX系列」。
今天來講一下dirichlet distribution和dirichlet process怎麼回事。力求讓初學者看懂,而且我比較追求motivation,追求數學嚴謹性和簡潔性的大神請移步不要看了。不喜歡看各種細節的也可以直接跳著看文中的結論。
實際上這是學習nonparametric bayesian里常見的困惑,有些同學碰到paper或者PPT讀著讀著發現怎麼就弄出一個dirichlet distribution了?這裡面有什麼intuition嗎?
讀三遍:要想簡單地理解,還得要先從簡單的例子講起。
要想易懂地理解dirichlet distribution,首先先得知道它的特殊版本beta distribution幹了什麼。而要理解beta distribution有什麼用,還得了解Bernoulli process。
首先先看Bernoulli process。要理解什麼是Bernoulli process,首先先看什麼Bernoulli trial。Bernoulli trial簡單地說就是一個只有兩個結果的簡單trial,比如拋硬幣。
那我們就用拋一個(不均勻)硬幣來說好了,X = 1就是頭,X = 0就是字,我們設定q是拋出字的概率。
那什麼是bernoulli process?就是從Bernoulli population里隨機抽樣,或者說就是重複的獨立Bernoulli trials,再或者說就是狂拋這枚硬幣n次記結果吧(汗=_=)。好吧,我們就一直拋吧,我們記下X=0的次數k.
現在問題來了。
Q:我們如何知道這枚硬幣拋出字的概率?我們知道,如果可以一直拋下去,最後k/n一定會趨近於q;可是現實中有很多場合不允許我們總拋硬幣,比如我只允許你拋4次。你該怎麼回答這個問題?顯然你在只拋4次的情況下,k/n基本不靠譜;那你只能"猜一下q大致分布在[0,1]中間的哪些值里會比較合理",但絕不可能得到一個準確的結果比如q就是等於k/n。
舉個例子,比如:4次拋擲出現「頭頭字字」,你肯定覺得q在0.5附近比較合理,q在0.2和0.8附近的硬幣拋出這個結果應該有點不太可能,q = 0.05和0.95那是有點扯淡了。
你如果把這些值畫出來,你會發現q在[0,1]區間內呈現的就是一個中間最高,兩邊低的情況。從感性上說,這樣應當是比較符合常理的。
那我們如果有個什麼工具能描述一下這個q可能的分布就好了,比如用一個概率密度函數來描述一下? 這當然可以,可是我們還需要注意另一個問題,那就是隨著n增長觀測變多,你每次的概率密度函數該怎麼計算?該怎麼利用以前的結果更新(這個在形式上和計算上都很重要)?
到這裡,其實很自然地會想到把bayes theorem引進來,因為Bayes能隨著不斷的觀測而更新概率;而且每次只需要前一次的prior等等…在這先不多說bayes有什麼好,接下來用更形式化語言來講其實說得更清楚。
我們現在用更正規的語言重新整理一下思路。現在有個硬幣得到random sample X = (x1,x2,...xn),我們需要基於這n次觀察的結果來估算一下q在[0,1]中取哪個值比較靠譜,由於我們不能再用單一一個確定的值描述q,所以我們用一個分布函數來描述:有關q的概率密度函數(說得再簡單點,即是q在[0,1]「分布律」)。當然,這應當寫成一個條件密度:f(q|X),因為我們總是觀測到X的情況下,來猜的q。
現在我們來看看Bayes theorem,看看它能帶來什麼不同:
在這裡P(q)就是關於q的先驗概率(所謂先驗,就是在得到觀察X之前,我們設定的關於q的概率密度函數)。P(q|x)是觀測到x之後得到的關於q的後驗概率。注意,到這裡公式里出現的都是"概率",並沒有在[0,1]上的概率密度函數出現。為了讓貝葉斯定理和密度函數結合到一塊。我們可以從方程兩邊由P(q)得到f(q),而由P(q|x)得到f(q|x)。
又注意到P(x)可以認定為是個常量(Q:why?),可以在分析這類問題時不用管。那麼,這裡就有個簡單的結論——關於q的後驗概率密度f(q|x)就和「關於q的先驗概率密度乘以一個條件概率"成比例,即:
帶著以上這個結論,我們再來看這個拋硬幣問題:
連續拋n次,即為一個bernoulli process,則在q確定時,n次拋擲結果確定時,又觀察得到k次字的概率可以描述為:
那麼f(q|x)就和先驗概率密度乘以以上的條件概率是成比例的:
雖然我們不知道,也求不出那個P(x),但我們知道它是固定的,我們這時其實已經得到了一個求f(q|x)的公式(只要在n次觀測下確定了,f(q)確定了,那麼f(q|x)也確定了)。
現在在來看f(q)。顯然,在我們對硬幣一無所知的時候,我們應當認為硬幣拋出字的概率q有可能在[0,1]上任意處取值。f(q)在這裡取個均勻分布的密度函數是比較合適的,即f(q) = 1 (for q in [0,1]) 。
有些同學可能發現了,這裡面,那個乘上[0,1]的均勻分布不就是一個Beta distribution么?
對,它就是一個Beta distribution。Beta distribution由兩個參數alpha、beta確定;在這裡對應的alpha等於k+1,beta等於n+1-k。而均勻分布的先驗密度函數,就是那個f(q)也可以被beta distribution描述,這時alpha等於1,beta也等於1。
更有意思的是,當我們每多拋一次硬幣,出現字時,我們只需要alpha = alpha + 1;出現頭只需要beta = beta + 1。這樣就能得到需要估計的概率密度f(q|x)…
其實之所以計算會變得這麼簡單,是因為被beta distribution描述的prior經過bayes formula前後還是一個beta distribution;這種不改變函數本身所屬family的特性,叫共軛(conjugate)。
ok。講到這你應該明白,對於有兩個結果的重複Bernoulli trial,我們用beta prior/distribution就能解決。那麼加入我們有n個結果呢?比如拋的是骰子?
這時候上面的Bernoulli trial就要變成有一次trial有k個可能的結果; Bernoulli distribution就變成multinomial distribution。而beta distribution所表述的先驗分布,也要改寫成一個多結果版本的先驗分布。那就是dirichlet distribution。
均勻的先驗分布Beta(1,1)也要變成k個結果的Dir(alpha/K)。dirichlet prior也有共軛的性質,所以也是非常好計算的。
簡而言之,就是由2種外推到k種,而看待它們的視角並沒有什麼不同。
他們有著非常非常非常相似的形式。
結論1:dirichlet distribution就是由2種結果bernoulli trial導出的beta distribution外推到k種的generalization
(占坑,稍後繼續補充dirichlet process)
(sorry,最近很懶,結果看到Gaussian Process就先答了GP,有機會隨後補上=_=)
其它系列歡迎關註:
如何通俗易懂地介紹Gaussian Process? - 知乎用戶的回答
如何用簡單易懂的例子解釋隱馬爾可夫模型? - 知乎用戶的回答
Dirichlet分布是Beta分布的多元推廣。Beta分布是二項式分布的共軛分布,Dirichlet分布是多項式分布的共軛分布。通常情況下,我們說的分布都是關於某個參數的函數,把對應的參數換成一個函數(函數也可以理解成某分布的概率密度)就變成了關於函數的函數。於是,把Dirichlet分布裡面的參數換成一個基分布就變成了一個關於分布的分布了。那麼它就是Dirichlet過程了。可以參考如下資料:
Dirichlet Distribution(狄利克雷分布)與Dirichlet Process(狄利克雷過程) | 學習數據 | 數據學習者官方網站
連續拋n次,即為一個bernoulli process,則在q確定時,n次拋擲結果確定時,又觀察得到k次字的概率: P(X=x|q)=C(n,k)q^k(1-q)^(n-k),你公式是不是寫錯了?
你可以去看一下LDA數學八卦,或者更佳正式的去看看數理統計吧ww
狄利克雷分布是多項式分布的共軛先驗分布的概率歸一化形式。狄利克雷過程就是把狄利克雷分布的參數換成另一個基分布,即分布的分布。
連續拋n次,即為一個bernoulli process,則在q確定時,n次拋擲結果確定時,又觀察得到k次字的概率可以描述為:
公式裡面的p是不是q啊?
簡單的說,它是分布概率的分布概率,需要兩次積分,話說樓主你是做文本分類么
概率分布—二項分布—博努力分布—文本處理 基本上把這幾個概念補習一下就可以了
Dirichlet distribution
Dirichlet process
狄利克雷過程(dirichlet process )的五種理解
共軛先驗是什麼意思呢?能不能說狄利克雷分布就是一種共軛先驗?
推薦閱讀:
※怎樣證明0.9循環(0.999999...) = 1?
※數學的本質是什麼?
※如何讓五個功勞不同的人分一塊蛋糕,使所有人都覺得公平?
※二次型的意義是什麼?有什麼應用?
※最大似然估計和最小二乘法怎麼理解?