接受拒绝采样(Acceptance-Rejection Sampling)
我們所說的抽樣,其實是指從一個概率分布中生成觀察值(observations)的方法。而這個分布通常是由其概率密度函數(shù)(PDF)來表示的。而且, 即使在已知PDF的情況下,讓計算機自動生成觀測值也不是一件容易的事情。從本質(zhì)上來說,計算機只能實現(xiàn)對均勻分布(Uniform distribution)的采樣。 那如何實現(xiàn)計算機很好的采樣數(shù)據(jù)樣本呢?今天我們一起來看看實現(xiàn)方法。
在采樣問題上我們可能會面對這些問題:
- 計算機只能實現(xiàn)對均勻分布的采樣,但我們?nèi)匀豢梢栽诖嘶A(chǔ)上對更為復(fù)雜的分布進(jìn)行采樣,那具體該如何操作呢?
- 隨機分布的某些數(shù)字特征可能需要通過積分的形式來求解,但是某些積分可能沒有(或者很難求得)解析解,彼時我們該如何處理呢?
- 在貝葉斯推斷中,后驗概率的分布是正?于先驗和似然函數(shù)之積的,但是先驗和似然函數(shù)的乘積形式可能相對復(fù)雜,我們又該如何對這種形式復(fù)雜的分布進(jìn)行采樣呢?
針對這些問題衍生出一系列求解的方法。
一、接受拒絕采樣(Acceptance-Rejection Sampling)
在數(shù)學(xué)中,拒絕抽樣是用來從分布產(chǎn)生觀測值的基本技術(shù)。它也被稱為接受拒絕方法或“接受 - 拒絕算法”,是一種蒙特卡羅方法,這種方法與Metropolis-Hastings算法也有一定關(guān)系。
1. 簡單認(rèn)識
下圖是一個隨機變量的密度函數(shù)曲線,試問如何獲得這個隨機變量的樣本呢?
利用這個曲線的形狀來抽取樣本,用一個矩形將這個密度曲線套起來,把密度曲線框在一個矩形里,如下:
然后,向這個矩形里隨機投點。隨機投點意味著在矩形這塊區(qū)域內(nèi),這些點是滿足均勻分布的。投了大概10000個點,如下面這個樣子:
顯然,有的點落在了密度曲線下側(cè),有的點落在了密度曲線的上側(cè)。上側(cè)的點用綠色來表示,下側(cè)的點用藍(lán)色來表示,如下圖:
只保留密度曲線下側(cè)的點,即藍(lán)色的點:
到這里,提一個問題,在密度曲線以下的這塊區(qū)域里,這些點滿足什么分布?均勻分布!這是拒絕采樣最關(guān)鍵的部分,搞個矩形、向矩形里投點等等,所做的一切都是為了獲得一個密度曲線所圍成區(qū)域的均勻分布。只要能獲得這樣一個在密度曲線下滿足均勻分布的樣本,我們就可以獲得與該密度曲線相匹配的隨機變量的采樣樣本。方法是,只需把每個藍(lán)點的橫坐標(biāo)提取出來,這些橫坐標(biāo)所構(gòu)成的樣本就是我們的目標(biāo)樣本。下圖左側(cè),是按照以上方法獲得的一個樣本的直方圖以及核密度估計,下圖右側(cè),是開始的密度曲線。
可見,采樣樣本的核密度估計與目標(biāo)密度曲線基本一致,可以肯定這個樣本就是目標(biāo)樣本。
最開始時候用到了一個矩形,這個矩形就是一個滿足均勻分布的建議分布,建議分布只是獲得目標(biāo)密度函數(shù)曲線下均勻分布樣本的一個輔助工具。采用均勻分布作為建議分布有時效率很低,為什么這么說?從上例就可以看出,均勻分布的好多點(那些綠點)都被剔除了,造成了一種浪費。可以選擇一些其他曲線來把密度曲線框起來,效率會提高一點,如下圖:
數(shù)曲線為h(x), 對應(yīng)于下圖中的藍(lán)線,建議分布密度曲線為g(x),我們把g(x)乘上一個常數(shù)因子c,然后用cg(x)這條曲線將目標(biāo)密度曲線框起來。
我們假定滿足g(x)的隨機變量易于采樣,那么拒絕采樣的步驟如下:
- 從g(x)采到一個樣本數(shù)據(jù),記為x?x^{\star}x?,我們把它作為一個建議
- 要不要接受這個建議,作為滿足h(x)分布的一個樣本數(shù)據(jù)呢?我們定義一個接受概率:
也就是說,我們以α\alphaα的概率接受x?x^{\star}x?作為h(x)分布的一個樣本數(shù)據(jù)。實際操作中,我們是取一個U(0,1)U(0, 1)U(0,1)的隨機數(shù)μ\muμ,如果μ<α\mu<\alphaμ<α,就接受x?x^{\star}x?作為h(x)的一個樣本數(shù)據(jù),否則,把它舍棄掉,回到1步繼續(xù)循環(huán)。最終可以獲得一個樣本。
- 文章開頭是一下子抽取10000個點,到后來怎么成了一個個抽了呢?其實它們是對應(yīng)的,把藍(lán)點去掉的過程就相當(dāng)于你做是否拒絕判斷的過程。
- 如果有密度曲線下的均勻分布樣本,就可以得到與密度曲線相匹配的分布的一個樣本。
- 如果建議分布的形狀和目標(biāo)分布越接近,采樣的效率就越高。
2. Acceptance-Rejection Sampling過程
3. Acceptance-Rejection Sampling的直觀解釋
4. Acceptance-Rejection Sampling有效性證明(待)
5.python實現(xiàn)
2. 生成代碼如下:
5. 小結(jié)
要想將蒙特卡羅方法作為一個通用的采樣模擬求和的方法,還的需馬爾科夫鏈的幫忙。
https://gaolei786.github.io/statistics/reject.html
https://zhuanlan.zhihu.com/p/75264565
總結(jié)
以上是生活随笔為你收集整理的接受拒绝采样(Acceptance-Rejection Sampling)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑快捷键键如何设置(电脑快捷键怎么设置
- 下一篇: 面向空天地一体多接入的融合6G网络架构展