算法学习系列(MCMC):MCMC采样
如果假定我們可以得到我們需要采樣樣本的平穩(wěn)分布所對(duì)應(yīng)的馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣,那么我們就可以用馬爾科夫鏈采樣得到我們需要的樣本集,進(jìn)而進(jìn)行蒙特卡羅模擬。但是一個(gè)重要的問(wèn)題是,隨意給定一個(gè)平穩(wěn)分布?π?,如何得到它所對(duì)應(yīng)的馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣?P?呢?這是個(gè)大問(wèn)題。我們繞了一圈似乎還是沒(méi)有解決任意概率分布采樣樣本集的問(wèn)題。
概率圖模型中最常用的采樣技術(shù)就是馬爾可夫鏈蒙特卡洛方法(MCMC)。
MCMC 一般算法
算法基本思想
先設(shè)法構(gòu)造一條馬爾可夫鏈,使其收斂至平穩(wěn)分布恰好為?,然后通過(guò)這條馬爾可夫鏈然后產(chǎn)生符合?分布的樣本。最后通過(guò)這些樣本來(lái)進(jìn)行估計(jì)。
MCMC采樣算法
由于一般情況下,目標(biāo)平穩(wěn)分布π(x)π(x)和某一個(gè)馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣QQ不滿(mǎn)足細(xì)致平穩(wěn)條件,即
我們可以對(duì)上式做一個(gè)改造,使細(xì)致平穩(wěn)條件成立。方法是引入一個(gè)?α( i , j )?,使上式可以取等號(hào),即:
什么樣的?α( i , j )?可以使等式成立呢?其實(shí)很簡(jiǎn)單,只要滿(mǎn)足下兩式即可:
這樣,我們就得到了我們的分布?π(x)?對(duì)應(yīng)的馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣?P,滿(mǎn)足:
α( i , j )?我們有一般稱(chēng)之為接受率。(取值在[0,1]之間,可以理解為一個(gè)概率值。)
也就是說(shuō),我們的目標(biāo)矩陣?P?可以通過(guò)任意一個(gè)馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣?Q?乘以?α( i , j )?得到。α( i , j )我們一般稱(chēng)之為接受率。即目標(biāo)矩陣?P?可以通過(guò)任意一個(gè)馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣?Q?以一定的接受率獲得。
這個(gè)很像我們?cè)谥爸v到的接受-拒絕采樣,那里是以一個(gè)常用分布通過(guò)一定的接受-拒絕概率得到一個(gè)非常見(jiàn)分布,這里是以一個(gè)常見(jiàn)的馬爾科夫鏈狀態(tài)轉(zhuǎn)移矩陣?Q?通過(guò)一定的接受-拒絕概率得到目標(biāo)轉(zhuǎn)移矩陣?P?,兩者的解決問(wèn)題思路是類(lèi)似的。
現(xiàn)在我們來(lái)總結(jié)下MCMC的采樣過(guò)程:
上面這個(gè)過(guò)程基本上就是MCMC采樣的完整采樣理論了,這個(gè)算法存在一些問(wèn)題,后面會(huì)提及
在介紹Metropolis- Hastings算法之前首先介紹以下Metropolis采樣算法。
Metropolis采樣算法
Metropolis算法的原理
從一個(gè)已知的形式較為簡(jiǎn)單的分布中采樣,并以一定的概率接受這個(gè)樣本作為目標(biāo)分布的近似樣本。
假設(shè)需要從目標(biāo)概率密度函數(shù)?p(θ)?中進(jìn)行采樣,同時(shí),θ滿(mǎn)足??∞<θ<∞?。Metropolis采樣算法根據(jù)馬爾可夫鏈去生成一個(gè)序列:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
其中,表示的是馬爾可夫鏈在第?t代時(shí)的狀態(tài)。
在Metropolis采樣算法的過(guò)程中,首先初始化狀態(tài)值??,然后利用一個(gè)已知的分布?生成一個(gè)新的候選狀態(tài)?,隨后根據(jù)一定的概率 a 選擇接受這個(gè)新值,或者拒絕這個(gè)新值,在Metropolis采樣算法中,概率為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
這樣的過(guò)程一直持續(xù)到采樣過(guò)程的收斂,當(dāng)收斂以后,樣本即為目標(biāo)分布 p(θ) 中的樣本。
Metropolis算法的流程
基于以上的分析,可以總結(jié)出如下的Metropolis采樣算法的流程:
Metropolis算法的解釋
要證明Metropolis采樣算法的正確性,最重要的是要證明構(gòu)造的馬爾可夫過(guò)程滿(mǎn)足如上的細(xì)致平穩(wěn)條件,即:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
對(duì)于上面所述的過(guò)程,分布為,從狀態(tài)?i?轉(zhuǎn)移到狀態(tài)?j?的轉(zhuǎn)移概率為:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
對(duì)于選擇該已知的分布,在Metropolis采樣算法中,要求該已知的分布必須是對(duì)稱(chēng)的,即?,即
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
常用的符合對(duì)稱(chēng)的分布主要有:正態(tài)分布,柯西分布以及均勻分布等。
接下來(lái),需要證明在Metropolis采樣算法中構(gòu)造的馬爾可夫鏈滿(mǎn)足細(xì)致平穩(wěn)條件:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
因此,通過(guò)以上的方法構(gòu)造出來(lái)的馬爾可夫鏈?zhǔn)菨M(mǎn)足細(xì)致平穩(wěn)條件的。
Metropolis算法要求已知的條件分布必須是對(duì)稱(chēng)的,而一般的MCMC采樣算法問(wèn)題存在于上面第三步的 c 步驟。由于?? 可能非常的小,比如0.1,導(dǎo)致我們大部分的采樣值都被拒絕轉(zhuǎn)移,采樣效率很低。使得馬氏鏈遍歷所有的狀態(tài)空間要花費(fèi)太長(zhǎng)的時(shí)間,收斂到平穩(wěn)分布?p(x)?的速度太慢這時(shí),就輪到我們的M-H采樣出場(chǎng)了。
Metropolis - Hastings算法
因此我們的接受率可以做如下改進(jìn),即:
?
很容易驗(yàn)證:
MH算法流程
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Gibbs采樣
MH算法不僅適用于一維的情況,也適用于高維的情況,但是對(duì)于高維的情況存在問(wèn)題,一是接受率的存在,計(jì)算量大。并且由于接受率的原因?qū)е滤惴ㄊ諗繒r(shí)間變長(zhǎng)。二是有些高維數(shù)據(jù),特征的條件概率分布好求,但是特征的聯(lián)合分布不好求。
細(xì)致平穩(wěn)條件(Gibbs采樣原理)
?
在M-H采樣中我們通過(guò)引入接受率使細(xì)致平穩(wěn)條件滿(mǎn)足。現(xiàn)在我們換一個(gè)思路。
Gibbs算法流程
總結(jié)
以上是生活随笔為你收集整理的算法学习系列(MCMC):MCMC采样的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 用python设计学生管理系统_Pyth
- 下一篇: mybatis jar包_springb