什么是拒绝抽样?

2025年4月17日 | 阅读9分钟

拒绝采样是一种在统计学和机器学习中用于从概率分布生成随机样本的蒙特卡洛方法。它通常用于目标分布难以直接采样,但存在一个更简单的、易于采样的分布时。

拒绝采样是一种生成复杂或计算上难以一次性采样的分布的技术。相反,你可以从一个更简单、更易处理的分布中采样,并使用一种“拒绝”的方法来接受或丢弃样本,从而近似目标分布。

简单来说,你从一个建议分布中抽取随机样本,并根据该建议分布与目标分布的相似程度赋予它们一定的接受概率。如果样本未被接受,则将其丢弃,然后抽取新样本。此过程重复进行,直到获得足够的样本。

我们为什么需要拒绝采样?

在许多现实世界的应用中,我们需要从概率分布中生成随机样本来进行统计分析、机器学习任务或模拟。然而,在某些情况下,我们想要采样的目标分布是复杂的,没有简单的数学形式允许直接采样。如果概率密度函数(PDF)难以处理,传统的逆变换采样或直接概率计算等方法可能不可行。这时,拒绝采样就派上用场了。

拒绝采样允许我们通过使用一个更简单、更方便的建议分布来间接从一个复杂的分布中采样。我们不是直接从目标分布生成样本,而是从建议分布生成候选样本,然后根据概率标准接受或拒绝它们。这确保了接受的样本遵循目标分布。当我们只有一个目标分布的未归一化版本时,这种方法尤其有用,这意味着我们知道分布的形状,但不知道确切的比例因子。

我们需要拒绝采样的另一个原因是效率。在某些情况下,虽然可以直接采样,但计算成本可能很高或速度很慢。拒绝采样提供了一种灵活的方法,可以处理许多不同的概率分布,而无需为每种情况进行复杂的转换或特殊的算法。只要我们能找到一个与目标分布密切相似的良好建议分布,拒绝采样就可以提供一种以最小的计算量生成有效样本的有效方法。

此外,拒绝采样在更高级的技术中起着至关重要的作用,例如马尔可夫链蒙特卡洛(MCMC)方法和贝叶斯推断,在这些技术中,从后验分布生成样本至关重要。在计算机图形学中,拒绝采样用于从复杂的纹理和光照模型生成随机样本。在物理学和计算生物学中,它有助于模拟难以直接建模的稀有事件。这些应用突显了拒绝采样作为统计计算和机器学习基础方法的重要性。

拒绝采样的工作原理

当直接采样困难时,拒绝采样是一种用于从复杂概率分布生成随机样本的方法。我们不直接从目标分布采样,而是使用一个更容易采样的建议分布,然后应用接受标准来确保接受的样本遵循目标分布。这种技术在目标分布的概率密度函数(PDF)已知但难以直接采样的情况下特别有用。

该过程首先选择一个建议分布 q(x),该分布应易于采样且与目标分布 p(x) 足够相似。q(x) 与 p(x) 越接近,过程就越有效。接下来,我们确定一个缩放常数 M,它确保建议分布乘以 M 后完全覆盖目标分布。用数学术语来说,M 的选择应使 p(x)≤M⋅q(x) 对所有 x 值成立。

一旦确定了建议分布和缩放常数,我们就从 q(x) 生成一个随机样本 𝑥′。为了确定是否接受或拒绝该样本,我们从零到一之间的均匀分布中抽取一个随机数 𝑢。如果 𝑢 ≤ 𝑝(𝑥′) / (𝑀⋅𝑞(𝑥′)),则接受该样本;否则,将其拒绝,然后抽取新样本。此过程重复进行,直到我们获得所需的样本数量。

拒绝采样的关键思想是,建议分布充当目标分布的“覆盖层”,只有最相关的样本才会被接受。这确保了最终的样本集遵循期望的分布。然而,拒绝采样的效率取决于建议分布对目标分布的近似程度。如果 q(x) 选择不当,许多样本可能会被拒绝,使过程效率低下。尽管存在这种困难,拒绝采样仍然是数据和机器学习中的一种基本技术,特别是在贝叶斯推断、蒙特卡洛模拟和概率建模中。

可视化拒绝采样

通过图形化演示样本如何被接受或拒绝,可以很好地理解拒绝采样。想象一下在图上绘制的概率密度函数(PDFs):

目标分布 p(x)(我们想要从中采样的分布)。

建议分布 q(x),它更容易采样,但与 p(x) 不完全匹配。

为了确保 q(x) 可以为 p(x) 生成有效样本,我们使用常数 M 对其进行缩放,使得 𝑀⋅q(x) 完全覆盖 p(x)。这意味着对于所有 x 值,目标概率始终小于或等于缩放后的建议概率。

𝑝(𝑥) ≤ 𝑀⋅𝑞(𝑥)

图形解释

在图上,您会看到:

一条表示 p(x)(目标分布)的曲线。

一条较大的曲线表示 𝑀⋅q(x)(由 M 缩放的建议分布)。

拒绝采样技术的工作原理是:从 q(x) 生成一个随机样本 x′,然后选择一个介于 0 和 𝑀⋅q(x′) 之间的随机高度 u。如果这个随机高度落在 p(x′) 以下,则接受该样本;否则,将其拒绝。

理解接受与拒绝

接受的样本:这些是随机选择的高度 𝑢⋅𝑀⋅𝑞(𝑥′) 落在目标分布 𝑝(𝑥′) 下方的点。这些点构成了最终数据集。

