理解MCMC(马尔科夫链蒙特卡洛算法)

如题所述

如果你不想往下看,那么请认真读几遍这句话:MCMC就是构造一个稳态分布与给定分布一致的马尔科夫链,由此来获得该分布的随机样本的方法。

先扯两句为什么这篇没什么营养的文章。我一年前在学习概率论时,曾经学习过马尔科夫链的知识。当时书中的后一章就是写MCMC算法。可惜当时看的Stat110课程讲完马尔科夫链就结束了,自己看书也没有看懂。

近日再计算物理的学习中再次遇到了MCMC的算法。遗憾还是有些障碍,没能完全理解它。翻了知乎上很多回答,终于有了一些眉目。所以我想以一个什么都不会的视角从头开始理解MCMC。

这篇文章也许不会是一篇面面俱到的介绍,但是我想它能帮助偶尔看到的你们打破一些理解障碍。也许有缘人可以豁然开朗。

做事情之前先问动机。

在许多问题中,我们会碰到这样的需求:我们需要得到满足已知PDF的随机变量抽样时,传统的抽样方法有两种:

1. 利用CDF(累计分布函数)的反函数,对均匀分布抽样出的点作变换得到符合目标的PDF(概率密度函数)的随机变量。

2. 接受-拒绝方法。

遗憾的是,它们各自有自己的缺陷:

当PDF非常复杂时,其CDF未必能解析求出,妄论求出其反函数了。第1种方法在这时候就会失效。

当PDF不够平滑,比如存在一些尖峰时,在尖峰外抽样的接受率会很低,导致抽样的效率很低,会浪费大量计算资源,在高维的情况尤其明显。

马尔科夫链有一个特点,就是它的每一个节点会受到上一个节点的影响。

利用马尔科夫链的思想改进接受-拒绝方法,可以克服上面的缺点。这类算法便统称为MCMC算法。具体的算法相互之间存在一定差异。最重要最常用的MCMC算法分为两种:Metroplis-Hastings方法 和 Gibbs抽样方法。

另外,很多时候我们仅仅已知PDF的常数倍,却不知道其归一化常数。我们要得到这个PDF对应的样本,也需要MCMC方法。(这种情景更能体现MCMC的价值)

balabala...

这里有几个关键点:

是一种与M-H方法不同的抽样方法。这种抽样方法不会拒绝。在高维的分布下效率更高。

你乍一看这两个应用,有没有觉得截然不同,就像在做两件相反的事情一样呀?

嗯,我刚开始也是这么觉得的。

冥思苦想之后我总结了两句话,先放在这里。

下面我们来讲讲这两个应用。

好吧,从特定分布抽样比较显然对不对,所以我打算有空再写。

那么用MCMC做参数估计呢?

所谓参数估计,就是我已经有一系列实际数据,我想用一个模型来拟合这堆数据,想确定模型中的几个参数。

记得我们的贝叶斯公式吧~

后验=先验*似然。(分母那个常数省略啦)

其中似然就包含了我们观测数据和模型的所有信息。

先验我们为了简单,一般人为取定为均匀分布。(实际上,先验是什么并不重要)

关于似然,我们常常假设观测误差以观测数据为中心呈正态分布。这样我们可以得到一个高斯函数形式的似然。

接着我们进行马尔科夫链的游走(或者说,迭代,从一个节点走向下一个节点)。游走规则详见上面(虽然我还没写)。这套游走规则就能够让节点收敛到符合目标后验的参数分布(记得啊,我们这里每个节点包含的信息是要估计的参数)。

前面没收敛时的节点一般我们会扔掉,有个名字,称为burn-in(烧链)。

对剩下这堆节点进行统计,我们就可以得到参数最可能的取值以及分布范围。

参数取最可能值就对应似然函数取最大值。

等我有空更新叭~。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