前言
M-H采样已经可以很好的解决蒙特卡罗方法需要的任意概率分布的样本集的问题。但是M-H采样有两个缺点:一是需要计算接受率,在高维时计算量大。并且由于接受率的原因导致算法收敛时间变长。二是有些高维数据,特征的条件概率分布好求,但是特征的联合分布不好求。因此需要一个好的方法来改进M-H采样,这就是我们下面讲到的Gibbs采样。
重新寻找合适的细致平稳条件
之前在 MCMC 采样及 M-H 采样的时候提到一个细致平稳条件,其表述如下:
如果非周期马尔科夫链的状态转移矩阵P和概率分布π(x)对于所有的i,j满足:
π(i)P(i,j)=π(j)P(j,i)
则称概率分布π(x)是状态转移矩阵P的平稳分布。上式被称为细致平稳条件(detailed balance condition)。
现在我们换一个思路。
从二维的数据分布开始,假设π(x1,x2)是一个二维联合数据分布,观察第一个特征维度相同的两个点AA(x1(1),x2(1))和BA(x1(1),x2(2)),容易发现下面两式成立:
π(x1(1),x2(1))π(x2(2)∣x1(1))=π(x1(1))π(x2(1)∣x1(1))π(x2(2)∣x1(1))π(x1(1),x2(2))π(x2(1)∣x1(1))=π(x1(1))π(x2(2)∣x1(1))π(x2(1)∣x1(1))
由于两式的右边相等,因此我们有:
π(x1(1),x2(1))π(x2(2)∣x1(1))=π(x1(1),x2(2))π(x2(1)∣x1(1))
也就是:
π(A)π(x2(2)∣x1(1))=π(B)π(x2(1)∣x1(1))
观察上式再观察细致平稳条件的公式,我们发现在x1=x1(1)这条直线上,如果用条件概率分布π(x2∣x1(1))作为马尔科夫链的状态转移概率,则任意两个点之间的转移满足细致平稳条件!同样的道理,在x2=x2(1)这条直线上,如果用条件概率分布π(x1∣x2(1))作为马尔科夫链的状态转移概率,则任意两个点之间的转移也满足细致平稳条件。那是因为假如有一点C(x1(2),x2(1)),我们可以得到:
π(A)π(x1(2)∣x2(1))=π(C)π(x1(1)∣x2(1))
基于上面的发现,我们可以这样构造分布π(x1,x2)的马尔可夫链对应的状态转移矩阵P:
P(A→B)=π(x2(B)∣x1(1))ifx1(A)=x1(B)=x1(1)P(A→C)=π(x1(C)∣x2(1))ifx2(A)=x2(C)=x2(1)P(A→D)=0else
有了上面这个状态转移矩阵,我们很容易验证平面上的任意两点E,F,满足细致平稳条件:
π(E)P(E→F)=π(F)P(F→E)
###二维Gibbs采样
利用上一节找到的状态转移矩阵,我们就得到了二维Gibbs采样,这个采样需要两个维度之间的条件概率。
###多维Gibbs采样
##Gibbs采样小结
由于Gibbs采样在高维特征时的优势,目前我们通常意义上的MCMC采样都是用的Gibbs采样。当然Gibbs采样是从M-H采样的基础上的进化而来的,同时Gibbs采样要求数据至少有两个维度,一维概率分布的采样是没法用Gibbs采样的,这时M-H采样仍然成立。