【机器学习系列】MCMC第一讲:蒙特卡罗方法初认识
作者: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第一讲:蒙特卡罗方法初认识相关推荐
- 【直播回顾及资料下载】小程序云应用入门实操系列课程第一讲...
直播详情:小程序云应用入门实操系列课程第一讲:https://yq.aliyun.com/articles/698244 直播时间:2019年4月16日 20:30 直播专家: 白宦成 - Linux ...
- 机器学习知识点(三十五)蒙特卡罗方法
强化学习中免模型学习采用蒙特卡罗方法去逼近最优解,那这种采样原理是怎样的呢? 1.蒙特卡罗思想 是一类随机方法的统称.这类方法的特点是,可以在随机采样上计算得到近似结果,随着采样的增多,得到的结果是正 ...
- MCMC笔记:蒙特卡罗方法
0 前言:关于采样 0.1 采样的动机 1)采样可能本身就是任务 2)求和或者求积分 0.2 什么是好的样本? 1)样本趋向于高概率的区域 2)样本是相互独立的 0.3 采样是困难的 1)概率分布函数 ...
- CODING 敏捷实战系列课第一讲:正本清源——敏捷的为什么
随着数字化浪潮及软件技术的持续发展进化,在充满变化和未知的时代背景之下,敏捷产品开发及新的价值交付及团队共创方式应运而生.CODING 邀请 UPerform 优普丰创始人 & CEO 李国彪 ...
- 【天池直播】图像系列直播第一讲--带你入坑深度学习
天池医疗AI大赛以"人工智能辅助医疗决策"为主题,围绕全球第一高发恶性肿瘤--肺癌,以肺部小结节病变的智能识别.诊断为课题,通过胸部CT影像(mhd格式),检测CT影像中的肺部结节 ...
- 【云原生系列】第一讲:什么是云计算
序言 文章颜色说明: 一.为什么要有云计算 1.1 背景 1.1.1 硬件设备复杂程度越来越高 1.1.2 运维复杂程度越来越高 2 云计算定义 2.1 常规定义: 2.2 (NIST)定义: 3 云 ...
- 【视频】马尔可夫链蒙特卡罗方法MCMC原理与R语言实现|数据分享
原文链接:http://tecdat.cn/?p=2687 在贝叶斯方法中,马尔可夫链蒙特卡罗方法尤其神秘(点击文末"阅读原文"获取完整代码数据). 它们肯定是数学繁重且计算量大的 ...
- 机器学习基石第一讲:the learning problem
博客已经迁移至Marcovaldo's blog (http://marcovaldong.github.io/) Andrew Ng的Machine Learning比較简单,已经看完.林田轩的机器 ...
- matlab蒙特卡罗方法求体积_蒙特卡罗方法详细讲解与MATLAB实现.ppt
下面给出几个常用的α与的数值: ? 关于蒙特卡罗方法的误差需说明两点:第一,蒙特卡罗方法的误差为概率误差,这与其他数值计算方法是有区别的.第二,误差中的均方差σ是未知的,必须使用其估计值 来代替,在计 ...
- 产品研发的体系构建与研发过程管理第一讲
产品研发的体系构建与研发过程管理 管理理论发展 产品(包)的构成 IPD集成产品开发 本篇文章为睿慕课创始人周朔鹏老师的<产品研发的体系构建与研发过程管理>系列讲座第一讲的精简知识点汇总. ...
最新文章
- C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)
- CentOs下php连mssql并配置unixODBC
- 不固定图片宽高瀑布流_APP设计学习:瀑布流式的产品UI设计
- 内联脚本被视为是有害的_数据类被认为有害
- 基于C++实现五子棋AI算法思想
- 【Python】comtypes模块Windows环境下使用批量转换成PDF文件
- RabbitMQ和Kafka的显著差异(1)
- Spring Bean配置默认为单实例 pring Bean生命周期
- 创业失败的内因分析及避免办法
- android谷歌打印插件下载地址,谷歌浏览器打印插件(Print Plus)
- httpClient4 设置代理
- 经常使用的几种OCR文档扫描工具|无水印|避免智商税
- 因子分析法(Factor Analysis)是什么分析
- uvalive4987
- LeCo-238. 除自身以外数组的乘积
- vscode修改代码颜色
- 程序员只能在一线城市么?
- 数字电路中的基础电路结构
- 精华 | 恩墨学院侯圣文:大数据时代下的 DBA 该何去何从?
- 学会思考--菜鸟程序员晋升大神之路
热门文章
- WPF控件获得焦点时去除虚线框
- [WP8.1UI控件编程]Windows Phone XAML页面的编译
- 使用taskset命令来限制进程的CPU
- 十进制到二进制的转换
- 向博客园提交了MVP申请
- ibatis mybatis sql语句配置 符号不兼容 大于号 小于号
- WampServer图标黄色如何解决
- 南阳oj-----Registration system(map)
- python property方法_高效 Python 代码 —— 属性与 @property 方法
- python自定义修饰器_Python进阶自检清单:来自《Effective Python》的建议(二)