GIBBS SAMPLING FOR THE UNINITIATED 的學習筆記

Gibbs Sampling是用來進行參數學習的一種重要手段,而對於這部分知識的學習並不是一個簡單的過程,有很多人都是淺嘗輒止,沒有了解它的本質,本篇文章將爲您講解Gibbs Sampling的基本策略。

Some background

     現在有一枚硬幣,你拋擲10次這枚硬幣,這時候,拋擲的結果是HHHHTTTTTT,這時候要你猜這枚硬幣拋擲後出現正面的概率是多大,也許你會很自然的說,當然是0.4,是的,我也很同意你的說法,爲什麼呢?

假設這枚硬幣出現正面的概率是p,於是


      ,也就是說我們可以計算在概率p設定的情況下的數據出現的概率。現在要使這個概率達到最大值,自然是要對其求導,使得導數爲0的p值就是我們要求的值。現在計算結果就是0.4,這個其實就是MLE的思想,也就是最大似然估計法。

       學過機器學習的人應該都知道,最大似然估計很多時候會過擬合,於是想出了一種其他的估計參數的方法,添加先驗知識。具體的策略就是使用貝葉斯公式



這裏的是似然值,是先驗值,這兩者的乘積就是後驗概率,而使得後驗概率達到最大值的參數估計就是MAP估計。

使用MAP對一個新數據進行估計,公式如下:



使用MLE或者MAP都是在某種程度上使用一種猜測的最好的參數,但是這種只依賴於單個猜測的參數會丟失很多的信息,如果我們將整個後驗分佈都考慮到估計模型中,那麼這些信息就不會丟失,這比只使用單個參數的估計理論上是要更優的。

於是新的估計公式如下:



在新的預測公式中,我們使用了整個後驗分佈,使用了期望。使用整個後驗可以提升我們預測的準確性。在新的估計公式中,我們可以看到的估計也是一個問題,顯然它不是一個已知量,使用全概率公式和貝葉斯公式,可以得到:



上面的兩個公式中的計算非常複雜的,如果直接按照公式中的方法來實現預測,根本就是不可能的。於是出現了採樣,而採樣的最終目標是希望能夠過保證樣本的分佈和真實的分佈儘可能的接近。而Gibbs Sampling就是這樣的一種能夠儘量保持真實分佈的採樣策略。至於爲什麼Gibbs Sampling能夠儘量的保證採樣結果符合真實的分佈,這是一個大的問題,以後有時間我會專門寫一篇文章介紹MCMC的知識,以及MCMC與Gibbs Sampling之間的關係。

關於MCMC,在這裏舉一個簡單的例子:例如求的策略,假設現在有一個邊長爲d的正方形,它們的邊長爲d,在這個正方形裏面有一個直徑爲d的圓,現在我們通過採樣的方法來求得的值。現在均勻的往正方形中撒豆子,有一部分豆子會落在圓內部,其他一部分會落在圓外部,假設圓內部的豆子的個數爲C,在正方形內部的豆子的個數爲D,那麼顯然可以得到如下的計算公式,



這個是在假設落在圓形內部的豆子的個數的與落在正方形內部的豆子的個數的比例是它們兩個的面積的比例。於是的求解就可以變得很輕鬆了。

我們再舉一個比較有意思的例子。假設有一個概率分佈p(z),它的分佈信息如圖所示,現在存在一條曲線f(z),那麼如何估算這條曲線的對應的期望值呢?



期望計算方式如下:



現在我們想要使用採樣的方法來求取這個期望值,我們按照p(z)進行對z的採樣,於是我們就可以將公式進行如下的轉換。



上面的公式是存在一個問題,概率值不見了,但是經過分析你就會發現其實概率值以及轉換到其他的計算因子中了。假設z出現了count(z)次,那麼在該計算公式中就應該可以得到它的概率值爲:


基於上面的論述,我們以及完成了對一次採樣求期望的過程。這個也是MCMC的一個最基本的策略描述。

Gibbs Sampling

Gibbs Sampling 是一種特殊的MCMC策略,它適合於進行多維數據的採樣,假設數據Z是<z1,z2,z3...zk>有k維,Gibbs Sampling現在總是隻對其中一個維度進行採樣,依賴其他維度的信息來幫助我們對某個維度進行採樣,維度的選擇是一個固定的過程。採樣的策略使用的是條件概率。


