重要性采样
一、直观理解:把样本“撒”到更有用的区域
重要性采样(Importance Sampling,IS)是一种方差缩减与稀有事件估计技术。朴素蒙特卡洛从目标密度 直接抽样;若我们关心的区域概率很小,绝大多数样本对估计几乎没有贡献。
重要性采样改为从一个更容易覆盖“重要区域”的提议分布 抽样,再对每个样本乘以权重 ,把“抽样偏差”校正回来,使估计仍然无偏(或近似无偏)。
直观比喻:若要估计“台风登陆某海岸”的损失期望,与其在所有天气情景中均匀瞎抽,不如多抽一些接近台风路径的情景,再按真实天气概率与抽样概率的比值加权。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 稀有事件概率;积分中被积函数在局部尖峰;已知 但直接抽样困难或效率低;需要在同一批样本上估计多个相关期望。 |
| 核心优点 | 可大幅降低方差;实现相对简单;不必构造马尔可夫链;对稀有事件往往远优于朴素 MC。 |
| 局限与缺点 | 提议分布 选得差会导致权重退化(少数权重极大);高维时性能迅速恶化;权重方差可能无穷;诊断比普通 MC 更关键。 |
使用前应确认:
- 目标密度 与提议密度 能否计算(或差常数);
- 的支撑必须覆盖 的支撑();
- 是否需要自归一化重要性采样(未知归一化常数时);
- 有效样本量是否足够。
三、核心原理:用加权样本估计期望
目标:
改写为在 下的期望:
1. 标准重要性采样估计
独立抽取 ,
若 皆为正确归一化密度,则 无偏。
2. 自归一化重要性采样(SNIS)
若只知道 ,令 ,
该估计通常有偏但相合,在贝叶斯与归一化未知时非常常用。
3. 有效样本量(ESS)
权重退化可用
(对已归一化权重则 )。ESS 远小于 说明提议分布不合适。
四、如何选择提议分布
实用原则:
- 应在 较大的区域有足够质量;
- 尾部不能比 更轻,否则权重可能爆炸;
- 对稀有事件 ,常把 的均值移向失效域,或使用指数倾斜;
- 先用试点样本检查权重直方图与 ESS,再定最终 ;
- 高维问题优先考虑序列蒙特卡洛、桥梁抽样等更稳健方案。
五、MATLAB 示例
目标:估计标准正态变量超过 4 的概率 。真值约为 。朴素 MC 很难命中,重要性采样把提议改为 。
%% 稀有事件:P(Z > 4),Z ~ N(0,1)
rng(3);
R = 20000;
L = 4;
pTrue = 1 - normcdf(L);
%% 1) 朴素蒙特卡洛
zMC = randn(R, 1);
pMC = mean(zMC > L);
seMC = sqrt(pMC * (1 - pMC) / R);
%% 2) 重要性采样:q = N(L, 1)
mu_q = L;
x = mu_q + randn(R, 1); % 从 q 抽样
logf = -0.5 * x.^2; % 目标 log 密度(差常数)
logq = -0.5 * (x - mu_q).^2; % 提议 log 密度(同方差,差同常数)
w = exp(logf - logq); % 重要性权重
g = double(x > L);
pIS = mean(g .* w);
seIS = std(g .* w) / sqrt(R);
% 有效样本量
wNorm = w / sum(w);
ESS = 1 / sum(wNorm.^2);
fprintf("真值 p = %.6e\n", pTrue);
fprintf("朴素 MC: %.6e, SE ≈ %.3e\n", pMC, seMC);
fprintf("重要性采样: %.6e, SE ≈ %.3e, ESS = %.1f / %d\n", ...
pIS, seIS, ESS, R);
%% 可视化权重与样本
figure;
subplot(1,2,1);
histogram(x, 40); xlabel("样本 x"); title("提议分布下的样本");
grid on;
subplot(1,2,2);
histogram(w, 40); xlabel("权重 w"); title("重要性权重分布");
grid on;
第二个例子:用自归一化 IS 估计 ,目标为 分布核,提议为正态。
rng(5);
R = 10000;
% 目标:非归一化密度 ~ (1+x^2/3)^(-(3+1)/2) (t_3 核)
% 提议:N(0, 2)
x = sqrt(2) * randn(R, 1);
logf = -2 * log(1 + x.^2 / 3); % 差常数
logq = -0.5 * log(2*pi*2) - x.^2 / 4;
wt = exp(logf - logq);
ex2 = sum((x.^2) .* wt) / sum(wt);
fprintf("E[X^2] 的 SNIS 估计 = %.4f(t_3 真值 = 3)\n", ex2);
六、如何解释结果
应报告:
- 目标积分/概率的定义;
- 提议分布 的选择理由;
- 样本量 、点估计与标准误;
- ESS、最大权重占比等退化诊断;
- 与朴素 MC 或解析值的对比;
- 若 ESS 过低,说明估计不可信,需改 或增加样本。
解释权重时注意:个别极大权重意味着结果几乎由少数点决定,表面上看 很大,实际信息量很小。
七、常见误区
1. 任意选一个“看起来差不多”的
必须在重要区域足够厚。选错时方差可能比朴素 MC 更大。
2. 忽视支撑条件
若某点 但 ,理论保证被破坏,估计可能严重偏差。
3. 只看估计值不看 ESS
没有 ESS 与权重诊断的重要性采样结果,审稿中很难令人信服。
4. 在高维照搬一维经验
维度升高后权重退化几乎必然出现,需要更专门的方法。
5. 把有偏的 SNIS 当成严格无偏
自归一化估计在有限样本下有偏,应如实说明,并在 较大时依赖相合性。
八、小结
重要性采样通过“在关键区域多抽样、再用似然比加权校正”来提高蒙特卡洛效率,尤其擅长稀有事件与尖峰积分。方法的成败几乎完全取决于提议分布的质量与权重诊断。
在建模实践中,重要性采样是连接朴素蒙特卡洛与更复杂序贯/MCMC 方法的重要桥梁:先尝试合理的 ,用 ESS 说话,再决定是否升级算法。