蒙特卡洛在图形渲染领域中有着大量的应用,其中包括但不限于基于物理的渲染(PBR)、基于图像的光照(IBL)、预计算辐照度全局光照(PRT)等等,最新的高效光追算法 ReSTIR 中也需要以蒙特卡洛作为理论基础,UE5 的 Lumen 目前也实现了基于 ReSTIR 的 Gather……
一、初识蒙特卡洛(Monte Carlo)
蒙特卡洛是南欧国家摩纳多的一个著名赌城,赌博就意味着概率,蒙特卡洛方法正是以概率为基础的方法是一大类随机算法(Randomized Algorithms)的总称,即通过随机样本来估算真实值。在了解蒙特卡洛之前,需要先了解概率论基础
1.1 最简单的例子:近似 PI 值
一个随机数生成器,可均匀生成 [-1, 1] 之间的数,每次生成两个数,对应着一个平面坐标系中的点 (x, y)

将以上的操作重复进行 n 次,在 n 非常大的情况下,落入如上绿色范围内的点的数量 m 与 n 的比值就近似于 ,对公式做个变换得到
,很好理解,到此蒙特卡洛也就入门了
1.1.1 n 有多大,PI 才能足够准确?
大数定律保证了蒙特卡洛的正确性:当 n 趋于无穷, 趋于
通过 Bernstein 不等式 可以了解到:样本数量 n 增加一万倍,精度才能提高一百倍,这一部分还是算超纲了,有兴趣看下就好
1.2 最普通的例子:计算定积分
就拿《深度强化学习》这本书中的例子:
计算 ,其中
求解解析解非常困难,再加上计算机也不会计算连续的积分,因此通过蒙特卡洛计算数值近似解就是一个不错的选择,一元函数定积分也算是一个相对简单的问题
此蒙特卡洛近似计算步骤如下:
- 在区间 [a, b] 上做随机抽样,得到 n 个样本,记作:
- 对函数值
求平均,再乘以区间长度 b − a
可得出
这个方法和黎曼和的求法非常类似: 就是图中矩形的宽,而
就是对应矩形的高
1.2.1 多元函数定积分
一元函数的定积分是相对比较简单的问题,在此情况下,变量 x 是个标量,求解的积分也不会是多重积分
多元函数定积分的求解要复杂一些,但好在,前面 1.1 求解 的例子正好可转换为多元函数定积分求近似的问题,下面就从公式的角度再推导一遍
其求解 近似值的本质其实就是计算
,集合 Ω = [−1, 1] × [−1, 1]
其中 ,直观地说,如果点 (x, y) 落在下图的绿色圆内,那么函数值就是 1;否则函数值就是 0
从从集合 Ω = [−1, 1] × [−1, 1] 上均匀随机抽样 n 个点,记作
可得到 ,其中
即集合 Ω 的面积,1.1 中对 m 的定义,其实就是多次采样的
结果
二、蒙特卡洛积分(Monte-Carlo integration)
在介绍完备的蒙特卡洛积分前:先举一个完全不需要复杂的数学推导,生活中的例子
在要统计全国大学生的平均身高,有以下两个方案:
- 直接挨家挨户调查全国所有大学生每一个人的身高,然后求其平均
- 随便进入一所大学,统计这所大学里面所有学生的身高,然后求其平均作为近似解
可见,选择方案②确实是一个很不错的选择,它就是随机采样的一个案例,但是现在有这样一个问题:这所大学是文科大学,也因此男女比例是 1:5,要知道女性的平均身高是要低于男性的,这样若只是单纯的随机抽样必然会得出错误的结果。对于这个问题,该如何设计采样方案,才能使得最终的结果尽可能的客观真实呢?
相信这个问题对于一个初中生来讲,都能很好的回答:有两种方案
- 抽到男生的时候,将其权重设为5,抽到女生的时候,将其权重设为1,最后计算平均身高时乘上权重求平均
- 男生女生分开抽查,确保抽查到的男女生比例为 1:1,然后统计平均身高
但是从这个问题可以看出,每个样本被选中的概率并不一定是相同的,也就是说,样本池不一定均匀,就像题目中的情景,选出女生的概率要比选出男生的概率高
2.1 非均匀样本采样
若只是单纯的求解定积分结果,采样范围即积分范围,并且此采样范围内的每个样本完全均匀分布,但蒙特卡洛积分需要考虑到所有情况
对于一般格式的连续性积分 ,其被积函数为
,积分区间为 Ω
一样采用离散的方式去近似:即只在区间 Ω 内进行 n 次采样,且每个样本 x 在区间内被选中的概率为 ,那么就有
,其中
- Ω 可以是三维空间、一个球面、或者一个曲面……
- 样本 x 可能是一个点、也可能是一个立体角、或者是光线追踪时的其中一条路径……
和
无直接关系,只是在大部分情况下,我们可以自由选择
,好的