一、简介
本文介绍了蒙特卡洛积分算法的基本原理和其误差计算。
二、蒙特卡洛积分介绍
1. 介绍
蒙特卡洛积分算法是一种数值积分算法,用于对复杂函数进行积分。
例如,对于目标积分函数:
∫
a
b
f
(
x
)
d
x
(1)
\int_{a}^{b}f(x)\rm{d}x \tag{1}
∫abf(x)dx(1)
其中
f
(
x
)
f(x)
f(x)很复杂,无法找到解析解。我们可以在
f
(
x
)
f(x)
f(x)的定义域
[
a
,
b
]
[a,b]
[a,b]上按照任意的概率密度函数
p
(
x
)
p(x)
p(x)进行采样。并统计采样的随机变量的样本期望:
F
N
=
1
N
∑
i
=
1
N
f
(
x
i
)
p
(
x
i
)
(2)
F_N = \frac{1}{N}\sum_{i=1}^{N}\frac{f(x_{i})}{p(x_{i})} \tag{2}
FN=N1i=1∑Np(xi)f(xi)(2)
可以保证:
E
(
F
N
)
=
∫
a
b
f
(
x
)
d
x
(3)
E(F_N)=\int_{a}^{b}f(x)\rm{d}x \tag{3}
E(FN)=∫abf(x)dx(3)
2. 证明
下面证明公式(3)的正确性:
E
(
F
N
)
=
E
(
1
N
∑
i
=
1
N
f
(
x
i
)
p
(
x
i
)
)
=
1
N
∑
i
=
1
i
=
N
E
(
f
(
x
i
)
p
(
x
i
)
)
E(F_N) = E(\frac{1}{N}\sum_{i=1}^{N}\frac{f(x_{i})}{p(x_{i})}) \\ =\frac{1}{N}\sum_{i=1}^{i=N}E(\frac{f(x_i)}{p(x_{i})})
E(FN)=E(N1i=1∑Np(xi)f(xi))=N1i=1∑i=NE(p(xi)f(xi))
我们令
g
(
x
)
=
f
(
x
)
p
(
x
)
g(x)=\frac{f(x)}{p(x)}
g(x)=p(x)f(x),那么
E
(
F
N
)
=
1
N
∑
i
=
1
i
=
N
E
(
g
(
x
)
)
=
1
N
∗
N
∗
∫
g
(
x
)
∗
p
(
x
)
d
x
=
∫
g
(
x
)
∗
p
(
x
)
d
x
=
∫
f
(
x
)
d
x
(4)
E(F_N)=\frac{1}{N}\sum_{i=1}^{i=N}E(g(x)) \\ =\frac{1}{N}*N* \int_{}^{}g(x)*p(x){\rm{d}x} \\ = \int{g(x)*p(x)}{\rm{d}}x \\ =\int{f(x)}{\rm{d}x} \tag{4}
E(FN)=N1i=1∑i=NE(g(x))=N1∗N∗∫g(x)∗p(x)dx=∫g(x)∗p(x)dx=∫f(x)dx(4)
求证得证。
三、蒙特卡洛积分方差
蒙特卡洛积分算法的收敛程度可以适用其方差(标准差)表示。若其方差收敛速度很快,说明该算法可以适用较少的采样值,得到较高的积分精度,反则反之。下面对蒙特卡积分算法的方差和标准差进行计算。
下面计算蒙特卡洛积分算法的方差:
δ
2
(
F
N
)
=
δ
2
(
1
N
∗
∑
i
=
1
1
=
N
(
f
(
x
)
p
(
x
)
)
)
(5)
\delta^{2}(F_N) = \delta^{2}(\frac{1}{N}*\sum_{i=1}^{1=N}(\frac{f(x)}{p(x)})) \tag{5}
δ2(FN)=δ2(N1∗i=1∑1=N(p(x)f(x)))(5)
根据方差的性质:
δ
2
(
c
∗
X
)
=
c
2
∗
δ
2
(
X
)
δ
2
(
a
∗
X
+
b
∗
Y
)
=
a
2
δ
2
(
X
)
+
b
2
δ
2
(
Y
)
+
2
a
b
∗
C
O
V
(
X
,
Y
)
(6)
\delta^{2}(c*X) = c^{2}*\delta^{2}(X) \\ \delta^{2}(a*X+b*Y)=a^2\delta^{2}(X)+b^2\delta^{2}(Y)+2ab*COV(X,Y) \tag{6}
δ2(c∗X)=c2∗δ2(X)δ2(a∗X+b∗Y)=a2δ2(X)+b2δ2(Y)+2ab∗COV(X,Y)(6)
又因为采样的随机变量
x
i
x_i
xi相互独立,因此:
δ
2
(
F
N
)
=
δ
2
(
1
N
∗
∑
i
=
1
1
=
N
(
f
(
x
)
p
(
x
)
)
)
=
1
N
2
∗
∑
i
=
1
i
=
N
δ
2
(
f
(
x
)
p
(
x
)
)
=
1
N
∗
δ
2
(
f
(
x
)
p
(
x
)
)
(7)
\delta^{2}(F_N) = \delta^{2}(\frac{1}{N}*\sum_{i=1}^{1=N}(\frac{f(x)}{p(x)})) \\ =\frac{1}{N^2}*\sum_{i=1}^{i=N}\delta^{2}(\frac{f(x)}{p(x)}) \\ =\frac{1}{N}*\delta^{2}(\frac{f(x)}{p(x)}) \tag{7}
δ2(FN)=δ2(N1∗i=1∑1=N(p(x)f(x)))=N21∗i=1∑i=Nδ2(p(x)f(x))=N1∗δ2(p(x)f(x))(7)
工具公式(7)可知,蒙特卡罗积分方法的方差与采样数
N
N
N成反比,与
δ
2
(
f
(
x
)
p
(
x
)
)
\delta^{2}(\frac{f(x)}{p(x)})
δ2(p(x)f(x))成正比。
为了得到更为准确的结果,一方面我们可以增加采样数,即增大
N
N
N。
另一方面我们可以尽可能地令
δ
2
(
f
(
x
)
p
(
x
)
)
\delta^{2}(\frac{f(x)}{p(x)})
δ2(p(x)f(x))小一些,由于
f
(
x
)
f(x)
f(x)是我们待求的积分函数,无法进行修改,因此我们可以寻找一个概率密度函数
p
(
x
)
p(x)
p(x),使得
f
(
x
)
p
(
x
)
\frac{f(x)}{p(x)}
p(x)f(x)的方差尽可能的小。
四、蒙特卡洛积分与差分积分
蒙特卡洛积分和差分积分都是数值积分方法。
与差分积分方法相比,蒙特卡洛方法的计算复杂度与维度无关。它通过随机采样的方式估计积分值,即使维度增加,样本点的生成和积分估计的计算量并不会指数级增长。这意味着蒙特卡洛方法在高维问题中仍然保持高效,具有稳定的性能。
而在差分积分方法中,每增加一个维度,划分的区域数量会大幅增加,使得差分积分方法的计算复杂度呈指数级增长。