MCMC采样

来源:互联网 发布:金手指手机炒股软件 编辑:程序博客网 时间:2024/05/17 07:09

在介绍《Fast and Provably Good Seedings for K-means》时,作者使用MCMC采样来近似D2sampling 的过程,下面我们来介绍一下MCMC算法。

Monte Carlo Approach

在介绍MCMC算法之前,我们先来看蒙特卡洛随机模拟算法。

假设我们需要求解下面这个积分问题:

m=baf(x)d(x)

而这个f(x) 的积分形式比较难求,我们可以通过数值模拟解法近似求解。常用的方法是蒙特卡洛算法:

m=baf(x)q(x)q(x)d(x)

式中的q(x) 可以看作 x 在区间上的分布,当我们使用 q(x) 采集足够的样本后,便可以使用均值来近似积分:

m=1ni=1Nf(xi)q(xi)

以上便是蒙特卡洛算法的核心思想,具体操作时就是需要考虑如何从给定的概率分布 (x) 中采集足够的样本。下面我们来介绍两种简单的采样算法。

采样算法

CDF

假设我们想以 p(x) 的概率采集一些数据,

  1. 我们可以先求出它的累积概率函数:
    F(x)=bap(x)d(x)   s.t.a<x<b

    2.然后使用均匀分布产生一个样本点 u
    uu(a,b)

    3.最后我们求解出反函数F1(u)
    x=F1(u)

    4.x 便可以看作是按照 p(x) 采样得到的样本点

我们可以看一个正态分布的例子:

这里写图片描述

左图是概率密度函数PDF-p(x),右图是对应的累计概率密度函数CDF-F(x).
我们先随机生成一个样本点 u=0.8413F1(u)=1,所以1就是相应的样本点。
直觉上看,我们随机选择(0,1)之间的点,大部分点都i会落在区间(0.2,0.8) 之间,而与之对应的 F1(x) 则大部分落在(1,1)之间,这也对应了正态分布在(1,1)之间概率密度较大的事实。

这种方法只适用于简单的分布。

Markov Chain

对于某一些马尔科夫链,它能够收敛到一个平稳分布π(x),即:

π=πP

当马尔可夫链在第 n 个状态收敛之后,从 n+1 往后的状态都可以看作是平稳分布 π 的采样点。
所以为了构造一个以 π 为平稳分布的马尔科夫链,我们需要满足细致平衡条件:

π(i)P(i,j)=π(j)P(j,i)

Metropolis Sampler

这里写图片描述

M算法要求提案概率 q(x) 是对称的。

Metropolis-Hastings Sampler

这里写图片描述

MH算法加入了 α ,不要求提案概率是对称的,也能满足细致平衡条件。

这两个算法的区别在于提案概率是否是对称的。

原创粉丝点击