MCMC抽样算法要点总结

MCMC抽样算法


目的

给定一个已知的概率分布函数 ,对随机变量 进行采样,使其满足 概率分布。


原理

一个马尔科夫链,对应的概率转移矩阵为 ,如果其具有 非周期性 且任意两个状态之间都是 连通 的 ,则不论初始的状态概率分布向量 取什么值,在 n 步转移后,状态的概率分布一定会稳定到一个向量 就称为该马尔可夫链的平稳分布。

非周期性:对于状态i,d为集合 的最大公约数,如果 ,则该状态为非周期的。

互通:两个状态 连通指,状态 可以通过有限的 步转移,到达状态


如果一个马尔科夫链满足 细致平稳条件,则其一定是收敛的,也就是会达到上述的平稳分布 注意:细致平稳条件只是马尔科夫链收敛的充分条件,不是必要条件。

细致平稳条件:,也就是从状态 转移到状态 的数量和从状态 转移到状态 的数量相一致,也就相互抵消,所以数量不发生改变。


因此如果能够构造一个概率转移矩阵为 的马尔科夫链,而该马尔科夫链的平稳分布为已知概率分布 。任意的初始状态 ,在该马尔科夫链上进行状态转移,得到一系列随机序列 。如果从第 步开始该马尔科夫链收敛,则从 开始得到的状态都满足概率分布 ,也就是我们需要采样的满足给定概率分布 的随机变量。

假设我们已知某个稳定分布为 的马氏链的概率转移矩阵为 ,而为了将其改造为稳定分布为 的马氏链,也就是要满足细致平稳条件,我们在式子两侧分别乘上一个接受概率 ,如下式所示:


其中最简单的为了使上式成立的方法,就是令

而接受概率也就是在进行状态转移后,增加一步判断是否接受本次转移,如果接受则状态成功转移,否则维持原来的状态。


算法

输入:概率分布

输出:满足概率分布 的样本集合

步骤:

  • 选取某个概率分布函数 ,其与 具有相同的定义
  • 任意在定义域内选取一个初始状态
  • 对于每一步迭代,当前状态为 ,执行操作
    • 采样
    • 计算
    • 从均匀分布采样
    • 如果 ,接受转移,令
    • 否则拒绝转移,令

注意:
1. 通常选取高斯分布或者某些已知采样方法的分布为 ;
2. 如果当前采样结果 不依赖于状态 ,则 ;
3. 拒绝转移代表本次采样结果不准确,不予使用


收敛检测方法

  1. 迹图
  2. 遍历均值图
  3. 蒙特卡洛误差
  4. Gelman-Rubin方法

其他相关算法

M-H算法

  • 改进点:针对MCMC中存在的问题 —— 接受概率 a 太小,导致收敛速度太慢
  • 方法:相同比例地扩大接受概率 aij aji ,使得 max(aij,aji)=1

Gibbs采样算法

  • 改进点:提升高维情况下的采样效率
  • 方法:轮换或者随机选取一个维度,再在该维度上进行状态转移

参考资料

  1. LDA-math-MCMC 和 Gibbs Sampling
  2. 马尔科夫链的性质
  3. 随机采样方法整理与讲解
  4. 贝叶斯集锦(3):从MC、MC到MCMC

你可能感兴趣的:(机器学习)