蒙特卡洛马尔科夫链(MCMC)

 

蒙特卡洛马尔科夫链(MCMC)

标签: 机器学习重要性采样MCMC蒙特卡洛
 分类:
 

目录(?)[+]

 

在以贝叶斯方法为基础的机器学习技术中,通常需要计算后验概率,然后通过最大后验概率(MAP)等方法进行参数推断和决策。然而,在很多时候,后验分布的形式可能非常复杂,这个时候寻找其中的最大后验估计或者对后验概率进行积分等计算往往非常困难,此时可以通过采样的方法来求解。

作为本系列文章的组成部分,也作为你阅读本文所必须的预备知识,希望各位读者确认已经对如下文章所谈之话题了然于心:

欢迎关注白马负金羁的CSDN博客 http://blog.csdn.net/baimafujinji,为保证公式、图表得以正确显示,强烈建议你从该地址上查看原版博文。本博客主要关注方向包括:数字图像处理、算法设计与分析、数据结构、机器学习、数据挖掘、统计分析方法、自然语言处理。


从蒙特卡洛积分开始

在此前的文章《蒙特卡洛(Monte Carlo)法求定积分》一文中我们已经详细介绍了基于随机算法进行定积分求解的技术。这里主要用到其中的平均值法。为了便于后续介绍,这里先做简单回顾。

在计算定积分bag(x)dx时,我们会把g(x)拆解成两项的乘积,即g(x)=f(x)p(x),其中f(x)是某种形式的函数,而p(x)是关于随机变量X的概率分布(也就是PDF或PMF)。如此一来,上述定积分就可以表示为求f(x)的期望,即 

bag(x)dx=baf(x)p(x)dx=E[f(x)]

当然,g(x)的分布函数可能具有很复杂的形式,仍然无法直接求解,这时就可以用采样的方法去近似。这时积分可以表示为 
bag(x)dx=E[f(x)]=1ni=1nf(xi)

在贝叶斯分析中,Monte Carlo 积分运算常常被用来在对后验概率进行积分时做近似估计。比如要计算 
I(y)=f(y | x)p(x)dx

便可以使用下面这个近似形式 
I^(y)=1ni=1nf(y | xi)

采样方法

不难发现,在利用蒙特卡洛法进行积分求解时,非常重要的一个环节就是从特定的分布中采样。这里的“采样”的意思也即是生成满足某种分布的观测值。就此,本博客之前已经介绍过“逆采样”和“拒绝采样”等方法。如果你对此不甚了解,可以参考:

我们采样的目的很多时候都是为了近似积分运算,前面的采样方法(逆采样和拒绝采样)都是先对分布进行采样,然后再用采样的结果近似计算积分。下面要介绍的另外一种方法“重要性采样”(Importance sampling)则两步并做一步,直接的近似计算积分。

我们现在的目标是计算下面的积分 

E[f(x)]=f(x)p(x)dx

按照蒙特卡洛求定积分的方法,我们将从满足p(x)的概率分布中独立地采样出一系列随机变量xi,然后便有 
E[f(x)]1Ni=1Nf(xi)

但是现在的困难是对满足p(x)的概率分布进行采样非常困难,毕竟实际中很多p(x)的形式都相当复杂。这时我们该怎么做呢?于是想到做等量变换,于是有 
f(x)p(x)dx=f(x)p(x)q(x)q(x)dx
如果把其中的 f(x)p(x)q(x)看成是一个新的函数h(x),则有 
f(x)p(x)q(x)q(x)dx=h(x)q(x)dx1Ni=1Nf(xi)p(xi)q(xi)
其中p(xi)q(xi)被称为是weights of xi或importance weights。所以这种采样的方法就被称为是重要性采样(Importance sampling)。

如下图所示,当使用Importance Sampling时,我们并不会像在拒绝采样那样拒绝掉某些采样点。此时,所有的采样点都将为我们所用,但是它们的权重是不同的。因为权重为p(xi)q(xi),所以在下图中,当p(xi)>q(xi)时,采样点xi的权重就大(红色线在绿色在上方时),反之就小。重要性采样就是通过这种方式来从一个“参考分布”q(x)中获得“目标分布”p(x)的。 


这里写图片描述

蒙特卡洛马尔科夫链之基本概念

In statistics, Markov chain Monte Carlo (MCMC) methods are a class of algorithms for sampling from a probability distribution based on constructing a Markov chain that has the desired distribution of its equilibrium distribution.

MCMC构造Markov chain,使其稳态分布等于我们要采样的分布 ,这样我们就可以通过Markov chain来进行采样。这种等价如何来理解是我们深入探讨具体操作方法之前需要先攻克的一个问题。在此之前,希望你对马尔科夫链有一个比较清晰的认识,为此你可以参考

我们用下面的式子来表示每一步(时刻推进)中从状态si到状态sj的转移概率:P(i,j)=P(ij)=Pr(Xt+1=sj | Xt=Si)。这里的一步是指都时间从时刻t过渡到下一时刻t+1

