蒙特卡洛算法学习笔记

导语

蒙特卡洛算法是一大类随机算法,通过随机样本来估算真实值。 本节课我们使用几个例子来讲解蒙特卡洛算法。

通过均匀抽样计算 π \pi π

假如我们不知道 π \pi π值,现在我们来估算 π \pi π值,假设我们有随机数生成器,那么我们能否借助它来估算 π \pi π值呢。接下来,我们使用蒙特卡洛方法来估算 π \pi π值。
在这里插入图片描述

假设我们有两个随机数生成器,它们都可以均匀的从-1到+1产生随机数,我们把生成的数字一个作为x,一个作为y。于是每次就生成了平面坐标系上的一个点(x,y)。所有点都会落在蓝色正方形区域内,由于x,y都是均匀分布,所以正方形内所有区域内点都有相同的概率密度。正方形内包含绿色的圆,半径为1,圆心在原点处。

随机点可能落在圆内或者圆外。我们可以思考一下,点落在圆内的概率有多大?显然,概率值应该为圆的面积除以正方形的面积。即 P = π / 4 P=\pi/4 P=π/4

假设我们从正方形区域内均匀抽样n个点,那么落在圆内的点个数的期望是 P n Pn Pn。当然,这只是数学期望,而非一定会发生。

还有一个问题就是给定一个点,如何确定这个点是在圆内还是圆外。其实很容易判断,用一下圆的方程即可。即只需判断该点是否满足
x 2 + y 2 ≤ 1 x^2+y^2 \le 1 x2+y21
即可。

假设我们均匀抽样n组点,其中m个落在圆内。假如n非常大, 那么我们可以近似得到
m ≈ π n 4 m \approx \frac{\pi n}{4} m4πn
对该式做变换,将n移到分母上。我们可以得到:
π ≈ n 4 m \pi \approx \frac{n}{4m} π4mn

在这里插入图片描述
大数定律保证了蒙特卡洛的正确性,当样本数量n趋于无穷时,4m/n就会趋于 π \pi π。其实,还可以通过概率不等式来计算真实值和估计误差的上界。用伯恩施坦不等式可以证明,估计误差的上界反比于 n \sqrt{n} n 。这说明样本数量越大,蒙特卡洛近似就越准确。但这个收敛率并不快,样本多10000倍,精度才可以提高100倍。

有了以上求 π \pi π的公式,我们就可以编程计算,伪代码 如下图:
在这里插入图片描述

布丰投针实验

布丰投针实验也是用来计算 π \pi π值的,好处是不需要借助计算机,人就可以完成。布丰投针实验的内容如下:拿一张纸,画出若干等距的平行线,随机撒一把针,数一下一共有多少跟针与平行线相交。通过这个数量,我们就可以计算出 π \pi π值。

其计算公式如下:
在这里插入图片描述
证明过程略。

估计阴影部分面积

如下图所示,我们需要计算阴影部分面积。
在这里插入图片描述
如图所示,阴影部分的点必须满足两个条件:

  1. 必须在圆内
  2. 必须在扇形外
    所以其满足方程如下:
    在这里插入图片描述
    我们在正方形区域内随机采样点。我们做n次实验,其中m次落在阴影内。那么可以估计得到阴影部分的面积为:
    在这里插入图片描述
    其伪代码如下:

在这里插入图片描述

近似求积分

近似求积分是蒙特卡洛最重要的应用之一,应用广泛。

一元函数的定积分

我们首先来看一个简单的问题,使用蒙特卡洛方法求一元函数的定积分。一元函数的自变量x是一个标量。其具体计算方法如下:

  1. 从区间[a, b]上均匀抽样n个点x1,……,xn
  2. 对这n个点的函数值求平均再乘上区间的长度b-a,将结果记为Qn
  3. 函数在区间上的定积分I约等于Qn
    在这里插入图片描述
    同样,大数定律可以保证蒙特卡洛的正确性。当样本数量n趋于无穷时,Qn的值趋近于I。

多元函数的定积分

当自变量x是一组变量时,即为多元函数的定积分。其计算过程如下:

  1. 首先是从积分空间 Ω \Omega Ω中随机均匀的抽样得到 x 1 , ⋯   , x n x_1,\cdots,x_n x1,,xn(都是向量)
  2. 计算体积 V = ∫ Ω d x V=\int_{\Omega}dx V=Ωdx
  3. 计算 Q n = V ⋅ 1 n ∑ i = 1 n f ( x i ) Q_n = V\cdot\frac{1}{n}\sum_{i=1}^nf(x_i) Qn=Vn1i=1nf(xi)
  4. 函数在区间上的定积分I约等于Qn

注意,在第二步求体积时这个定积分也可能很困难,我们也要尽量确保 Ω \Omega Ω的形状简单以便于计算。

在这里插入图片描述
下面我们来举一个例子。
在这里插入图片描述
我们同样可以使用计算定积分的方式估计圆的面积 π \pi π。同样也是在 Ω \Omega Ω上均匀采样得到一系列点,然后计算 Ω \Omega Ω的面积。最后计算 Q n Q_n Qn作为最终定积分结果的估计值。这种方法和我们最开始从概率角度出发计算 π \pi π值不谋而合。

在这里插入图片描述

使用蒙特卡洛方法近似求期望

我们定义X为一个d维的随机变量,p(x)是其概率密度函数。令f(x)代表任意一个d维的多元函数。那么,我们可以得到f(X)的期望就是f(x)乘以p(x)在整个d维空间上求定积分:
在这里插入图片描述
直接求这个定积分不容易,尤其是x是高维向量时。通常,可以用蒙特卡洛近似求期望。具体是这三步:

  1. 首先是随机抽样,这里不是均匀抽样而是根据概率密度函数p(x)抽样
  2. 然后将抽样得到的样本带入函数f计算 f ( x i ) f(x_i) f(xi),求这n个函数值的平均,记作Qn
  3. 最后是返回Qn用作对样本期望的估计。

在这里插入图片描述

参考

  1. 蒙特卡洛 Monte Carlo, https://www.youtube.com/watch?v=XRGquU0ZJok&list=PLvOO0btloRns2Wnn2MPQ-Z8viHoBfxGGJ&index=1&ab_channel=ShusenWang
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值