被拒绝的样本:这些是所选高度超出 p(x′) 的点,这意味着它们不符合期望的概率,因此被丢弃。

方法背后的直觉

通过仅保留落在目标分布曲线下的样本,我们确保了最终的点集遵循期望的概率分布。q(x) 与 p(x) 越相似,接受率就越高,采样过程就越有效。

效率和可视化见解

如果建议分布 q(x) 比 p(x) 更宽,那么许多点可能会被拒绝,导致过程效率低下。一个经过精心选择且紧密跟随 p(x) 的建议分布将导致更少的拒绝和更快的采样过程。可视化此过程有助于我们理解选择良好建议分布和正确选择缩放因子 M 的重要性。

拒绝采样示例

假设我们要从一个复杂的概率分布中生成随机样本,例如标准正态分布 p(x)= (1/√(2π)) e−x²/2。直接从该分布采样可能很困难,因此我们使用一个更简单的建议分布 q(x),该分布易于采样,例如某个范围内的均匀分布。为了确保建议分布正确覆盖目标分布,我们引入一个缩放因子 M,使得 Mq(x) 对于所有 x 值都始终大于或等于 p(x)。

然后,我们从 q(x) 生成一个随机样本 x′,并使用比率 p(x′) / (Mq(x′)) 计算接受概率。接下来,我们从 0 和 1 之间的均匀分布中抽取一个随机数 u。如果 u ≤ p(x′) / (Mq(x′)),我们接受 x′ 作为有效样本;否则,我们拒绝它并生成新样本。此过程重复进行,直到我们获得符合正态分布的期望数量的样本。

例如,如果我们选择 q(x) 作为 -3 和 3 之间的均匀分布,我们可能需要将 M 设置为一个值,以确保 Mq(x) 完全覆盖 p(x)。在此示例中,均匀分布的边缘的许多样本将被拒绝,因为正态分布的大部分概率质量集中在 0 附近。然而,随着我们继续该过程,我们将获得足够的正态样本来准确表示目标正态分布。这表明拒绝采样如何在保持统计正确性的同时,将一个易于采样的分布转换为一个更复杂的分布。

拒绝采样的优缺点

拒绝采样是一种简单而强大的方法,用于从复杂的概率分布生成随机样本。它的主要优点之一是其通用性,只要存在合适的建议分布,就可以将其应用于任何分布。此外,它不需要了解目标分布的归一化常数,这使其在贝叶斯推断和概率建模中特别有用。另一个主要好处是拒绝采样生成的样本是独立的,与马尔可夫链蒙特卡洛(MCMC)方法不同,后者的样本通常是相关的。这种独立性使其适用于并行计算应用。此外,拒绝采样不需要梯度信息,使其成为基于导数的方法不可行的问题的实用选择。

然而,拒绝采样存在显著的缺点,特别是当建议分布与目标分布不匹配时。如果建议分布与目标分布差异很大,许多样本将被拒绝,导致效率低下和高昂的计算成本。另一个挑战是选择合适的缩放因子 M,它确保建议分布充分覆盖目标分布。如果 M 过大,拒绝率会很高,浪费计算资源;如果 M 过小,一些有效样本可能会被错误地丢弃。此外,拒绝采样在高维空间中变得不切实际,由于体积的指数增长,接受率会显著下降,使得 MCMC 或重要性采样等方法成为更有效的替代方案。尽管存在这些限制,在低维问题中,当精心选择的建议分布能够带来高效率时,拒绝采样仍然是生成独立样本的宝贵技术。

拒绝采样的应用

拒绝采样在数据、机器学习和计算模拟等各个领域得到了广泛应用。它在贝叶斯推断中的主要应用之一是用于从可能没有简单闭式表达式的后验分布中采样。由于贝叶斯方法通常需要从复杂的概率分布中抽取样本,因此拒绝采样提供了一种有效近似这些分布的方法。

在蒙特卡洛模拟中,拒绝采样通常用于从任意分布生成随机样本,然后这些样本可用于估计期望值、概率和其他统计特性。这在物理学、金融学和工程学中尤其有用,在这些领域,基于模拟的方法对于对不确定性和随机过程进行建模至关重要。同样,在计算机图形学中,拒绝采样用于光线追踪和重要性采样等渲染技术。它通过有效地采样光源和反射,有助于生成逼真的光照效果。

另一个重要的应用是生成建模,其中拒绝采样用于细化从更简单分布中抽取的样本,确保它们遵循期望的复杂分布。这在人工智能和深度学习等领域中很常见,其中像变分自编码器(VAE)生成对抗网络(GAN)这样的模型可能会结合拒绝采样来提高样本质量。在计算生物学和遗传学中,拒绝采样在模拟生物学过程(如基因表达模型和进化模拟)中发挥作用,这些过程需要从概率模型中进行精确采样。

尽管存在局限性,拒绝采样仍然是许多科学和工程领域的重要工具,特别是在直接采样不可行时。它生成独立样本和近似复杂分布的能力使其成为概率计算和统计建模中的宝贵技术。

结论

拒绝采样是一种基本且简单的技术,用于使用更简单的分布来生成来自复杂分布的样本。虽然它是一种灵活的技术,但其效率取决于建议分布和缩放常数的选择。尽管存在潜在的效率低下问题,它仍然是机器学习、计算生物学和统计学等领域的一个关键工具,特别是在直接从目标分布采样不切实际的情况下。