重要性采样及多重重要性采样

重要性采样(Importance Sampling, IS)多重重要性采样(Multiple Importance Sampling, MIS) 技术在蒙特卡洛积分中至关重要。

它们主要用于计算机图形学(如光线追踪渲染)、强化学习等领域,以高效地计算复杂积分。


1. 蒙特卡洛积分基础

首先,快速回顾一下蒙特卡洛积分。我们要计算一个积分:
$$I = \int_a^b f(x) dx$$

蒙特卡洛积分的基本思想是随机采样。它通过从定义域内随机抽取样本 $x_i$,计算 $f(x_i)$,然后取平均值来近似积分:
$$I \approx \frac{1}{N} \sum_{i=1}^N f(x_i)$$

但这里有一个问题:如果 $f(x)$ 在某些区域值很大,在另一些区域值很小(例如,一个尖锐的峰值),均匀随机采样会非常低效。大多数样本会落在 $f(x)$ 值很小的“不重要”区域,对最终结果的贡献微乎其微,从而造成方差很大,收敛速度很慢。


2. 重要性采样 (Importance Sampling, IS)

核心思想

重要性采样的核心思想是:我们应该把更多的样本放在函数值大(重要)的区域,而不是均匀地放置样本。

换句话说,我们不再使用均匀分布进行采样,而是使用一个与我们想要积分的函数 $f(x)$ 形状相似的概率分布 $p(x)$ 来生成样本。

数学表达

为了修正采样分布带来的偏差,我们需要对每个样本进行加权。蒙特卡洛积分公式变为:
$$I = \int f(x) dx = \int \frac{f(x)}{p(x)} p(x) dx \approx \frac{1}{N} \sum_{i=1}^N \frac{f(x_i)}{p(x_i)}$$
其中:

  • $x_i$ 是从分布 $p(x)$ 中抽取的样本。
  • $\frac{f(x_i)}{p(x_i)}$ 被称为重要性权重

关键要求与目标

  1. $p(x)$ 必须满足:$p(x) > 0$ wherever $f(x) \neq 0$。即,在 $f(x)$ 有值的任何地方,$p(x)$ 都不能为零,否则我们会忽略掉一些本应有贡献的区域。
  2. 理想情况:如果 $p(x)$ 正比于 $f(x)$,即 $p(x) = c|f(x)|$,那么方差会变为 0,每个样本的贡献都是常数。这是重要性采样的终极目标。
  3. 现实情况:我们很难找到完美的 $p(x)$,但只要 $p(x)$ 的形状大致与 $f(x)$ 相似,就能显著降低方差。

例子:渲染中的直接光照

在计算一个点接收到来自环境的光照时,积分函数 $f(x)$ 是光的强度乘以BRDF(材质属性)。如果光来自一个很小的窗户(一个很小的区域贡献了大部分的光),均匀地在所有方向采样会非常低效。重要性采样会选择一个与光强分布相似的 $p(x)$,让我们更多地朝窗户的方向采样,从而快速收敛。

局限性

重要性采样有一个致命弱点:它严重依赖于所选采样分布 $p(x)$ 的质量
如果 $p(x)$ 选得不好,比如:

  • $p(x)$ 的形状与 $f(x)$ 相差甚远。
  • $f(x)$ 本身由多个不同特征的函数相乘组成(例如,$f(x) = g(x)h(x)$),很难找到一个 $p(x)$ 同时匹配 $g(x)$ 和 $h(x)$。

这时,重要性采样的效果可能甚至不如简单采样,方差会变得非常大。


3. 多重重要性采样 (Multiple Importance Sampling, MIS)

核心思想

既然很难找到一个完美的采样分布,那我们为什么不结合多个不同的采样分布呢?

MIS 的核心智慧在于:它允许我们使用 多种采样策略(例如,从一个分布 $p_1$ 中取 $n_1$ 个样本,从另一个分布 $p_2$ 中取 $n_2$ 个样本),然后通过一个聪明的加权函数将这些样本结合起来,从而充分利用每种策略的优势,避免其劣势。

数学表达

假设我们有 $m$ 种不同的采样分布 $p_1(x), p_2(x), …, p_m(x)$。
从每个分布 $p_i(x)$ 中采集 $n_i$ 个样本,总样本数 $N = \sum n_i$。

