逆变换采样
2025/10/23约 693 字大约 2 分钟
逆变换采样
一、背景与动机
在随机算法、蒙特卡罗模拟或概率建模中,我们常常希望从某个特定分布中生成随机变量样本。
然而,大多数编程语言或计算机硬件只提供均匀分布的随机数生成器,例如:
因此,需要一种通用方法将这些均匀随机数转换为任意分布的样本。
这就是 —— 逆变换采样(Inverse Transform Sampling)。
二、基本原理
假设目标随机变量为 ,其概率密度函数为 ,对应的累积分布函数为:
因为 是单调递增且取值范围在 ,我们可以定义其反函数:
于是有以下定理:
若 ,则 服从分布 。
这个过程称为 逆变换采样。
三、步骤总结
- 定义目标分布的 PDF:确定你希望采样的概率密度函数 。
- 计算对应的 CDF:
- 反解 CDF,得到:
- 生成均匀随机数:
- 代入反函数得到样本:
这样得到的 就服从目标分布 。
术语解释
PDF:概率密度函数 (probability density function), 连续型
PMF:概率质量函数 (probability mass function), 离散型
CDF:累积分布函数 (cumulative distribution function)
四、直觉理解
可以把 看作“把 映射到 [0,1] 区间”的函数。
而 则是“把均匀数 重新拉伸到 轴上”的逆过程。
均匀分布的 经由 的非线性变换后,
在 轴上会形成与 形状一致的密度分布。
形象地说:
- 在 高的区域, 的变化缓慢 → 样本密集;
- 在 低的区域, 的变化快 → 样本稀疏。
这就使得采样结果自动符合目标分布。
五、优点与局限
优点
- 通用、直观、精确;
- 不依赖特殊算法;
- 对一维分布尤其方便;
- 可直接控制随机性来源。
局限
- 需要能解析地或数值地求出 ;
- 对高维复杂分布不适用(此时常用拒绝采样、MCMC 等方法)。
六、典型应用场景
- 从自定义概率分布中采样(例如幂律、指数、SBX 分布等);
- 概率建模中的样本生成;
- 随机优化算法(如遗传算法、粒子群)中的控制参数采样;
- 蒙特卡罗积分、Bootstrap 重采样等。
七、通用伪代码
function sample_from_pdf(F_inverse):
u = random_uniform(0, 1)
x = F_inverse(u)
return x