吉布斯采樣(Gibbs Sampling)
常用於DBM和DBN,吉布斯采樣主要用在像LDA和其它模型參數的推斷上。
要完成Gibbs抽樣,需要知道條件概率。也就是說,gibbs采樣是通過條件分布采樣模擬聯合分布,再通過模擬的聯合分布直接推導出條件分布,以此循環。
概念解釋
吉布斯采樣是特殊的Metropolis-Hastings算法,會用到馬爾科夫鏈。
具體地說,
MCMC:Markov鏈通過轉移概率矩陣可以收斂到穩定的概率分布。這意味着MCMC可以借助Markov鏈的平穩分布特性模擬高維概率分布;當Markov鏈經過burn-in階段,消除初始參數的影響,到達平穩狀態后,每一次狀態轉移都可以生成待模擬分布的一個樣本。
Gibbs抽樣是MCMC的一個特例,它交替的固定某一維度,然后通過其他維度的值來抽樣該維度的值,注意,gibbs采樣只對z是高維(2維以上)(Gibbs sampling is applicable in situations where Z has at least two dimensions)情況有效。
吉布斯采樣的通俗解釋
Gibbs 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到的單元,是逼近聯合分布的。
二維吉布斯采樣算法
吉布斯采樣算法中右邊的條件概率我們是知道的,例如你要采樣的是二維高斯分布,那么固定xt后就是二維高斯分布固定xt后的一維高斯分布,且每次采樣的坐標不同,這樣這個一維高斯分布概率密度函數也就不一樣了。
————————————————
版權聲明:本文為CSDN博主「whitenightwu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wydbyxr/article/details/83212740