0. MCMC
从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。
Monte Carlo (蒙特卡罗)的核心是寻找一个随机的序列。
0.1 MCMC是什么
那MCMC到底是什么呢?《告别数学公式,图文解读什么是马尔可夫链蒙特卡罗方法》里面这样解释:MCMC方法是用来在概率空间,通过随机采样估算兴趣参数的后验分布。
说的很玄,蒙特卡罗本来就可以采样,马尔科夫链可以采样,为啥要将他们合在一起?下面给出两个动机,后面将从蒙特卡罗开始一直推到gibbs采样,来深入了解为什么需要MCMC。
再次感谢刘建平MCMC,他是网上写的最详细的——将整个脉络梳理出来了,看完收获很多。本文几乎涵盖了它所有内容,因此只能算一篇读书笔记。
1.2 为什么需要MCMC
1. 背景
给定一个的概率分布 P(x), 我们希望产生服从该分布的样本。
前面介绍过一些随机采样算法(如拒绝采样、重要性采样)可以产生服从特定分布的样本,但是这些采样算法存在一些缺陷(如难以选取合适的建议分布,只适合一元随机变量等)。
下面将介绍一种更有效的随机变量采样方法:MCMC 和 Gibbs采样,这两种采样方法不仅效率更高,而且适用于多元随机变量的采样。
2. MCMC 采样
2.1 随机矩阵
在MCMC采样中先随机一个状态转移矩阵Q,然而该矩阵不一定能满足细致平稳定理,一次会做一些改进,具体过程如下
2.2 算法具体流程
MCMC采样算法的具体流程如下
2.3 MCMC: Metropolis-Hastings algorithm
然而关于MCMC采样有收敛太慢的问题,所以在MCMC的基础上进行改进,引出M-H采样算法
M-H 算法的具体流程如下
M-H算法在高维时同样适用
2.3.1 基本概念
从一个概率分布(目标分布P(x)P(x)P(x))中得到随机样本序列
这个序列可以用于:a) 近似估计分布P(x)P(x)P(x); b) 计算积分(期望)
用于高维分布取样
缺陷: MCMC固有缺点, 样本自相关性
2.3.2 优势
可以从任意的概率分布P(x)P(x)P(x)中取样,只要满足条件:函数f(x)成比例于P(x)P(x)P(x)的密度。
更宽松的要求:f(x)f(x)f(x)仅需要与P(x)P(x)P(x)的密度成比例。
2.3.3 要点
- 生成样本值序列;样本值产生得越多,这些值的分布就越近似于P(x)P(x)P(x)
- 迭代产生样本值:下一个样本的分布仅仅取决于当前样本值(马尔科夫链特性)
- 接受/拒绝概率:接受计算出的值为下一个样本值/拒绝并重复使用当前样本值;基于P(x)P(x)P(x),接受概率通过比较f(xt)f(x_t)f(xt)(当前值)和f(x′)f(x')f(x′)(备选值)得出
2.3.4 Metropolis Algorithm (对称分布)
Input: f(x)f(x)f(x),与目标分布P(x)P(x)P(x)成比例的函数
2.3.4.1 初始化:
2.3.4.2 迭代ttt
2.3.5 缺陷
- 样本自相关:相邻的样本会相互相关,虽然可以通过每nnn步取样的方式来减少相关性,但这样的后果就是很难让样本近似于目标分布P(x)P(x)P(x)。
- 自相关性可通过增加步调长度(jumping width,与jumping function g(x∣y)g(x|y)g(x∣y)的方差有关)来控制,但同时也增加了拒绝备选样本的几率α\alphaα。
- 过大或过小的jumping size会导致slow-mixing Markov Chain, 即高度自相关的一组样本,以至于我们需要得到非常大的样本量nnn才能得到目标分布P(x)P(x)P(x)。
- 初始值的选择:尽管Markov Chain最后都会收敛到目标分布,然而初始值的选择直接影响到运算时间,尤其是把初始值选在在了“低密度”区域。因此,选择初值时,最好加入一个“burn-in period”(预烧期,预选期)。
2.3.6 优势
- 抗“高维魔咒”(curse of dimensionality):维度增加,对于rejection sampling方法来说,拒绝的概率就是呈指数增长。而MCMC则成为了解决这种问题的唯一方法
- 多元分布中,为了避免多元初始值以及 g(x∣y)g(x|y)g(x∣y)选择不当而导致的问题,Gibbs sampling是另外一个更适合解决多元分布问题的MCMC 方法。Gibbs sampling从多元分布的各个维度中分别选择初始值,然后这些变量分别同时取样。
2.3.7 衍生算法
2.3.8 小结
一般来说M-H采样算法较MCMC算法应用更广泛,然而在大数据时代,M-H算法面临着两个问题:
1)在高维时的计算量很大,算法效率很低,同时存在拒绝转移的问题,也会加大计算量
2)由于特征维度大,很多时候我们甚至很难求出目标的各特征维度联合分布,但是可以方便求出各个特征之间的条件概率分布(因此就思考是否能只知道条件概率分布的情况下进行采样)。
3. Gibbs 采样
3.1 二维的流程
因此可以得出在二维的情况下Gibbs采样算法的流程如下
3.2 多维
而在多维的情况下,比如一个n维的概率分布π(x1, x2, …xn),我们可以通过在n个坐标轴上轮换采样,来得到新的样本。
对于轮换到的任意一个坐标轴xi上的转移,马尔科夫链的状态转移概率为 P(xi|x1, x2, …, xi−1, xi+1, …, xn),即固定n−1个坐标轴,在某一个坐标轴上移动。
而在多维的情况下Gibbs采样算法的流程如下
3.3 小结
由于Gibbs采样在高维特征时的优势,目前我们通常意义上的MCMC采样都是用的Gibbs采样。
当然Gibbs采样是从M-H采样的基础上的进化而来的,同时Gibbs采样要求数据至少有两个维度,一维概率分布的采样是没法用Gibbs采样的,这时M-H采样仍然成立。
4. 其他算法
除了最常见的MH那几个算法,后来还有很多新的比较惊艳的算法出现,比如说slice sampling,elliptical slice sampling,generalized elliptical slice sampling,上面说的BPS, forward event chain MC,还有和神经网络结合的NNGHMC,A-Nice-MC,以及利用了batch optimization思想的stochastic gradient HMC以及stochastic gradient Langevin dynamic等。
5. 参考资料
以下为列表,链接见原文
统计之都-MCMC
HANS-MCMC 算法及其应用
知乎-MCMC 专栏
机器学习之MCMC算法
知乎-MCMC 算法
知乎-MCMC 算法中接受概率是什么意思
MCMC 和 Metropolis–Hastings 算法
马尔可夫链蒙特卡洛(MCMC)算法
CSDN-MCMC
MCMC相关算法介绍及代码实现
算法资料
http://civs.stat.ucla.edu/MCMC/MCMC_tutorial.htm
http://www.soe.ucsc.edu/classes/cmps290c/Winter06/paps/mcmc.pdf
http://public.lanl.gov/kmh/talks/maxent00b.pdf
http://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo
google keywords: MCMC tutorial
MCMC preprint service:
http://www.statslab.cam.ac.uk/~mcmc/
David MacKay’s book (electronic version availiable):
http://www.inference.phy.cam.ac.uk/mackay/itila/
Radford M. Neal’s review: Probabilistic Inference using Markov Chain Monte Carlo Methods
http://www.cs.toronto.edu/~radford/review.abstract.html
原文链接:
https://zhuanlan.zhihu.com/p/37121528
https://houbb.github.io/2020/01/28/math-05-mcmc
https://zhuanlan.zhihu.com/p/21112618