如果你不想往下看,那么请认真读几遍这句话: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(烧链)。
对剩下这堆节点进行统计,我们就可以得到参数最可能的取值以及分布范围。
参数取最可能值就对应似然函数取最大值。
等我有空更新叭~。
温馨提示:答案为网友推荐,仅供参考