跳到主要内容

重要性采样

一、直观理解:把样本“撒”到更有用的区域​

重要性采样(Importance Sampling,IS)是一种方差缩减与稀有事件估计技术。朴素蒙特卡洛从目标密度 ff 直接抽样;若我们关心的区域概率很小,绝大多数样本对估计几乎没有贡献。

重要性采样改为从一个更容易覆盖“重要区域”的提议分布 qq 抽样,再对每个样本乘以权重 w(x)=f(x)/q(x)w(x)=f(x)/q(x),把“抽样偏差”校正回来,使估计仍然无偏(或近似无偏)。

直观比喻:若要估计“台风登陆某海岸”的损失期望,与其在所有天气情景中均匀瞎抽,不如多抽一些接近台风路径的情景,再按真实天气概率与抽样概率的比值加权。

二、适用场景与优缺点​

类型说明
适用场景稀有事件概率;积分中被积函数在局部尖峰;已知 ff 但直接抽样困难或效率低;需要在同一批样本上估计多个相关期望。
核心优点可大幅降低方差;实现相对简单;不必构造马尔可夫链;对稀有事件往往远优于朴素 MC。
局限与缺点提议分布 qq 选得差会导致权重退化(少数权重极大);高维时性能迅速恶化;权重方差可能无穷;诊断比普通 MC 更关键。

使用前应确认:

  1. 目标密度 ff 与提议密度 qq 能否计算(或差常数);
  2. qq 的支撑必须覆盖 ff 的支撑(f>0⇒q>0f>0\Rightarrow q>0);
  3. 是否需要自归一化重要性采样(未知归一化常数时);
  4. 有效样本量是否足够。

三、核心原理:用加权样本估计期望​

目标:

μ=Ef[g(X)]=∫g(x)f(x) dx\mu=\mathbb{E}_f[g(X)]=\int g(x)f(x)\,\mathrm{d}x

改写为在 qq 下的期望:

μ=Eq[g(X)f(X)q(X)]=Eq[g(X)w(X)]\mu=\mathbb{E}_q\left[g(X)\frac{f(X)}{q(X)}\right]=\mathbb{E}_q[g(X)w(X)]

1. 标准重要性采样估计​

独立抽取 Xi∼qX_i\sim q,

μ^=1R∑i=1Rg(Xi)w(Xi),w(x)=f(x)q(x)\hat\mu=\frac{1}{R}\sum_{i=1}^{R}g(X_i)w(X_i),\quad w(x)=\frac{f(x)}{q(x)}

若 f,qf,q 皆为正确归一化密度,则 μ^\hat\mu 无偏。

2. 自归一化重要性采样(SNIS)​

若只知道 f~∝f\tilde f\propto f,令 w~i=f~(Xi)/q(Xi)\tilde w_i=\tilde f(X_i)/q(X_i),

μ^SNIS=∑i=1Rg(Xi)w~i∑i=1Rw~i\hat\mu_{\mathrm{SNIS}}=\frac{\sum_{i=1}^{R}g(X_i)\tilde w_i}{\sum_{i=1}^{R}\tilde w_i}

该估计通常有偏但相合,在贝叶斯与归一化未知时非常常用。

3. 有效样本量(ESS)​

权重退化可用

ESS=(∑iwi)2∑iwi2\mathrm{ESS}=\frac{\left(\sum_i w_i\right)^2}{\sum_i w_i^2}

(对已归一化权重则 ESS=1/∑wˉi2\mathrm{ESS}=1/\sum \bar w_i^2)。ESS 远小于 RR 说明提议分布不合适。

四、如何选择提议分布​

实用原则:

  • qq 应在 g(x)f(x)g(x)f(x) 较大的区域有足够质量;
  • 尾部不能比 ff 更轻,否则权重可能爆炸;
  • 对稀有事件 {S(x)>L}\{S(x)>L\},常把 qq 的均值移向失效域,或使用指数倾斜;
  • 先用试点样本检查权重直方图与 ESS,再定最终 RR;
  • 高维问题优先考虑序列蒙特卡洛、桥梁抽样等更稳健方案。

五、MATLAB 示例​

目标:估计标准正态变量超过 4 的概率 p=P(Z>4)p=\mathbb{P}(Z>4)。真值约为 3.17×10−53.17\times10^{-5}。朴素 MC 很难命中,重要性采样把提议改为 N(4,1)N(4,1)。

%% 稀有事件: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 估计 E[X2]\mathbb{E}[X^2],目标为 tt 分布核,提议为正态。

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);

六、如何解释结果​

应报告:

  1. 目标积分/概率的定义;
  2. 提议分布 qq 的选择理由;
  3. 样本量 RR、点估计与标准误;
  4. ESS、最大权重占比等退化诊断;
  5. 与朴素 MC 或解析值的对比;
  6. 若 ESS 过低,说明估计不可信,需改 qq 或增加样本。

解释权重时注意:个别极大权重意味着结果几乎由少数点决定,表面上看 RR 很大,实际信息量很小。

七、常见误区​

1. 任意选一个“看起来差不多”的 qq​

qq 必须在重要区域足够厚。选错时方差可能比朴素 MC 更大。

2. 忽视支撑条件​

若某点 f(x)>0f(x)>0 但 q(x)=0q(x)=0,理论保证被破坏,估计可能严重偏差。

3. 只看估计值不看 ESS​

没有 ESS 与权重诊断的重要性采样结果,审稿中很难令人信服。

4. 在高维照搬一维经验​

维度升高后权重退化几乎必然出现,需要更专门的方法。

5. 把有偏的 SNIS 当成严格无偏​

自归一化估计在有限样本下有偏,应如实说明,并在 RR 较大时依赖相合性。

八、小结​

重要性采样通过“在关键区域多抽样、再用似然比加权校正”来提高蒙特卡洛效率,尤其擅长稀有事件与尖峰积分。方法的成败几乎完全取决于提议分布的质量与权重诊断。

在建模实践中,重要性采样是连接朴素蒙特卡洛与更复杂序贯/MCMC 方法的重要桥梁:先尝试合理的 qq,用 ESS 说话,再决定是否升级算法。