技术博客

蒙特卡洛与重要性采样:高维期望为什么只能估计

第 28 / 147 篇 · 2026-01-12 · ai · 蒙特卡洛重要性采样数值积分

大模型的训练目标和评估指标,十有八九写成一个期望:期望损失 $\mathbb{E}_{x\sim p_{\text{data}}}[\ell(x)]$、期望奖励 $\mathbb{E}_{y\sim\pi_\theta}[r(y)]$、ELBO 里的条件期望。期望的定义是积分(或求和),但这个积分几乎从来算不出来——数据分布没有解析式,模型分布带归一化常数,维度动辄上万。这一篇讲两件事:为什么随机估计是这个困境的正解,以及重要性采样怎样把它做得更聪明。

蒙特卡洛:用随机换确定

给定分布 $p$ 和函数 $f$,想算 $I=\mathbb{E}_p[f(x)]$。蒙特卡洛估计简单到不像话:从 $p$ 采 $N$ 个样本,取均值,

$$ \hat I_N=\frac{1}{N}\sum_{i=1}^{N}f(x_i),\qquad x_i\sim p. $$

它有两个干净的性质。无偏性:$\mathbb{E}[\hat I_N]=I$,样本量无关。方差:$\mathrm{Var}(\hat I_N)=\mathrm{Var}_p[f]/N$,由大数定律和中心极限定理,$\hat I_N$ 以 $O(1/\sqrt{N})$ 的速度收敛到 $I$——多采 4 倍样本,误差才减半。

真正值钱的是最后这点:收敛速度里没有 $d$(维度)。经典数值积分(梯形、Simpson)的误差随维度指数恶化(维度灾难),而蒙特卡洛的 $1/\sqrt{N}$ 与维度无关。这是为什么高维期望"只能"用蒙特卡洛:不是随机方法多好,是确定性方法在 $d>10$ 之后根本用不了。反过来,$1/\sqrt{N}$ 也常让人失望:想把误差从 1% 压到 0.1%,样本量要涨 100 倍。方差缩减技术全部围绕这个常数因子做文章,重要性采样是其中威力最大、也最容易翻车的一个。

重要性采样:换分布采样,配权重修正

问题场景:从 $p$ 采样困难或不划算(比如 $p$ 是复杂后验),或者 $f$ 在 $p$ 下取值悬殊、多数样本贡献近零。解法:找一个好采的提议分布 $q$,从 $q$ 采样,用权重修正期望的测度:

$$ I=\mathbb{E}_p[f(x)]=\int f(x)\frac{p(x)}{q(x)}q(x)\,dx=\mathbb{E}_q\!\left[f(x)\frac{p(x)}{q(x)}\right]\approx\frac{1}{N}\sum_i f(x_i)w(x_i), $$

权重 $w(x)=p(x)/q(x)$ 就是"样本在 $p$ 下该占多大比重"的修正。恒等式对任何 $q>0$(在 $p$ 的支撑上)成立,所以估计仍然无偏——选择 $q$ 的自由度全部用来对付方差。

算一下方差就看清楚了:

$$ \mathrm{Var}_q\!\left[f\,\frac{p}{q}\right]=\mathbb{E}_q\!\left[f^2\frac{p^2}{q^2}\right]-I^2=\mathbb{E}_p\!\left[f^2\frac{p}{q}\right]-I^2. $$

第二项是定值,方差由第一项决定。最优 $q$ 可以显式解出:对 $\mathbb{E}_p[f^2 p/q]$ 用变分(或拉格朗日),得 $q^*(x)\propto p(x)|f(x)|$。直觉直白:把采样密度配到"贡献大的地方"。$f$ 恒为正时最优 $q\propto pf$。

实际操作中没人用得到最优 $q$(它含未知的积分 $I$ 本身),但方向性结论实用:$q$ 应该在 $p|f|$ 大的区域不低于 $p$。违反这条的代价可以用一个极端例子量化:$p$ 是标准正态,$f(x)=\mathbb{1}[x>a]$(尾部概率),用 $q=p$ 估 $a=6$ 的概率,命中率 $10^{-9}$,基本采不到事件;取 $q$ 为均值挪到 $a$ 的正态,同样样本量直接看到事件。方差可以差出数量级,而不仅仅是常数倍。

