什么是自适应的拒绝采样

2022年5月31日12:12:45什么是自适应的拒绝采样已关闭评论

拒绝采样的方法确实可以解决我们的问题,但是它的一个不足涉及其采样效率的问题。

针对拒绝采样的例子而言,我们选择了离目标函数最近的参考函数,就均匀分布而言,已经不能有更进一步的方法了。但即使这种,在这个类似钟形的图形两侧其实仍然会拒绝掉很多很多采样点,这种开销相当浪费。最理想的情况下,参考分布应该跟目标分布越接近越好,从图形上来看就是包裹的越紧实越好。

但是这种情况的参考分布往往又不那么容易得到。在满足某些条件的时候也确实可以采用所谓的改进方法,即自适应的拒绝采样(Adaptive Rejection Sampling)。

拒绝采样的弱点在于当被拒绝的点很多时,采样的效率会非常不理想。同时我们也知道,如果能够找到一个跟目标分布函数非常接近的参考函数,那么就可以保证被接受的点占大多数(被拒绝的点很少)。这样一来便克服了拒绝采样效率不高的弱点。如果函数是log-concave的话,那么就可以采用自适应的拒绝采样方法。

下面给出一个在R中进行自适应拒绝采样的例子。

显然,该例子要比之前的代码简单许多。因为R中ars包已经提供了一个现成的用于执行自适应拒绝采样的函数,即ars()。关于这个函数在用法上的一些细节,读者还可以进一步参阅R的帮助文档,这里不再赘言。此次我们需要指出:ars()函数中两个重要参数,一个是对原分布的PDF取对数,另外一个则是对PDF的对数形式再进行求导(在求导时我们忽略了前面的系数项),其实也就是为了确定切线。

什么是自适应的拒绝采样

上述代码的执行结果如图3-14所示。

什么是自适应的拒绝采样

图3-14 自适应采样代码执行结果

  • 版权声明:本篇文章(包括图片)来自网络,由程序自动采集,著作权(版权)归原作者所有,如有侵权联系我们删除,联系方式(QQ:452038415)。