什么是“MCMC”

文摘   2024-09-30 18:16   北京  

如果有人告诉你他最近在玩“MCMC”,那他一般是指“马尔科夫链”+“蒙特卡洛模拟”。如果他告诉你最近在玩“MC”,那大概率是“我的世界”(Minecraft)。

MCMC是在做一件什么事情呢?

统计学在如今已经有了诸多妙用,很多情况下,都需要求解下面一个积分(以一维为例)

其中f(x)是某个分布的概率密度函数,我们耳熟能详的有比如均匀分布、高斯分布、瑞利分布。更多时候,f(x)是个很复杂的函数形式。而这个积分式就是在计算函数h(x)在分布f(x)下的平均值

注意,我们是在处理实际问题,而在实际问题中,h(x)和f(x)的具体形式可能很复杂,根本无法求出原函数然后做定积分,但概率论提供了一个粗暴但极其有效的方法,假如获得了取自分布f(x)的一系列样本值X1,X2,X3,...,那么就可以如下计算上述积分

也就是直接求h(x)的样本平均值,这个值就近似等于积分值。

简单来说,就是产生符合分布f(x)的大量随机数,然后就可以计算出h(x)的平均值(即上述积分),这就是蒙特卡洛模拟干的事情。

仔细想想就会发现,上述过程最难的事情在于产生符合f(x)的样本值,即如何从已知概率密度函数f(x)中抽取随机数,而这就是马尔科夫链做的事情。

从分布中抽取随机数的方法有不止一种,比如还有“接受拒绝抽样”、“重要抽样”,马尔科夫链抽样的优点在于对于任意形式的概率密度函数都适用,而且产生随机数的效率高(接受拒绝法产生的一部分结果不符合要求需要扔掉,所以效率很低)。

比如,用马尔可夫链从二维正态分布(均值分别为0,5,方差均为1,协方差为0.7)中抽样10万个点,样本的分布如下

左图是采样点在两个维度上的分布,右图是第一个维度的边缘分布

可以看到抽样的效果非常好,而这么多样本(10万个)电脑用马尔可夫链方法在眨眼间就给出来了。

怎么样,假期你是要玩“MCMC”呢?还是“MC”呢?(金秋时节的假期还是远离电脑,出去走动一下)

假期愉快!

本文完。

地球远征军
普通一本毕业的物理大学生,在普通一本继续读物理研究生,当个普通人的同时多多思考宇宙。记录学习物理之路上的有趣见闻,一起保持住刚学习物理时的惊喜感和好奇心,希望有生之年看到人类遨游宇宙,走向星空。
 最新文章