作者:CHEONG
公众号:AI机器学习与知识图谱
研究方向:自然语言处理与知识图谱
阅读本文之前,首先注意以下两点:
1. 机器学习系列文章常含有大量公式推导证明,为了更好理解,文章在最开始会给出本文的重要结论,方便最快速度理解本文核心。需要进一步了解推导细节可继续往后看。
2. 文中含有大量公式,若读者需要获取含公式原稿Word文档,可关注公众号【AI机器学习与知识图谱】后回复:MCMC第一讲,可添加微信号【17865190919】进学习交流群,加好友时备注来自CSDN。原创不易,转载请告知并注明出处!
本文主要介绍蒙特卡罗方法的基本思想和三种常用的采样策略,
本文结论
结论1: 蒙特卡罗方法是一种基于采用的随机近似方法,蒙特卡罗方法一个基本的用途可用于近似求解Intractable的积分问题。MCMC(Markov Chain & Monte Carlo)便是利用了蒙特卡洛法思想的一种基于采样的近似推断方法。
结论2: 本文介绍三种常用的采样方法:概率分布采样,拒绝采样和重要性采样。正文部分将详细给出每种采样策略具体的采样处理过程。
蒙特卡洛方法Monte Carlo Method,一种基于采样的随机近似方法,蒙特卡洛法可用于求积分,举个例子:
X X X:观测数据Observed Data
Z Z Z:隐变量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)求出其累积分布函数 c d f cdf cdf,这样可以从 c d f cdf cdf中进行采样,然后再通过 c d f cdf cdf的反函数$ c d f − 1 cdf^{-1} cdf−1间接的从 p ( z ) p(z) p(z)中采样,下面介绍采样的具体步骤。
如下图所示,蓝色线对应的是某个高斯分布的概率密度函数 p d f pdf pdf,橙色线对应的高斯分布的累计密度函数 c d f cdf cdf。 c d f cdf cdf的函数值是从0到1的,因此产生随机数的步骤如下:
a. 利用U(0,1)随机数生成器产生0到1之间的随机数 u i u_i ui;
b. 利用 c d f cdf cdf的反函数,根据函数值 u i u_i ui求出其对应的 x i x_i xi值便可得到随机数, x i = c d f − 1 ( u i ) x_i=cdf^{-1}(u_i) xi=cdf−1(ui)
基于概率分布采样方法存在的缺陷是:对于有些情况,根据 p d f pdf pdf求解 c d f cdf cdf是十分复杂的,很多甚至是求不出来的,所以使用的情况很有限。
二、拒绝采样
下面直接给出拒绝采样的具体步骤,如下图所示现在需要对 p ( x ) p(x) p(x)采样,但 p ( x ) p(x) p(x)很复杂无法直接采样,因此引入十分容易采样的函数 q ( x ) q(x) q(x),并且引入一个常量 M M M使得
始终满足,这里令
则拒绝采样的步骤如下:
a.先从 f ( x ) f(x) f(x)进行一次采样得到 x i x_i xi;
b.计算采样样本 x i x_i xi的接受概率:
c.从(0,1)均匀分布中进行一次随机采样得到 u i u_i ui;
d.如果 α ≥ u i \alpha \geq u_i α≥ui,则接受 x i x_i xi作为 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)中采样得到样本: x 1 , x 2 , . . . , x n {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)]的分布,那么根据如下的权重分布,对第一次采样的样本 x 1 , x 2 , . . . , x n {x_1,x_2,...,x_n} x1,x2,...,xn进行二次采样: