作者:CHEONG

公众号:AI机器学习与知识图谱

研究方向:自然语言处理与知识图谱

阅读本文之前,首先注意以下两点:

1. 机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看。

2. 文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:MCMC第一讲,可添加微信号【17865190919】进学习交流群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!

本文主要介绍蒙特卡罗方法的基本思想和三种常用的采样策略,

本文结论

结论1: 蒙特卡罗方法是一种基于采用的随机近似方法,蒙特卡罗方法一个基本的用途可用于近似求解Intractable的积分问题。MCMC(Markov Chain & Monte Carlo)便是利用了蒙特卡洛法思想的一种基于采样的近似推断方法。

结论2: 本文介绍三种常用的采样方法:概率分布采样,拒绝采样和重要性采样。正文部分将详细给出每种采样策略具体的采样处理过程。

蒙特卡洛方法Monte Carlo Method,一种基于采样的随机近似方法,蒙特卡洛法可用于求积分,举个例子:

XXX:观测数据Observed Data

ZZZ:隐变量Latent Variable

现在给出如下期望的积分求解公式,假设下面的积分无法直接求出:

下面使用蒙特卡洛法,从后验概率p(z∣x)p(z|x)p(z∣x)中进行N次随机采样得到一下N个样本:

这样便可以近似得出上述的积分值:

同理,如果某个后验概率不好直接求出,我们可以先将其先转化为求期望的问题,然后通过蒙特卡洛法便可间接的近似求后验概率p(z∣x)p(z|x)p(z∣x)。按照这种方式便可将图的Inference求后验概率问题转化为如何从复杂的后验概率分布p(z∣x)p(z|x)p(z∣x)中进行采样。接下来就简单介绍三种常用的采样策略,分别是:概率分布采样,拒绝采样和重要性采样。

一、概率分布采样

概率分布采样核心思想:假设概率密度函数p(z)p(z)p(z)很复杂,无法直接从p(z)p(z)p(z)中进行采样,根据概率密度函数p(z)p(z)p(z)求出其累积分布函数cdfcdfcdf,这样可以从cdfcdfcdf中进行采样,然后再通过cdfcdfcdf的反函数$cdf−1cdf^{-1}cdf−1间接的从p(z)p(z)p(z)中采样,下面介绍采样的具体步骤。

如下图所示,蓝色线对应的是某个高斯分布的概率密度函数pdfpdfpdf,橙色线对应的高斯分布的累计密度函数cdfcdfcdf。cdfcdfcdf的函数值是从0到1的,因此产生随机数的步骤如下:

a. 利用U(0,1)随机数生成器产生0到1之间的随机数uiu_iui​;

b. 利用cdfcdfcdf的反函数,根据函数值uiu_iui​求出其对应的xix_ixi​值便可得到随机数,xi=cdf−1(ui)x_i=cdf^{-1}(u_i)xi​=cdf−1(ui​)

基于概率分布采样方法存在的缺陷是:对于有些情况,根据pdfpdfpdf求解cdfcdfcdf是十分复杂的,很多甚至是求不出来的,所以使用的情况很有限。

二、拒绝采样

下面直接给出拒绝采样的具体步骤,如下图所示现在需要对p(x)p(x)p(x)采样,但p(x)p(x)p(x)很复杂无法直接采样,因此引入十分容易采样的函数q(x)q(x)q(x),并且引入一个常量MMM使得

始终满足,这里令

则拒绝采样的步骤如下:

a.先从f(x)f(x)f(x)进行一次采样得到xix_ixi​;

b.计算采样样本xix_ixi​的接受概率:

c.从(0,1)均匀分布中进行一次随机采样得到uiu_iui​;

d.如果α≥ui\alpha \geq u_iα≥ui​,则接受xix_ixi​作为p(x)p(x)p(x)的一次采样,否则重复上述步骤继续进行采样。

拒绝采样采样效率是较高的,但存在的问题是假设一个容易采样的q(x)q(x)q(x)的难度是十分高的。

三、重要性采样

在介绍重要性采样方法前,先给出如下求解问题,求函数f(x)f(x)f(x)在概率分布p(x)p(x)p(x)下的期望值:

如果无法直接求解分,可以通过对概率分布p(x)p(x)p(x)进行采样来计算期望值。如果概率分布p(x)p(x)p(x)无法直接采样,接下来看重要性采样的处理方式。

重要性采样的思想便和拒绝采样相似,同样引入一个更容易采样的概率分布q(x)q(x)q(x),从q(x)q(x)q(x)中采样得到样本:x1,x2,...,xn{x_1,x_2,...,x_n}x1​,x2​,...,xn​,则有:

这样便可将上面的积分式看成是函数p(x)/q(x)∗f(x)p(x)/q(x)*f(x)p(x)/q(x)∗f(x)定义在概率分布q(x)q(x)q(x)上的期望,因此可得

其中

上式就是重要性权重,通过从概率分布q(x)q(x)q(x)采样来达到目的。

重要性采样缺陷:对于重要性权重过大或者过小对于采样都不好,因此重要性采样有一个变种:采样重要性重采样Sampling-Importance-Resampling:权重如下公式:

