蒙特卡罗方法
蒙特卡罗方法
蒙特卡洛方法是一种随机模拟方法,随机模拟的思想由来已久,但是由于难于取得随机数,随机模拟的方法一直发展缓慢。而蒙特卡洛方法的出现得益于现代电子计算机的诞生,在 1944 年由 Metropolis 和 Ulam 提出于二战时美国原子弹研究的曼哈顿工程之中。蒙特卡洛这个名字是由 Metropolis 起的,借用了那个著名的赌场的名字,因为赌博总是和概率相关。蒙特卡洛模拟的过程是随机的,但解决的不仅有随机的问题也可以有确定性的问题。蒙特卡洛可以视为一种思想的泛称,只要在解决问题分人过程中,利用大量的随机样本,然后对这些样本结果进行概率分析从而得到问题求解的方法,都可以称之为蒙特卡洛方法。 斯坦福统计学教授 Persi Diaconis 在他的文章 The Markov Chain Monte Carlo Revolution 中给出的破译犯人密码的例子。一天,一位研究犯罪心理学的心理医生来到斯坦福拜访 Diaconis。他带来了一个囚犯所写的密码信息。他希望 Diaconis 帮助他把这个密码中的信息找出来。这个密码里的每个符号应该对应着某个字母,但是如何把这些字母准确地找出来呢?Diaconis 和他的学生 Marc 采用了一种叫做 MCMC(马尔科夫链蒙特卡洛)的方法解决了这个问题。
贝叶斯推断的不足
贝叶斯统计学是利用后验分布对 θ 进行推断。这种推断的计算很多情况下要用积分计算来完成。比如,我们要计算$θ$的函数$g(θ)$的期望:
$$ E(g(θ∣x))=∫g(θ)f(θ∣x)dθ $$
其中函数$f$表示后验分布。当$g(θ)=θ$时,得到的就是关于$θ$的点估计。但是对很多贝叶斯推断问题来说,有时候后验分布过于复杂,使得积分没有显示结果,数值方法也很难应用;有时候需要计算多重积分(比如后验分布是多元分布时)。这些都会带来计算上的很大困难。这也是在很长的时期内,贝叶斯统计得不到快速发展的一个原因。1990 年代 MCMC(Markov Chain Monte Carlo,马尔科夫链蒙特卡洛)计算方法引入到贝叶斯统计学之后,一举解决了这个计算的难题。可以说,近年来贝叶斯统计的蓬勃发展,特别是在各个学科的广泛应用和 MCMC 方法的使用有着极其密切的关系。
蒙特卡洛方法初探
蒙特卡洛方法的基础是(利用计算机)生成指定分布的随机数的抽样。在统计上发展了一些方法来解决这个问题。一般来说,从均匀分布 U(0,1)的样本较容易生成,通过线性同余发生器可以生成伪随机数序列,这些序列的各种统计指标和均匀分布 U(0,1) 的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。常见的分布的随机数都可以基于均匀分布的样本生成。对定积分的计算是蒙特卡洛方法的一种重要的应用,而很多统计问题,比如计算概率、矩(期望、方差等)都可以归结为定积分的计算比如说我们想计算 θ 的期望:
$$ E(\theta) = \int \theta P(\theta) d\theta $$
如果我们直接进行数值计算会比较麻烦,可以基于蒙特卡洛方法的思想通过抽样来解决该问题:
- 在$θ$的分布中抽取独立样本$θ1,θ2,…,θn$,n 足够大。用样本均值$\bar{\theta}= \frac{1}{n} \sum_{i=1}^{n} \theta_i$作为$E(θ)$
- 当 n 趋近无穷时,利用大数定律,样本均值会收敛到$E(θ)$(这称为仿真一致性)
从上面这个简单例子,蒙特卡洛方法的基本思路是:1.针对实际问题建立一个简单易行的概率统计模型,使问题所求的解为该模型的概率分布或者数字特征,比如:某个事件的概率或者是某个随机变量的期望值 2.对模型中的随机变量建立抽样方法,在计算机上进行模拟试验,得到足够的随机抽样,并对相关事件进行统计 3.对试验结果进行分析,给出所求解的估计及其精度(方差)的估计