蒙特卡罗算法综述Word格式文档下载.docx
《蒙特卡罗算法综述Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《蒙特卡罗算法综述Word格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
ThisarticledescribesaMonteCarloalgorithmfortheoriginofprinciple,
descriptionandapplicationcitedtheinstaneeofaMonteCarloglobalillumination
algorithmsandtheresearchprocess.
Keywords:
MonteCarlo;
globalillumination;
statistics;
adaptive
1引言
蒙特•卡罗算法(MonteCarlomethod),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率
统计理论为指导的一类非常重要的数值计算方法。
是指使用随机数(或更常见的
伪随机数)来解决很多计算问题的方法。
蒙特•卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特•卡罗方法正是以概率为基础的方法。
起源于早期的用几率近似概率的数学思想,它利用随机数进行统计试
验,以求得的统计特征值(如均值、概率等)作为待解问题的数值解•随着现代计算机技术的飞速发展,蒙特卡罗算法也在不断的改进。
全局光照是三维软件中的特有名词,光具有反射和折射的性质。
在真实的大自然中,光从太阳照射到地面是经过无数次的反射和折射的,所以我们看到地面
的任何地方都是清晰的(白天),在三维软件中,里面的光虽然也具有现实当中光的所有性质,但是光的热能传递却不是很明显。
全局光照,表现了直接照明和间接照明的综合效果。
光线碰到拍摄对象,反射正反射光或漫反射光,这就控制了色彩、物体间相互作用的反射、折射、焦散等光效,最后演绎了现实的自然光。
所以在渲染的时候,为了实现真实的场景效果,就要在渲染器中指定全局光照,全局光照有多种实现方法,例如辐射度、光线追踪、环境光遮蔽(ambientocclusion)、光子贴图、LightProbe等[1]。
当光从光源被发射出来后,碰到障碍物就反射和折射,经过无数次的反射和折射,物体表面和角落都会有光感,像真实的自然光。
全局光照占内存是很厉害的。
它属于间接照明,缩写为GI,全名为Globallllumination(全局光照)[1]
1986年,Kajiya首次将蒙特卡罗方法应用到全局光照领域,提出以建立从视点到光源的随机游动链为基础的蒙特卡罗光径跟踪算法来逐像素地生成图像。
须注意的是,蒙特卡罗光径跟踪属于蒙特卡罗全局光照方法,如目前应用广
泛的PhtotonMapping算法,生成图像的基本框架。
蒙特卡罗光径跟踪的核心环节在于抽样穿过像素的光径样本,像素值即为所有光径样本光照值的均值。
光径的建立过程是:
在像素区域内随机地抽样一个以视点出发产生一条射线穿过射进场景,计算该光线与第一个物体的交点1y,以1y为起点、根据1y所在
物体表面的散射特性随机产生一个方向而形成一条射线,再求出另一个交点2y,上述过程反复进行,在任一交点处,光径均可以一定的概率而终止。
整个光径的光照值按照蒙特卡罗积分可以得到。
2007年中国天津大学徐庆老师提出了一种基于基于信息熵的蒙特卡罗全局光照的自适应抽样算法,在真实感图形生成领域里,[2]蒙特卡罗方法是计算整
体光照问题的极佳选择。
但是,在用基于蒙特卡罗的全局光照算法生成的图像中,当没有足够多的采样量的时候,存在大量的噪声。
自适应抽样方法是减少这种噪声的一种很好的方法。
该文提出了一种新的基于信息熵的自适应抽样算法。
实验
结果表明,该方法的效果优于香农信息熵等经典方法。
2来源
1946年,美国拉斯阿莫斯国家实验室的三位科学家JohnvonNeumann,Stan
Ulam和NickMetropolis共同发明,被称为蒙特卡洛方法。
它的具体定义是:
在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算呢?
蒙特卡洛(MonteCarlo)
方法告诉我们,均匀的向该正方形内撒N(N是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇
怪形状的面积与正方形的面积之比便近似于M/N,N越大,算出来的值便越精确。
在这里我们要假定豆子都在一个平面上,相互之间没有重叠。
蒙特卡洛方法可用
于近似计算圆周率:
让计算机每次随机生成两个0到1之间的数,看这两个实数是否在单位圆内。
生成一系列随机点,统计单位圆内的点数与总点数,(圆面积
和正方形面积之比为PI:
1,PI为圆周率),当随机点取得越多(但即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)时,其结果越接近于圆周率。
就数学特性而言,蒙特卡罗方法的发展可以追溯到18世纪著名的蒲丰问题.1777年,法国科学家蒲丰(Buffon)提出用投针试验计算圆周率n值的问题.这里我们用蒲丰问题来初步说明蒙特卡罗方法的基本原理和解决问题的基本手续.蒲丰问题是这样一个古典概率问题:
在平面上有彼此相距为2a的平行线,向此平面任意投一长度为2l的针,假定I<
a,显然,所投的针至多可与一条直线相交,那么,此针与任意条平行线相交的概率可以求出,由下面的分析
可知,此概率与所取针长2I、平行线间距2a有关,并且包含有n值.在这里,任投一针的概率含义有以下三点:
(1)针的中点Ml在平行线之间等概率落入,即Ml距平行线的距离x均匀分布在区间[0,a]之内;
(2)针与线的
夹角0均匀分布在区间-n2,n2之内;
(3)x与B互相独立.在某一条平行线上的x轴,不失一般性,假定针的中心处于图示中的x轴上.由于对称性,我们只需分析针中心处在x€(0,a)范围的情况即可.令探针中心的坐标值为
x,显然,只有x<
l时才可能发生相交的事件.我们来分析在条件x<
l满足时,针与线相交的概率:
只有当0<
00=arccosxl时才能相交,且相交的
概率为P1=2narccosxl
(1)下面再来分析针中心位置在轴上的分布,显然,这
是一个均匀分布,即针中心处于区间(x,x+dx)内的概率为dP2=dxa⑵这样,一次投掷,针中心落入(x,x+dx)且与线相交的概率为dP=P1dP2=2naarccosxldx(3)则一次投掷,针与线相交的总概率为P=/dP=/10naarccosxldx=2lna⑷即:
n=2lPa从(5)式可见,可利用投针试验计算n值:
设投针N次,其中n次针与线相交,则可用频率值n/N作为概率P的估计值,从而求得n的估计值为n-2laNn(6)这就是早期的用频率值作为概率近似值的方法的应用实例,表1是在历史上一些有名的用投针试验计算n
值的结果[2],其中针长以a为单位。
需要指出的是,上述由投针试验求得n的近似值的方法,是进行真正的试验,并统计试验结果,要使获得的频率值与概率值偏差小,就要进行大量的试验[3],这在实际中,往往难以做到.可以设
想,对蒲丰问题这样一个简单的概率问题,若要进行10万次投针试验,以每次投针、作出是否相交判断并累加相交次数用时5秒钟计算,则需用时50万
秒,即大约139个小时.那么,可以设想,对于象上述确定条件下的核裂变、直流气体放电中粒子的输运过程及粒子输运的总效应,若要用多次掷骰子的方
法近似求出就是不可能的了•所以,在现代计算机技术出现之前,用频率近似概率的方法抑或称为雏形时代的蒙卡罗方法并没有得到实质上的
应用.
若用数值模拟方法代替上述的真正的投针试验,是利用均匀分布于(0,1)之间的随机数序列,并构造出随机投针的数学模型,然后进行大量的随机统计并求得n的近似值.
3原理
蒙特卡罗方法的基本原理及思想如下:
当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。
这就是蒙特卡罗方法的基本思想。
蒙特卡罗方法通过抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。
它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。
可以把蒙特卡罗解题归结为三个主要步骤:
构造或描述概率过程;
实现从已知概率分布抽样;
建立各种估计量。
蒙特卡罗解题三个主要步骤:
构造或描述概率过程:
对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。
即要将不具有随机性质的问题转化为随机性质的问题。
实现从已知概率分布抽样:
构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因[4]。
最
简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。
随机数就是具有这种均匀分布的随机变量。
随机数序列就是具有这种分布的总体
的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。
产生随机数的问题,就是从这个分布的抽样问题。
在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。
另一种方法是用数学递推公式产生。
这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。
不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。
由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。
由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。
建立各种估计量:
一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。
建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。
例如:
检验产品的正品率问题,我们可以用1表示正品,0表
示次品,于是对每个产品检验可以定义如下的随机变数Ti,作为正品率的估计
量:
于是,在N次实验后,正品个数为:
显然,正品率p为:
不难看出,Ti为无偏估计。
当然,还可以引入其它类型的估计,如最大似然估计,渐进有偏估计等。
但是,在蒙特卡罗计算中,使用最多的是无偏估计。
用比较抽象的概率语言描述蒙特卡罗方法解题的手续如下:
构造一个概率空间(W,A,P),其中,W是一个事件集合,A是集合W的子集的s体,P是在A上建立的某个概率测度;
在这个概率空间中,选取一个随机变量q(w),w?
W,使得这个随机变量的期望值正好是所要求的解Q,然后用q(w)的简单子样的算术平均值作为Q的近似值。
蒙特卡罗方法与一般计算方法有很大区别,一般计算方法对于解决多维或因素复杂的问题非常困难,而蒙特卡罗方法对于解决这方面的问题却比较简单。
其特点
如下:
•直接追踪粒子,物理思路清晰