将权重当成采样样本[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EBZrGVxu-1617967579128)(file:///C:/Users/zl_sd/AppData/Local/Temp/msohtmlclip1/01/clip_image026.png)]的分布,那么根据如下的权重分布,对第一次采样的样本x1,x2,...,xn{x_1,x_2,...,x_n}x1​,x2​,...,xn​进行二次采样:

【机器学习系列】MCMC第一讲:蒙特卡罗方法初认识相关推荐

  1. 【直播回顾及资料下载】小程序云应用入门实操系列课程第一讲...

    直播详情:小程序云应用入门实操系列课程第一讲:https://yq.aliyun.com/articles/698244 直播时间:2019年4月16日 20:30 直播专家: 白宦成 - Linux ...

  2. 机器学习知识点(三十五)蒙特卡罗方法

    强化学习中免模型学习采用蒙特卡罗方法去逼近最优解,那这种采样原理是怎样的呢? 1.蒙特卡罗思想 是一类随机方法的统称.这类方法的特点是,可以在随机采样上计算得到近似结果,随着采样的增多,得到的结果是正 ...

  3. MCMC笔记:蒙特卡罗方法

    0 前言:关于采样 0.1 采样的动机 1)采样可能本身就是任务 2)求和或者求积分 0.2 什么是好的样本? 1)样本趋向于高概率的区域 2)样本是相互独立的 0.3 采样是困难的 1)概率分布函数 ...

  4. CODING 敏捷实战系列课第一讲:正本清源——敏捷的为什么

    随着数字化浪潮及软件技术的持续发展进化,在充满变化和未知的时代背景之下,敏捷产品开发及新的价值交付及团队共创方式应运而生.CODING 邀请 UPerform 优普丰创始人 & CEO 李国彪 ...

  5. 【天池直播】图像系列直播第一讲--带你入坑深度学习

    天池医疗AI大赛以"人工智能辅助医疗决策"为主题,围绕全球第一高发恶性肿瘤--肺癌,以肺部小结节病变的智能识别.诊断为课题,通过胸部CT影像(mhd格式),检测CT影像中的肺部结节 ...

  6. 【云原生系列】第一讲:什么是云计算

    序言 文章颜色说明: 一.为什么要有云计算 1.1 背景 1.1.1 硬件设备复杂程度越来越高 1.1.2 运维复杂程度越来越高 2 云计算定义 2.1 常规定义: 2.2 (NIST)定义: 3 云 ...

  7. 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享

    原文链接:http://tecdat.cn/?p=2687 在贝叶斯方法中,马尔可夫链蒙特卡罗方法尤其神秘(点击文末"阅读原文"获取完整代码数据). 它们肯定是数学繁重且计算量大的 ...

  8. 机器学习基石第一讲:the learning problem

    博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) Andrew Ng的Machine Learning比較简单,已经看完.林田轩的机器 ...

  9. matlab蒙特卡罗方法求体积_蒙特卡罗方法详细讲解与MATLAB实现.ppt

    下面给出几个常用的α与的数值: ? 关于蒙特卡罗方法的误差需说明两点:第一,蒙特卡罗方法的误差为概率误差,这与其他数值计算方法是有区别的.第二,误差中的均方差σ是未知的,必须使用其估计值 来代替,在计 ...

  10. 产品研发的体系构建与研发过程管理第一讲

    产品研发的体系构建与研发过程管理 管理理论发展 产品(包)的构成 IPD集成产品开发 本篇文章为睿慕课创始人周朔鹏老师的<产品研发的体系构建与研发过程管理>系列讲座第一讲的精简知识点汇总. ...

最新文章

  1. C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)
  2. CentOs下php连mssql并配置unixODBC
  3. 不固定图片宽高瀑布流_APP设计学习:瀑布流式的产品UI设计
  4. 内联脚本被视为是有害的_数据类被认为有害
  5. 基于C++实现五子棋AI算法思想
  6. 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
  7. RabbitMQ和Kafka的显著差异(1)
  8. Spring Bean配置默认为单实例 pring Bean生命周期
  9. 创业失败的内因分析及避免办法
  10. android谷歌打印插件下载地址,谷歌浏览器打印插件(Print Plus)
  11. httpClient4 设置代理
  12. 经常使用的几种OCR文档扫描工具|无水印|避免智商税
  13. 因子分析法(Factor Analysis)是什么分析
  14. uvalive4987
  15. LeCo-238. 除自身以外数组的乘积
  16. vscode修改代码颜色
  17. 程序员只能在一线城市么?
  18. 数字电路中的基础电路结构
  19. 精华 | 恩墨学院侯圣文:大数据时代下的 DBA 该何去何从?
  20. 学会思考--菜鸟程序员晋升大神之路

热门文章

  1. WPF控件获得焦点时去除虚线框
  2. [WP8.1UI控件编程]Windows Phone XAML页面的编译
  3. 使用taskset命令来限制进程的CPU
  4. 十进制到二进制的转换
  5. 向博客园提交了MVP申请
  6. ibatis mybatis sql语句配置 符号不兼容 大于号 小于号
  7. WampServer图标黄色如何解决
  8. 南阳oj-----Registration system(map)
  9. python property方法_高效 Python 代码 —— 属性与 @property 方法
  10. python自定义修饰器_Python进阶自检清单:来自《Effective Python》的建议(二)