反过来,$q$ 在 $f$ 大的区域给得太多也会炸:权重 $w=p/q$ 变得极小,估计由少数几个大权重的幸运样本主导,有效样本量崩塌。实用诊断是有效样本量 ESS $=(\sum w_i)^2/\sum w_i^2$:$N=10^4$ 的样本,ESS 掉到几百时,均值估计实际只有几百个独立样本的精度。

自归一化:不知道 p 的归一化常数也行

上面的 $w=p/q$ 要求 $p$ 的归一化常数已知。很多时候只知道 $\tilde p(x)=p(x)/Z$(比如未归一化的后验)。此时用自归一化重要性采样:

$$ \hat I=\frac{\sum_i f(x_i)\tilde w(x_i)}{\sum_i \tilde w(x_i)},\qquad \tilde w=\tilde p/q. $$

分子分母的 $Z$ 相消。代价是估计变成有偏(比值的期望 ≠ 期望的比值),偏差是 $O(1/N)$,方差主导时无妨;且比值形式天然稳健,个别样本权重爆炸被分母吸收一部分。粒子滤波和 VAE 的一些推断改进用的都是这个形式。

在大模型里的三个真实用场

重要性采样不是数值分析课本里的古董,它在大模型系统里活着,而且都用在刀刃上。

RLHF / PPO 里它叫重要性比率。PPO 每轮用旧策略 $\pi_{\text{old}}$ 采样一批轨迹,用新策略 $\pi_\theta$ 更新——从旧策略采样、对新策略求梯度,正是 $q=\pi_{\text{old}}$、$p=\pi_\theta$ 的重要性采样格局。比率 $r=\pi_\theta/\pi_{\text{old}}$ 进入目标函数,clip 操作 $\min(r\hat A,\ \mathrm{clip}(r,1\pm\epsilon)\hat A)$ 就是防比率飘走(等价于防权重爆炸的 ESS 保护)。对齐章节会展开 clip 的推导,这里记住:PPO 的核心理论工具是重要性采样。

评估与压缩 里它叫离策略评估。想比较两个采样配置(温度、top-p)的生成质量,各自采样太贵;用重要性采样可以把已有样本在配置 A 下的分布,重新加权成配置 B 下的期望,一次采样评估多个配置。同样的思路用于 KV cache 淘汰策略的离线评估(H2O 类方法需要对"丢掉某些缓存"做反事实估计)。

生成侧 的核采样与拒绝采样也是它。speculative sampling 用草稿模型的提议分布 $q$ 提议 token,用目标模型 $p$ 的接受概率 $\min(1, p/q)$ 做修正——数学上正是重要性采样/拒绝采样保证最终分布仍是 $p$。推理加速章节会给出完整证明。

蒙特卡洛与重要性采样的结构:换测度 + 权重修正 目标:I = E_p[f] 高维,解析积不出 从 q 采样 xᵢ q 好采、且覆盖 p|f| 大处 Î = (1/N)Σf(xᵢ)w(xᵢ) w = p/q,无偏 方差账 Var = Var_q[f·p/q]/N 最优 q* ∝ p|f| 收敛速度 O(1/√N),与维度无关 翻车信号 q 没覆盖 p 的大 f 区:采不到事件 q 给太多:权重爆炸,ESS 崩塌 监控:ESS = (Σw)²/Σw²

小结

高维期望的解析积分是死路,蒙特卡洛用 $O(1/\sqrt{N})$ 的无偏估计换出一条与维度无关的活路;重要性采样把采样分布换成好采的 $q$、用权重 $p/q$ 修正测度,无偏性保住、方差完全由 $q$ 的选择决定,最优方向是把密度配到 $p|f|$ 大的区域。PPO 的 clip、投机采样的接受概率、离策略评估的重加权,全是同一个恒等式 $\mathbb{E}_p[f]=\mathbb{E}_q[fp/q]$ 在不同场景的面孔。