1、蒙特卡洛方法概述
蒙特卡罗原来是一个赌场的名称,用它作为名字大概是因为蒙特卡罗方法是一种随机模拟的方法,这很像赌博场里面的扔骰子的过程。最早的蒙特卡罗方法都是为了求解一些不太好求解的求和或者积分问题。比如积分:
$\int_a^b f(x)\, dx$
如果此时f(x)很难求出其原函数时,那么这个积分就非常难求。当然我们可以通过蒙特卡洛方法来模拟求解近似值,假设我们的函数f(x)如下图所示
则一个简单的近似求解方法是在[a,b]之间随机的采样一个点。比如)的值。
那么上面的定积分的近似求解为:
)
然而上面的式子太过于简单,近似出来的误差较大,我们将其分成n等分,则近似解可以表示为
[) + f(x1) + ... + f(xn-1)]
然而上面改进的式子是在假设x在[a,b]之间是均匀分布的前提下的,而绝大部分情况,都是非均匀分布的,甚至有的是离散的值,
因此提出了蒙特卡洛积分法:
则近似解可以表示为
2、概率分布采样
上一节我们讲到蒙特卡罗方法的关键是得到x的样本集,代入蒙特卡洛近似求解式子中。
x的样本集。
对于常见的均匀分布)是非常容易采样样本的,一般通过线性同余发生器可以很方便的生成(0,1)之间的伪随机数样本。
)的样本转换而得。
)通过如下的式子转换而得:
除了正态分布之外,还有很多其他常见的连续分布也可以用均匀0-1分布来表示,不过很多时候我们的分布并不是常见的分布,这也就以为着无法通过这些转换来获得样本集的概率分布。
3、接受-拒绝采样
对于概率分布不是常见的分布,一个可行的办法是采用接受-拒绝采样来得到该分布的样本。
既然 ) 比如高斯分布,
)叫做 proposal distribution。
具体操作如下,设定一个方便抽样的函数 q(x),以及一个常量 k,使得 p(x) 总在 kq(x) 的下方。(参考上图)
1)x 轴方向:从 q(x) 分布抽样得到 a。
2)y 轴方向:从均匀分布(0,kq(a)) 中抽样得到 u。
3)如果刚好落到灰色区域: u > p(a),拒绝, 否则接受这次抽样。
4)重复以上过程。
4、小结
使用接受-拒绝采样,我们可以解决一些概率分布不是常见的分布的时候,得到其采样集并用蒙特卡罗方法求和的目的。但是接受-拒绝采样也只能部分满足我们的需求,在很多时候我们还是很难得到我们的概率分布的样本集。比如:
1)对于一些二维分布)一般形式,这时我们无法用接受-拒绝采样得到其样本集。
2)对于一些高维的复杂非常见分布k非常困难。