Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >随机采样方法——蒙特卡罗方法

随机采样方法——蒙特卡罗方法

作者头像
机器学习算法工程师
发布于 2018-08-17 09:18:26
发布于 2018-08-17 09:18:26
2.9K0
举报

作者: 刘建平

编辑:祝鑫泉

授权转发自:刘建平《MCMC(一)蒙特卡罗方法》

地址:http://www.cnblogs.com/pinard/p/6625739.html

前 言

作为一种随机采样方法,马尔科夫链蒙特卡罗(Markov Chain Monte Carlo,以下简称MCMC)在机器学习,深度学习以及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础。 章节目录

  • MCMC概述
  • 蒙特卡罗方法引入
  • 概率分布采样
  • 接受—拒绝采样
  • 蒙特卡罗方法小结

01

MCMC概述

从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。要弄懂MCMC的原理我们首先得搞清楚蒙特卡罗方法和马尔科夫链的原理。我们将用三篇来完整学习MCMC。在本篇,我们关注于蒙特卡罗方法。

02

蒙特卡罗方法引入

蒙特卡罗原来是一个赌场的名称,用它作为名字大概是因为蒙特卡罗方法是一种随机模拟的方法,这很像赌博场里面的扔骰子的过程。最早的蒙特卡罗方法都是为了求解一些不太好求解的求和或者积分问题。比如积分:

如果我们很难求解出f(x)的原函数,那么这个积分比较难求解。当然我们可以通过蒙特卡罗方法来模拟求解近似值。如何模拟呢?假设我们函数图像如下图:

则一个简单的近似求解方法是在[a,b]之间随机的采样一个点。比如x0,然后用f(x0)代表在[a,b]区间上所有的f(x)的值。那么上面的定积分的近似求解为:

当然,用一个值代表[a,b]区间上所有的f(x)的值,这个假设太粗糙。那么我们可以采样[a,b]区间的n个值:x0,x1,...xn−1,用它们的均值来代表[a,b]区间上所有的f(x)的值。这样我们上面的定积分的近似求解为:

虽然上面的方法可以一定程度上求解出近似的解,但是它隐含了一个假定,即x在[a,b]之间是均匀分布的,而绝大部分情况,x在[a,b]之间不是均匀分布的。如果我们用上面的方法,则模拟求出的结果很可能和真实值相差甚远。

怎么解决这个问题呢? 如果我们可以得到x在[a,b]的概率分布函数p(x),那么我们的定积分求和可以这样进行:

上式最右边的这个形式就是蒙特卡罗方法的一般形式。当然这里是连续函数形式的蒙特卡罗方法,但是在离散时一样成立。

可以看出,最上面我们假设x在[a,b]之间是均匀分布的时候,p(xi)=1/(b−a),带入我们有概率分布的蒙特卡罗积分的上式,可以得到:

也就是说,我们最上面的均匀分布也可以作为一般概率分布函数p(x)在均匀分布时候的特例。那么我们现在的问题转到了如何求出x的分布p(x)对应的若干个样本上来。

03

条概率分布采样

上一节我们讲到蒙特卡罗方法的关键是得到x的概率分布。如果求出了x的概率分布,我们可以基于概率分布去采样基于这个概率分布的n个x的样本集,带入蒙特卡罗求和的式子即可求解。但是还有一个关键的问题需要解决,即如何基于概率分布去采样基于这个概率分布的n个x的样本集。 

对于常见的均匀分布uniform(0,1)是非常容易采样样本的,一般通过线性同余发生器可以很方便的生成(0,1)之间的伪随机数样本。而其他常见的概率分布,无论是离散的分布还是连续的分布,它们的样本都可以通过uniform(0,1)的样本转换而得。比如二维正态分布的样本(Z1,Z2)可以通过通过独立采样得到的uniform(0,1)样本对(X1,X2)通过如下的式子转换而得:

其他一些常见的连续分布,比如t分布,F分布,Beta分布,Gamma分布等,都可以通过类似的方式从uniform(0,1)得到的采样样本转化得到。在python的numpy,scikit-learn等类库中,都有生成这些常用分布样本的函数可以使用。

不过很多时候,我们的x的概率分布不是常见的分布,这意味着我们没法方便的得到这些非常见的概率分布的样本集。那这个问题怎么解决呢?

