本文使用 Zhihu On VSCode 创作并发布
[toc]
主要参考资料 《Foundations of Data Science》(强烈推荐John的书)、蒙特卡洛方法(刘建平)、MCMC的工程应用
应用背景
简介
马尔科夫蒙特卡洛(MCMC)是一种随机采样的方法。很多情况下我们都会遇到这样的问题:
服从一个分布
,我们想知道
的期望。这样一个简单的问题在实际中却会遇到诸如数据庞大无法储存,难以得到显式解等问题,我们首先介绍一下基础的方法,并分析一下它们遇到的问题。
原有方法的介绍
蒙特卡洛方法(基于样本的方法)
我们考虑一个常见的问题,如何估计一个图形的面积?比如说平面上一个圆的面积。
最直观的想法是基于大数定律的撒豆子。用正方形框住这个圆,之后在正方形内均匀采样,看在圆内的比例。假设我们记在圆内的指示函数为
,那么有
这个例子中,
是在正方形内的均匀分布,
。我们能如此简单地处理的原因有两个方面:
- 均匀分布很容易生成。
- 面积恰好和均匀分布有关联。但是假设我们没有均匀分布生成器,只有一个高斯分布生成器,或者其他分布,则采样结果的平均值就不是面积了。
对于面积问题,第二个方面很好拓展,因为
,即面积为
的期望,那么我们只需要把希望采样的函数改为
即可。
而对于一般情况,我们很可能真的需要得到一个服从分布
的随机数生成器。而这可以通过接受/拒绝采样获得。
假设我们拥有一个分布
的生成器和一个均匀分布生成器,想要得到分布
,我们只需要让
成为
的一个bounding box,然后再这个bounding box里再次采样出
即可。严格地来讲,我们需要一个放缩系数
,使得
。
图片来自蒙特卡洛方法(刘建平),记号不太一样但是也比较显然
然后依据
采样一个
,并用均匀分布生成器在
之间生成一个随机数,若其小于
,即在红线下方,则保留本次采样结果。否则就是落在了灰色区域,则将此次的
删除。最后保留下来的采样就是依据
得到的结果。(实际上应该是在
之间均匀采样,看是否小于
)
证明: 上面的过程涉及三个采样结果,我们分别用这样的记号表述:依据
采样得到的
,依据均匀分布采样得到的
,结合
和
得到的最终采样结果
我们以连续形式为例。显然,对任意的
,
,这里用条件概率而不是交起来的原因是
是已经筛选后的结果,一定是已经被接受的,故而不用乘上被接受的概率。
然后有
从而
而
。而通过简单的积分交换顺序我们又知道
,其中
是任意一个取值在
之间的随机变量。故而有
故而分别代入三项得到