mh采样算法推导_深度学习:Gibbs采样

mh采样算法推导_深度学习:Gibbs采样
1. 什么是Gibbs采样
Gibbs采样是MH算法的⼀种特例(α==1),因此可以保证Gibbs抽取的样本,也构成⼀个⾮周期不可约稳定收敛的马⽒链;Gibbs采样适⽤于样本是两维或以上的情况;通过积分去除掉相关但是不感兴趣的变量,称为“collapsed”的Gibbs采样;并且个⼈的⼀个感觉是,观测量所直接依赖的那些变量是不能被积分掉的,否则⽆法有效的进⾏抽样
gibbs采样需要知道样本中⼀个属性在其它所有属性下的条件概率,然后利⽤这个条件概率来分布产⽣各个属性的样本值。gibbs采样属于随机模拟抽样算法中的⼀种(⼀类近似求解的⽅法)。随机模拟的核⼼是对⼀个分布进⾏抽样,常⽤的抽样算法包括:1. 接受-拒绝抽样;2)重要性抽样;3)MCMC(马尔科夫链蒙特卡洛⽅法)⽅法,它包括两个⾮常著名的采样算法(metropolis-hasting算法和它的特例Gibbs采样算法)(补充:MCMC⽅法最早由Metropolis(1954)给出,后来Metropolis的算法由Hastings改进,合称为M-H算法。M-H算法是MCMC 的基础⽅法。由M-H算法演化出了许多新的抽样⽅法,包括⽬前在MCMC中最常⽤的Gibbs抽样也可以看做M-H算法的⼀个特例)。
Gibbs算法,就是⽤条件分布的抽样来替代全概率分布的抽样。例如,X={x1,x2,...xn}满⾜分布p(X),如何对p(X)进⾏抽样呢?如果我们知道它的条件分布p(x1|X_{-1}),...,p(xi|X_{-i}),....,其中X_{-i}表⽰除了xi
之外X的所有变量。如果这些条件分布都是很容易抽样的,那么我们就可以通过对条件分布的抽样来对全概率分布p(X)进⾏抽样。
Gibbs采样算法的步骤:
1. 给定⼀个初始样本X0={x10,x20,...,xn0}
2.已知⼀个样本Xi={x1i,x2i,...,xni},对于x1_{i+1}进⾏抽样,x1_{i+1} ~ p(x1|Xi_{-1})
3. 对于x2_{i+1}进⾏抽样,x2_{i+1} ~ p(x2|x1_{i+1}, x3i,...xni)乔伊斯
4.对于xn_{i+1}进⾏抽样,xn_{i+1} ~ p(xn|x1_{i+1}, x2_{i+1},...x_{n-1}_{i+1})
5.步骤2~4可以得到X的⼀个样本,然后重复步骤2~4可以不断地得到X的样本。
当然⽆论是metropolis-hasting算法还是gibbs算法,都有⼀个burn in的过程,所谓burn in的过程就是因为这个两个算法本⾝都是markov chain的算法,要达到稳定状态需要⼀定的步骤才能达到,所以需要⼀个burn in过程,只有在达到平衡状态时候得到的样本才能是平衡状态时候的⽬标分布的样本,因此,在burn in过程中产⽣的样本都需要被舍弃。如何判断⼀个过程是否达到了平衡状态还没有⼀个成熟的⽅法来解决,⽬前常见的⽅法是看是否状态已经平稳(例如画⼀个图,如果在较长的过程中,变化
已经不⼤,说明很有可能已经平衡)当然这个⽅法并不能肯定⼀个状态是否平衡,你可以举出反例,但是却是实际中没有办法的办法。Gibbs采样的⽬的是获得⼀个样本,不是计算概率,但可以通过其他⽅法来统计概率。
2. 常见的采样⽅法
2.1 直接采样(简单)斗鱼杨博
2.2 接受-拒绝抽样(Acceptance-Rejection sampling)下⾯内容来源
buslink很多实际问题中,p(x)是很难直接采样的的,因此,我们需要求助其他的⼿段来采样。既然 p(x) 太复杂在程序中没法直接采样,那么我设定⼀个程序可抽样的分布 q(x) ⽐如⾼斯分布,然后按照⼀定的⽅法拒绝某些样本,达到接近 p(x) 分布的⽬的,其中q(x)叫做 proposal distribution(建议分布) 。
具体操作如下,设定⼀个⽅便抽样的函数 q(x),以及⼀个常量 k,使得 p(x) 总在 kq(x) 的下⽅。
1).x 轴⽅向:从 q(x) 分布抽样得到 a。(如果是⾼斯,就⽤之前说过的 tricky and faster 的算法更快)
图像采集系统
2).y 轴⽅向:从均匀分布(0, kq(a)) 中抽样得到 u。
3).如果刚好落到灰⾊区域: u > p(a), 拒绝, 否则接受这次抽样
在⾼维的情况下,Rejection Sampling 会出现两个问题,第⼀是合适的 q 分布⽐较难以到,第⼆是很难确定⼀个合理的 k 值。这两个问题会导致拒绝率很⾼,⽆⽤计算增加。
3. 马尔科夫链,马尔科夫稳态
在讲蒙特卡洛⽅法之前,必须要先讲⼀下马尔科夫链;马⽒链的数学定义:
也就是说前⼀个状态只与当前状态有关,⽽与其他状态⽆关,Markov Chain 体现的是状态空间的转换关系,下⼀个状态只决定与当前的状态(可以联想⽹页爬⾍原理,根据当前页⾯的超链接访问下⼀个⽹页)。如下图:
泰森多边形举⼀个例⼦,如果当前状态为 u(x) = (0.5, 0.2, 0.3), 那么下⼀个矩阵的状态就是 u(x)T = (0.18, 0.64, 0.18), 依照这个转换矩阵⼀直转换下去,最后的系统就趋近于⼀个稳定状态 (0.22, 0.41, 0.37) (此处只保留了两位有效数字)。⽽事实证明⽆论你从那个点出发,经过很长的 Markov Chain 之后都会汇集到这⼀点。[2]
宋清如
再举⼀个例⼦,社会学家经常把⼈按其经济状况分成3类:下层(lower-class)、中层(middle-class)、上层(upper-class),我们⽤1,2,3 分别代表这三个阶层。社会学家们发现决定⼀个⼈的收⼊阶层的最重要的因素就是其⽗母的收⼊阶层。如果⼀个⼈的收⼊属于下层类别,那么他的孩⼦属于下层收⼊的概率
是 0.65, 属于中层收⼊的概率是 0.28, 属于上层收⼊的概率是 0.07。事实上,从⽗代到⼦代,收⼊阶层的变化的转移概率如下
使⽤矩阵的表⽰⽅式,转移概率矩阵记为
我们发现从第7代⼈开始,这个分布就稳定不变了,事实上,在这个问题中,从任意初始概率分布开始都会收敛到这个上⾯这个稳定的结果。
注:要求图是联通的(没有孤⽴点),同时不存在⼀个联通的⼦图是没有对外的出边的(就像⿊洞⼀样)。
这个马⽒链的收敛定理⾮常重要,所有的 MCMC(Markov Chain Monte Carlo) ⽅法都是以这个定理作为理论基础的。
对于给定的概率分布p(x),我们希望能有便捷的⽅式⽣成它对应的样本。由于马⽒链能收敛到平稳分布, 于是⼀个很的漂亮想法是:如果我们能构造⼀个转移矩阵为P的马⽒链,使得该马⽒链的平稳分布恰好是p(x), 那么我们从任何⼀个初始状态x0出发沿着马⽒链转移, 得到⼀个转移序列 x0,x1,x2,xn,xn+1,, 如果马⽒链在第n步已经收敛了,于是我们就得到了 π(x) 的样本xn,xn+1。
这个绝妙的想法在1953年被 Metropolis想到了,为了研究粒⼦系统的平稳性质, Metropolis 考虑了物理学中常见的波尔兹曼分布的采样问题,⾸次提出了基于马⽒链的蒙特卡罗⽅法,即Metropolis算法,
并在最早的计算机上编程实现。Metropolis 算法是⾸个普适的采样⽅法,并启发了⼀系列 MCMC⽅法,所以⼈们把它视为随机模拟技术腾飞的起点。 Metropolis的这篇论⽂被收录在《统计学中的重⼤突破》中, Metropolis算法也被遴选为⼆⼗世纪的⼗个最重要的算法之⼀。
我们接下来介绍的MCMC 算法是 Metropolis 算法的⼀个改进变种,即常⽤的 Metropolis-Hastings 算法。由上⼀节的例⼦和定理我们看到了,马⽒链的收敛性质主要由转移矩阵P 决定, 所以基于马⽒链做采样的关键问题是如何构造转移矩阵P,使得平稳分布恰好是我们要的分布p(x)。如何能做到这⼀点呢?我们主要使⽤如下的定理。
马⽒链转移和接受概率:假设我们已经有⼀个转移矩阵Q(对应元素为q(i,j)), 把以上的过程整理⼀下,我们就得到了如下的⽤于采样概率分布p(x)的算法。
Reference:

本文发布于:2024-09-22 06:54:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/592292.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   样本   抽样   状态   采样   分布   转移
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议