04

接受—拒绝采样

对于概率分布不是常见的分布,一个可行的办法是采用接受-拒绝采样来得到该分布的样本。既然 p(x) 太复杂在程序中没法直接采样,那么我设定一个程序可采样的分布 q(x) 比如高斯分布,然后按照一定的方法拒绝某些样本,以达到接近 p(x) 分布的目的,其中q(x)叫做 proposal distribution。

具体采用过程如下,设定一个方便采样的常用概率分布函数 q(x),以及一个常量 k,使得 p(x) 总在 kq(x) 的下方。如上图。

首先,采样得到q(x)的一个样本z0,采样方法如第三节。然后,从均匀分布(0,kq(z0))中采样得到一个值u。如果u落在了上图中的灰色区域,则拒绝这次抽样,否则接受这个样本z0。重复以上过程得到n个接受的样本z0,z1,...zn−1,则最后的蒙特卡罗方法求解结果为:

整个过程中,我们通过一系列的接受拒绝决策来达到用q(x)模拟p(x)概率分布的目的。

05

蒙特卡罗方法小结

使用接受-拒绝采样,我们可以解决一些概率分布不是常见的分布的时候,得到其采样集并用蒙特卡罗方法求和的目的。但是接受-拒绝采样也只能部分满足我们的需求,在很多时候我们还是很难得到我们的概率分布的样本集。比如:

1)对于一些二维分布p(x,y),有时候我们只能得到条件分布p(x|y)和p(y|x)和,却很难得到二维分布p(x,y)一般形式,这时我们无法用接受-拒绝采样得到其样本集。

2)对于一些高维的复杂非常见分布p(x1,x2,...,xn),我们要找到一个合适的q(x)和k非常困难。

从上面可以看出,要想将蒙特卡罗方法作为一个通用的采样模拟求和的方法,必须解决如何方便得到各种复杂概率分布的对应的采样样本集的问题。而我们下一篇要讲到的马尔科夫链就是帮助找到这些复杂概率分布的对应的采样样本集的白衣骑士。下一篇我们来总结马尔科夫链的原理。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习算法工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MCMC之蒙特卡罗方法
马尔可夫链蒙克卡罗(Markov Chain Monte Carlo,MCMC)是一种随机采样方法,在机器学习、深度学习及自然语言处理等领域都有广泛的应用,是很多复杂算法求解的基础,例如受限玻尔兹曼机(RBM)便是用MCMC来做一些复杂算法的近似求解。在具体讲解什么是MCMC之前,我们先看看MCMC可以解决什么样的问题,为什么需要MCMC方法。
小一
2019/08/14
7350
MCMC之蒙特卡罗方法
复现经典:《统计学习方法》第19章 马尔可夫链蒙特卡罗法
随机抽样是蒙特卡罗法的一种应用,有直接抽样法、接受拒绝抽样法等。接受拒绝法的基本想法是,找一个容易抽样的建议分布,其密度函数的数倍大于等于想要抽样的概率分布的密度函数。按照建议分布随机抽样得到样本,再按要抽样的概率分布与建议分布的倍数的比例随机决定接受或拒绝该样本,循环执行以上过程。
黄博的机器学习圈子
2020/06/11
1.1K0
复现经典:《统计学习方法》第19章 马尔可夫链蒙特卡罗法
一文学习基于蒙特卡罗的强化学习方法
▌4.1 基于蒙特卡罗方法的理论 本章我们学习无模型的强化学习算法。 强化学习算法的精髓之一是解决无模型的马尔科夫决策问题。如图4.1所示,无模型的强化学习算法主要包括蒙特卡罗方法和时间差分方法。本
用户1737318
2018/06/05
2.3K0
MCMC原理解析(马尔科夫链蒙特卡洛方法)
马尔科夫链蒙特卡洛方法(Markov Chain Monte Carlo),简称MCMC,MCMC算法的核心思想是我们已知一个概率密度函数,需要从这个概率分布中采样,来分析这个分布的一些统计特性,然而这个这个函数非常之复杂,怎么去采样?这时,就可以借助MCMC的思想。
种花家的奋斗兔
2020/11/13
2.8K0
MCMC原理解析(马尔科夫链蒙特卡洛方法)
机器学习9:采样
采样本质上是对随机现象的模拟,根据给定的概率分布,来模拟产生一个对应的随机事件。采样可以让人们对随机事件及其产生过程有更直观的认识。
用户5473628
2019/08/08
2K0
MCMC(三)MCMC采样和M-H采样
    在MCMC(二)马尔科夫链中我们讲到给定一个概率平稳分布$\pi$, 很难直接找到对应的马尔科夫链状态转移矩阵$P$。而只要解决这个问题,我们就可以找到一种通用的概率分布采样方法,进而用于蒙特卡罗模拟。本篇我们就讨论解决这个问题的办法:MCMC采样和它的易用版M-H采样。
