MCMC(三)蒙特卡洛之Gibbs采样

对于给定的概率分布p(x),我们希望能有便捷的方式生成它对应的样本。由于马氏链能收敛到平稳分布,于是一个很的漂亮想法是:如果我们
能构造一个转移矩阵为P的马氏链,使得该马氏链的平稳分布恰好是P(x),那么我们从任何一个初始状态 x 0 x_0 出发沿着马氏链转移,得到一个转移序列 x 0 , x 1 , x 2 , x n , x n + 1 x_0,x_1,x_2,\ldots x_n,x_{n+1} \ldots ,如果马氏链在第n步已经收敛了,于是我们就得到了 π ( x ) \pi(x) 的样本 x n , x n + 1 x_n,x_{n+1} \ldots

细致平稳条件

马氏链的收敛性质主要由转移矩阵P决定的,所以基于马氏链做采样的关键问题是如何构造转移矩阵P,使得平稳分布恰好是我们要的分布拭P(x)。如何能做到这一点呢?我们主要使用如下的定理:马尔科夫链的细致平稳条件。
如果非周期马尔科夫链的状态转移矩阵P和概率分布 π ( x ) \pi(x) 对于所有的i,j满足:
π ( i ) P ( i , j ) = π ( j ) P ( j , i ) \pi(i)P(i,j) = \pi(j)P(j,i)
则称概率分布 π ( x ) \pi(x) 是状态转移矩阵P的平稳分布.
证明很简单,由细致平稳条件有:
i = 1 π ( i ) P ( i , j ) = i = 1 π ( j ) P ( j , i ) = π ( j ) i = 1 P ( j , i ) = π ( j ) \sum\limits_{i=1}^{\infty}\pi(i)P(i,j) = \sum\limits_{i=1}^{\infty} \pi(j)P(j,i) = \pi(j)\sum\limits_{i=1}^{\infty} P(j,i) = \pi(j)
用矩阵表示就是:
π P = π \pi P=\pi
所以 π ( x ) \pi(x) 就是平稳分布.

Gibbs采样概述

