之前在学习《Ray Tracing From The Ground Up》时,有总结过“蒙特·卡罗积分”:
Q73:蒙特•卡罗积分(Monte Carlo Integration)
后文内容,主要参考PBRT-V3的13.10章节。
一、重要性采样
对于积分:
Monte Carlo estimator:
“重要性采样”就是根据f(x)的值来调整p(x)的概率分布。
也就是说:f(x)值大的地方,就多采几个点;f(x)值小的地方,就少采几个点。
(f(x)值大的地方说明:这个地方的x对积分结果的贡献大,所以要多采几个点)
p(x)的概率分布和f(x)的值越是接近,Monte Carlo estimator计算的结果越精确。
如果不是“重要性采样”,会怎么样呢?
不是“重要性采样”,也就是说:
case 1,f(x)值大的地方,p(x)的概率分布小;
case 2,f(x)值小的地方,p(x)的概率分布大;
回头看看Monte Carlo estimator,累加的单项是:f(x)/p(x)
“重要性采样”的情况是:大/大+小/小
不是“重要性采样”的情况是:大/小+小/大
问题来了,“大/小”会得到一个很大的值,使得整体的方差增大;
“小/大”会得到一个很小的值,也使得整体的方差增大;
前面的内容只是为了说明一点:
p(x)的概率分布和f(x)的值差异越小,计算的结果越精确;