蒙特卡洛方法(Monte Carlo methods)
/ MON-tee KAR-loh METH-ud /
蒙特卡洛方法,是用掷骰子——也就是随机采样——来回答棘手的数学问题,而不是用精确公式去求解它们。这个想法妙在简单:如果一项计算纠缠得没法直接做,那就带着随机性把它模拟许多遍,再把结果平均起来。它得名于那座著名的赌城,用纯粹的重复换取巧思,让计算机的速度顶替数学家的铅笔。
经典的玩具版,是靠往一个内切了圆的正方形里掷飞镖来估计圆周率。随机掷上千枚飞镖;落进圆内的比例,乘以四,就趋近于圆周率。不需要任何几何公式——只需数数命中。同样的把戏可以放大到正经问题上:要找出一个复杂过程的平均结果,就生成许多随机情景再把它们平均;要估计一个概率,就数数那事件在模拟中发生了多少次。
它为何重要:现实中极大一部分的量——一个投资组合的预期亏损、物理中粒子的行为、一个贝叶斯后验的平均——都是维度高到无法精确计算的积分或平均,而蒙特卡洛往往是唯一可行的路。它的诚实,体现在一个确切的权衡上:误差以「样本数的平方根分之一」的速度缩小,这意味着想把误差减半,得花上四倍的功夫。它给你的不是一个孤零零的答案,而是一个带有可量化误差范围的估计——而那个范围只会缓慢地收窄,所以高精度可能着实昂贵。
用飞镖估计圆周率。在一个1×1的正方形里画一个圆,随机掷飞镖。掷了1,000枚后,假设有786枚落进圆内;估计圆周率 ≈ 4 × 786/1000 = 3.144。掷上1,000,000枚,通常就会落在3.1416附近——但每要多得一位正确的小数,你大约就得多掷100倍的飞镖。
用随机飞镖估计圆周率:精度只随样本数的平方根提升——慢吞吞地。
蒙特卡洛的误差,只以「样本量的平方根分之一」的速度下降——这是出了名的慢。把误差砍半要四倍的样本,多得一位精确小数则约需百倍。随机采样通用又简便,但高精度可不便宜。