重要抽样 模拟器 返回
数学统计模拟器

重要抽样 — 尾概率的高效估计

标准正态分布尾概率 P(X>t) 的直接蒙特卡罗和重要抽样并行估计。改变建议分布的均值和标准差,实时体验方差降低的效果。

参数设置
尾阈值 t
σ
样本数 N
建议分布的均值 μ
建议分布的标准差 σ

随机数由 LCG(seed=42 固定)和 Box-Muller 方法生成,因此相同设置下结果可重现。

暂停时,拖动滑块即可即时更新结果。

计算结果
真值 P(X>t)
直接MC估计值
IS估计值
方差降低比 Var_MC/Var_IS
目标分布 p 和建议分布 q・估计值的收敛

上半部:蓝=N(0,1) 目标分布/绿=建议分布 q(x)/红点线=尾阈值 t/红填充=尾区域 x>t 下半部:蓝=直接MC估计值/红=IS估计值/绿破线=真值

理论与主要公式

目标分布 $p$ 中的期望值可用另一个建议分布 $q$ 的样本加权估计:

$$I = \mathbb{E}_p[h(X)] = \int h(x)\,p(x)\,dx = \mathbb{E}_q\!\left[h(X)\,\frac{p(X)}{q(X)}\right]$$

从 $q$ 中抽取 $N$ 个样本 $X_i$,用权重 $w(X_i)=p(X_i)/q(X_i)$ 补正的重要抽样估计量:

$$\hat I_{\text{IS}} = \frac{1}{N}\sum_{i=1}^{N} h(X_i)\,w(X_i),\quad X_i \sim q$$

尾概率 $P(X\gt t)$ 中 $h(x)=\mathbf 1(x\gt t)$、$p=\mathcal N(0,1)$、$q=\mathcal N(\mu,\sigma^2)$。权重为

$$w(x)=\frac{\sigma\exp(-x^2/2)}{\exp(-(x-\mu)^2/(2\sigma^2))}$$

当 $\mu\approx t$ 时,几乎所有样本都落在尾部,方差降低比 $\operatorname{Var}(\hat I_{\text{MC}})/\operatorname{Var}(\hat I_{\text{IS}})$ 可达数倍至 1000 倍。

重要抽样 模拟器是什么

🙋
什么是"尾概率"?普通蒙特卡罗法生成10000个随机数就能求出概率,不是很简单吗?
🎓
尾概率是指非常罕见事件的概率。例如标准正态分布"超过3σ的值"的概率约为0.00135——生成10000个样本,也只会有大约13个超过3σ。在模拟器中看看 t=3 时的"直接MC估计值",会发现波动很大,每次值都有点不同。相对误差大约 1/√13 ≈ 28%。
🙋
那如果增加样本数呢?如果我生成100万个样本…
🎓
当 t=5(5σ)时,真值约3×10⁻⁷,10000个样本中平均只有0.003个超过5σ。即使取100万个样本,也才3个。随着 t 变大,需要的样本数以指数增长。这时"重要抽样(IS)"就派上用场了。在模拟器中,让 μ 保持3,看看"IS估计值"的卡片。直接法变得更稳定了吧?
🙋
是的!绿色曲线向尾部倾斜了。这是怎么做到的?
🎓
我们改变"建议分布" q(x) 让它集中在"感兴趣的区域(尾部)",然后用权重 w(x) = p(x)/q(x) 来补正。期望值公式 ∫h(x)p(x)dx 可以改写为 ∫h(x)w(x)q(x)dx,所以不管用什么建议分布,期望值都是对的。模拟器的"方差降低比"卡片可以看到——默认设置下,降低10倍以上,改变 μ 让它接近 t 时,降低效果更好。
🙋
那就把 μ 调得越来越大,效果会越来越好吗?我试试把 μ 改成5…哎呀,方差降低比反而下降了?
🎓
这是重要抽样的一个陷阱。μ 超过 t 太多时,样本虽然确实集中在尾部,但权重 w(x) = p(x)/q(x) 的变化特别大。几个样本的权重会变得极大,导致这些"异常值"支配了整个估计,叫"权重方差爆炸"。理论上最优的是 μ ≈ t,模拟器里改变 μ,可以看到方差降低比在 μ=t 附近达到最大。实务中如何选择提案分布,本身就是个研究课题。

常见问题

