1. 程式人生 > >伯努利分佈、二項分佈、Beta分佈、多項分佈和Dirichlet分佈與他們之間的關係,以及在LDA中的應用

伯努利分佈、二項分佈、Beta分佈、多項分佈和Dirichlet分佈與他們之間的關係,以及在LDA中的應用

 

在看LDA的時候,遇到的數學公式分佈有些多,因此在這裡總結一下思路。

一、伯努利試驗、伯努利過程與伯努利分佈

先說一下什麼是伯努利試驗:

維基百科伯努利試驗中:

伯努利試驗(Bernoulli trial)是隻有兩種可能結果的單次隨機試驗。

即:對於一個隨機變數而言,P(X=1)=p以及P(X=0)=1-p。一般用拋硬幣來舉例。另外,此處也描述了伯努利過程:

一個伯努利過程(Bernoulli process)是由重複出現獨立但是相同分佈的伯努利試驗組成,例如拋硬幣十次。

維基百科中,伯努利過程的描述如下:

換言之,伯努利過程是一列獨立同分布的伯努利試驗。

伯努利分佈

伯努利分佈(the Bernoulli distribution,又名兩點分佈或者0-1分佈,是一個離散型概率分佈。

記其成功概率為p(0≤p≤1),失敗概率為q=1-p。

注意:此處描述的是在“一次”拋硬幣,而不是多次。

二、(還不知道名字的分佈)【存疑:看到名字了再來修改】

與伯努利分佈對應,如果在一次實驗中,出現的結果不是2種而是k種可能,則成為是:(還不知道名字的分佈)。

常見例子:擲骰子(有多個可能結果)。

可以認為:伯努利分佈是此分佈在k=2時的特殊情況。

三、二項分佈

二項分佈

在概率論和統計學中,二項分佈是n個獨立的是/非試驗中成功的次數的離散概率分佈,其中每次試驗的成功概率為p。這樣的單次成功/失敗試驗又稱為伯努利試驗。實際上,當n = 1時,二項分佈就是伯努利分佈。

也就是說,單次拋硬幣是伯努利分佈,多次拋硬幣是二項分佈。二項分佈中:

$P(X=x|n,p) = C_{n}^{x}p^{x}(1-p)^{n-x}$

即:拋硬幣n次,得到x次為正面朝上的概率分佈。(注意:雖然一般認為硬幣是均勻的,這樣硬幣正面朝上的概率是0.5.但是,在拋硬幣試驗中,我們並不假設已經知道這種情況,而是假定對硬幣正面朝上的概率完全未知)

四、多項分佈

與二項分佈之於伯努利分佈相同,多項分佈相當於進行n次(還不知道名字的分佈)試驗。假設k個實驗結果的概率分別為:$p_{1}, p_{2},…, p_{k}$,得到的k個結果的次數分別是:$x_{1}, x_{2},…, x_{k}$,則:

$P(x_{1}, x_{2},…, x_{k}|n, p_{1}, p_{2},…, p_{k}) = \frac{n!}{Π_{i=1}^{k}x_{i}!} * p_{i}^{x_{i}}$

其中,$∑_{i}x_{i}=n$。

即:擲骰子n次,得到k個面朝上的次數分別為:$x_{1}, x_{2},…, x_{k}$的概率分佈。

可以認為:多項分佈是二項分佈的推廣,二項分佈是多項分佈在k=2時的特殊情況。根據多項式的公式,在k=2時,可以推出二項分佈的公式。

五、Beta分佈

我試著模仿下面的Dirichlet分佈中的例子來解釋Beta分佈:

Beta分佈可以看做是分佈之上的分佈。我們還是以拋硬幣為例。不過,我們並不假設硬幣是均勻的(也就是說:並不假設每次拋硬幣,正面朝上的概率為0.5),所以拋硬幣的正面朝上的概率p是未知的(只知道p∈[0,1])。如果進行一次二項分佈試驗,在這次二項分佈試驗中,拋硬幣10000次,其中正面朝上7000次,反面朝上3000次,我們可以得到,正負面朝上的概率分別為{p,1-p}={0.7,0.3}。但是我們並不確信這個結果是正確的。我們想要做10000次二項分佈試驗,在每次二項分佈試驗中,均拋硬幣10000次(說不定在其他二項分佈實驗中,得到的正負面朝上的概率是{0.2,0.8}或者{0.6,0.4},這些情況都有可能),那麼,我們想要知道,在這樣的多次重複二項分佈實驗中,拋硬幣最後得到正負面朝上概率為{0.7,0.3}這樣概率為多少?這就是在求拋硬幣的概率分佈之上的分佈。這樣的分佈就叫做Beta分佈。

正如二項分佈可以看做多次進行伯努利試驗所得到的分佈一樣,Beta分佈也可以看做是多次進行二項分佈的試驗所得到的分佈,是分佈之上的分佈。

Beta分佈的公式如下:

$p(p|α,β) = \frac{1}{B(α,β)} * p^{α-1} * (1-p)^{β-1}$

其中,β∈[0,1],$B(α,β) = \frac{Γ(α+β)}{Γ(α)Γ(β)} ≈ C_{α-1}^{α+β-2}$ 。【存疑:此處的B(α,β)在有的出處為B(α,β)的倒數!】

注:在“LDA數學八卦”中,作者求得α=k, β=n-k-1。

此處涉及到了Gamma分佈Γ(x),我們暫時不講,只要知道:Γ(n) = (n-1)! 即可。

Beta分佈是二項分佈之上的分佈(distribution over bionominals),也是二項分佈的共軛先驗分佈(conjugate prior of bionominals)。對於什麼是共軛先驗分佈,可以參看這裡:PRML Chapter 2. Probability Distributions。【我現在還沒看懂。。orz】

概率語言模型及其變形系列(2)-LDA及Gibbs Sampling中也提到了:

什麼是共軛分佈呢?在文字語言模型的引數估計-最大似然估計、MAP及貝葉斯估計一文中我們可以看到,當我們為二項分佈的引數p選取的先驗分佈是Beta分佈時,以p為引數的二項分佈用貝葉斯估計得到的後驗概率仍然服從Beta分佈,由此我們說二項分佈和Beta分佈是共軛分佈。這就是共軛分佈要滿足的性質。在LDA中,每個文件中詞的Topic分佈服從Multinomial分佈,其先驗選取共軛先驗即Dirichlet分佈;每個Topic下詞的分佈服從Multinomial分佈,其先驗也同樣選取共軛先驗即Dirichlet分佈。

六、Dirichlet分佈

The Dirichlet Distribution 狄利克雷分佈 (PRML 2.2.1)舉了一個很通俗的例子:

Dirichlet分佈可以看做是分佈之上的分佈。如何理解這句話,我們可以先舉個例子:假設我們有一個骰子,其有六面,分別為{1,2,3,4,5,6}。現在我們做了10000次投擲的實驗,得到的實驗結果是六面分別出現了{2000,2000,2000,2000,1000,1000}次,如果用每一面出現的次數與試驗總數的比值估計這個面出現的概率,則我們得到六面出現的概率,分別為{0.2,0.2,0.2,0.2,0.1,0.1}。現在,我們還不滿足,我們想要做10000次試驗,每次試驗中我們都投擲骰子10000次。我們想知道,出現這樣的情況使得我們認為,骰子六面出現概率為{0.2,0.2,0.2,0.2,0.1,0.1}的概率是多少(說不定下次試驗統計得到的概率為{0.1, 0.1, 0.2, 0.2, 0.2, 0.2}這樣了)。這樣我們就在思考骰子六面出現概率分佈這樣的分佈之上的分佈。而這樣一個分佈就是Dirichlet分佈。

如果理解了Beta分佈與二項分佈的關係,Dirichlet分佈於多項分佈之間的關係就可以理解了。簡單來說,Dirichlet分佈是多項分佈之上的分佈。也就是說,在多次進行多項分佈試驗中,每次都會得到一組多項分佈中k個結果的概率向量$p^{→} = {p_{1}, p_{2},…, p_{k}}$,那麼,得到某一個概率向量(如p_{0}^{→})的分佈是什麼樣的呢?這就是Dirichlet分佈,其公式如下:

$p(P={p_{i}}|α_{i}) = \frac{Π_{i}Γ(α_{i})}{Γ(∑_{i}α_{i})} * Π_{i}p_{i}^{α_{i}-1}$

其中,

$∑_{i}p_{i} = 1, p_{i} ≥ 0$

這裡面也涉及到了Gamma分佈,我們還是先略過不講。

和之前一樣,可以認為:Beta分佈是Dirichlet分佈在k=2時的特殊情況。我們令:k=2, α = α_{1}, β = α_{2},即可得到Beta分佈的公式。

Dirichlet分佈是多項分佈之上的分佈(distribution over multinominals),也是多項分佈的共軛先驗分佈(conjugate prior of multinominals)。

七、Gamma分佈(Γ(x)分佈)

關於Gamma分佈,Rickjin寫的“LDA數學八卦”中有詳細的描述,強烈推薦。我看過了一遍,但還沒有理解,因此略過,等搞明白了再說。【存疑:可考慮再專門寫一篇gamma分佈的文章】

八、多項分佈、Dirichlet分佈在LDA中的應用

此處只是初步說一下自己對多項分佈、Dirichlet分佈與LDA的關係的理解。

LDA模型在描述的時候,是從生成文章的方向來描述的,但在實際計算中,一般是根據已有的文章(即:語料庫corpus)來反推文章的主題。

我們先按生成文章的方向來講。

LDA是假設一篇文章中有多個主題,每個主題有對應的單詞,我們分別將其對應為doc-topic,和topic-word模型。

我們先來看看topic-word模型:

對於一個topic,它對應的一個word庫,在這個word庫中,每一個word都有可能被選擇,這個,不過不同word被選擇的概率不同,因此,這個topic-word模型中word的分佈為多項分佈。根據多項分佈的公式:P(x_{1}, x_{2},…, x_{k}|n, p_{1}, p_{2},…, p_{k}),其中,x_{i}就是單詞word的出現次數,p_{i}就是單詞word的出現概率。

再來看doc-topic模型:

對於一篇文章中,可能會有多個主題,每個主題的概率也是不同的,那麼,doc-topic模型也是多項分佈嗎?注意:在一篇文章doc中,文章的主題並不是隨機選擇的,而是有確定主題的,也就是說,對於一片doc,已經預設其主題的概率p_{i}的是固定的。那麼,我們從語料庫中選擇單詞來形成這篇文章,且這篇文章的主題符合概率向量p_{→}={p_{1}, p_{2},…, p_{k}},這個分佈就是Dirichlet分佈。根據Dirichlet分佈的公式:p(P={p_{i}}|α_{i}),其中,p_{i}就是各個主題出現的概率。【存疑:此處p_{i}與上一段的p_{i}所指的不是一個東西吧?應該一個是在一個主題中各個word的出現概率p,一個是在一篇文章doc中,各個主題出現的概率p。】

【存疑:現在不明白的是,Dirichlet分佈中的α_{i}的意義是什麼?概率語言模型及其變形系列(2)-LDA及Gibbs Sampling中有說到:α^{→}為Dirichlet分佈的引數,在概率語言模型中通常會根據經驗給定,由於是引數向量服從分佈的引數,因此稱為“hyperparamer”。不過,還是沒有說他的意義是什麼?】

LDA模型要解決的主要問題是:

已知:

Dirichlet分佈的公式:$p(P={p_{i}}|α_{i})$

多項分佈的公式:$P(x_{1}, x_{2},…, x_{k}|n, p_{1}, p_{2},…, p_{k})$

在此情況下,根據已知的各個word(如$x_{1}, x_{2},…, x_{k}$)的統計詞頻等資訊,求出各個word屬於各個主題的概率,即:

$P({p_{i}}|x_{1}, x_{2},…, x_{k}) = ?$

(注:根據共軛先驗分佈的公式,參看CMU的一個PPTDirichlet Distribution, Dirichlet Process and Dirichlet Process Mixture,可以得到:

$P({p_{i}}|x_{1}, x_{2},…, x_{k}) = \frac{Π_{i}Γ(α_{i}+x_{i})}{Γ(N+∑_{i}α_{i})} * Π_{i}p_{i}^{α_{i}+x_{i}-1}$

)$

根據不同的主題進行排序,從而可以得到不同主題情況下的所有word的排序結果,我們一般取前20~100個單詞,就可以看出這個主題是哪一類的。

九、【存疑:不明白的問題】:

  1. 為何關於二項分佈的分佈是Beta分佈的那種形式(即:如何推匯出來的)?
  2. 為何關於多項分佈的分佈是Dirichlet分佈的形式?
  3. Beta分佈中的α、β引數所代表的意義是什麼?
  4. Dirichlet分佈中的α^{→} = {α_{i}}所代表的意義是什麼?
  5. LDA模型中的φ引數在哪個分佈裡,怎麼沒有看到?它的意義是什麼?
  6. LDA模型中,每個topic下對應的word是所有的corpus中的words嗎,還是隻是其中的一部分word所組成的子集?
  7. LDA模型中,每個文章doc中,選擇topic也和和每個topic中選擇word一樣,都是多項分佈嗎?

參考資料: