MCMC抽样算法
目的
给定一个已知的概率分布函数 ,对随机变量 进行采样,使其满足 概率分布。
原理
一个马尔科夫链,对应的概率转移矩阵为 ,如果其具有 非周期性 且任意两个状态之间都是 连通 的 ,则不论初始的状态概率分布向量 取什么值,在 n 步转移后,状态的概率分布一定会稳定到一个向量 , 就称为该马尔可夫链的平稳分布。
非周期性:对于状态i,d为集合 的最大公约数,如果 ,则该状态为非周期的。
互通:两个状态 连通指,状态 可以通过有限的 步转移,到达状态
如果一个马尔科夫链满足 细致平稳条件,则其一定是收敛的,也就是会达到上述的平稳分布 。注意:细致平稳条件只是马尔科夫链收敛的充分条件,不是必要条件。
细致平稳条件:,也就是从状态 转移到状态 的数量和从状态 转移到状态 的数量相一致,也就相互抵消,所以数量不发生改变。
因此如果能够构造一个概率转移矩阵为 的马尔科夫链,而该马尔科夫链的平稳分布为已知概率分布 。任意的初始状态 ,在该马尔科夫链上进行状态转移,得到一系列随机序列 。如果从第 步开始该马尔科夫链收敛,则从 开始得到的状态都满足概率分布 ,也就是我们需要采样的满足给定概率分布 的随机变量。
假设我们已知某个稳定分布为 的马氏链的概率转移矩阵为 ,而为了将其改造为稳定分布为 的马氏链,也就是要满足细致平稳条件,我们在式子两侧分别乘上一个接受概率 ,如下式所示:
其中最简单的为了使上式成立的方法,就是令 、 。
而接受概率也就是在进行状态转移后,增加一步判断是否接受本次转移,如果接受则状态成功转移,否则维持原来的状态。
算法
输入:概率分布
输出:满足概率分布 的样本集合
步骤:
- 选取某个概率分布函数 ,其与 具有相同的定义
- 任意在定义域内选取一个初始状态
- 对于每一步迭代,当前状态为 ,执行操作
- 采样
- 计算
- 从均匀分布采样
- 如果 ,接受转移,令
- 否则拒绝转移,令
注意:
1. 通常选取高斯分布或者某些已知采样方法的分布为 ;
2. 如果当前采样结果 不依赖于状态 ,则 ;
3. 拒绝转移代表本次采样结果不准确,不予使用
收敛检测方法
- 迹图
- 遍历均值图
- 蒙特卡洛误差
- Gelman-Rubin方法
其他相关算法
M-H算法
- 改进点:针对MCMC中存在的问题 —— 接受概率
a 太小,导致收敛速度太慢 - 方法:相同比例地扩大接受概率
aij 与aji ,使得max(aij,aji)=1
Gibbs采样算法
- 改进点:提升高维情况下的采样效率
- 方法:轮换或者随机选取一个维度,再在该维度上进行状态转移