刘建平Pinard
2018/08/14
7860
MCMC(三)MCMC采样和M-H采样
蒙特卡罗(Monte Carlo)方法——从数学原理到实际案例
Monte Carlo方法是一种应用随机数来进行计算机模拟的方法,通过对所研究系统进行随机观察抽样并对样本值进行统计分析,来得到所研究系统的某些参数。
mindtechnist
2025/05/15
2010
蒙特卡罗(Monte Carlo)方法——从数学原理到实际案例
MCMC(四)Gibbs采样
    在MCMC(三)MCMC采样和M-H采样中,我们讲到了M-H采样已经可以很好的解决蒙特卡罗方法需要的任意概率分布的样本集的问题。但是M-H采样有两个缺点:一是需要计算接受率,在高维时计算量大。并且由于接受率的原因导致算法收敛时间变长。二是有些高维数据,特征的条件概率分布好求,但是特征的联合分布不好求。因此需要一个好的方法来改进M-H采样,这就是我们下面讲到的Gibbs采样。
刘建平Pinard
2018/08/14
1.3K0
MCMC(四)Gibbs采样
MCMC(二)马尔科夫链
    在MCMC(一)蒙特卡罗方法中,我们讲到了如何用蒙特卡罗方法来随机模拟求解一些复杂的连续积分或者离散求和的方法,但是这个方法需要得到对应的概率分布的样本集,而想得到这样的样本集很困难。因此我们需要本篇讲到的马尔科夫链来帮忙。
