MCMC与Gibbs sampling

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。
作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

原文
贝叶斯方法的广泛实践应用的一个主要限制就是在获取后验分布时进行的高维度函数积分运算。这是一个相当困难的问题,但是也有了几种方式已经提出来解决了这个问题(Smith 1991,Evans and Swartz 1995,Tanner 1996)。本文聚焦Markov Chain Monte Carlo方法,该方法尝试从复杂的目标分布中直接进行取样。之所以称为MCMC,是因为这个方法生成了一个Markov Chain(新生成的样本只和前面一个样本有关系,也被称作无记忆性)。
在1990年由Gelfand和Smith提出的Gibbs sampler是MCMC方法的特例,该方法可以用于广泛的一类贝叶斯问题,于是导致了贝叶斯方法的迅速发展,这种强烈的兴趣推动了某个时代的到来。MCMC方法源自Metropolis算法(Metropolis and Ulam 1949,Metropolis et al. 1953)这是由物理学家做出的一个计算复杂积分的尝试得到的,他们将积分表示成某个分布的期望,通过从分布中取样来预测这个期望。Gibbs sampler诞生于图片处理领域。略带讽刺意味的是,MCMC方法最初对于统计领域没有太大的影响。MCMC方法在Tanner(1996)和Draper(2000)的工作中才得到深刻和详尽的研究。后面会给出额外的参考文献。

Monte Carlo Integration

最早的Monte Carlo思想就是由物理学家发展出来的使用随机数生成来计算积分的一套方法。假设我们要算一个复杂的积分
\int_a^b h(x) dx
如果我们可以将h(x)分解成定义在区间(a, b)一个函数f(x)和一个概率密度函数p(x),注意到
\int_a^b h(x) dx = \int_a^b f(x)p(x) dx = E_{p(x)} [f(x)]
所以这个积分可以被表示成密度函数p(x)的函数f(x)的期望。因此如果我们从密度函数p(x)中取样出大量随机变量x_1,...,x_n,那么就有:
\int_a^b h(x) dx = E_{p(x)} [f(x)] ~ \frac{1}{n} \sum_{i=1}^{n} f(x_i)
这就是传说中的Monte Carlo Integration。
Monte Carlo积分可以用来近似后验分布(或者边缘后验分布)——这对于贝叶斯分析相当重要。考虑一下积分I(y) = \int f(y|x) p(x) dx,这个我们可以使用下面的方式近似:
\hat{I}(y) = \frac{1}{n} \sum_{i=1}^{n} f(y|x_i)
其中x_i就是从概率分布p(x)中抽样出来的。估计的Monte Carlo标准误差就是:
SE^2[\hat{I}(y)] = \frac{1}{n} (\frac{1}{n-1} \sum_{i=1}^{n} (f(y|x_i)-\hat(y))^2)

重要性取样(importance sampling)

假设概率密度p(x)粗略地近似密度函数q(x)(我们感兴趣的),那么
\int f(x) q(x) dx = \int f(x) (\frac{q(x)}{p(x)}) p(x) dx = E_{p(x)} [f(x) (\frac{q(x)}{p(x)})]
这是重要性取样的基础,
\int f(x) q(x) dx ~ \frac{1} \sum_{i=1}^n f(x_i) (\frac{q(x_i)}{p(x_i)})
其中x_i是从p(x)分布中取样出来的。例如,如果我们对一个关于y的边缘密度感兴趣,J(y) = \int f(y|x) q(x) dx,我们使用下面的方式近似它,
J(n) ~ \frac{1}{n} \sum_{i=1}^n f(y|x_i) (\frac{q(x_i)}{p(x_i)})
其中x_i是从近似密度函数p中取样出来的。
另一个对重要性取样的刻画方式是使用
\int f(x) q(x) dx ~ \hat{I} = \sum_{i=1}^n w_i f(x_i) / \sum_{i=1}^n w_i,其中w_i = \frac{q(x_i)}{p(x_i)}x_ip(x)中取样。与之相关的还有一个Monte Carlo方差:
Var(\hat(I)) = \sum_{i=1}^n w_i (f(x_i) - \hat{I})^2 / \sum_{i=1}^n w_i

Markov Chain介绍

The Metropolis-Hasting algorithm

应用Monte Carlo积分的一个问题是如何从复杂的概率分布p(x)中取样。对解决这个方法的各种尝试便是MCMC方法的开始。尤其是,由数学物理学家通过随机取样的方式对复杂函数进行积分(Metropolis and Ulam 1949,Metropolis et al. 1953,Hasting 1970)的方法最终成为了现在的Metropolis-Hastings算法。有关此方法更加详细参见Chib和Greenberg(1995)。
假设我们的目标是从某个分布p(\theta)中采样使得p(\theta) = f(\theta) / K,其中正规化常量K可能未知,并且很难计算。Metropolis算法从这个分布产生样本的过程如下:

  1. 从任何满足条件f(\theta_0)>0的初始值\theta_0开始
  2. 使用当前的theta值,从某个jumping分布q(\theta_1,\theta_2)中取样出候选样本点\theta^*q是给定\theta_1前一个值获得\theta_2的值的概率。这个分布同样也被称为proposal或者candidate-generating分布。对于jump密度的唯一限制就是对称性(即q(\theta_1, \theta_2)=q(\theta_2,\theta_1)
  3. 给定候选样本点\theta^*,计算密度函数在候选点\theta^*和当前点\theta_{t-1}的比值,
    \alpha = \frac{p(\theta^*)}{p(\theta_{t-1})} = \frac{\theta^*}{f(\theta_{t-1})},注意此处K已被消去了。
  4. 如果jump提高了密度(\alpha > 1),接受这个候选样本点(设置\theta_t=\theta^*)并返回到step 2。如果jump降低了密度(\alpha < 1),则以概率\alpha接受候选点,否则拒绝他并返回step 2

总结一下Metropolis采样:首先计算
\alpha = min(\frac{f(\theta^*)}{f(\theta){t-1})}, 1)
接着以概率\alpha接受候选样本点。这样产生一个Markov chain(\theta_0, \theta_1, ..., \theta_k, ...),因为从\theta_t\theta_{t+1}的转移概率只依赖于\theta_t。在一个充分的burn-id period后(k步以后),这个chain达到自身的稳定分布,接着就可以从p(x)中采样出n个样本了(n_{k+1},..., n_{k+n})
Hastings在1970年推广了Metropolis算法,使用一个任意的转移概率函数q(\theta_1, \theta_2)=Pr(\theta_1 \rightarrow \theta_2),并设置候选样本点的接受概率为
\alpha = min(\frac{f(\theta^*)q(\theta^*,\theta_{t-1})}{f(\theta_{t-1})q(\theta_{t-1},\theta^*)}, 1)
这就是Metropolis-Hastings算法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,814评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,124评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,814评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,924评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,815评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,562评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,944评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,582评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,859评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,881评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,700评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,493评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,943评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,115评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,413评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,978评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,182评论 2 339

推荐阅读更多精彩内容

  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 声明:作者翻译论文仅为学习,如有侵权请...
    SnailTyan阅读 5,045评论 0 8
  • #1996 AHSME ##1996 AHSME Problems/Problem 1 The addition ...
    abigtreenj阅读 1,362评论 0 0
  • 算法和数据结构 [TOC] 算法 函数的增长 渐近记号 用来描述算法渐近运行时间的记号,根据定义域为自然数集$N=...
    wxainn阅读 1,053评论 0 0
  • 五月炎热天气的日数 比四月多 比六月少 晴多雨少的月份 风也憨憨的 还好有绿杨荫翳的林间路 鸟叫声叽叽 清越又纯净...
    千色阅读 657评论 0 1
  • 盒模型: 看效果: HTML代码:
    kangyiii阅读 1,283评论 0 1