大白话论《马尔科夫链蒙特卡洛采样》MCMC原理

1、 技术优势

与传统均匀采样不同,马尔科夫链蒙特卡洛采样通过调整建议采样分布函数,逼近于目标函数。从建议分布中采样,就相当于对目标函数的采样。

  • 针对特殊的采样目标函数,不断采样、训练建议采样分布,始终具有很好采样效果
  • 自探索、自发现的动态调整采样点,利用前期采样点的信息,采样过程具备收敛性
  • 采样效率高,克服“接受-拒绝”采样方法对于特殊目标函数、采样点不易被接受、因而采样次数增大的缺点。

 上面是理想的“接受-拒绝”采样适用方法,选择某一建议分布,划分拒绝与接受。但一旦遇到以下这种情况,只有大量采样,导致执行效率特别低。也是MCMC采样能够很好克服的点,他可以很好的提高采样效率。

那么MCMC是如何提高效率的呢?如果每次采样都利用到前期的采样点反馈,会不会采样更快

2、MCMC理论原理

如何利用前期采样点的信息。比如利用建议分布G(x)采样出的Xn恰好出现在其目标分布中的高密度区域时,如果下一次抽样的Xn+1能够在附近抽取,其接受的成功率自然高。如下图所示。

“接受-拒绝”采样方法每一次点的生成就是随机独立的、且建议函数不变,Xn的信息在下次抽样中丢失。有相当大的概率下次抽样会被拒绝。

因此,我们需要让这个建议分布动起来。保留上次有用信息,影响下次抽样。为此我们将马尔科夫链的思想加进去。流程如下

①根据初始的建议正态分布G(x_{0},\sigma )进行抽样,x0为初始设置的均值,\sigma是标准差,得到x‘ 

 ②假设x'符合我们预设的规则,则x_{1}=x',作为G的均值参数,用于下一次抽样。

 ③相反假设x‘不满足规则,就将原x0的值赋给x1,x_{1}=x_{0},作为G的均值参数,用于下一次抽样。

 ④不断采样,构成采样的马尔科夫链条,并收敛达到稳态。

假如马尔科夫链的转移矩阵满足遍历性,那么它存在唯一的稳态分布。现在可以这样理解上面MCMC链条。我们设计一个判断规则,它能够起到转移矩阵作用,令该链条收敛到稳态分布,而这个稳态分布就是目标函数概率密度分布。达到稳态后抽取的随机值,就等同于从目标分布中采样。

 3、Metropolis Hasting算法

MH算法的设计应用到了马尔科夫链中的“细致平稳(Detailed Balance)”概念。假设我们有一个满足遍历性的马尔科夫链,各状态均达到唯一的稳态分布S。如果转移矩阵满足下

 细致平稳需注意两点

  • 不是所有的稳态分布都满足细致平稳条件。下例中不满足稳态条件

  • 满足细致平稳条件的状态分布达到稳态分布。证明如下。

其中对于所有转移到新状态的概率之和为1. 符合稳态条件,证明毕。

那么为了达到抽样不断收敛,需使得满足细致平稳条件。 如下

进行数学化描述。

步骤1:从旧状态中选出新状态作为候选对象

当已达到稳态处于状态i下的概率为s_{i},然后根据建议正态分布,生成新的随机值j。我们用G(j|i)代表这均值参数为i时,j被抽出的概率s_{i}*G(j|i)则代表了从处于状态i下,根据G(i,\sigma)选出下期候选状态j的概率; 

步骤2:判断是否需要转移至新状态

我们定义A(j|i)是接受j作为i转移后状态的概率,两步相乘得到了 从处于状态i转移到状态j的概率

 两个式子在细致平稳条件下相等,则有如下

值得注意的是 由于G满足正态分布,它是左右对称的。那么从G(x_{i},\sigma)采样到x_j,从状态i转移到状态j,与从G(x_{j},\sigma)采样x_i,从状态j转移到状态i对应的概率是相等的。

G(i|j)G(j|i)是相等的,两者相除抵消。

上述公式得到进一步精简。

最后的问题是怎么求s,也就是 处于状态i下的概率s_{i}。由于我们知道函数S(x)就等同于我们的目标概率密度分布函数pdf(x),而pdf(x)又等于我们的目标函数f(x)/C。C为f(x)与x轴围成的积分值,很难求解。

 将s(i)=f(i)/C带入上式,最后得到最初的Metropolis算法A(j|i)

 而后的\frac{G(i|j)}{G(j|i)}作为Hastings参数,则进一步扩大了算法在非对称建议分布下使用的适用性。

 到这里之前提到的规则就已经设计出来了。我们有了建议概率分布G,同时有转移接受规则A,就可以顺着这个规则链条达到稳态分布,完美实现从目标分布中抽取随机值。

 最后引入随机概率,生成满足均匀分布的一个随机值r。比较r与A的大小,判断当前状态保留还是舍弃。

4、Metropolis算法实战

 这里提供手撕的一个python版本的MCMC算法

代码待更新....

5、总结

  • 动态在哪里。就是采样点(状态)不断转移,趋于(马尔科夫)稳态的过程。

  • 效率咋提高。有效利用上一次采样点的信息,以随机概率形式选择被接受、构建马氏转移链。

  • 算法在干啥。利用过去的采样状态信息,训练出一个不断趋近目标函数分布的建议采样分布,实现从建议分布函数中采样,代替复杂的目标函数分布。

 【数之道】马尔可夫链蒙特卡洛方法是什么?十五分钟理解这个数据科学难点_哔哩哔哩_bilibili

MCMC和Importance Sampling思路的区别

这两者都是为了解决针对复杂分布的积分问题。由于目标分布太过于复杂,不但解析形式的积分没法计算,连对其采样都很困难。MCMC的思路是通过构造马尔可夫链的方式,得到 *目标分布* 的 *关联* 的样本,而Importance Sampling的思路则是转而对一个简单的分布( *测试分布* )进行采样,得到 *独立* 的样本,然后在计算积分的时候对采样点分配适当的权重,从而得到对原始积分的近似解。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值