刘建平Pinard
2018/08/14
1.4K0
MCMC(二)马尔科夫链
MCMC之马尔可夫链
因为某一时刻状态转移只依赖于它的前一个状态,那么我们只要能求出系统中任意两个状态之间的转移概率,进而得到状态转移概率矩阵,那么马尔科夫链的模型便定了。以下图股市模型为例,共有三个状态,分别为牛市(Bull market)、熊市(Bear market)、横盘(Stagnant market)。每一个状态都能够以一定概率转移到下一状态,比如牛市以0.075的概率转移到横盘的概率,这些状态转移概率图可以转换为矩阵的形式进行表示。
小一
2019/08/14
9940
MCMC之马尔可夫链
MLK | 机器学习采样方法大全
其实我们在训练模型的过程,都会经常进行数据采样,为了就是让我们的模型可以更好的去学习数据的特征,从而让效果更佳。但这是比较浅层的理解,更本质上,数据采样就是对随机现象的模拟,根据给定的概率分布从而模拟一个随机事件。另一说法就是用少量的样本点去近似一个总体分布,并刻画总体分布中的不确定性。
Sam Gor
2019/07/30
1.3K0
原创 | 一文读懂蒙特卡洛算法
作者:陈之炎 本文约2000字,建议阅读10分钟本文介绍了蒙特卡洛算法。 蒙特卡洛算法(Monte Carlo algorithm)是一种基于随机采样的计算方法,其基本思想是通过生成随机样本,利用统计学原理来估计数学问题的解。它最初是由美国洛斯阿拉莫斯国家实验室的科学家斯坦尼斯拉夫·乌拉姆(Stanislaw Ulam)和尤里·维加(Nicholas Metropolis)在20世纪40年代初开发的,用于模拟核反应堆中的中子传输问题。 蒙特卡洛算法的核心原理是利用随机数和概率统计方法来模拟问题,通过大量随机
数据派THU
2023/05/11
2K0
原创 | 一文读懂蒙特卡洛算法
简单易学的机器学习算法——马尔可夫链蒙特卡罗方法MCMC
对于一般的分布的采样,在很多的编程语言中都有实现,如最基本的满足均匀分布的随机数,但是对于复杂的分布,要想对其采样,却没有实现好的函数,在这里,可以使用马尔可夫链蒙特卡罗(Markov Chain Monte Carlo, MCMC)方法,其中Metropolis-Hastings采样和Gibbs采样是MCMC中使用较为广泛的两种形式。
felixzhao
2019/01/31
9840
简单易学的机器学习算法——马尔可夫链蒙特卡罗方法MCMC
【深度干货】专知主题链路知识推荐#5-机器学习中似懂非懂的马尔科夫链蒙特卡洛采样(MCMC)入门教程01
【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视觉等)、大数据、编程语言、系统架构。使用请访问专知 进行主题搜索查看 - 桌面电脑访问www.zhuanzhi.ai, 手机端访问www.zhuanzhi.ai 或关注微信公众号后台回复" 专知"进入专知,搜索主题查看。今天给大家继续介绍我们独家整理的机器学习——马尔科夫链蒙特卡洛采样(MCMC)方法。 上一次我们详细介绍了贝叶斯参数估计,里面我们
WZEARW
2018/04/08
1.5K0
【深度干货】专知主题链路知识推荐#5-机器学习中似懂非懂的马尔科夫链蒙特卡洛采样(MCMC)入门教程01
【深度干货】专知主题链路知识推荐#7-机器学习中似懂非懂的马尔科夫链蒙特卡洛采样(MCMC)入门教程02
【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视觉等)、大数据、编程语言、系统架构。使用请访问专知 进行主题搜索查看 - 桌面电脑访问www.zhuanzhi.ai, 手机端访问www.zhuanzhi.ai 或关注微信公众号后台回复" 专知"进入专知,搜索主题查看。今天给大家继续介绍我们独家整理的机器学习——马尔科夫链蒙特卡洛采样(MCMC)方法。 上一次我们详细介绍了机器学习中似懂非懂的马尔
WZEARW
2018/04/08
4.1K1
【深度干货】专知主题链路知识推荐#7-机器学习中似懂非懂的马尔科夫链蒙特卡洛采样(MCMC)入门教程02
迷你规模的Metropolis-Hastings
过去的几年里,我们经历了一场巨大的数据洪流,这在人工智能兴趣激增浪潮中扮演了关键角色。下面是部分大型数据库列表:
花落花飞去
2018/02/01
1K0
迷你规模的Metropolis-Hastings
MCMC采样和M-H采样
解决平稳分布π所对应的马尔可夫链状态转移矩阵P之前,我们先看一下马尔可夫链的细致平稳条件。其定义为:如果非周期马尔可夫链的状态转移矩阵P和概率分布π(x)对于所有的i,j满足下列方程,则概率分布π(x)是状态转移矩阵P的平稳分布。
小一
2019/08/14
1.1K0
MCMC采样和M-H采样
算法工程师-自然语言处理(NLP)类岗位面试题目
其实,一句话解释就是想构造一个向量表征方式,使得向量的点击和共现矩阵中的对应关 系一致。因为共现矩阵中的对应关系证明了,存在 i,k,j 三个不同的文本,如果 i 和 k 相关,j 和 k 相关,那么 p(i,j)=p(j,k)近似于 1,其他情况都过大和过小。
用户9925864
2022/07/27
9490
算法工程师-自然语言处理(NLP)类岗位面试题目
技术干货:一文详解LDA主题模型
本文介绍了自然语言处理中的文本分类任务,以及常用的文本分类算法。包括朴素贝叶斯分类器、支持向量机、逻辑回归和神经网络等。还介绍了这些算法的具体实现步骤和优缺点,以及适用场景。
企鹅号小编
2017/12/27
1.5K0
技术干货:一文详解LDA主题模型
Gibbs采样
MCMC采样和M-H采样中我们讲到细致平衡条件,即如果非周期马尔可夫链状态转移矩阵P和概率分布π(x)对于所有的i,j满足下列方程,则称概率分布π(x)是状态转移矩阵P的平稳分布。
小一
2019/08/14
8000
Gibbs采样
推荐阅读
相关推荐
MCMC之蒙特卡罗方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档