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