上面這個式子說明了如何採樣,使用條件概率,然後使用全概率公式進行一個簡單的變化就可以得到,分子和分母的形式非常的相近,分子是一個聯合概率,而分母是在去除需要採樣的維度之後的聯合分佈。每一個維度都可以想像成是一個參數信息,每個維度新採樣的數據都會在下一輪採樣中使用。我們將如此的重複採樣,直到採樣的分佈收斂爲止。

在接下來的文章中,我會講解一個使用Gibbs Sampling 進行採樣的方法,使用這個方法進行樸素貝葉斯公式中的參數的學習。

Gibbs Sampling for Naive Bayes Model

 Naive Bayes Model 是一個分類模型,在文本分類中有這很好的應用,給定一篇文檔,我們需要給出它的類別,現在假設這是一個兩類分類問題,我們的目標是:


找出能夠使得目標類別概率最大的類別作爲該文檔的分類。上面的方法使用了貝葉斯公式。樸素貝葉斯認爲所有的參數都是相互獨立的,在文本處理中,它認爲詞與詞之間是相互獨立的,這也是它爲什麼被稱做樸素的原因。


上面的公式正式說明了它的基本策略。將一篇文檔的生成概率轉換爲一個單詞的生成概率。下面我將描述如何使用Gibbs Sampling 方法來實現參數的學習。
可以將文檔的生成看成如下的過程:
1,產生一個文本類別標籤0或者1
2,根據0或者1的類別來選擇生成各個詞彙的概率
3,使用相應的詞彙概率來生成文檔
在進行下面的描述之前,我先講後面可能需要使用到的文檔符號及它們的含義進行描述一下,只要你的英語不是太爛,那麼看懂入夏的文章應該不是太大的問題。


其實上面的描述的文檔生成過程可以使用概率圖的模型來描述,具體的請參考下圖。


是一文檔標籤的先驗概率分佈的參數,使用生成一個二項分佈,同理對於的描述也是如此,是某個詞彙生成概率的先驗分佈參數,對其進行採樣就可以獲取一個詞彙分佈概率。當然不同的類別的詞彙分佈概率也是不一樣的,對於一個二類分類問題。

是一個伯努力分佈,它的先驗應該是個Beta分佈,而詞彙概率是一個多項式分佈,利用共軛的先驗的原則,我們就認爲是符合Dirichlet 分佈。



Gibbs Sampling 是需要儘可能的遍歷空間中的所有的點,在採樣的過程中將每一個參數當作一個維度,然後在已知其他維度的時候對其中一維進行採樣,在樸素貝葉斯的學習過程中會涉及如下的變量。

1 二項分佈的概率分佈

2 每個類對應的多項式分佈

3 以及每一篇文檔的類別

在介紹Gibbs  Sampling的過程中我們已經講述了,主要是使用其他維度的信息對其他一維進行採樣,我們可以看到在採樣的時候我們使用的公式,分子分母都使用了聯合概率,分子和分母的信息的差別非常的小,分子是所有維度的聯合概率,而分母則是去除了需要採樣的維度之後剩餘的其他維度的聯合分佈。



式子中的先驗符合Beta分佈,所以它的計算公式如下:


前面的常熟項是用來進行歸一化的,使得概率之和爲1。如果去除常數項的話,我們可以得到近似的公式:


第二個因子是利用通過二項式分佈進行採樣,生成N個類別標記。

第五第六個因子是詞彙採樣過程,也就是依據選中的文檔的標籤和詞彙的分佈概率生成詞彙,進而生成文章,文章的生成過程可以使用如下的公式描述:


在上面的式子中我們的先驗都是用了共軛先驗,這對於我們獲取後驗分佈很有幫助,這裏面出現了兩次共軛先驗,文本的類別有兩類,我們假設符合二項分佈,在模型中,我們使用了Beta分佈作爲它的先驗。然後我們計算它們的乘積,我們會發現它的後驗分佈的形式與先驗分佈的形式完全一致,只是參數發生了變化。它仍然符合Beta分佈。這使得我們的模型非常的清晰簡便。

同理對於使用Dericelet作爲多項式分佈的先驗概率也是如出一轍,也同樣獲得一致的效果


上面的式子都沒有使用等號因爲,這只是一個去除了歸一化項之後的計算公式,第一個後驗分佈

