浅谈接受-拒绝抽样/Acceptance-Rejection Sampling

最近在学马尔科夫链蒙特卡洛抽样,其中涉及到接受-拒绝抽样。在阅读了:

https://www.cnblogs.com/pinard/p/6625739.html

https://blog.csdn.net/Anne033/article/details/109841951?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163996461116780357248868%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163996461116780357248868&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-109841951.pc_search_result_control_group&utm_term=%E6%8E%A5%E5%8F%97%E6%8B%92%E7%BB%9D%E9%87%87%E6%A0%B7&spm=1018.2226.3001.4187

文章后有了一定的了解,在此写下自己的感想加深理解。

为什么要采用ARS抽样?

因为在研究过程中变量x的分布不一定满足(a,b)的均匀分布

 图1中x的分布是均匀分布,图2的x分布是不均匀分布。

那么问题来了,当遇到采样点的x分布不是均匀分布我们该怎样采样?

我们可以采用数学上逼近的思想:我用一个已知的并且正常的关于x的概率密度函数q(X)包裹我需要采样的这个概率密度函数p(X)。

所以使用ARS进行抽样需要哪些大前提:

1:需要已知进行采样的概率密度函数p(X)

2:包裹这个极不规则的p(X)的q(X)   %%因为p(X)在区间(a,b)的积分为1,并且q(X)在区间(a,b)的积分也为1,所以想要q(X)完全包裹p(X)就必须乘一个大于1的系数:M。并且这个M尽量接近于1。这样在采样过程中拒绝的样本点才会少,才能提高效率。

3:一个(0,1)的均匀分布。步骤2是为了采集样本点x,和为步骤3做准备,感觉步骤二有点像建模。步骤三是为了接受和拒绝这个样本点,像是求解。按我的理解步骤3是ARS采样方法的核心。我在采集到x后,比如x0,那我就就有了对应的f(x0),那么我到底接不接受这个(x0,f(x0))样本呢?那就需要比较Mq(x0)和f(x0),如果f(x0)≤Mq(x0),那就是在我的抽样区间内,我就要他,否则直接拒绝,不合适。

怎么理解u≤f(x0)/(Mq(x0))?这步令我最头疼。

我们现在确定了f(x0)和Mq(x0),那么我们现在最关心的是如何产生(0,f(x0))的样本点?

 

解决这样的办法就是在满足(0,Mq(x0))的采样空间满足概率密度函数为1/(Mq(x0))进行采样。

 

 经过采样得到了一系列的点:s1 s2 s3 ......sn

那我该怎样选择这些点呢?

只要sn≤f(x0)那我就接受他,否则pass掉,直接next。

那么p(sn≤f(x0))=f(x0)/(Mq(x0))

所以只有p(sn)≤f(x0)/(Mq(x0))时,才会接受sn。

 

这下理解了。

ok,那我现在就完成在x0dian处的采样了。接下来就是在x1处重复上述步骤。

 感悟:

ARS采样就是对均匀分布采样的活学活用,再一次证明了随机采样的厉害

但局限性也很强:在一维分布中可以很好的使用,二维以上就很难使用,一般我们很难知道二维的边缘概率密度函数,只能知道条件概率密度函数,使用困难。

这时候又想学习马尔科夫链蒙特卡洛抽样。

学习永无止境,哭了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值