Markov chain在时刻t处于状态j的概率可以表示为πj(t)=Pr(Xt=sj)。用向量π(t)来表示在时刻t各个状态的概率向量。在初始时刻,需要选取一个特定的π(0),通常情况下我们可以使向量中一个元素为1,其他元素均为0,即从某个特定的状态开始。随着时间的推移,状态会通过转移矩阵,向各个状态扩散。

Markov chain在t+1时刻处于状态si的概率可以通过t时刻的状态概率和转移概率来求得,并可通过Chapman-Kolmogorov Equation来得到(可以参考《Chapman-Kolmogorov Equation》) 

πi(t+1)=Pr(Xt+1=si)=kPr(Xt+1=si | Xt=sk)Pr(Xt=sk)=kP(ki)πk(t)=kP(i | k)πk(t)

用转移矩阵写成矩阵的形式如下 
π(t+1)=π(t)P

其中转移矩中的元素P(i,j)表示P(ij)。因此 π(t)=π(0)Pt。定义P(n)ijPr(Xt+n=sj | Xt=si),易见P(n)ij表示矩阵Pn中第ij个元素。

一条Markov chain有一个平稳分布π ,是指给定任意一个初始分布π(0) ,经过有限步之后,最终都会收敛到平稳分布π 。平稳分布具有性质π=πP。可以结合之前文章中谈到的矩阵极限的概念来理解Markov chain的平稳分布。

一条Markov chain拥有平稳分布的一个充分条件是对于任意两个状态ij, 其满足detailed balance :P(ji)πj=P(ij)πi 。可以看到,此时 

(πP)j=iπiP(ij)=iπjP(ji)=πjiP(ji)=πj
所以π=πP,明显满足平稳分布的条件。

如果一条Markov chain满足detailed balance,我们就说它是reversible的。在Markov chain中,对于随机变量的取值是连续的情况,上面的这些定义和性质都是类似的。比如这时转移概率为 P(x | y),那么P(x | y)dy=1。Chapman-Kolmogorov Equation 这时可以表示为 

πt(y)=πt1(y)P(x | y)dy

平稳分布的性质表示为(Obviously, at equilibrium, that stationary distribution satisfi es) 
π(y)=π(y)P(x | y)dy

The detailed balance condition holds when π(x)P(y | x)=π(y)P(x | y) 
π(x)P(y | x)dx=π(y)P(x | y)dx=π(y)P(x | y)dx=π(y)

最后我们来总结一下MCMC的基本思想。在拒绝采样和重要性采样中,当前生成的样本点与之前生成的样本点之间是没有关系的,它的采样都是独立进行的。然而,MCMC是基于马尔科夫链进行的采样。这就告诉我们,当前的样本点生成与上一时刻的样本点是有关的。如下图所示,假设我们当前时刻生成的样本点是x,下一次时刻采样到x的(转移)概率就是P(x | x),或者写成P(xx)。我们希望的是这个过程如此继续下去,最终的概率分布收敛到π(x),也就是我们要采样的分布。 


易见,转移概率就是P(x | x)与采样分布π(x)之间必然存在某种联系,因为我们希望依照P(x | x)来进行转移采样最终能收敛到π(x)。那这个关系到底是怎么样的呢?首先,我们知道给定所有可能的x,然后求从x转移到x的概率,所得之结果就是x出现的概率,如果用公式表示即 
π(x)=π(x)P(x | x)dx
这其实也就是Chapman-Kolmogorov Equation 所揭示的关系。如果马尔科夫链是平稳的,那么基于该马尔科夫链的采样过程最终将收敛到平稳状态 
π(x)=π(x)P(x | x)dx
而平稳状态的充分条件又是满足detailed balance:π(x)P(x | x)=π(x)P(x | x)。可见detailed balance的意思是说从x转移到x的概率应该等于从x转移到x的概率,在这样的情况下,采样过程将最终收敛到目标分布。也就是说,我们设计的MCMC算法,只要验证其满足detailed balance的条件,那么用这样的方法做基于马尔科夫链的采样,最终就能收敛到一个稳定状态,即目标分布。

实际应用中有两个MCMC采样算法非常常用,即Metropolis–Hastings算法与吉布斯采样,可以证明吉布斯采样是Metropolis–Hastings算法的一种特殊情况,而且二者都满足detailed balance的条件。

我们将在本系列的最后一篇文章里介绍Metropolis–Hastings算法与吉布斯采样有关的内容。彼时亦将通过一些具体的例子和R语言程序来体会一下这两种采样方法的威力。


参考文献

[1] 本文中的英文定义来自于维基百科 
[2] http://zhfuzh.blog.163.com/blog/static/1455393872012822854853/ 
[3] 悉尼科技大学徐亦达博士的机器学习公开课授课材料 
[4] 莱斯大学Justin Esarey助理教授(http://jee3.web.rice.edu/index.htm)的公开课资料(https://www.youtube.com/watch?v=j4nEAqUUnVw
[5] https://theoreticalecology.wordpress.com/2010/09/17/metropolis-hastings-mcmc-in-r/ 
[6] Christopher Bishop, Pattern Recognition and Machine Learning, Springer, 2007

原文地址:https://www.cnblogs.com/timssd/p/6243650.html