在以贝叶斯方法为基础的机器学习技术中,通常需要计算后验概率,然后通过最大后验概率(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) 的期望,即
不难发现,在利用蒙特卡洛法进行积分求解时,非常重要的一个环节就是从特定的分布中采样。这里的“采样”的意思也即是生成满足某种分布的观测值。就此,本博客之前已经介绍过“逆采样”和“拒绝采样”等方法。如果你对此不甚了解,可以参考:
我们采样的目的很多时候都是为了近似积分运算,前面的采样方法(逆采样和拒绝采样)都是先对分布进行采样,然后再用采样的结果近似计算积分。下面要介绍的另外一种方法“重要性采样”(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(i→j)=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》)
一条Markov chain有一个平稳分布 π∗ ,是指给定任意一个初始分布 π(0) ,经过有限步之后,最终都会收敛到平稳分布 π∗ 。平稳分布具有性质 π∗=π∗P 。可以结合之前文章中谈到的矩阵极限的概念来理解Markov chain的平稳分布。
一条Markov chain拥有平稳分布的一个充分条件是对于任意两个状态 i 和 j , 其满足detailed balance : P(j→i)πj=P(i→j)πi 。可以看到,此时
如果一条Markov chain满足detailed balance,我们就说它是reversible的。在Markov chain中,对于随机变量的取值是连续的情况,上面的这些定义和性质都是类似的。比如这时转移概率为 P(x | y) ,那么 ∫P(x | y)dy=1 。Chapman-Kolmogorov Equation 这时可以表示为
最后我们来总结一下MCMC的基本思想。在拒绝采样和重要性采样中,当前生成的样本点与之前生成的样本点之间是没有关系的,它的采样都是独立进行的。然而,MCMC是基于马尔科夫链进行的采样。这就告诉我们,当前的样本点生成与上一时刻的样本点是有关的。如下图所示,假设我们当前时刻生成的样本点是 x ,下一次时刻采样到 x′ 的(转移)概率就是 P(x | x′) ,或者写成 P(x→x′) 。我们希望的是这个过程如此继续下去,最终的概率分布收敛到 π(x) ,也就是我们要采样的分布。
实际应用中有两个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