吉布斯采樣的簡單描述


幾個可以學習gibbs sampling的方法
1,讀Bishop的Pattern Recognition and Machine Learning,講的很清楚,但是我記得好像沒有例子。
2,讀artificial Intelligence,2、3版,都有。但是我沒讀過。
3,最方便的,查wiki,這個說的最清楚。

這里通俗點的解釋一下。首先,什么是sampling。sampling就是以一定的概率分布,看發生什么事件。舉一個例子。甲只能E:吃飯、學習、打球,時間T:上午、下午、晚上,天氣W:晴朗、刮風、下雨。現在要一個sample,這個sample可以是:打球+下午+晴朗。。。

問題是我們不知道p(E,T,W),或者說,不知道三件事的聯合分布。當然,如果知道的話,就沒有必要用gibbs sampling了。但是,我們知道三件事的conditional distribution。也就是說,p(E|T,W),p(T|E,W),p(W|E,T)。現在要做的就是通過這三個已知的條件分布,再用gibbs sampling的方法,得到joint distribution。

具體方法。首先隨便初始化一個組合,i.e. 學習+晚上+刮風,然后依條件概率改變其中的一個變量。具體說,假設我們知道晚上+刮風,我們給E生成一個變量,比如,學習-》吃飯。我們再依條件概率改下一個變量,根據學習+刮風,把晚上變成上午。類似地,把刮風變成刮風(當然可以變成相同的變量)。這樣學習+晚上+刮風-》吃飯+上午+刮風。

同樣的方法,得到一個序列,每個單元包含三個變量,也就是一個馬爾可夫鏈。然后跳過初始的一定數量的單元(比如100個),然后隔一定的數量取一個單元(比如隔20個取1個)。這樣sample到的單元,是逼近聯合分布的。

  • 什么是Gibbs Sampling

Gibbs Sampling是MCMC算法中的一種,用來構造多變量概率分布的隨機樣本,比如構造兩個或多個變量的聯合分布,求積分,期望。

  • 為什么需要Gibbs Sampling

這不是廢話,肯定是積分,期望或者聯合分布很難計算出來,通常情況下當前面三個問題是NP問題時才需要Gibbs Sampling。不然的話,直接計算就可以了嘛,既准確又快速,干嘛還要Gibbs Sampling呢。補充一句Gibbs Sampling只是(也只能)到近似解。

  • 應用場景

a、積分,期望,樣本概率很難計算出來;b、條件概率很容易計算。具體一點的例子:受限玻爾茲曼機(RBM)的訓練,貝葉斯網絡,LDA都用到Gibbs Sampling。

  • 為什么Gibbs Sampling有效

當Gibbs Sapling算法執行多次之后,產生的樣本服從真實樣本的分布,即相當於直接從聯合分布中采樣。

  • Gibbs Sampling 算法 

二維Gibbs Sampling的馬氏鏈轉移

 

n維Gibbs Sampling算法

 觀點:

1. We have a representation of p(x) and f(x), but integration is intractable. It turns out that if correctly sampled, only 10-20 points can be sufficient to estimate the mean and variance of a distribution. Of course, Samples must be independently drawn; Expectation may be dominated by regions of high probability, or high function values.[1]

Reference

[1] Lecture 1: Introduction - CUNY 

[2] LDA數學八卦

后記:為什么要寫關於Gibbs Sampling的文章呢?首先Gibbs Sampling是有用滴,Gibbs Sampling在機器學習中主要用於學習階段的推理,比如求期望(平均值)和積分;再者網上的關於Gibbs Sampling的博客寫得不好,資料也不多。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM