為什么要用吉布斯采樣
什么是sampling?
sampling就是以一定的概率分布,看發生什么事件。舉一個例子。甲只能E:吃飯、學習、打球,時間T:上午、下午、晚上,天氣W:晴朗、刮風、下雨。現在要一個sample,這個sample可以是:打球+下午+晴朗。
吉布斯采樣的通俗解釋?
問題是我們不知道p(E,T,W),或者說,不知道三件事的聯合分布joint distribution。當然,如果知道的話,就沒有必要用gibbs sampling了。但是,我們知道三件事的conditional distribution。也就是說,p(E|T,W),p(T|E,W),p(W|E,T)。現在要做的就是通過這三個已知的條件分布,再用gibbs sampling的方法,得到聯合分布。
具體方法。首先隨便初始化一個組合,i.e. 學習+晚上+刮風,然后依條件概率改變其中的一個變量。具體說,假設我們知道晚上+刮風,我們給E生成一個變量,比如,學習-》吃飯。我們再依條件概率改下一個變量,根據學習+刮風,把晚上變成上午。類似地,把刮風變成刮風(當然可以變成相同的變量)。這樣學習+晚上+刮風-》吃飯+上午+刮風。同樣的方法,得到一個序列,每個單元包含三個變量,也就是一個馬爾可夫鏈。然后跳過初始的一定數量的單元(比如100個),然后隔一定的數量取一個單元(比如隔20個取1個)。這樣sample到的單元,是逼近聯合分布的。
馬氏鏈收斂定理
馬氏鏈定理: 如果一個非周期馬氏鏈具有轉移概率矩陣P,且它的任何兩個狀態是連通的,那么limn→∞Pnij 存在且與i無關,記limn→∞Pnij=π(j), 我們有
- limn→∞Pn=⎡⎣⎢⎢⎢⎢⎢π(1)π(1)⋯π(1)⋯π(2)π(2)⋯π(2)⋯⋯⋯⋯⋯⋯π(j)π(j)⋯π(j)⋯⋯⋯⋯⋯⋯⎤⎦⎥⎥⎥⎥⎥
- π(j)=∑i=0∞π(i)Pij
- π 是方程 πP=π 的唯一非負解
其中,π=[π(1),π(2),⋯,π(j),⋯],∑i=0∞πi=1 ,π 稱為馬氏鏈的平穩分布。
所有的 MCMC(Markov Chain Monte Carlo) 方法都是以這個定理作為理論基礎的。 定理的證明相對復雜。
定理內容的一些解釋說明
- 該定理中馬氏鏈的狀態不要求有限,可以是有無窮多個的;
- 定理中的“非周期“這個概念不解釋,因為我們遇到的絕大多數馬氏鏈都是非周期的;
- 兩個狀態i,j 是連通並非指i 可以直接一步轉移到j (Pij>0),而是指i 可以通過有限的n步轉移到達j(Pnij>0)。馬氏鏈的任何兩個狀態是連通的含義是指存在一個n, 使得矩陣Pn 中的任何一個元素的數值都大於零。
- 我們用 Xi 表示在馬氏鏈上跳轉第i步后所處的狀態,如果limn→∞Pnij=π(j) 存在,很容易證明以上定理的第二個結論。由於
P(Xn+1=j)=∑i=0∞P(Xn=i)P(Xn+1=j|Xn=i)=∑i=0∞P(Xn=i)Pij
上式兩邊取極限就得到 π(j)=∑i=0∞π(i)Pij
[馬爾科夫模型]
Monte Carlo隨機采樣方法
產生獨立樣本
基本方法:概率積分變換(第一部分已講)
接受—拒絕(舍選)采樣
重要性采樣
產生相關樣本:Markov Chain Monte Carlo
Metropolis-Hastings算法
Gibbs Sampler
這里主要講馬爾科夫鏈蒙特卡羅( Markov chain Monte Carlo, MCMC ),它使得我們可以從一大類概率分布中進行采樣,並且可以很好地應對樣本空間維度的增長。
Metropolis-Hastings采樣算法
Idea
對於給定的概率分布p(x),我們希望能有便捷的方式生成它對應的樣本。由於馬氏鏈能收斂到平穩分布, 於是一個很的漂亮想法是:如果我們能構造一個轉移矩陣為P的馬氏鏈,使得該馬氏鏈的平穩分布恰好是p(x), 那么我們從任何一個初始狀態x0出發沿着馬氏鏈轉移, 得到一個轉移序列 x0,x1,x2,⋯xn,xn+1⋯,, 如果馬氏鏈在第n步已經收斂了,於是我們就得到了 π(x) 的樣本xn,xn+1⋯。
這個絕妙的想法在1953年被 Metropolis想到了,為了研究粒子系統的平穩性質, Metropolis 考慮了物理學中常見的波爾茲曼分布的采樣問題,首次提出了基於馬氏鏈的蒙特卡羅方法,即Metropolis算法,並在最早的計算機上編程實現。Metropolis 算法是首個普適的采樣方法,並啟發了一系列 MCMC方法,所以人們把它視為隨機模擬技術騰飛的起點。 Metropolis的這篇論文被收錄在《統計學中的重大突破》中, Metropolis算法也被遴選為二十世紀的十個最重要的算法之一。
我們接下來介紹的MCMC 算法是 Metropolis 算法的一個改進變種,即常用的 Metropolis-Hastings 算法。由上一節的例子和定理我們看到了,馬氏鏈的收斂性質主要由轉移矩陣P 決定, 所以基於馬氏鏈做采樣的關鍵問題是如何構造轉移矩陣P,使得平穩分布恰好是我們要的分布p(x)。如何能做到這一點呢?
細致平穩條件
定理:[細致平穩條件] 如果非周期馬氏鏈的轉移矩陣P和分布π(x) 滿足
則 π(x)是馬氏鏈的平穩分布,上式被稱為細致平穩條件(detailed balance condition)。
其實這個定理是顯而易見的,因為細致平穩條件的物理含義就是對於任何兩個狀態i,j, 從 i 轉移出去到j 而丟失的概率質量,恰好會被從 j 轉移回i 的概率質量補充回來,所以狀態i上的概率質量π(i) 是穩定的,從而π(x) 是馬氏鏈的平穩分布。數學上的證明也很簡單,由細致平穩條件可得
由於π 是方程 πP=π 的解,所以π是平穩分布。
Note: 細致平穩條件是達到穩態的充分條件,並不是必要條件(也就是說要想達到穩態,必須要滿足細致平衡條件,但也不是說滿足細致平衡條件時的點就是穩態,而是說細致平衡條件是達到穩態的必經之路)。如在[馬爾科夫模型]示例中0.28*0.286=0.08008,0.15*0.489=0.07335不相等,並不符合細致平穩條件。
構建滿足條件的馬氏鏈
假設我們已經有一個轉移矩陣為Q 的馬氏鏈 (q(i,j)表示從狀態i轉移到狀態j的概率,也可以寫為q(j|i)或者q(i→j)), 顯然,通常情況下
也就是細致平穩條件不成立,所以 p(x) 不太可能是這個馬氏鏈的平穩分布。我們可否對馬氏鏈做一個改造,使得細致平穩條件成立呢?譬如,我們引入一個 α(i,j), 我們希望
取什么樣的 α(i,j) 以上等式能成立呢?最簡單的,按照對稱性,我們可以取
於是(*)式就成立了。所以有

於是我們把原來具有轉移矩陣Q的一個很普通的馬氏鏈,改造為了具有轉移矩陣Q′的馬氏鏈,而Q′恰好滿足細致平穩條件,由此馬氏鏈Q′的平穩分布就是p(x)!
在改造 Q 的過程中引入的 α(i,j)稱為接受率,物理意義可以理解為在原來的馬氏鏈上,從狀態i 以q(i,j) 的概率轉跳轉到狀態j 的時候,我們以α(i,j) 的概率接受這個轉移,於是得到新的馬氏鏈Q′的轉移概率為q(i,j)α(i,j)。
Note:當按照上面介紹的構造方法把Q–>Q’后,就不能保證Q’是一個轉移矩陣(轉移矩陣每一行加和為1)了。這時應該在 j != i 的時候轉移概率Q'(i, j) 如上處理, 當j = i 的時候, Q'(i, i) 應該設為Q'(i, i) = 1- 其它概率之和,從而歸一化概率轉移矩陣。
馬氏鏈轉移和接受概率:
MCMC采樣算法
采樣概率分布p(x)的算法,假設我們已經有一個轉移矩陣Q(對應元素為q(i,j)),lz: 馬氏鏈的初始狀態及狀態指的是概率分布π=[π(1),π(2),⋯,π(j),⋯]
Note: 一開始的采樣還沒有收斂,並不是平穩分布(p(x))的樣本(概率分布中的其中一個概率分布),只有采樣了多次(如20次)可能收斂了,其樣本才算是平穩分布的樣本。
上述過程中 p(x),q(x|y) 說的都是離散的情形,事實上即便這兩個分布是連續的,以上算法仍然是有效,於是就得到更一般的連續概率分布 p(x) 的采樣算法,而q(x|y) 就是任意一個連續二元概率分布對應的條件分布。
Metropolis-Hastings算法
{提高接受率alpha}
以上的 MCMC 采樣算法已經能很漂亮的工作了,不過它有一個小的問題:馬氏鏈Q在轉移的過程中的接受率α(i,j) 可能偏小,這樣采樣過程中馬氏鏈容易原地踏步,拒絕大量的跳轉,這使得馬氏鏈遍歷所有的狀態空間要花費太長的時間,收斂到平穩分布p(x) 的速度太慢。有沒有辦法提升一些接受率呢?
假設 α(i,j)=0.1,α(j,i)=0.2 , 此時滿足細致平穩條件,於是
上式兩邊擴大5倍,我們改寫為
看,我們提高了接受率,而細致平穩條件並沒有打破!這啟發我們可以把細致平穩條件(**) 式中的α(i,j),α(j,i) 同比例放大,使得兩數中最大的一個放大到1,這樣我們就提高了采樣中的跳轉接受率。所以我們可以取
於是,經過對上述MCMC 采樣算法中接受率的微小改造,我們就得到了如下教科書中最常見的 Metropolis-Hastings 算法。
對於分布 p(x),我們構造轉移矩陣Q′ 使其滿足細致平穩條件
此處 x 並不要求是一維的,對於高維空間的 p(x),如果滿足細致平穩條件
那么以上的 Metropolis-Hastings 算法一樣有效。
Gibbs Sampling算法
{提高高維隨機變量采樣接受率alpha}
MCMC:Markov鏈通過轉移概率矩陣可以收斂到穩定的概率分布。這意味着MCMC可以借助Markov鏈的平穩分布特性模擬高維概率分布p(x)
;當Markov鏈經過burn-in階段,消除初始參數的影響,到達平穩狀態后,每一次狀態轉移都可以生成待模擬分布的一個樣本。
而Gibbs抽樣是MCMC的一個特例,它交替的固定某一維度xi
,然后通過其他維度x⃗ ¬i
的值來抽樣該維度的值,注意,gibbs采樣只對z是高維(2維以上)(Gibbs sampling is applicable in situations where Z has at least two dimensions)情況有效。
基本算法如下:
- 選擇一個維度
i
,可以隨機選擇; - 根據分布
p(xi|x¬i)
抽樣xi
。
吉布斯采樣滿足細致平穩條件的轉移矩陣的構造
對於高維的情形,由於接受率 α的存在(通常α<1), 以上 Metropolis-Hastings 算法的效率不夠高。能否找到一個轉移矩陣Q使得接受率 α=1 呢?我們先看看二維的情形,假設有一個概率分布 p(x,y), 考察x坐標相同的兩個點A(x1,y1),B(x1,y2),我們發現
lz: 從下式可看出,M-H方法是從p(xi)出發構建細致平穩條件,而gibbs是從p(xi, yj)出發構建細致平穩條件。
所以得到
即
基於以上等式,我們發現,在 x=x1 這條平行於 y軸的直線上,如果使用條件分布p(y|x1) 作為任何兩個點之間的轉移概率,那么任何兩個點之間的轉移滿足細致平穩條件。
同樣的,如果我們在 y=y1 這條直線上任意取兩個點 A(x1,y1),C(x2,y1),也有如下等式
於是我們可以如下構造平面上任意兩點之間的轉移概率矩陣Q
有了如上的轉移矩陣 Q, 我們很容易驗證對平面上任意兩點 X,Y, 滿足細致平穩條件
於是這個二維空間上的馬氏鏈將收斂到平穩分布 p(x,y) 。而這個算法就稱為 Gibbs Sampling 算法,是 Stuart Geman 和Donald Geman 這兩兄弟於1984年提出來的,之所以叫做Gibbs Sampling 是因為他們研究了Gibbs random field, 這個算法在現代貝葉斯分析中占據重要位置。
lz: 從這可以看出,gibbs采樣和M-H采樣的不同在於,gibbs采樣從更大角度考慮了每次采樣間的聯系,也就是M-H只是單獨考慮某個pi_i的采樣(相當於直接從A -> D),而gibbs考慮了pi_j和其它如pi_j間的關系,從而從固定pi_j的角度出發,對pi_i采樣加速(采樣都是沿着坐標軸進行的)。
二維吉布斯采樣算法
Note: 采樣算法中右邊的概率我們是知道的,例如你要采樣的是二維高斯分布,那么固定xt后就是二維高斯分布固定xt后的一維高斯分布,且每次采樣的坐標不同,這樣這個一維高斯分布概率密度函數也就不一樣了。
Gibbs Sampling 算法中的馬氏鏈轉移
Note:2.1步是從 (x0,y0)轉移到(x0,y1),滿足Q(A→B)=p(yB|x1)的細致平穩條件,所以會收斂到平穩分布;同樣2.2步是從(x0,y1)轉移到(x1,y1),也會收斂到平穩分布。也就是整個第2步是從 (x0,y0)轉移到(x1,y1),滿足細致平穩條件,在循環多次后會收斂於平穩分布,采樣得到的(xn,yn),(xn+1,yn+1)...就是平穩分布的樣本(lz:不是(xn,yn),(xn,yn+1),(xn+1,yn+1)...,因為需要歸一化)。
以上采樣過程中,如圖所示,馬氏鏈的轉移只是輪換的沿着坐標軸 x軸和y軸做轉移,於是得到樣本(x0,y0),(x1,y1),(x2,y2),⋯馬氏鏈收斂后,最終得到的樣本就是 p(x,y) 的樣本,而收斂之前的階段稱為 burn-in period。也就是說馬氏鏈跳轉過程就是采樣的過程(采樣的意思就是說在xt下,我們先計算出p(y|xt)的概率分布,並依這個概率分布采樣某個yt+1), 馬氏鏈任何一個時刻 i 到達的狀態 x_i 都是一個樣本。 只是要等到 i 足夠大( i > K) , 馬氏鏈收斂到平穩分布后, 那么 x_K, x_{K+1}, …. 這些樣本就都是平穩分布的樣本。
lz:最終的近似平穩分布就可以通過采樣結果近似表達出來。
坐標軸輪換采樣
一般地,Gibbs Sampling 算法大都是坐標軸輪換采樣的,但是這其實是不強制要求的。最一般的情形可以是,在t 時刻,可以在x軸和y 軸之間隨機的選一個坐標軸,然后按條件概率做轉移,馬氏鏈也是一樣收斂的。輪換兩個坐標軸只是一種方便的形式。
lz: 但是不能只固定一個采樣的,否則樣本都是從某個固定維度采樣,並不具有整個分布的代表性。
n維吉布斯采樣算法
以上的過程我們很容易推廣到高維的情形,對於(***) 式,如果x1變為多維情形x1,可以看出推導過程不變,所以細致平穩條件同樣是成立的
此時轉移矩陣 Q 由條件分布 p(y|x1) 定義。上式只是說明了一根坐標軸的情形,和二維情形類似,很容易驗證對所有坐標軸都有類似的結論。
所以n維空間中對於概率分布p(x1,x2,⋯,xn) 可以如下定義轉移矩陣
- 如果當前狀態為(x1,x2,⋯,xn),馬氏鏈轉移的過程中,只能沿着坐標軸做轉移。沿着xi 這根坐標軸做轉移的時候,轉移概率由條件概率 p(xi|x1,⋯,xi−1,xi+1,⋯,xn) 定義;
- 其它無法沿着單根坐標軸進行的跳轉,轉移概率都設置為 0。
於是我們可以把Gibbs Sampling 算法從采樣二維的 p(x,y) 推廣到采樣n 維的 p(x1,x2,⋯,xn)
Note:
1 Algorithm 8中的第2步的第6小步,x2(t)應為x2(t+1)。
2 要完成Gibbs抽樣,需要知道如下條件概率:p(xi|x¬i)=p(x)p(x¬i)=p(x)∫p(x)dxi,x={xi,x¬i}
lz這也就是說,gibbs采樣是通過條件分布采樣模擬聯合分布,再通過模擬的聯合分布直接推導出條件分布,以此循環。
Gibbs sampling makes it possible to obtain samples from probability distributions without having to explicitly calculate the values for their marginalizing integrals, e.g. computing expected values, by defining a conceptually straightforward approximation.
以上算法收斂后,每次完整的循環完成后得到的(xn+1,yn+1)...就是概率分布p(x1,x2,⋯,xn)的一個樣本。(lz: g(.)是歸一化)
同樣的,在以上算法中,坐標軸輪換采樣不是必須的,可以在坐標軸輪換中引入隨機性,這時候轉移矩陣 Q 中任何兩個點的轉移概率中就會包含坐標軸選擇的概率,而在通常的 Gibbs Sampling 算法中,坐標軸輪換是一個確定性的過程,也就是在給定時刻t,在一根固定的坐標軸上轉移的概率是1。
吉布斯采樣的相關性和獨立性
馬爾科夫鏈中的連續的樣本是高度相關的(they were produced by a process that conditions on the previous point in the chain to generate the next point. This is referred to as autocorrelation (sometimes serial autocorrelation), i.e. correlation between successive values in the data.),這些樣本並不獨立,但是我們此處要求的是采樣得到的樣本符合給定的概率分布,並不要求獨立。
吉布斯采樣的接受率計算
吉布斯采樣可以看做是M-H算法的一個特例,即接受率α=1的情況。證明如下:
考慮一個M-H采樣的步驟,它涉及到變量zk,剩余變量z¬k保持不變。同時,從z到z∗的轉移概率為qk(z∗|z)=p(z∗k|z¬k)。我們注意到z∗¬k=z¬k,因為再采樣步驟中,向量的各個元素都不變。又p(z)=p(zk|z¬k)p(z¬k),因此,確定M-H算法中的接受概率為
A(z∗,z)=p(z∗)qk(z|z∗)p(z)qk(z∗|z)=p(z∗k|z∗¬k)p(z∗¬k)p(zk|z∗¬k)p(zk|z¬k)p(z¬k)p(z∗k|z¬k)=1
吉布斯采樣收斂的判斷
無論metropolis-hasting算法還是gibbs算法,都需要一個burn in過程,只有在達到平衡狀態時候得到的樣本才能是平衡狀態時候的目標分布的樣本,因此,在burn in過程中產生的樣本都需要被舍棄。如何判斷一個過程是否達到了平衡狀態還沒有一個成熟的方法來解決,目前常見的方法是看是否狀態已經平穩(例如畫一個圖,如果在較長的過程中,變化已經不大,說明很有可能已經平衡)當然這個方法並不能肯定一個狀態是否平衡,你可以舉出反例,但是卻是實際中沒有辦法的辦法。
關於鏈的收斂有這樣一些檢驗方法
(1)圖形方法 這是簡單直觀的方法。我們可以利用這樣一些圖形:
(a)跡圖(trace plot):將所產生的樣本對迭代次數作圖,生成馬氏鏈的一條樣本路徑。如果當t足夠大時,路徑表現出穩定性沒有明顯的周期和趨勢,就可以認為是收斂了。
(b)自相關圖(Autocorrelation plot):如果產生的樣本序列自相關程度很高,用跡圖檢驗的效果會比較差。一般自相關隨迭代步長的增加而減小,如果沒有表現出這種現象,說明鏈的收斂性有問題。
(c)遍歷均值圖(ergodic mean plot):MCMC的理論基礎是馬爾科夫鏈的遍歷定理。因此可以用累積均值對迭代步驟作圖,觀察遍歷均值是否收斂。
(2)蒙特卡洛誤差
(3)Gelman-Rubin方法
關於gibbs sampling的收斂,可以采用R^統計量。同時,可以多開幾個chain進行模擬。判斷收斂的時候,應該掐頭去尾計算R^。
在工程實踐中我們更多的靠經驗和對數據的觀察來指定 Gibbs Sampling 中的 burn-in 的迭代需要多少次。
Robert and Casella ( 1999 )總結了馬爾科夫鏈蒙特卡羅算法的收斂性檢測。
Jordan Boyd-Graber (personal communication) also recommends looking at Neal’s [15] discussion of likelihood as a metric of convergence.
[15] R. M. Neal. Probabilistic inference using markov chain monte carlo methods. Technical Report CRGTR-93-1, University of Toronto, 1993. http://www.cs.toronto.edu/∼radford/ftp/review.pdf.
burn-in階段可能不需要
當然可以一條鏈跑到黑,但是一條鏈跑到黑只能是寫學術 paper 的做法,在工程上可能還是要考慮很實際的速度和效率的問題,做 LDA 的時候我們就得考慮每秒鍾能處理多少個請求,這時候不得不設置 burn-in。
Charles Geyer:為什么burn-in不是必要的Burn-In is Unnecessary
[Charles Geyer:為什么一條鏈走到黑是正確的One Long Run in MCMC]
Jason Eisner (personal communication) argues, with some support from the literature, that burn-in, lag, and multiple chains are in fact unnecessary and it is perfectly correct to do a single long sampling run and keep all samples. See [4, 5], MacKay ([13], end of section 29.9, page 381) and Koller and Friedman ([10], end of section 12.3.5.2, page 522).
[4] C. Geyer. Burn-in is unnecessary, 2009. http://www.stat.umn.edu/∼charlie/mcmc/burn.html, Downloaded October 18, 2009.
[5] C. Geyer. One long run, 2009. http://www.stat.umn.edu/∼charlie/mcmc/one.html.
[10] D. Koller and N. Friedman. Probabilistic Graphical Models: Principles and Techniques. MIT Press, 2009.
[13] D. Mackay. Information Theory, Inference, and Learning Algorithms. Cambridge University Press, 2003.
得到近似的獨立樣本
為了得到近似獨立的樣本可以對序列進行采樣。
In order to avoid autocorrelation problems (so that the chain “mixes well”), many implementations of Gibbs sampling average only every L th value, where L is referred to as thelag.
the choice of L seems to be more a matter of art than science: people seem to look at plots of the autocorrelation for different values of L and use a value for which the autocorrelation drops off quickly. The autocorrelation for variable Z i with lag L is simply the correlation between the sequence Z i(t) and the sequence Z i(t−L) . Which correlation function is used seems to vary.
[Philip Resnik : GIBBS SAMPLING FOR THE UNINITIATED]
吉布斯采樣高級主題
隱變量Gibbs抽樣公式
如果模型包含隱變量z
,通常需要知道后驗概率分布p(z|x)
(如LDA中要推斷的目標分布p(z|w)),但是這個分布因涉及很多離散隨機變量等原因很難求解。
我們期望Gibbs抽樣器可以通過Markov鏈利用全部的條件分布p(zi|z¬i,w) 來模擬p(z|w) 。所以包含隱變量的Gibbs抽樣器公式如下:
lz:這里分母實際只是分子對zi的一個積分,將變量zi積分掉,就得到p(z-i, x),所以重點在聯合分布p(z,w)公式上,一般先推出聯合分布公式再積分就可以使用上面的隱變量gibbs采樣公式了。而這個聯合分布就是我們采樣出來的結果組成的近似分布了。
多鏈Multiple chains
As is the case for many other stochastic algorithms (e.g. expectation maximization as used in the forward-backward algorithm for HMMs), people often try to avoid sensitivity to the starting point chosen at initialization time by doing multiple runs from different starting points. For Gibbs sampling and other Markov Chain Monte Carlo methods, these are referred to as “multiple chains”.
超參數的采樣Hyperparameter sampling
Rather than simply picking hyperparameters, it is possible, and in fact often critical, to assign their values via sampling (Boyd-Graber, personal communication). See, e.g., Wallach et al. [20] and Escobar and West [3].
[3] M. D. Escobar and M. West. Bayesian density estimation and inference using mixtures. Journal of the American Statistical Association, 90:577–588, June 1995.
[20] H. Wallach, C. Sutton, and A. McCallum. Bayesian modeling of dependency trees using hierarchical Pitman-Yor priors. In ICML Workshop on Prior Knowledge for Text and Language Processing, 2008.
其它蒙特卡羅方法
silce sampling(連續采樣M個點)
slicing sampling: http://en.wikipedia.org/wiki/Slice_sampling
Adaptive Rejection Sampling for Gibbs Sampling
吉布斯采樣的實現
github Search · Gibbs Sampling
from: http://blog.csdn.net/pipisorry/article/details/51373090
ref: 隨機采樣方法整理與講解(MCMC、Gibbs Sampling等)*
各種參數估計方法+Gibbs 采樣精准細致的論述:Gregor Heinrich.Parameter estimation for text analysis*
LDA-math-MCMC 和 Gibbs Sampling*
PRML
從隨機過程到馬爾科夫鏈蒙特卡洛方法
An Introduction to MCMC for Machine Learning,2003
Introduction to Monte Carlo Methods
吉布斯采樣
吉布斯采樣分布式實現
吉布斯采樣與lda