蒙特卡洛积分和重要性采样(Importance Sampling)

我是研究僧i 提交于 2020-03-04 21:58:07

一、蒙特卡洛积分

  • 蒙特卡洛积分概述:简而言之蒙特卡洛积分就是,在求定积分时,如果找不到被积函数的原函数,无法使用经典牛顿-莱布尼茨积分法得到定积分结果的。而蒙特卡洛积分方法利用一个随机变量对被积函数进行采样,并将采样值进行一定的处理可以得到定积分的一个近似值,当采样数量很高时,得到的近似值可以很好的近似原积分的结果。这样一来,我们就不用去求原函数的形式,就能求得积分的近似结果。

  • 补充一些基础性公式:

    • 假设一连续型随机变量XX的样本空间为DD,其概率密度分布函数为p(x)p(x),则其数学期望为:E(X)=Dxp(x)dxE(X)= ∫_Dxp(x)dx
    • 若另一连续随机变量YY满足Y=f(X)Y=f(X),则YY的数学期望为:E(Y)=Df(x)p(x)dxE(Y)= ∫_Df(x)p(x)dx
  • 蒙特卡洛积分方法基础形式

    • 现在 假设我们要计算一个定积分:A=abf(x)dxA=∫_a^bf(x)dx根据牛顿-莱布尼茨公式我们可以得到:A=abf(x)dx=F(b)F(a)A=∫_a^bf(x)dx=F(b)-F(a)其中F(x)F(x)f(x)f(x)的一个原函数。
    • 如果我们不知道或者无法求得原函数,我们该怎么计算这个定积分呢。那么就需要借助蒙特卡洛积分(Monte Carlo Integration)方法
      • 首先我们可以在区间[a,b][a,b]上进行均匀采样得到:{X1,,XN}\{X_1,…,X_N\},样本对于的函数值为:{f(X1),,f(XN)}\{f(X_1),…,f(X_N)\}
      • 然后再求和得到:FNbaNi=1Nf(Xi)F_N≈\frac{b-a}{N} ∑_{i=1}^Nf(X_i)
      • FNF_N作为A近似估值。
      • 这个和定积分的定义(黎曼积分)非常相似,只是在定积分的定义中{X1,,XN}\{X_1,…,X_N\}是不均匀采样得到而是对区间[a,b]均匀划分得到:{x1=a,,xN=b}\{x_1=a,…,x_N=b\}。根据定积分的定义如果划分的次数N趋于无穷大的时候FN=AF_N=A.如下图所示:
  • 蒙特卡洛积分方法的正确性进行进一步分析:

    • {X1,,XN}\{X_1,…,X_N\}是通过均匀分布采样得到的,则XiX_i也是随机变量并且服从均匀分布,即:XiX_i~U(a,b)U(a,b)

    • FNF_N{X1,,XN}\{X_1,…,X_N\}的函数那么FNF_N是一个样本统计量也是一个随机变量。

    • 那么现在我们计算一下FNF_N的数学期望:E[FN]=E[baNi=1Nf(Xi)]=baNi=1NE[f(Xi)]=baNi=1Nabf(x)p(x)dx=baNi=1Nabf(x)1badx=baN1bai=1Nabf(x)dx=1Ni=1Nabf(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=A其中p(x)p(x)[a,b][a,b]上均匀分布的概率密度函数

    • 由上面的推到可知FNF_N是一个样本统计量并且其期望为AA,根据大数定律,FNF_N依概率收敛与AA,即随着NN的增加,理论上FNF_N将越逼近AA的值。也可以称FNF_NAA的无偏估计量。所以FNF_N可以视作AA的一个近似值。

  • 蒙特卡洛积分方法做一个一般性的推广:

    • 上面的推导过程是在区间[a,b][a,b]上进行均匀采样得到的结论,那么如果我们在区间上按照概率密度函数p(x)p(x)进行采样得到{X1,,XN}\{X_1,…,X_N\}上面的结论是否成立呢。答案是肯定的。下面我们就来推导这种情况:
    • 首先我们按照概率密度函数p(x)p(x)区间[a,b][a,b]上进行采样得到样本集{X1,,XN}\{X_1,…,X_N\}
    • 再构造新的FNF_N函数:FN=1Ni=1Nf(Xi)p(Xi)F_N=\frac{1}{N} ∑_{i=1}^N\frac{f(X_i )}{p(X_i )}
    • FNF_N作为定积分AA的近似估计
    • 计算一些FNF_N的数学期望:E[FN]=E[1Ni=1Nf(Xi)p(Xi)]=1Ni=1NE[f(Xi)p(Xi)]=1Ni=1Nabf(Xi)p(Xi)p(Xi)dx=1Ni=1Nabf(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=A
    • 到这里我们发现其实前推导的那种情况是上面这种情况p(x)p(x)为均匀分布的一种特殊情况:
      • p(x)p(x)[a,b][a,b]上均匀分布,则它的表达式为:p(x)={10x10 p(x) = \left\{ \begin{array}{lr} 1 & 0≤x≤1\\ 0 & 其他 \end{array} \right.
      • FN(x)F_N (x)的表达式为:FN=1Ni=1Nf(Xi)p(Xi)=1Ni=1N(ba)f(Xi)=baNi=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 )
  • 经过上面的堆到,我们可以得到蒙特卡洛积分方法如下:
    Df(x)dx=limN1Ni=1Nf(Xi)p(Xi)∫_Df(x)dx=\lim_{N\to \infty}\frac{1}{N} ∑_{i=1}^N \frac{f(X_i)}{p(X_i)}

  • 蒙特卡洛积分法的收敛性和收敛速度分析

    • FNF_N的方差:σ2(FN)=σ2[1Ni=1Nf(Xi)p(Xi)]=1N2iNσ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 )} ]令:Y=f(X)p(Y)Y=\frac{f(X)}{p(Y)} 则:σ2(FN)=1N2iNσ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]则:σ[FN]=1Nσ[Y]σ[F_N ]=\frac{1}{\sqrt{N}} σ[Y]
    • 由此可知当采样个数NN趋向无穷大时σ[FN]=0σ[F_N ]=0,即FNF_N趋向其均价AA;这也证明蒙特卡洛积分法的收敛性
    • 由方差公式可以知道蒙特卡洛积分法收敛速度和稳定性YY决定,如果Yi=f(Xi)p(Xi)Y_i=\frac{f(X_i )}{p(X_i )} 因不同XiX_i的取值变化地越剧烈,就会造成YY的方差σ[Y]σ[Y]较大,则会造成估计值的收敛速度越慢, 这就告诉我们,若p(x)p(x)f(x)f(x)越接近(即若他们的形状越接近),则收敛更快更稳定。最理想的情况是p(x)=f(x)p(x)=f(x),则Y=1Y=1并且σ[Y]=0σ[Y]=0.
    • p(x)p(x)f(x)f(x)很接近(甚至p(x)=f(x)p(x)=f(x),那f(x)大的地方p(x)p(x)也会更大,那么我们更加p(x)p(x)函数进行采样时就会对这个个地方采样更多,即对重要的地方采样更多。如下图所示:
      很明显在圆形区域的函数值对积分的贡献比方形区域要大很多(即圆形区域比比方形区域更重要),所以我们可以在抽样的时候以更大的概率抽取圆形区域的样本,这就是重要性采样的思想.
  • 利用蒙特卡洛方法,我们可以得到任意一个积分的结果,但是可能得不到精确值,我们得到的只是一个对理论值的估计,估计值与理论值之间的误差可以通过增加样本数来减小,但收敛速率仅为O(N)O(\sqrt{N}),也就是说,若想将误差降为现在的一半,我们需要再多计算4倍的计算量才可以达到。即便如此,原始的蒙特卡洛积分方法也不失为是一种经典有效的方法。

二、重要性采样

  • 假设XX为连续型随机变量,其概率密度函数为π(x)π(x),YY也是一个随机变量,YYXX关系为Y=f(X)Y=f(X),现在我们需要求YY的期望:Eπ(Y)=xπ(x)f(x)dxE_π (Y)=∫_xπ(x)f(x)dx
  • 如果π(x)π(x)比较难求或者无法求解,我们需要寻找其他方法来估计Eπ(Y)E_π (Y)的值。那么就可以使用蒙特卡洛积分法来估计该积分。假设我们找到一个容易采样且与π(x)f(x)π(x)f(x)比较接近的分布p(x)p(x),然后对p(x)p(x)进行采样得到样本序列:{xi,,xN}\{x_i,…,x_N\},根据蒙特卡洛积分法可得:Eπ(Y)=xπ(x)f(x)dx=1Ni=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)dx
  • π(xi)p(xi)\frac{π(x_i )}{p(x_i )}就是就是重要性权重
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!