是一個Beta分佈,它的參數是(),第二個後項分佈是Dericelet分佈,它的參數是()。

最後面總結所有的分佈的聯合概率如下。


Integrating out 


爲了更好的去除一些沒有參數的學習過程我們可以將一些比較容易Integrateout的參數進行Integrateout處理。也就是對其進行積分。


上面的這個式子就是就是對參數c的Integrateout的過程。很自然的我們就可以想到對參數的Intgrate out的過程如下:


其中我們將與無關的因子都放到了積分的外面,然後對裏面的式子進行積分。

至於積分的計算過程,我就不做過多的解釋了,因爲還是相對比較簡單的。最後面我們的聯合概率公式就可以表示如下:

有了上面的簡化後的聯合概之後我們就可以開始進行Gibbs Sampling了。

Building the Gibbs Sampler

Gibbs Sampling 的定義就是,以其他維度的信息爲條件,對另外一維進行採樣。思路非常的簡單。

假設現在我們要對第一文檔的標籤類別進行採樣,那麼我們的採樣概率應該是一個條件概率,而條件部分的信息就是其他其他的所有問的標籤信息,文檔信息,不同類別的詞彙分佈概率信息,還有超參數信息也就是先驗信息。

我們再依次對L2,L3進行採樣。現在最重要的問題就是如何求取這些條件概率。

在開始每一次採樣的過程中,我們都會知道一些信息,這些信息包括每篇文檔的單詞的數量,標記爲0和比較爲1 的文檔的數量,所有單詞在標記爲(0或1)中的數量,每一篇文檔的類別標籤,以及當前的的數值。當對一篇文檔的標籤進行採樣的時候我們需要暫時的將所有的該篇文檔的信息隱藏,包括該篇文檔中的各個詞彙的數量,以及該篇文檔的類別標籤。然後我們分別獲取該篇文檔類別爲0和該篇文檔類別爲1的概率。同樣的我們可以對進行採樣。

對文檔類別標籤進行採樣

根據上面的公式我們知道,對文檔類別標籤的概率是一個條件概率,根據條件概率的定義,我們可以將條件概率進行如下的轉換。


我們會發現分子分母的形式都是一樣的,只是分子是所有數據的聯合概率,而分母是去除該篇文檔的信息之後聯合概率。而這個聯合概率的計算我們上面已經進行了描述。因此我們現在需要關注的信息就是聯合概率中分子和分母中不一樣的部分。對於聯合概率中的第一個因子是分子和分母都是一樣的,所以不要做任何處理,而它們的不同的部分就只有第二第三個因子。第二個因子中的分子中的信息需要去除該篇文檔的信息,假設該篇文檔的當前的類別標籤是0,那麼分子中的信息就需要進行入夏的更改,第一將總數N減去1,同時將C0的數量也減去1,此時我們使用C1的數量是不變的。那麼分子與分母相除之後得到的結果如下

可以看到這些都是Gamma函數,看到這些討厭的Gamma分佈,我想每個人可能都會覺得很無奈,但是我們就要很快的擺脫它們了。

於是上面的式子可以進行如下的轉換


使用同樣的方法我們可以得到最後一個因子的分子與分母之比,還是處於分子分母的不同之處進行考慮。


最後一個因子的式子如上所示,其中代表的是這個單詞在類別爲0中的文檔中出現的總次數;代表的是這個單詞在類別爲0中的文檔中出現的總次數。去除當前文檔中的所有的信息之後的詞彙總次數。最後面的分子與分母相除的結果如下。


約去公共的部分,我們得到的結果如下所示;也就是漁區公共部分之後只剩下該片文檔的詞彙信息了。


到現在爲止,我們已經將所有的因子的計算表達式都已經得到了,最後的採樣概率計算如下,分別對該文檔屬於0的概率和該文檔的概率爲1進行採樣。

其中Lj可以取0或者1。至此我們就獲得了概率分佈的計算。接下來就是採樣了。

1 計算Lj爲0的概率爲value0

2計算Lj爲0的概率爲value1

3 概率分佈爲<value0/(value0+value1),value1/(value0+value1)>

4 根據分佈進行採樣。

對於的採樣時類似的過程,所以在這裏就不在做過多的說明了。

有空我會把我實現的Gibbs Sampling for Naïve Bayes的代碼貼上來,敬請關注。



 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章