一、蒙特卡洛积分
-
蒙特卡洛积分概述:简而言之蒙特卡洛积分就是,在求定积分时,如果找不到被积函数的原函数,无法使用经典牛顿-莱布尼茨积分法得到定积分结果的。而蒙特卡洛积分方法利用一个随机变量对被积函数进行采样,并将采样值进行一定的处理可以得到定积分的一个近似值,当采样数量很高时,得到的近似值可以很好的近似原积分的结果。这样一来,我们就不用去求原函数的形式,就能求得积分的近似结果。
-
补充一些基础性公式:
- 假设一连续型随机变量XXX的样本空间为DDD,其概率密度分布函数为p(x)p(x)p(x),则其数学期望为:E(X)=∫Dxp(x)dxE(X)= ∫_Dxp(x)dxE(X)=∫Dxp(x)dx
- 若另一连续随机变量YYY满足Y=f(X)Y=f(X)Y=f(X),则YYY的数学期望为:E(Y)=∫Df(x)p(x)dxE(Y)= ∫_Df(x)p(x)dxE(Y)=∫Df(x)p(x)dx
-
蒙特卡洛积分方法基础形式
- 现在 假设我们要计算一个定积分:A=∫abf(x)dxA=∫_a^bf(x)dxA=∫abf(x)dx根据牛顿-莱布尼茨公式我们可以得到:A=∫abf(x)dx=F(b)−F(a)A=∫_a^bf(x)dx=F(b)-F(a)A=∫abf(x)dx=F(b)−F(a)其中F(x)F(x)F(x)是f(x)f(x)f(x)的一个原函数。
- 如果我们不知道或者无法求得原函数,我们该怎么计算这个定积分呢。那么就需要借助蒙特卡洛积分(Monte Carlo Integration)方法:
- 首先我们可以在区间[a,b][a,b][a,b]上进行均匀采样得到:{X1,…,XN}\{X_1,…,X_N\}{X1,…,XN},样本对于的函数值为:{f(X1),…,f(XN)}\{f(X_1),…,f(X_N)\}{f(X1),…,f(XN)}
- 然后再求和得到:FN≈b−aN∑i=1Nf(Xi)F_N≈\frac{b-a}{N} ∑_{i=1}^Nf(X_i)FN≈Nb−ai=1∑Nf(Xi)
- 用FNF_NFN作为A近似估值。
- 这个和定积分的定义(黎曼积分)非常相似,只是在定积分的定义中{X1,…,XN}\{X_1,…,X_N\}{X1,…,XN}是不均匀采样得到而是对区间[a,b]均匀划分得到:{x1=a,…,xN=b}\{x_1=a,…,x_N=b\}{x1=a,…,xN=b}。根据定积分的定义如果划分的次数N趋于无穷大的时候FN=AF_N=AFN=A.如下图所示:

-
蒙特卡洛积分方法的正确性进行进一步分析:
-
{X1,…,XN}\{X_1,…,X_N\}{X1,…,XN}是通过均匀分布采样得到的,则XiX_iXi也是随机变量并且服从均匀分布,即:XiX_iXi~U(a,b)U(a,b)U(a,b)
-
而FNF_NFN是{X1,…,XN}\{X_1,…,X_N\}{X1,…,XN}的函数那么FNF_NFN是一个样本统计量也是一个随机变量。
-
那么现在我们计算一下FNF_NFN的数学期望:E[FN]=E[b−aN∑i=1Nf(Xi)]=b−aN∑i=1NE[f(Xi)]=b−aN∑i=1N∫abf(x)p(x)dx=b−aN∑i=1N∫abf(x)1b−adx=b−aN1b−a∑i=1N∫abf(x)dx=1N∑i=1N∫abf(x)dx=∫abf(x)dx=AE[F_N ]=E[\frac{b-a}{N} ∑_{i=1}^Nf(X_i ) ]=\frac{b-a}{N} ∑_{i=1}^NE[f(X_i )] \\=\frac{b-a}{N} ∑_{i=1}^N∫_a^bf(x)p(x)dx=\frac{b-a}{N} ∑_{i=1}^N∫_a^bf(x) \frac{1}{b-a}dx\\=\frac{b-a}{N} \frac{1}{b-a} ∑_{i=1}^N∫_a^bf(x) dx=\frac{1}{N} ∑_{i=1}^N∫_a^bf(x)dx\\=∫_a^bf(x) dx=AE[FN]=E[Nb−ai=1∑Nf(Xi)]=Nb−ai=1∑NE[f(Xi)]=Nb−ai=1∑N∫abf(x)p(x)dx=Nb−ai=1∑N∫abf(x)b−a1dx=Nb−ab−a1i=1∑N∫abf(x)dx=N1i=1∑N∫abf(x)dx=∫abf(x)dx=A其中p(x)p(x)p(x)是[a,b][a,b][a,b]上均匀分布的概率密度函数
-
由上面的推到可知FNF_NFN是一个样本统计量并且其期望为AAA,根据大数定律,FNF_NFN依概率收敛与AAA,即随着NNN的增加,理论上FNF_NFN将越逼近AAA的值。也可以称FNF_NFN是AAA的无偏估计量。所以FNF_NFN可以视作AAA的一个近似值。
-
-
蒙特卡洛积分方法做一个一般性的推广:
- 上面的推导过程是在区间[a,b][a,b][a,b]上进行均匀采样得到的结论,那么如果我们在区间上按照概率密度函数p(x)p(x)p(x)进行采样得到{X1,…,XN}\{X_1,…,X_N\}{X1,…,XN}上面的结论是否成立呢。答案是肯定的。下面我们就来推导这种情况:
- 首先我们按照概率密度函数p(x)p(x)p(x)区间[a,b][a,b][a,b]上进行采样得到样本集{X1,…,XN}\{X_1,…,X_N\}{X1,…,XN}
- 再构造新的FNF_NFN函数:FN=1N∑i=1Nf(Xi)p(Xi)F_N=\frac{1}{N} ∑_{i=1}^N\frac{f(X_i )}{p(X_i )} FN=N1i=1∑Np(Xi)f(Xi)
- 用FNF_NFN作为定积分AAA的近似估计
- 计算一些FNF_NFN的数学期望:E[FN]=E[1N∑i=1Nf(Xi)p(Xi)]=1N∑i=1NE[f(Xi)p(Xi)]=1N∑i=1N∫abf(Xi)p(Xi)p(Xi)dx=1N∑i=1N∫abf(x)dx=∫abf(x)dx=AE[F_N ]=E[\frac{1}{N} ∑_{i=1}^N\frac{f(X_i )}{p(X_i )} ]=\frac{1}{N} ∑_{i=1}^NE[\frac{f(X_i )}{p(X_i )} ] \\=\frac{1}{N } ∑_{i=1}^N ∫_a^b \frac{f(X_i )}{p(X_i )} p(X_i ) dx=\frac{1}{N } ∑_{i=1}^N∫_a^bf(x) dx\\=∫_a^bf(x) dx=AE[FN]=E[N1i=1∑Np(Xi)f(Xi)]=N1i=1∑NE[p(Xi)f(Xi)]=N1i=1∑N∫abp(Xi)f(Xi)p(Xi)dx=N1i=1∑N∫abf(x)dx=∫abf(x)dx=A
- 到这里我们发现其实前推导的那种情况是上面这种情况p(x)p(x)p(x)为均匀分布的一种特殊情况:
- 若p(x)p(x)p(x)是[a,b][a,b][a,b]上均匀分布,则它的表达式为:p(x)={10≤x≤10其他 p(x) = \left\{ \begin{array}{lr} 1 & 0≤x≤1\\ 0 & 其他 \end{array} \right. p(x)={100≤x≤1其他
- 则FN(x)F_N (x)FN(x)的表达式为:FN=1N∑i=1Nf(Xi)p(Xi)=1N∑i=1N(b−a)f(Xi)=b−aN∑i=1Nf(Xi)F_N=\frac{1}{N} ∑_{i=1}^N\frac{f(X_i )}{p(X_i )} =\frac{1}{N} ∑_{i=1}^N(b-a)f(X_i )\\=\frac{b-a}{N} ∑_{i=1}^Nf(X_i ) FN=N1i=1∑Np(Xi)f(Xi)=N1i=1∑N(b−a)f(Xi)=Nb−ai=1∑Nf(Xi)
-
经过上面的堆到,我们可以得到蒙特卡洛积分方法如下:
∫Df(x)dx=limN→∞1N∑i=1Nf(Xi)p(Xi)∫_Df(x)dx=\lim_{N\to \infty}\frac{1}{N} ∑_{i=1}^N \frac{f(X_i)}{p(X_i)}∫Df(x)dx=N→∞limN1i=1∑Np(Xi)f(Xi) -
蒙特卡洛积分法的收敛性和收敛速度分析
- 求FNF_NFN的方差:σ2(FN)=σ2[1N∑i=1Nf(Xi)p(Xi)]=1N2∑iNσ2[f(Xi)p(Xi)]σ^2 (F_N )=σ^2 [\frac{1}{N} ∑_{i=1}^N\frac{f(X_i )}{p(X_i )} ]=\frac{1}{N^2} ∑_i^Nσ^2 [\frac{f(X_i )}{p(X_i )} ]σ2(FN)=σ2[N1i=1∑Np(Xi)f(Xi)]=N21i∑Nσ2[p(Xi)f(Xi)]令:Y=f(X)p(Y)Y=\frac{f(X)}{p(Y)} Y=p(Y)f(X)则:σ2(FN)=1N2∑iNσ2[Yi]=1N2(Nσ2[Y])=1Nσ2[Y]σ^2(F_N )=\frac{1}{N^2} ∑_i^Nσ^2 [Y_i ] =\frac{1}{N^2} (Nσ^2 [Y])=\frac{1}{N }σ^2[Y]σ2(FN)=N21i∑Nσ2[Yi]=N21(Nσ2[Y])=N1σ2[Y]则:σ[FN]=1Nσ[Y]σ[F_N ]=\frac{1}{\sqrt{N}} σ[Y]σ[FN]=N1σ[Y]
- 由此可知当采样个数NNN趋向无穷大时σ[FN]=0σ[F_N ]=0σ[FN]=0,即FNF_NFN趋向其均价AAA;这也证明蒙特卡洛积分法的收敛性。
- 由方差公式可以知道蒙特卡洛积分法收敛速度和稳定性由YYY决定,如果Yi=f(Xi)p(Xi)Y_i=\frac{f(X_i )}{p(X_i )}Yi=p(Xi)f(Xi) 因不同XiX_iXi的取值变化地越剧烈,就会造成YYY的方差σ[Y]σ[Y]σ[Y]较大,则会造成估计值的收敛速度越慢, 这就告诉我们,若p(x)p(x)p(x)与f(x)f(x)f(x)越接近(即若他们的形状越接近),则收敛更快更稳定。最理想的情况是p(x)=f(x)p(x)=f(x)p(x)=f(x),则Y=1Y=1Y=1并且σ[Y]=0σ[Y]=0σ[Y]=0.
- 若p(x)p(x)p(x)与f(x)f(x)f(x)很接近(甚至p(x)=f(x)p(x)=f(x)p(x)=f(x),那f(x)大的地方p(x)p(x)p(x)也会更大,那么我们更加p(x)p(x)p(x)函数进行采样时就会对这个个地方采样更多,即对重要的地方采样更多。如下图所示:很明显在圆形区域的函数值对积分的贡献比方形区域要大很多(即圆形区域比比方形区域更重要),所以我们可以在抽样的时候以更大的概率抽取圆形区域的样本,这就是重要性采样的思想.

-
利用蒙特卡洛方法,我们可以得到任意一个积分的结果,但是可能得不到精确值,我们得到的只是一个对理论值的估计,估计值与理论值之间的误差可以通过增加样本数来减小,但收敛速率仅为O(N)O(\sqrt{N})O(N),也就是说,若想将误差降为现在的一半,我们需要再多计算4倍的计算量才可以达到。即便如此,原始的蒙特卡洛积分方法也不失为是一种经典有效的方法。
二、重要性采样
- 假设XXX为连续型随机变量,其概率密度函数为π(x)π(x)π(x),YYY也是一个随机变量,YYY与XXX关系为Y=f(X)Y=f(X)Y=f(X),现在我们需要求YYY的期望:Eπ(Y)=∫xπ(x)f(x)dxE_π (Y)=∫_xπ(x)f(x)dxEπ(Y)=∫xπ(x)f(x)dx
- 如果π(x)π(x)π(x)比较难求或者无法求解,我们需要寻找其他方法来估计Eπ(Y)E_π (Y)Eπ(Y)的值。那么就可以使用蒙特卡洛积分法来估计该积分。假设我们找到一个容易采样且与π(x)f(x)π(x)f(x)π(x)f(x)比较接近的分布p(x)p(x)p(x),然后对p(x)p(x)p(x)进行采样得到样本序列:{xi,…,xN}\{x_i,…,x_N\}{xi,…,xN},根据蒙特卡洛积分法可得:Eπ(Y)=∫xπ(x)f(x)dx=1N∑i=1Nπ(xi)p(xi)f(xi)dxE_π (Y)=∫_xπ(x)f(x)dx=\frac{1}{N} ∑_{i=1}^N \frac{π(x_i )}{p(x_i )} f(x_i)dxEπ(Y)=∫xπ(x)f(x)dx=N1i=1∑Np(xi)π(xi)f(xi)dx
- π(xi)p(xi)\frac{π(x_i )}{p(x_i )}p(xi)π(xi)就是就是重要性权重
本文介绍了蒙特卡洛积分的基本原理,通过随机变量对被积函数进行采样,以求得定积分的近似值。当采样数量足够大时,近似值能够很好地逼近原积分。此外,文章还探讨了重要性采样,即选择与被积函数相近的概率密度函数进行采样,以提高估计的准确性和收敛速度。这种方法在概率密度函数与被积函数形状接近时,能显著提升积分估计的效率。
1346

被折叠的 条评论
为什么被折叠?



