蒙特卡罗方法¶
蒙特卡罗方法(Monte Carlo method)是指使用随机数来解决很多计算问题的方法。
积分¶
其中 \(X \sim pdf(x)\)。按 \(X_i \sim pdf(x)\) 随机采样 \(N\) 次,然后取平均值就能估算积分结果
如果是 均匀采样,那么 \(pdf(x)=\dfrac{1}{b-a}\),上式变成
重要性采样¶
重要性采样(Importance Sampling)是一种估计期望的方法。如果 \(X \sim p(x)\),需要随机采样 \(N\) 个 \(X_i \sim p(x)\) 来估计 \(E(f(X))\)
但是 \(p(x)\) 分布可能不好采样,或者方差比较大导致上式收敛太慢,这时就要换一个更好的分布 \(q(x)\)。考虑到
所以,可以随机采样 \(N\) 个 \(X_i \sim q(x)\),用下式来估计 \(E(f(X))\)
这显然是一个 无偏 的估计。其中,\(\dfrac{p(X_i)}{q(X_i)}\) 是重要性权重。
减少方差¶
\(\hat{I}_N\) 的方差为
根据柯西 - 施瓦茨不等式(Cauchy–Schwarz inequality)
当且仅当 \(A(x)=\lambda B(x)\) 时,等号成立。把 \(A(x)\) 和 \(B(x)\) 当成向量会比较容易理解,当且仅当两个向量平行时,等号成立。
当前仅当 \(q(x)=\lambda f(x)p(x)\) 时,等号成立。因为 \(q(x)\) 是概率密度函数,要满足归一化条件,所以
这时,\(\hat{I}_N\) 的方差为 \(0\),只要采样一次就能得到正确结果。但按照这个分布采样其实比较困难,毕竟它的分母就是我们要求的 \(I\),要是能直接求出来就没前面那么多事了。实际应用中,应该找和最优分布接近的已知分布来采样,也能减少方差。
估计积分¶
前面提到,积分可以转化为期望
最简单的方法是按前面说的,均匀采样来估计结果,此时
我们希望找到一个更好的分布 \(q(x)\) 来减少方差,带入刚才的结论
所以,在用蒙特卡罗方法估计积分时,应该尽量按照与 \(f(x)\) 形状相近的分布来采样,能减少方差,减少采样次数。
多重重要性采样¶
在估计积分时,对于更复杂的被积函数 \(f(x)\),我们可能无法给出一个与它形状相近的 PDF 用于采样。
假设上图中
其中,\(f_a(x)\) 和 \(f_b(x)\) 是两个相对简单的函数,我们能给出与它们形状分别相近的 \(p_a(x)\) 和 \(p_b(x)\) 分布。然而,单独使用某个分布去采样,可能导致极大的方差,例如图中 \(\dfrac{f(x_a)}{p_a(x_a)}\) 是一个非常大的数,和期望差得很远。
多重重要性采样(Multiple Importance Sampling)就是结合多种分布去采样,再加权平均,进而减少方差
其中,\(p_i\) 是用于采样的多种分布,\(X_{i,j} \sim p_i(x)\),\(\omega_i\) 是权重函数。为了保证无偏性,要求同时满足
- 当 \(f(x) \ne 0\) 时,\(\displaystyle\sum_{i=1}^n \omega_i(x)=1\)
- 当 \(p_i(x)=0\) 时,\(\omega_i(x)=0\)
此时,可以验证一下 MIS 的期望
常数权重¶
如果 \(\omega_i(x)\) 是一个常数,那么
只要其中一个分布 \(p_i(x)\) 导致方差较大,整体的方差就会比较大。这不是一个好的策略。
The balance heuristic¶
The balance heuristic 策略使用
作为权重函数。将它带入到 MIS 估计公式中
其中,\(N=\sum_i n_i\) 是总的采样次数,\(c_k=n_k/N\) 是使用 \(p_k(x)\) 分布采样的数量占比。
The balance heuristic 策略可以较好地减小方差,可以证明,即使存在更好的权重函数 \(\omega_i(x)\),方差也不会比 The balance heuristic 策略小很多。1
The power heuristic¶
The power heuristic 策略使用
作为权重函数,当 \(\beta=1\) 时就是 The balance heuristic。除了 \(1\) 以外,我们通常会令 \(\beta=2\),将它带入到 MIS 估计公式中
其中,\(X_{i,j} \sim p_i(x)\),如果本次采样时 \(p_i(X_{i,j})\) 比较小,对结果的贡献也会比较小。The balance heuristic 策略每次采样的贡献与本次采样的分布 \(p_i(X_{i,j})\) 无关,所以叫 balance。
在实际应用中,The power heuristic 策略通常能比 The balance heuristic 策略减小更多方差。
应用¶
如图,场景中有四个球形光源。场景中的五个金属条由上到下粗糙度依次增加。在这个场景下,用任何采样方式结果都收敛得都很慢。
只有 BRDF lobe 范围内的光源才有贡献。如果只对 BRDF 重要性采样,对于上面低粗糙度的金属条,BRDF lobe 小,容易采样到有效的光源,方差就小,噪点少。对于下面较粗糙的金属条,BRDF lobe 大,采样范围很大,很难恰好采样到有效的光源上,方差就大,噪点多。
如果只对光源重要性采样,对于下面粗糙的金属条,BRDF lobe 大,大多数光源都在 lobe 范围内,方差小,噪点少。对于上面低粗糙度的金属条,BRDF lobe 小,大部分光源都不在 lobe 范围内,无效采样多,方差大,噪点多。
使用 MIS 后,效果就改善了很多。
低差异序列¶
使用伪随机算法生成的随机序列比较杂乱,采样点可能挤在一起。低差异序列(Low-discrepancy Sequence)则可以产生分布更加均匀的序列。
使用低差异序列采样,可以加快蒙特卡罗方法的收敛速度,这被称为拟蒙特卡罗方法(Quasi-Monte Carlo method)。
Radical Inverse¶
Van der Corput¶
Halton¶
Hammersley¶
Scrambled Halton¶
Sobol¶
参考¶
- Lec4_Importance.pdf
- 蒙特卡洛积分与重要性采样 - 知乎
- Monte Carlo积分求解中,多重重要性采样的思考和理解 - 知乎
- 大数定律、蒙特卡洛积分、重要性采样、多重重要性采样 - 知乎
- 六、多重重要性采样 - 知乎
- veach-chapter9.pdf
- Importance Sampling
- Multiple Importance Sampling
- LearnOpenGL - Specular IBL