期望值公式 E_p[h(X)] = ∫h(x)p(x)dx 乘以 q(x)/q(x) = 1 后,可改写为 ∫h(x)·{p(x)/q(x)}·q(x)dx = E_q[h(X)·p(X)/q(X)]。从形式上讲任何 q 都可以。但如果 q(x)=0 的地方 p(x)·h(x)≠0,估计就会失败。因此需要选择支撑覆盖目标分布的建议分布。
方差降低比 Var_MC/Var_IS = 10 表示同样精度下,所需样本数只需10分之1。直接法需要10万个样本的精度,重要抽样只需1万个。比值为100就效率更高。对于稀有事件,有时能达到1000倍以上,计算时间能减少量级。
这叫"权重方差爆炸",是常见失败模式。少数样本权重特别大时,它们主导了估计值,看起来有答案但方差大到不可接受。解决办法包括:调整建议分布(μ、σ 重选),用自正规化重要抽样(SIR),监视有效样本量 ESS=(Σw)²/Σw²,或用自适应重要抽样(AIS)和交叉熵法(CE)。
完全可以,实际上是结构可靠性分析的主力方法。材料强度、载荷等参数有不确定性时,运行FEM计算破坏概率。当失效概率是 10⁻⁴ 以下时,直接MC基本不可行。"设计点重要抽样(DP-IS)"在最容易破坏的参数组合附近取建议分布,是广泛应用的技术。

实际应用领域

结构可靠性分析:桥梁、飞机、核电站等大型结构的破坏概率常在 10⁻⁴~10⁻⁹ 级别。直接蒙特卡罗几乎不可能。FORM/SORM 或设计点重要抽样(DP-IS)结合有限元,运行数千至数万次计算破坏概率,精度很高。日本道路桥示方书和 ASME 规范都用可靠性指标 β 来规定,这就是基于重要抽样的。

金融风险管理:VaR(风险价值)和 CVaR(条件风险价值)中,大损失事件在分布的尾部。将建议分布偏向市场急跌情景,能将所需场景数减少1000倍以上,实时风险计算变为可能。量化金融的标准工具。

通信工程的比特误差率:数字通信中 BER(比特错误率)常在 10⁻⁹ 级。直接模拟需要数百亿比特。噪声分布的尾部集中建议分布,通过重要抽样,几小时内就能画出 BER 曲线。调制方式、纠错码设计都用得上。

贝叶斯统计和粒子滤波:逐次重要重采样(SIR)和粒子滤波(粒子化蒙特卡罗)的核心是重要抽样。后验分布难以直接采样时,用与似然成比例的建议分布,权重补正。自动驾驶的状态估计、机器人位置估计都用它。

常见误解和注意事项

最普遍的误解是"建议分布离目标越远越好"。在模拟器中,把 μ 从默认3.0改成5.0。样本确实集中在尾部了,但方差降低比反而下降。这是因为样本太密集,权重 w(x)=p(x)/q(x) 在少数点变得极大,导致"权重方差爆炸"。理论最优点是 μ≈t(尾阈值),太大太小都不行。

其次,以为增加 N 就能保证重要抽样胜过直接法。如果建议分布选得不好,N 再大,方差也降不下来,反而少数离群值会拖累推定。在模拟器中试试 σ=0.5、μ=5 的组合,估计值会不稳定。实务中要监视有效样本量 ESS = (Σw_i)² / Σw_i²,如果 ESS < N 的几%,要重新选建议分布。

最后,重要抽样不是"魔法"。它只是让每个样本的信息量最大化,计算总量不会消失。建议分布的设计需要了解目标和被积函数,选错了比直接法更差。裾概率这种简单情况理论上能找到最优 μ,但实际问题往往要用自适应重要抽样(AIS)或交叉熵法(CE)来学习建议分布本身。

使用指南

  1. 用滑块"尾阈值"设定阈值(例:t=3.0估计标准正态分布右尾概率 P(X>3.0))
  2. 用滑块"样本数"指定蒙特卡罗试验次数(10000~1000000)
  3. 调整滑块"建议分布的均值μ"和"标准差σ",使更多样本集中在尾区域(通常 μ≥t,例如 t=4.0 时试试 μ=4.5, σ=0.8)
  4. 点击模拟执行按钮,直接蒙特卡罗法和重要抽样法并行运行,实时显示估计值和方差降低比

具体计算例

估计标准正态分布 N(0,1) 的尾概率 P(X>4.0),理论值约3.17×10⁻⁵。用直接蒙特卡罗法 50 万样本,方差约 3.1×10⁻¹⁰。改建议分布为 N(4.5, 0.8²) 的重要抽样,同样 50 万样本,方差降至约 1.2×10⁻¹¹,方差降低比约 25 倍。大幅减少所需样本数,缩短计算时间。

实务注意事项