蒙特卡洛方法及其求积分应用


本文发自:http://www.haopeng233.top/2018/06/16/math-probability-MC/

欢迎大家访问:)

前言

最初听到蒙特卡洛方法(Monte Carlo,下文用MC代替)是在本科的工程经济学课堂上,当时汪帅(汪洋老师是个特别有人格魅力的老师,同学们都被他的折服,他还是我答辩的三位老师之一:))提到了了用MC解决一个现金流的估值然后决策的问题。

这学期的CV中又提到粒子群滤波做运动跟踪的任务,其中涉及到了MC,重要性采样(IS)等,MC方法应用广泛,RL中也用到了它,还有一些微积分问题也可以转化为MC方法可解决的问题。

本文主要介绍MC方法以及它是如何用到求积分问题上。

MC方法

学习一个方法,我们先要知道输入是什么,输出是什么,这个方法做了什么,完成了什么任务,知道这些后再学习具体流程才会有更好的理解。

那么MC方法解决什么问题呢,它的核心在于求一个随机变量的期望问题,如下所示,离散或者连续分布都可以,但是这个分布的概率分布$p(x)$必须是已知的。MC方法说的是你可以按已知的概率分布采样,只要你采样足够多,那么就可以得到这个随机变量的期望。

$$ E(x) = \int xp(x)dx$$

$$ E(x) = x_1p(x_1) + x_2p(x_2) + ... + x_np(x_n)$$

$$ E(x) = \frac{1}{N} \sum_{i=1}^N{x_i}$$

对于离散随机变量,如果知道它的分布,直接可以用公式求取期望,不一定需要用到MC,但用MC也work。尤其是伯努利分布时,如果概率$p$未知还可以通过求期望估计出$p$,最简单的例子就是通过抛硬币实验得到正面的概率为0.5,此外撒点求面积也是这个思路。对于连续型随机变量,即使你知道概率密度,但也存在着不好积分问题,这时就可以通过MC方法求期望。

采样方法

那这样连续随机变量求期望的问题是不是就已经解决了?当然不是,还有一个问题,我们如何获得服从特定分布的采样?一般来说有以下方法。

逆采样

也就是随机数发生器。对任意随机变量$s$的概率密度函数积分可以得到累计分布函数(CDF),CDF横轴是随机变量取值范围,纵轴是[0,1]。然后我们交换横纵坐标轴,可以得到下面的图,计算机可以产生[0,1]的均匀分布的样本点,然后做逆变换就可以得到服从随机变量$x$分布的采样。

这是一种处理随机变量的技巧,图像处理中的直方图均衡化用的也是用的这个技巧。对于任给的随机变量$s$,都可以做一种变换$T^{-1}(s)$,使新得到的随机变量$r$是[0,1]区间上的均匀分布。以上具体推导与证明可以参考《数字图像处理(第二版)》72页。

重要性采样

逆采样的方法就是构造随机数发生器,但这个过程中要求$p(x)$的积分。但是我们本来就是因为积分难求才用采样的方法来求期望,因此逆采样的方法有很大的局限性,因此引申出重要性采样的方法。

公式如下图所示,这里$f(x)$可以先看做是$x$,稍后我们会将其扩展到$x$的任意函数,原理见后面的LOTUS定理。$p(x)$为待求随机变量$x$的概率密度函数,$q(x)$为我们已知的一个概率密度函数,可以是均匀分布等,它的CDF很容易得到,这样就可以将按照$p(x)$采样的问题转换为按照$q(x)$采样,只需要对采样出来的随机变量乘以$\frac{p(x)}{q(x)}$就可以了,这样多次采样我们就可以求出原问题的期望。这里$\frac{p(x)}{q(x)}$称为重要性权重。

上述两种方法只是很基础的采样方法,此外还有拒绝采样,MCMC等。

MC求积分

观察下式,用MC方法求随机变量$x$的期望的过程相当于求了$g(x) = xp(x)$这个函数的积分,积分区间为$x$的取值区间。因此在求$g(x)$的定积分时,就可以构造随机变量$x$与分布$p(x)$,用MC方法求积分问题。

$$ \sum_{i=1}^N{x_i} = E(x) = \int xp(x) = \int xp(x)dx = \int g(x)dx$$

但是上述函数形式为$x$,而我们实际的积分函数可以是$x$的任意函数$g(x)$,如果随机变量换成函数值,我们又不知道函数值$g(x)$的分布。那这个事情如何来做?已经有人想好了,参考无意识统计学家法则(Law of the unconscious statistician)

