MCMC 和 Gibbs采样

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)
  1. 自相关性可通过增加步调长度(jumping width,与jumping function g(x∣y)g(x|y)g(xy)的方差有关)来控制,但同时也增加了拒绝备选样本的几率α\alphaα
  2. 过大或过小的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(xy)选择不当而导致的问题,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Java流和In-JVM-Memory的超低延迟查询

自然界的基本规则(例如光速和通用信息论)对我们可以从传统系统体系结构中获得的最大性能设置了明显的限制。 了解您作为Java开发人员如何使用JVM技术和Java流将性能提高几个数量级。 例如,如果应用程序服务器和数据库服务器相距100 m&#…

信道接入技术及协议

1. 信道共享方式 在普通的通信系统中,信道共享方式有3种:点对点、点对多点和多点共享。 1.1 点对点 点对点是最简单的信道共享方式。其特点是只有两个节点共享无线信道。在单信道时,两个节点可以通过半双工方式实现共享,在双信…

MATLAB | 解决打开延迟的情况

问题 最近打开matlab,一直没有反应,大概几分钟后,才开始有反应。 网上关于matlab启动出现延迟的方法有很多种解决方法。但都是针对破解版的,而装正版matlab2020b,缺少license文件。对于此,我们尝试用另外一…

50 个具有挑战性的概率问题 [01/50]:袜子抽屉

一、说明 我最近对与概率有关的问题产生了兴趣。我偶然读到了弗雷德里克莫斯特勒(Frederick Mosteller)的《概率论中的五十个具有挑战性的问题与解决方案》(Fifty Challenge Problems in Probability with Solutions)一书。我认为…

制作程序化装饰花纹图案_装饰图案

制作程序化装饰花纹图案装饰图案 我不经常使用的一种设计模式是Decorator 。 我不确定为什么这种模式不受欢迎,因为它很方便。 装饰器模式允许以受控方式向对象添加功能。 即使在使用静态类型的语言时,也可以在运行时运行! 装饰器模式是子类的…

6个您需要了解的日志管理工具(以及如何使用它们)

如果没有正确的工具来汇总和解析日志数据,则几乎不可能找到并了解您正在寻找的信息。 日志有无穷无尽的用途,因为日志本身是无止境的。 应用程序日志,安全日志,BI日志, 林肯日志 (好吧,也许不是…

JDK 12开关表达式遇到意外的枚举值

正如我在“ 玩JDK 12的Switch表达式 ”一文中所写的那样, JDK 12 Early Access Build使JEP 325的实现(“ Switch Expressions(Preview)”)的实验变得容易。 我的帖子“ JDK 12:实际中的切换语句/表达式 ”使…

Matlab画图线型、符号及颜色设置

1. matlab 中线条的主要属性 Color: 颜色LineStyle: 线型LineWidth: 线宽Marker: 标记点的形状MarkerFaceColor: 标记点填充颜色MarkerEdgeColor: 标记点边缘颜色MarkerSize: 标记点大小 2. 各种属性的名称 2.1 线型 -Solid line (default) – Dashed line : Dotted line …

休眠面试问答-最终清单

这是有关Hibernate Framework的一些最重要问题的摘要,可能会要求您在访谈中回答! 您无需担心下一次面试的机会,因为Java Code Geeks在这里为您服务! 您可能会被问到的大多数事情都收集在下面的列表中。 我们的Hibernate面试问题将…

matlab 进度条/waitbar 显示运行进度

当运行大程序,需要跑大量数据的时候,使用进度条可以看到程序究竟运行到什么地方了,哈哈,要不干等着难受(╯﹏╰)…… waitbar的作用是打开或者更新进度条。 1 语法结构 (1.1) h waitbar(x,‘message’) x表示进度条的比例长度…

MATLAB 命令 BOXPLOT

Matlab中有关boxplot(X)命令的解释: boxplot(X) produces a box and whisker plot for each column of the matrix X. The box has lines at the lower quartile, median, and upper quartile values. Whiskers extend from each end of the box to the adjacent v…

latex-bib参考文献人名特殊字符

https://blog.csdn.net/weixin_43413198/article/details/105468843

Matlab RGB 颜色对照表(0-1之间取值)

https://blog.csdn.net/qq_38882446/article/details/100886087

空间点过程(Point Processes)和随机测度(Random Measure)

1 空间点过程与随机测度(一):从数星星说起 1.1 数星星的数学 小时候,在晴朗的夜里,我喜欢仰望星空,去数天上的星星——那是无忧无虑的快乐童年。长大后,当我们再度仰望苍穹,也许会思…

add a legend to a boxplot in MATLAB

1. 给同组数据分类加legend figure; colors [1 0 0; 1 0 0; 0 0 1; 0 0.5 0; 0 0.5 0; 0 0.5 0]; x boxplot(rand(100,6),Colors,colors); legend(Group A,Group B,Group C)2.给不同组数据加legend box_vars findall(gca,Tag,Box); hLegend legend(box_vars([8,6]), {N…

JavaFX技巧31:遮罩/剪切/ Alpha通道

选择条 最近,我不得不实现一个自定义控件,该控件使用户可以从项目列表中选择一个项目。 此“ SelectionStrip”控件必须水平放置项目,并且在项目过多的情况下,允许用户左右水平滚动。 该控件将在空间受限的区域中使用,…

通信中的频谱效率与能量效率

频谱效率(Spectral Efficiency) 频谱效率(Spectral Efficiency,SE)简称谱效,也称系统容量、频带利用率。 该指标用来衡量系统的有效性,描述了能够提供多少容量。 它定义为系统传输的有效信息速率R除以通信信道带宽B&a…

积分公式大全

https://kexue.fm/sci/integral/ 《积分公式大全》网络版本——By BoJone 引用原作者的话: 本附件所有公式来自《高等数学第三版》。   该书信息:同济大学数学教研室编,高等教育出版社,1988年4月第三版,ISBN 7-04-0…

Latex快速入门系列 -- 在TexStudio中正确插入参考文献的基本操作

目录 1 操作流程2 四种基本的文献格式比较3 文献数据库.bib的编写 1. 操作流程 1.1 创建文章主文件。Ctrl N 新建一个文件,Ctrl S 手动保存,保持文件后缀名.tex。得到一个.tex文件:文章名.tex,该文件用来编写你的文章的具体内…

MongoDB索引策略和索引类型

1. MongoDB索引策略和索引类型–简介 MongoDB是一个开放源代码,面向文档的跨平台数据库,它使用C 开发,并且是最流行和使用最广泛的NoSQL类型数据库之一。 它可在具有键-值对的类JSON文档的顶部运行,其键值对在每个文档中都无法定义…