给定 1D 积分 ∫abf(x)dx,我们随机采样一组独立的均匀随机变量 Xi∈[a,b],蒙特卡洛估计值等于
Fn=nb−ai=1∑nf(Xi)
期望等于
E[Fn]=E[nb−ai=1∑nf(Xi)]=nb−ai=1∑nE[f(Xi)]=nb−ai=1∑n∫abf(x)p(x)dx=nb−ai=1∑n∫abf(x)b−a1dx=n1i=1∑n∫abf(x)dx=∫abf(x)dx
一般地,如果随机变量根据 PDF p(x) 采样(其中 p(x)>=0),则蒙特卡洛估计值等于
Fn=n1i=1∑np(Xi)f(Xi)
期望等于
E[Fn]=∫abf(x)dx
方差
V[F]=E[F−E[F]]2=E[F2]−E[F]2
V[aF]=a2V[F]
当 F 为蒙特卡洛估计时,方差等于
V[Fn]=V[n1i=1∑np(Xi)f(Xi)]=n21i=1∑nV[p(Xi)f(Xi)]=n1V[p(X)f(X)]
可见随着采样数量 n 的增长,方差呈线性的下降,又由于方差表示误差的平方,因此蒙特卡洛估计的误差以 O(n−1/2) 的速度下降。
偏差
β=E[F]−∫f(x)dx
如果有偏估计能够比无偏估计更快的收敛到正确的结果,那么有偏估计仍然是可取的
均方差
MSE[F]=E[(F−∫f(x)dx)2]
MSE[F]=V[F]+β[F]2
当偏差 β=0 时,均方差等于方差
样本方差
随机采样一组独立的随机变量 Xi,样本均值 Xˉ=(1/n)∑Xi, 则样本方差等于
S=n−11i=1∑n(Xi−Xˉ)2
样本方差可以理解为对样本总体方差的一个无偏估计
基本思想
将积分域 Λ 划分成 n 个不重叠的区域 Λ1,Λ2,...,Λn,且满足 i=1∪nΛi=Λ ,我们根据概率 pi 从每一个 Λi 中随机抽取 ni 个样本,则在 Λi 内的蒙特卡洛估计值等于
Fi=ni1j=1∑nipi(Xi,j)f(Xi,j)
整体估计
F=m1i=1∑mp(Xi)f(Xi)=m1i=1∑nj=1∑nipi(Xi,j)f(Xi,j)=mnii=1∑nni1j=1∑nipi(Xi,j)f(Xi,j)=mnii=1∑nFi=i=1∑nviFi其中vi表示第i个区域所占的比例
基本思想
当使用和被积函数 f(x) 相似的分布进行采样时,即 p(x)∝f(x) 或 p(x)=cf(x),蒙特卡洛估计会收敛的更快。
假设令 p(x)=cf(x),根据 ∫p(x)=1,可得
c=∫f(x)dx1
此时蒙特卡洛估计的方差等于
V[F]=n1V[p(X)f(X)]=n1V[c1]=0
然后实际上我们并不知道 f(x) 的分布,但是可以使用和 f(x) 相似的分布,从而降低方差 !
提示
俄罗斯轮盘是一种可以提高蒙特卡洛估计效率的技术,它通过跳过对最终结果贡献很小的样本来减少计算量从而提高效率。在渲染中我们经常使用以下形式的估计量
p(X)f(X)v(X)
其中 f(X) 很容易计算(例如 BRDF 函数)而 v(X) 计算很复杂(例如二元可见性函数),当 f(X) 等于零或者很小时我们可以跳过整个的计算,但是会引入偏差,俄罗斯轮盘正式用于解决该问题的。
为了应用俄罗斯轮盘,我们可以按任意方式选择一个终止概率 q,然后在概率 q 的情况下跳过整个计算使用常数 c(通常使用 c = 0),在概率 1 - q 的情况下仍然进行计算并乘上权重 1/(1−q),具体如下
F′=⎩⎨⎧1−qF−qcξ>qcotherwise
期望
E[F′]=(1−q)(1−qE[F]−qc)+qc=E[F]
使用俄罗斯轮盘总是会增加方差
提示
为了评估蒙特卡洛估计量, 必须能够从选定的概率分布中抽取随机样本。有多种技术可以实现,对于渲染来说,最重要的技术之一是反转方法,其通过反转分布的 CDF 将均匀样本映射到给定的概率分布。

CDF 定义为
Pi=j=1∑ipj
采样操作可以表示为找到 i 使得
Pi−1≤ξ≤Pi
其中 ξ 是从均匀随机分布 [0,1] 中采样获得
我们可以按照以下步骤从 PDF 中抽取样本
- 对 PDF 积分得到 CDF P(x)=∫0xp(x′)dx′
- 获取均匀分布的随机数 ξ
- 通过求解 ξ=P(X) 来产生样本;换句话说,找到 X=p−1(ξ)
提示
这里将研究一个更普遍的问题,当我们对来自任意分布的样本使用函数 f 变换时会产生何种分布。假设给定一随机变量 X,PDF p(x) 且 CDF P(x),给定函数 y=f(x),如果我们计算 Y=f(X),我们想要找到新随机变量 Y 的分布。在这种情况下,函数 f(x) 必须是一一对应的,否则就无法明确地描述特定 y 的概率密度。
函数 f 一一对应的一个直接结果是,其导数必须严格大于 0 或者严格小于 0,这意味着对一给定的 x 有
Pr{Y≤f(x)}=Pr{X≤x}.
根据 CDF 的定义有
Pf(y)=Pf(f(x))=P(x).
CDF 之间的这种关系可以推导出 PDF 之间的关系,我们假设函数 f 的导数大于 0,则微分可得
pf(y)dxdf=p(x)
即
pf(y)=dxdf−1p(x).
假设给定一个 d 维随机变量 X,其概率密度函数为 p(x),令 Y=T(X),则有
pT(y)=pT(T(x))=∣JT(x)∣p(x)
其中 ∣JT∣ 是雅可比矩阵 T 行列式的绝对值,即
∂T1/∂x1⋮∂Td/∂x1...⋱...∂T1/∂xd⋮∂Td/∂xd
例子
在 3D 中,笛卡尔坐标和球面坐标之间的关系为
xyz=rsinθcosϕ=rsinθsinϕ=rcosθ
雅可比变换的行列式等于 ∣JT∣=r2sinθ,因此对应的概率密度函数为
p(r,θ,ϕ)=r2sinθp(x,y,z)
假定我们有一个二维联合概率密度函数 p(x,y),希望从中抽取样本 (X,Y),如果 x 和 y 的概率密度是独立的,则可以表示为
p(x,y)=px(x)py(y)
随机变量 (X,Y) 可以通过独立的采样 X 和 Y 来得到,然而许多有用的密度函数是不独立的,因此,这里介绍一般情况下如何从多维分布中进行采样
相关信息
给定一个二维密度函数,其边际密度函数等于
p(x)=∫p(x,y)dy
我们从 X∼p(x) 中抽取一个样本 X,然后我们从条件概率密度函数中抽取一个样本 Y
p(y∣x)=∫p(x,y)dyp(x,y)