MIS 的估计量表示为:
$$I \approx \sum_{i=1}^m \frac{1}{n_i} \sum_{j=1}^{n_i} w_i(x_{i,j}) \frac{f(x_{i,j})}{p_i(x_{i,j})}$$
其中:

  • $x_{i,j}$ 是从第 $i$ 个分布 $p_i$ 中抽取的第 $j$ 个样本。
  • $w_i(x)$ 是权重函数,其关键作用是平衡不同采样方法在某个特定点 $x$ 上的贡献。所有权重函数必须满足 $\sum_{i=1}^m w_i(x) = 1$(当 $f(x) \neq 0$)。

关键:权重函数 $w_i(x)$

权重函数的设计是 MIS 的精髓。一个好的权重函数应该:

  • 在某种采样策略表现好的地方,给予该策略产生的样本更高的权重。
  • 在某种采样策略表现差的地方(即该策略的概率密度函数值很小),降低其权重,以避免产生巨大的重要性权重($f(x)/p_i(x)$)。

最著名和常用的权重函数是平衡启发式(Balance Heuristic)
$$w_i(x) = \frac{n_i p_i(x)}{\sum_k n_k p_k(x)}$$

将其代入 MIS 公式,得到:
$$I \approx \sum_{i=1}^m \frac{1}{n_i} \sum_{j=1}^{n_i} \frac{f(x_{i,j})}{\sum_k n_k p_k(x_{i,j})} \approx \frac{1}{N} \sum_{i=1}^m \sum_{j=1}^{n_i} \frac{f(x_{i,j})}{\sum_k (n_k / N) p_k(x_{i,j})}$$

平衡启发式在实践中效果非常好,它几乎总是比使用任何一种单一采样策略的方差要低。

例子:渲染中的直接光照(再次)

计算光照积分 $L = \int L_i(light) * BRDF * \cos\theta d\omega$ 时,这个函数是两部分相乘:

  1. **光强分布 $L_i$**:可能是一个小窗户,适合用光源采样。
  2. BRDF 分布:可能是镜面反射,适合用 BRDF 采样。

单一的重要性采样会陷入两难:

  • 如果用光源采样,在BRDF值很小(非镜面反射方向)的地方采样会浪费样本。
  • 如果用BRDF采样,可能会错过重要的光源。

MIS 的解决方案
同时使用两种采样策略。

  • 策略1($p_1$):根据光源分布采样(多朝窗户方向采样)。
  • 策略2($p_2$):根据BRDF分布采样(多朝镜面反射方向采样)。

然后使用平衡启发式权重函数将这两组样本结合起来。结果是:

  • 当采样方向既指向光源又是镜面反射方向时(“好”样本),两种策略的 $p_i(x)$ 都较高,权重被合理分配。
  • 当采样方向指向光源但不是镜面反射方向时,BRDF采样策略的 $p_{brdf}(x)$ 会很小,因此其样本权重 $w_{brdf}(x)$ 会被降低,避免产生噪声。
  • 反之亦然。

这样,MIS 巧妙地结合了两种策略的优点,得到了一个方差更低、更稳定的估计结果。


总结与对比

特性重要性采样 (IS)多重重要性采样 (MIS)
核心思想用一个好的分布 $p(x)$ 来指导采样,聚焦重要区域。组合多个采样分布,用加权函数智能地结合它们的样本。
采样分布单一分布 $p(x)$多个分布 $p_1(x), p_2(x), …, p_m(x)$
权重简单的重要性权重 $1/p(x)$复杂的权重函数 $w_i(x)$(如平衡启发式)
优点概念简单,在 $p(x)$ 匹配 $f(x)$ 时极其高效。非常鲁棒。能有效处理由多个因素相乘组成的复杂被积函数 $f(x)$,方差显著低于任何单一策略。
缺点极度依赖 $p(x)$ 的质量。选错 $p(x)$ 会导致方差极大。计算开销更大,需要计算多个 PDF 的值。
适用场景被积函数 $f(x)$ 特征明显且单一,容易找到匹配的 $p(x)$。被积函数是多个函数的乘积(如渲染中的 $Lighting * BRDF$),难以用单一分布描述。

简单来说,重要性采样是“把所有鸡蛋放在一个篮子里,但希望这个篮子足够结实”,而多重重要性采样是“把鸡蛋分开放到几个篮子里,并且有一个智能系统来决定从哪个篮子拿鸡蛋最安全”。MIS 是重要性采样思想的重大飞跃,使其在实践中变得更加实用和强大。