个人博客传送门:点击打开链接
MCMC,即传说中的Markov Chain Mento Carlo方法。其主要用于统计推理中进行模拟抽样,尤其在贝叶斯推理中有着非常广泛的应用。如算法模型的后验参数估计问题,很多情况下其后验概率分布没有确定性的解析解,或者解析解计算起来非常复杂,便可以通过MCMC模拟抽样,根据大数定律,参数的期望便可以通过对抽样样本的求均值来评估。
山人第一次见到MCMC兄还是在研究僧阶段,那时候以Latent Direichlet Allocation(LDA)为代表的Blei先生的一系列主题模型算法还很火,甚至你还能看见Andrew Ng的身影。于是导师欣然的把其另一篇层次主题模型的论文,Hierarchical LDA(hLDA)甩给我们,拍着我们的肩膀,语重心长的说,好好干,会很有前景的。于是我的MCMC初体验是这样的: What the hell? 于是直到现在还对MCMC念念不忘。好吧,是耿耿于怀。最近又看见Quora上有人讨论MCMC和Gibbs抽样,再看时,发现虽然有一两年未看,脑部神经元还是不停的工作,现在理解起来竟然清晰许多。 MCMC是Markov Chain和Mento Carlo两个概念的组合,我们不妨分而治之,先看看各自的含义。
即马尔科夫链,这哥么大家肯定不会陌生,还记得Hidden Markov Model么(Baum-Welch算法会推导了么:( )马尔科夫链的一个重要属性就是无记忆性。其表示的随机过程,在一个状态空间里游走且未来的状态只与当前的状态有关,而与之前的状态均无关。这种无记忆性便称之为马尔科夫性。
说完了马尔科夫再来说说蒙特卡洛方法吧,其名子来源于摩纳哥的蒙特卡洛赌场,是一种通过模拟抽样求积分的方法。一个经典的应用便是计算圆周率。这个名叫“hit and miss"的实验过程为:假设有一个单位长度为1的正方形区域,再以正方形的中心为圆心,单位长度为半径画一个正方形的内切圆。有一个随机数发射器随机的往正方形区域里发射。当经过N多次以后,圆周率可以估算为(hawaii.edu): π=4NhitNshot
大学微积分中我们学过常见函数求积分的方法,如 I=∫∞θg(θ)p(θ)dθ ,p是 θ 的概率密度函数,求其在g上的积分。但在实际应用中,函数g往往是不可积的,且 θ 可能是高纬向量,使得我们很难求得其解析解。在大数定律和中心极限定理的保证下,蒙特卡洛方法则通过模拟抽样的方法为求其近似解提供了一条途径。我们可以通过从概率密度函数p中抽样出 θ ,最终MC近似的解为: I′=∑Mi=1g(θi) 。
应用到贝叶斯推理中,如果我们能够通过抽样的方式从参数变量的联合分布中抽取到足够多的样本数据,我们便可以通过贝叶斯参数估计等方法求得其近似值。但往往参数的联合分布各个变量并非独立,且很复杂。尤其如LDA等主题生成模型里,要对联合分布抽样几乎是不可能的。有么有可能通过某种控制变量法,对条件概率进行抽样,借用马尔科夫链中条件概率转移矩阵达到稳定状态后的概率分布就是其变量的联合分布下的样本点呢?
于是,为了避免构造一个复杂繁琐的联合分布函数来进行蒙特卡洛抽样,MCMC类方法神兵天降。通过构造一个状态转移概率矩阵,那末当其到达稳定状态时,分布便是所求的联合概率分布。而联合分布函数的样本点则是每一次状态转移时自然产生的。这么牛掰的想法当然不是山人想到的,一个叫着Metropolis的哥么在1953年研究粒子系统的平稳性质便提出来了。而目前我们常用的一个叫着Metropolis-Hastings算法便是在其基础上的一个改进。
我们在前面提到了,我们可以通过构造一个状态转移概率矩阵,使得其平稳状态下的概率分布就是我们想要的分布。但不是随意构造一个状态转移概率矩阵就能满足的。那需要什么样的条件呢?细致平稳条件就是这样一个充分条件。如果非周期马氏链的转移概率矩阵 P 和分布 π(x) 满足:
当变量状态多,且维度比较高时,MH算法的接受率仍然差强人意。要是每次都接受该多好啊。那什么样的情况下,我从 i 到 j 时,每次都能接受呢?(即接受率为1)。最终发现,我们每次可以沿着垂直于某个变量维度的轴走。即通过迭代的方法,每一次只对一个变量进行采样。举一个二维空间的例子,假设一个概率分布 p(x,y) ,来看 x 坐标相同的两个点 A(x1,y1) 和 B(x1,y2) ,通过简单的联合概率和条件概率的关系我们可以得到:
我们都知道当概率状态转移稳定时,其分布便是所要求的联合概率分布。但我们不可能通过如等式(2),(3)的方法来每转换一步就求其概率分布,比较是否改变。主要原因有二,其一是不可把所有变量间的转移概率都找到,其二矩阵计算耗时耗力。常见的方法便是通过burn-in的方法,多跑几次。也有通过计算当前状态下的联合分布可能性函数,然后根据Autocorrelation Function(ACF)的变化速率来判断迭代是否收敛。
So long, and thanks for all the fish.
[1] PRML读书会第十一章 Sampling Methods
[2] LDA-math-MCMC 和 Gibbs Sampling
[3] Burn-In is Unnecessary
[4] One Long Run in MCMC
[5] What-are-Markov-Chain-Monte-Carlo-methods-in-laymans-terms
[6] MCMCAlgorithmsBeta_Distribution