蒙特卡洛方法概述
蒙特卡罗方法又称随机抽样技巧或统计试验方法。蒙特卡罗方法是一种计算方法,但与一般数值计算方法有很大的区别。它是以概率统计理论为基础的一种方法。由于蒙特卡罗方法能够比较逼真地描述事物的特点及物理实验过程,解决一些数值方法难以解决地问题,因而该方法地应用领域日趋广泛。
蒙特卡洛方法基本思想
当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是概率、数学期望有关的量时,通过某种试验的方法,得到该事件发生的频率,或者该随机变量若干个具体观察值的算数平均值,通过它得到问题的解。这就是蒙特卡罗方法的基本思想。
蒙特卡罗方法是用随机试验的方法计算积分,即将所要计算的积分看作服从某种分布密度函数
f
(
r
)
f(r)
f(r)的随机变量
g
(
r
)
g(r)
g(r)的数学期望
E
[
g
(
r
)
]
=
∫
0
∞
g
(
r
)
f
(
r
)
d
r
\mathbb{E}[g(r)]=\int^{\infty}_{0}g(r)f(r)dr
E[g(r)]=∫0∞g(r)f(r)dr通过某种试验,得到
N
N
N个观察值
r
1
r_1
r1,
r
2
r_2
r2,
⋯
\cdots
⋯,
r
N
r_N
rN(用概率语言来说,从分布密度函数
f
(
r
)
f(r)
f(r)种抽取
N
N
N个子样
r
1
r_1
r1,
r
2
r_2
r2,
⋯
\cdots
⋯,
r
N
r_N
rN),将相应的
N
N
N个随机变量的值
g
(
r
1
)
g(r_1)
g(r1),
g
(
r
2
)
g(r_2)
g(r2),
⋯
\cdots
⋯,
g
(
r
N
)
g(r_N)
g(rN)的算术平均值
g
ˉ
N
=
1
N
∑
i
=
1
N
g
(
r
i
)
\bar{g}_N = \frac{1}{N}\sum\limits_{i=1}^{N}g(r_i)
gˉN=N1i=1∑Ng(ri)作为积分的估计值(近似值)。
蒙特卡罗方法的收敛性
蒙特卡罗方法是由随机变量 X X X的简单子样 X 1 X_1 X1, X 2 X_2 X2, ⋯ \cdots ⋯, X N X_N XN的算术平均值: X ˉ N = 1 N ∑ i = 1 N \bar{X}_N=\frac{1}{N}\sum\limits_{i=1}^N XˉN=N1i=1∑N作为所求解的近似值。由大数定律可知,如 X 1 X_1 X1, X 2 X_2 X2, ⋯ \cdots ⋯, X N X_N XN独立同分布,且具有有限期望值 E ( X ) < ∞ \mathbb{E}(X)<\infty E(X)<∞,则 P ( lim N → ∞ X ˉ N = E ( X ) ) = 1 P(\lim\limits_{N\rightarrow \infty}\bar{X}_N=\mathbb{E}(X))=1 P(N→∞limXˉN=E(X))=1即随机变量 X X X的简单子样的算数平均值 X ˉ N \bar{X}_N XˉN,当子样数 N N N充分大时,以概率 1 1 1收敛于它的期望值 E ( X ) \mathbb{E}(X) E(X)。
蒙特卡罗方法的误差
蒙特卡罗方法的近似值与真值得误差问题,概率论得中心极限定理给出了答案。该定理指出,如果随机变量序列 X 1 X_1 X1, X 2 X_2 X2, ⋯ \cdots ⋯, X N X_N XN独立同分布,且具有有限非零得方差 σ 2 \sigma^2 σ2,即$ 0 ≠ σ 2 = ∫ ( x − E ( X ) ) 2 f ( x ) d x < ∞ 0 \ne \sigma^2=\int(x-\mathbb{E}(X))^2f(x)dx < \infty 0=σ2=∫(x−E(X))2f(x)dx<∞ f ( X ) f(X) f(X)是 X X X的分布密度函数。则 lim N → ∞ P ( N σ ∣ X ˉ − E ( X ) ∣ < x ) = 1 2 π ∫ − x x e − t 2 / 2 d t \lim\limits_{N \rightarrow \infty} P\left(\frac{\sqrt{N}}{\sigma}|\bar{X}-\mathbb{E}(X)|<x\right)=\frac{1}{\sqrt{2\pi}}\int^x_{-x}e^{-t^2/2}dt N→∞limP(σN∣Xˉ−E(X)∣<x)=2π1∫−xxe−t2/2dt当 N N N充分大时,有如下的近似式 P ( ∣ X ˉ N − E ( X ) ∣ < λ α σ N ≈ 2 2 π ∫ 0 λ α e − t 2 / 2 d t = 1 − α ) P\left(|\bar{X}_N-\mathbb{E}(X)|<\frac{\lambda_\alpha \sigma}{\sqrt{N}}\approx\frac{2}{\sqrt{2\pi}}\int^{\lambda_\alpha}_0e^{-t^2/2}dt=1-\alpha\right) P(∣XˉN−E(X)∣<Nλασ≈2π2∫0λαe−t2/2dt=1−α)其中 α \alpha α称为置信度, 1 − α 1-\alpha 1−α称为置信水平。这表明不等式 ∣ X ˉ N − E ( X ) ∣ < λ α σ N |\bar{X}_N-\mathbb{E}(X)|<\frac{\lambda_\alpha \sigma}{\sqrt{N}} ∣XˉN−E(X)∣<Nλασ近似地以概率 1 − α 1-\alpha 1−α成立,且误差收敛速度地阶为 O ( N − 1 / 2 ) O(N^{-1/2}) O(N−1/2)。通常蒙特卡罗方法地误差 ε \varepsilon ε定义为 ε = λ α σ N \varepsilon = \frac{\lambda_\alpha \sigma}{\sqrt{N}} ε=Nλασ上式中 λ α \lambda_{\alpha} λα与置信度 α \alpha α是一一对应的,根据问题的要求确定出置信水平后,查标准正态分布表,就可以确定出 λ α \lambda_{\alpha} λα。
减小方差的各种技巧
当给定置信度 α \alpha α后,误差 ε \varepsilon ε由 σ \sigma σ和 N N N决定。要减小 ε \varepsilon ε,或者是增大 N N N,或者是减小方差 σ 2 \sigma^2 σ2。在 σ \sigma σ固定的情况下,要把精度提高一个数量级,试验次数 N N N需增加两个数量级。因此,单纯增大 N N N不是一个有效的办法。如能减小估计的均方差 σ \sigma σ,比如降低一半,那误差就减小一半,这相当于 N N N增大四倍的效果。一般来说,降低方差的技巧,往往会使观察一个子样的时间增加。在固定时间内,会观察的样本数减少。所以,一种方法的优劣,需要由方差和观察一个子样的费用(使用计算机的时间)两者来衡量。这就是蒙特卡罗方法中效率的概念。它定义了为 σ 2 ⋅ c \sigma^2 \cdot c σ2⋅c,其中 c c c是观察一个子样的平均费用。显然 σ 2 ⋅ c \sigma^2\cdot c σ2⋅c越小,方法越有效。
蒙特卡罗方法的优点
- 能够比较逼真地描述具有随机性质的事物的特点及物理实验过程: 从这个意义上讲,蒙特卡罗方法可以部分代替物理实验,甚至可以得到物理实验难以得到的结果。用蒙特卡罗方法解决实际问题,可以直接从实际问题本身出发,而不从方程或数学表达式出发。它有直观、形象的特点。
- 受几何条件限制小 计算 s s s维空间中的任一区域 D s D_s Ds上的积分 g = ∫ D s ⋯ ∫ D s g ( x 1 , x 2 , ⋯ , x s ) d x 1 d x 2 ⋯ d x s g=\int_{D_s} \cdots \int_{D_s}g(x_1,x_2,\cdots,x_s)dx_1dx_2\cdots dx_s g=∫Ds⋯∫Dsg(x1,x2,⋯,xs)dx1dx2⋯dxs时,无论区域 D s D_s Ds的形状多么特殊,只要能给出描述 D s D_s Ds的几何特征的条件,就可以从 D s D_s Ds中均匀产生 N N N个点 ( x 1 ( i ) , x 2 ( i ) , ⋯ , x 1 ( s ) ) (x_1^{(i)},x_2^{(i)},\cdots,x_1^{(s)}) (x1(i),x2(i),⋯,x1(s)),得到积分的近似值。 g ˉ N = D s N ∑ i = 1 N g ( x 1 ( i ) , x 2 ( i ) , ⋯ , x 1 ( s ) ) \bar{g}_N=\frac{D_s}{N}\sum\limits_{i=1}^{N}g(x_1^{(i)},x_2^{(i)},\cdots,x_1^{(s)}) gˉN=NDsi=1∑Ng(x1(i),x2(i),⋯,x1(s))其中 D s D_s Ds为区域 D s D_s Ds的体积。这是数值方法难以做到的。
- 收敛速度与问题的维数无关: 由误差定义可知,在给定置信水平情况下,蒙特卡罗方法的收敛速度为 O ( N − 1 / 2 ) O(N^{-1/2}) O(N−1/2),与问题本身的维数无关。维数的变化,只引起抽样时间及估计量计算时间的变化,不影响误差。也就是说,使用蒙特卡罗方法时,抽取的子样总数 N N N与维数 s s s无关。维数的增加,除了增加相应的计算量外,不影响问题的误差。这一特点,决定了蒙特卡罗方法对多维问题的适应性。而一般数值方法,比如计算定积分时,计算时间随维数的幂次方而增加,而且,由于分点数与维数的幂次方成正比,需占用相当数量的计算机内存,这些都是一般数值方法计算高维积分时难以克服的问题。
- 具有同时计算多个方案与多个未知量的能力: 对于那些需要计算多个方案的问题,使用蒙特卡罗方法有时不需要像常规方法那样逐个计算,而可以同时计算所有的方案,其全部计算量几乎与计算一个方案的计算量相当。例如,对于屏蔽层为均匀介质的平板几何,要计算若干种厚度的穿透概率时,只需计算最厚的一种情况,其他厚度的穿透概率在计算最厚一种情况时稍加处理便可同时得到。
- 误差容易确定: 对于一般计算方法,要给出计算结果与真值的误差并不是一件容易的事情,而蒙特卡罗方法则不然。根据蒙特卡罗方法的误差公式,可以在计算所求量的同时计算出误差。对干很复杂的蒙特卡罗方法计算问题,也是容易确定的。
- 程序结构简单并且易于实现 在计算机上进行蒙特卡罗方法计算时,程序结构简单,分块性强,易于实现。
蒙特卡罗方法的缺点
- 收敛速度慢 蒙特卡罗方法的收敛速度为
O
(
N
−
1
/
2
)
O(N^{-1/2})
O(N−1/2),一般不容易得到精确度较高的近似结果。对于维数少(三维以下)的问题,不如其他方法好。
- 误差具有概率性 由于蒙特卡罗方法的误差是在一定置信水平下估计的,所以它的误差具有概率性,而不是一般意义下的误差。