MCMC&Gibbs Sampling学习

给定一个简单的概率分布p(x)(比如均匀分布、正态分布),生成它的样本是比较容易的。但是当目标概率分布很复杂时,要生成它的样本就会变得十分困难。MCMC(蒙特卡洛马尔科夫方法)算法就是一种常用的生成复杂目标概率分布样本的算法。

MCMC的基础是非周期马氏链的平稳特性:从任意状态出发,最后都会到达平稳状态。当达到平稳状态后,每一次采样得到的样本x都服从平稳分布π。如果平稳分布π就是目标分布的话,那么我们就找到了一种生成目标概率分布样本的方法,MCMC就是使得π成为目标分布的方法。

具体算法推导参考:MCMC和Gibbs Sampling

MCMC需要已知目标概率分布p(x)和一个任意分布q(x|y)

算法如下:

  1. 初始化马氏链状态X=x0

  2. 对t=0,1,2…循环采样

    • 采样yq(x|y)

    • 从均匀分布采样uU(0,1)

    • 如果u<α(xy,y)=min{p(y)q(xt|y)p(xt)q(y|xt),1},接受新样本y,X=y,否则X=xt

选取分布q(x|y)时,往往需要满足对称性,q(x|y)=q(y|x),也就是x->y与y->x的概率相同,这样α(xy,y)=min{p(y)p(xt),1}

q(x|y)常选择以y为中心的高斯分布,这样越靠近y的值越可能在下一次被访问,这样的样本序列就是一个随机行走过程

可以看到如果新的样本y处在p的高密度区域(p(y)>p(x)),则y总是被接受的,否则y可能被拒绝。直观上讲,被接受的样本总是以较大的概率落在p(x)的高密度区域,而以小概率落在p(x)的低密度区域(被拒绝),因此接受的样本序列大致服从p(x)的概率分布。

MCMC虽然能够有效的生成复杂概率分布的样本,但也有几个显著的缺点:

  1. 样本是相干的,由于采用马氏链生成,相邻的样本并不独立,解决该问题可以通过增加jumping size,即再次从采样序列抽样。
  2. 初始分布并不服从平稳分布,有一个burn-in的过程,导致算法可能需要迭代n次后,采样的分布才服从目标分布。