LOTUS到底表达了一件什么事呢?它的意思是:已知随机变量$X$的概率分布,但不知道$g(X)$的分布,此时用LOTUS公式能计算出函数$g(X)$的数学期望。LOTUS的公式如下:

  • X是离散分布时

$$E[g(X)]=∑_xg(x)f_X(x)$$

  • X是连续分布时

$$E[g(X)]=∫_{−∞}^∞g(x)fX(x)dx$$

其实就是在计算期望时,用已知的$X$的PDF(或PMF)代替未知的$g(X)$的PDF(或PMF)。这说明我们在求$g(x)$的期望时,可以按照$x$的分布来采样,比较直观的理解就是它可以融合对应同一个$g(x)$的概率值。以离散随机变量为例,假设$g(x)= x^2 $,$x ={1,-1}$,$p(x = 1) = 0.5$,$p(x = -1) = 0.5$,$g(x)= {1}$,我们可以在不知道$g(x)$分布的前提下,直接利用$x$的分布计算出$g(x)$的期望。虽然会多进行了一次运算,但最后结果是一致的。其实就是这样做会将对应的概率值融合,直观理解是这样,同时LOTUS也告诉我们这样做是对的。

$$E[g(X)] =x_1^2p(x = 1) + x_2^2p(x = -1) = 1 × 0.5 + 1 × 0.5 = 1$$

因此对于任意函数$g(x)$的积分问题,我们都可以构造随机变量$h(x) = \frac{g(x)}{f(x)} $,$f(x) 服从 U(a,b)$,然后按照$f(x)$对$h(x)$采样,其期望值就是函数$g(x)$的积分。

需要注意的是MC方法最本质的就是要解决随机变量的期望问题,而不是解决积分问题,积分问题只是MC方法的一个应用,我刚开始理解的不对,以至于看到期望的积分表达式还想把他变成积分问题来做,这样其实多此一举,但是如果这样做就是在做重要性采样。

对于真正的积分问题(不是随机变量求期望问题),一定不需要做重要性采样,直接均匀分布就ok,因为它本身就不是随机变量,我们只用构造一个简单的随机变量(比如均匀分布)就可以了。重要性采样是对针对随机变量的采样问题的。

MC如何解释撒点法求面积

问题如下,就是如何求得红色圆形的面积,当然我们都知道可以用撒点法来做。但是撒点法求如下圆的面积的理论依据是什么,用MC方法解释的话,求得的期望值是面积,但随机变量是什么?这个问题的来源是我看了一篇博客,他认为需要用重要性采样的方法来解释撒点法算面积。

我首先讲一下我对这个问题的理解,我们做这个事情的先验知识为如果两个维度都服从均匀分布并随机扔一个点,那么点落在圆内的概率$(p)$=圆的面积($S_c$)/正方形的面积($S_s$),因此构造离散随机变量$X$

$$ X = \begin{cases} 0 & 点在圆外 \\ S_s & 点在圆内 \end{cases} $$

$X(0) = 1 - p$,  $X(1) = p$,   $E(x) = S_sp$, 那通过MC的方法就可以得到随机变量$X$的期望$E(x) = S_sp$,而$S_sp = S_c$,那么就能得到$S_c$,大功告成,完全不需要重要性采样解释。

同时我按照上述博客中的思路,从重要性采样的角度分析了一下,感觉只是为了解释而解释。如果用重要性采样解释的的话,原始问题如左图形式,随机变量也就是圆的面积$S_c$不知道是什么,$g(x)$是他的分布,但也不知道具体形式。用重要性采样的方法转化为右图形式,$p(x)$是均匀分布,重要性权重$ \frac{g(x)}{p(x)}$是指示函数,落在圆内为1,圆外为0,认为$S_c$是指示函数$ \frac{g(x)}{p(x)}$的函数,指示函数为0,$S_c = 0$,指示函数为1,$S_c = S_s$,因此整个采样过程就被套在了重要性采样的框架下,但是感觉很牵强,为了解释而解释。其实在我的解释中随机变量$X$就充当了$ S_c \frac{g(x)}{f(x)}$这部分的角色。

总结

  • MC方法能做什么,已知随机变量的分布,用这个分布采样求随机变量的期望。

  • 由于LOTUS的保证,MC方法也可以求随机变量函数$f(x)$的期望,按照$x$的分布采样就可以,可以从融合相同取值的概率可以获得直观理解。对$x$采样就可以获得$f(x)$分布的采样。

  • 原始采样无法通过逆采样获得时,可通过重要性采样曲线求期望。

  • 积分问题可通过构造随机变量转化为求随机变量的期望问题,进而用MC方法做,一般转化为均匀分布的随机变量。

参考

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值