在上一小节中,我们讲到了细致平稳条件:如果非周期马尔科夫链的状态转移矩阵P和概率分布 π ( x ) \pi(x) 对于所有的 i , j i,j 满足:
π ( i ) P ( i , j ) = π ( j ) P ( j , i ) \pi(i)P(i,j) = \pi(j)P(j,i) 则称概率分布 π ( x ) \pi(x) 是状态转移矩阵P的平稳分布。为了寻找合适的细致平稳条件,下面从二维数据开始。
假设 π ( x 1 , x 2 ) \pi(x_1,x_2) 是一个二维联合数据分布,观察第一个特征维度相同的两个点 A ( x 1 ( 1 ) , x 2 ( 1 ) ) A(x_1^{(1)},x_2^{(1)}) B ( x 1 ( 1 ) , x 2 ( 2 ) ) B(x_1^{(1)},x_2^{(2)}) ,容易发现下面两式成立:
π ( x 1 ( 1 ) , x 2 ( 1 ) ) π ( x 2 ( 2 ) x 1 ( 1 ) ) = π ( x 1 ( 1 ) ) π ( x 2 ( 1 ) x 1 ( 1 ) ) π ( x 2 ( 2 ) x 1 ( 1 ) ) \pi(x_1^{(1)},x_2^{(1)}) \pi(x_2^{(2)} | x_1^{(1)}) = \pi(x_1^{(1)})\pi(x_2^{(1)}|x_1^{(1)}) \pi(x_2^{(2)} | x_1^{(1)}) π ( x 1 ( 1 ) , x 2 ( 2 ) ) π ( x 2 ( 1 ) x 1 ( 1 ) ) = π ( x 1 ( 1 ) ) π ( x 2 ( 2 ) x 1 ( 1 ) ) π ( x 2 ( 1 ) x 1 ( 1 ) ) \pi(x_1^{(1)},x_2^{(2)}) \pi(x_2^{(1)} | x_1^{(1)}) = \pi(x_1^{(1)}) \pi(x_2^{(2)} | x_1^{(1)})\pi(x_2^{(1)}|x_1^{(1)}) 由于两式的右边相等,因此我们有: π ( x 1 ( 1 ) , x 2 ( 1 ) ) π ( x 2 ( 2 ) x 1 ( 1 ) ) = π ( x 1 ( 1 ) , x 2 ( 2 ) ) π ( x 2 ( 1 ) x 1 ( 1 ) ) \pi(x_1^{(1)},x_2^{(1)}) \pi(x_2^{(2)} | x_1^{(1)}) = \pi(x_1^{(1)},x_2^{(2)}) \pi(x_2^{(1)} | x_1^{(1)}) 也就是: π ( A ) π ( x 2 ( 2 ) x 1 ( 1 ) ) = π ( B ) π ( x 2 ( 1 ) x 1 ( 1 ) ) \pi(A) \pi(x_2^{(2)} | x_1^{(1)}) = \pi(B) \pi(x_2^{(1)} | x_1^{(1)}) ,观察上式再观察细致平稳条件的公式,我们发现在 x 1 = x 1 ( 1 ) x_1 = x_1^{(1)} 这条直线上,如果用条件概率分布 π ( x 2 x 1 ( 1 ) ) \pi(x_2| x_1^{(1)}) 作为马尔科夫链的状态转移概率,则任意两个点之间的转移满足细致平稳条件!同样的道理,在在 x 2 = x 2 ( 2 ) x_2 = x_2^{(2)} 这条直线上,如果用条件概率分布 π ( x 1 x 2 ( 1 ) ) \pi(x_1| x_2^{(1)}) 作为马尔科夫链的状态转移概率,则任意两个点之间的转移也满足细致平稳条件。那是因为假如有一点 C ( x 1 ( 2 ) , x 2 ( 1 ) ) C(x_1^{(2)},x_2^{(1)}) ,我们可以得到: π ( A ) π ( x 1 ( 2 ) x 2 ( 1 ) ) = π ( C ) π ( x 1 ( 1 ) x 2 ( 1 ) ) \pi(A) \pi(x_1^{(2)} | x_2^{(1)}) = \pi(C) \pi(x_1^{(1)} | x_2^{(1)}) 在这里插入图片描述
基于上面的发现,我们可以这样构造分布 π ( x 1 , x 2 ) \pi(x_1,x_2) 的马尔可夫链对应的状态转移矩阵P: P ( A B ) = π ( x 2 ( B ) x 1 ( 1 ) )      i f    x 1 ( A ) = x 1 ( B ) = x 1 ( 1 ) P(A \to B) = \pi(x_2^{(B)}|x_1^{(1)})\;\; if\; x_1^{(A)} = x_1^{(B)} =x_1^{(1)} P ( A C ) = π ( x 1 ( C ) x 2 ( 1 ) )      i f    x 2 ( A ) = x 2 ( C ) = x 2 ( 1 ) P(A \to C) = \pi(x_1^{(C)}|x_2^{(1)})\;\; if\; x_2^{(A)} = x_2^{(C)} =x_2^{(1)} P ( A D ) = 0      e l s e P(A \to D) = 0\;\; else 有了上面这个状态转移矩阵,我们很容易验证平面上的任意两点E,F,满足细致平稳条件: π ( E ) P ( E F ) = π ( F ) P ( F E ) \pi(E)P(E \to F) = \pi(F)P(F \to E)

二维Gibbs采样

利用上一节找到的状态转移矩阵,我们就得到了二维Gibbs采样,这个采样需要两个维度之间的条件概率。具体过程如下:
在这里插入图片描述

高维Gibbs采样

上面的这个算法推广到多维的时候也是成立的。比如一个n维的概率分布 π ( x 1 , x 2 , . . . x n ) \pi(x_1,x_2,...x_n) ,我们可以通过在n个坐标轴上轮换采样,来得到新的样本。对于轮换到的任意一个坐标轴 x i x_i 上的转移,马尔科夫链的状态转移概率为 P ( x i x 1 , x 2 , . . . , x i 1 , x i + 1 , . . . , x n ) P(x_i|x_1,x_2,...,x_{i-1},x_{i+1},...,x_n) ,即固定n−1个坐标轴,在某一个坐标轴上移动,具体过程如下:
在这里插入图片描述

Gibbs采样小结

由于Gibbs采样在高维特征时的优势,目前我们通常意义上的MCMC采样都是用的Gibbs采样。当然Gibbs采样是从M-H采样的基础上的进化而来的,同时Gibbs采样要求数据至少有两个维度,一维概率分布的采样是没法用Gibbs采样的。

发布了31 篇原创文章 · 获赞 5 · 访问量 2507

猜你喜欢

转载自blog.csdn.net/qq_40176087/article/details/105013468