Skip to content

拒绝采样

Rejection sampling · Acceptance-rejection sampling · 接受—拒绝采样

从提议分布生成候选,并按目标与包络的密度比接受,以得到目标分布的独立精确样本。

领域
统计学
条目类型
算法

形式陈述

设目标以未归一化概率密度 γ 给出,0<Z=γ(x)dx<,目标密度为 π=γ/Z。选择可直接采样、可求密度的提议 q,并找到已证明有效的有限常数 M,使

γ(x)Mq(x)

在参考测度几乎处处成立。这个包络条件同时要求 q 覆盖 γ 的支持。每轮独立生成 YqUUniform(0,1)均匀随机数满足

Uγ(Y)Mq(Y)

时接受 Y,否则丢弃并重试。输入是 γ,q,M 与所需样本数,状态只需当前候选;输出是达到数量要求的接受值。若预算有限,还必须报告尝试次数和未完成状态,不能把“尚未接受”当成目标样本。

接受一个落在 A 内的候选的联合概率为

Aq(y)γ(y)Mq(y)dy=1MAγ(y)dy.

因此,给定“接受”后,Y 的密度正是 γ/Z=π;总体接受概率为 Z/M。各轮候选与均匀数独立,所以依次保留的接受值也是 IID 目标样本。结论不需要知道 Z,却严格依赖包络上界。算法用于后验计算时,所得样本没有 burn-in,也不因拒绝次数不同而需要额外权重。

若以一般测度书写,需有目标有限测度 ΓQ,且 dΓ/dQM;密度公式只是这项条件在共同参考测度下的版本。M 越接近最小本质上界,接受率越高。试验次数直到一次接受服从成功概率 Z/M 的几何分布,期望成本为 M/Z 次候选评值。

直觉

Mq 看成盖住目标曲线 γ 的屋顶:先按屋顶的水平投影选择位置,再在屋顶高度内均匀取一点;落在目标曲线下方才保留。提议访问过多的地方,目标与屋顶之比小,候选多被拒绝;目标相对高的地方更常通过。条件在“通过”这一事件上后,剩下的横坐标恰按目标面积分布。

拒绝不引入相关性,因为失败轮没有成为下一轮的状态。代价完全表现为随机运行时间。若屋顶在大部分区域远高于目标,算法仍然正确,只会把计算耗在丢弃候选上。

例子与边界

a,b,c 上令 γ=(1,3,6),所以 Z=10;取 q=(0.2,0.3,0.5)。三个比值 γ/q(5,10,12),可取最紧常数 M=12,接受概率为 10/12=5/6。若第一轮抽到 bU=0.60,阈值为 10/120.833,故接受 b。下一轮若抽到 aU=0.50,阈值为 5/120.417,故拒绝。逐点的“提议概率乘接受率”是 (1,3,6)/12;归一化后正好得到目标 (0.1,0.3,0.6)

若误取 M=10,状态 c 的所谓接受概率变成 1.2。把它偷偷截成 1 会使 c 的保留质量从应有的 6/10 降到 q(c)=0.5,结果不再是目标分布。包络必须在运行前由数学界或可验证的全局优化保证;只在若干网格点检查,不能证明连续空间上没有漏峰。

有限包络可能根本不存在。标准正态目标配一个方差 1/4 的正态提议时,提议尾部衰减更快,γ/q|x| 增大而无界。高维中即使每一维都有良好包络,独立乘积的整体接受率也会相乘;单维接受率 0.850 维变成 0.8501.4×105。这不是实现慢,而是包络几何随维数恶化。

推论与应用

拒绝采样把“精确分布”换成“可证明包络与随机成本”。当目标低维、对数凹或有自然重尾提议时,先构造紧包络再独立采样,能够提供检验其他近似算法的基准。若只能找到分片包络,可先按各片屋顶面积选片,再在片内执行同一条件化论证;正确性仍来自覆盖与面积比例,而非分片数量。

Z/M 很小或比值无界时,继续微调循环通常没有意义。此时重要性采样保留所有候选并用权重承认失配,MCMC 则用相关轨道逐步进入目标区域;二者改变了误差与成本结构,不能再声称输出是固定成本下的 IID 精确样本。选择方法前应先问能否证明有限且足够紧的包络。

参考资料
  • Luc Devroye, Non-Uniform Random Variate Generation, Springer, 1986, Ch. II, rejection methods.
  • Christian P. Robert and George Casella, Monte Carlo Statistical Methods, 2nd ed., Springer, 2004, §2.3, accept-reject algorithms.
  • George S. Fishman, Monte Carlo: Concepts, Algorithms, and Applications, Springer, 1996, Ch. 3, random variate generation.
关系图谱6 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具

实现的抽象