Q122:PBRT-V3,提高Monte Carlo积分计算效率的方法——Russian Roulette和Splitting(13.7章节)
提高Monte Carlo积分计算效率的本质:
减少那些对结果贡献小的采样点的数目!
特别声明:“提高效率”的前提是不能影响计算结果的精确度。
一、Russian Roulette
以“路径形式的光传播方程”为例来进行说明。
方程截图如下:
这个结果是由“无数条长度分别为1、2、3、……的路径上返回的光”累加而成。
咱用beta(n)表示长度为n的路径上返回光的比例(或者说“效率”吧);Le(n)表示长度为n的路径最终打到的光源的光的辐射率。
这样,长度为n的路径上贡献的光P(n)=beta(n)*Le(n)
根据能量守恒:路径的长度越长,该路径上返回的光(能量)越少(即,对计算结果的贡献越小)。
即:beta(1)>beta(2)>beta(3)>……>beta(n-1)>beta(n)>……
这个时候,就考虑“扔掉”那些贡献小的路径。当然,不能直接“扔掉”,这样肯定会影响计算结果。咱得以一种“不会影响计算结的”方式来扔掉。
假设咱想“扔掉”长度>=n的路径。
Russian Roulette方法是怎么做的呢?
这个长度>=n的路径要不要扔掉,咱给这件事情设定个概率q:
有q的概率,扔掉,P(n)=0;
有(1-q)的概率,不扔掉,P(n)=P(n)/(1-q);
既然是想扔掉,那么q的值应该相对比较大嘛(不然怎么会有这种想法呢?)。
那么怎么设定这个q呢?
前面,不是提到是因为beta(n)很小了,所以才有“扔掉”的想法啦。
那么,就选q=1-beta(n)。
(这样,在beta(n)很小的情况下,对应路径被扔掉的可能性就比较大啦,从而提高了计算效率)
Russian Roulette方法,设事件为F;称q为“终止概率”;终止时赋值c(前面例子中c=0);未终止时赋值(F-qc)/(1-q),使用Russian Roulette方法之后的事件为F’。即:
Russian Roulette方法可以提高计算效率,但是不改变结果的“期望”。
二、Splitting
Russian Roulette减少了贡献小的成分的计算(即,减少相应的采样数目)。
Splitting的本质也是一样的,但是针对的使用情形不一样。
针对这中积分:
对积分的各个维度分别(Splitting)采样。
Q122:PBRT-V3,提高Monte Carlo积分计算效率的方法——Russian Roulette和Splitting(13.7章节)相关推荐
- 通俗易懂的Monte Carlo积分方法(二)
通俗易懂的Monte Carlo积分方法(二) Monte Carlo积分的计算(期望法) Monte Carlo算法的期望法计算的数学基础: 辛钦大数定律: 如果Xi是独立的随机变量,且EXi是相应 ...
- 通俗易懂的Monte Carlo积分方法(一)
通俗易懂的Monte Carlo积分方法(一) Monte Carlo积分的投点法计算: Monte Carlo算法(投点法)的数学基础: 伯努利大数定律: 设fA为n重伯努利试验中事件A发生的次数, ...
- 通俗易懂的Monte Carlo积分方法(四)
Monte Carlo 方法计算的理论基础 1.理论目标 2.收敛性的描述 3.误差的描述与控制 4.减少误差的技巧 5.代码的实现 1.理论目标 利用辛钦大数定律和中心极限定理对MentoCar ...
- martingale、markov chain、Monte Carlo、MCMC
文章结构如下: 1: MCMC 1.1 MCMC是什么 1.2 为什么需要MCMC 2: 蒙特卡罗 2.1 引入 2.2 均匀分布,Box-Muller 变换 2.3 拒绝接受采样(Acceptanc ...
- 蒙特卡罗方法(Monte Carlo method)浅入
蒙特卡罗方法概述 蒙特卡罗方法又称统计模拟法.随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法.将所求解的问题同一 ...
- 蒙特卡罗方法(Monte Carlo method)
蒙特卡罗方法(Monte Carlo method) 蒙特卡罗方法概述 蒙特卡罗方法又称统计模拟法.随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常 ...
- mASK调制在AWGN信道下的可达信息速率的Monte Carlo仿真计算法
本文探究mASK调制在AWGN信道下的可达信息速率用Monte Carlo仿真计算的方法.参考我的上一篇博文<mASK 调制在AWGN信道下的可达信息速率的积分计算>,解决的方法相同,只是 ...
- 蒙特卡罗模拟概述(Monte Carlo Simulation)
Overview 蒙特卡洛(Monte Carlo)方法,或称计算机随机模拟方法,是一种基于"随机数"的计算方法.这一方法源于美国在第二次世界大战中研制原子弹的"曼哈顿计 ...
- AI强度相关的研究:MCTS 蒙特卡洛树搜索 Monte Carlo Tree Search
提供具有挑战性的人工智能对手是使视频游戏令人愉悦和身临其境的重要方面. 太简单或反之太难的游戏可能会让玩家感到沮丧或无聊. 动态难度调整是一种方法,旨在通过为对手提供量身定制的挑战来改进传统的难度选择 ...
最新文章
- 成功解决AttributeError: 'DataFrame' object has no attribute 'tolist'
- linux 更改mysql的数据库目录
- 抄作业了!6 大 Flask 开源实战项目推荐
- oracle 启动监听提示 :The listener supports no services
- P4197-Peaks【Kruskal重构树,主席树】
- maven2 + tomcat6 + eclipse集成配置
- python设置excel自动换行_python 操作Excel 设置格式
- 基本sql语句--触发器
- 管家婆 源码 php,在windows平台上构建本身的PHP
- 3DSMAX 中的CS 骨骼动画插件初探
- DDoS Perl IrcBot v1.0分析复现与处置
- python炫酷gui界面_如何炫酷的使用Python
- 最简单人工智能python_如何从零学会人工智能(AI)Python?
- 阿里妈妈智能诊断工程能力建设
- 完了!Python黄了! 80%的程序员:痛快!你怎么看?
- 玩客云pc端_玩客云下载 玩客云电脑版下载
- Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
- 【笔记分享】H桥电机正反转
- 第一个爬虫-爬取搜狗的一整张网页
- 如何用mysql对淘宝用户行为进行分析