References:
【概述】
当随机变量 $X$ 服从多维目标分布的情况下,对这个多维目标分布抽样,一种方法是 单分量 Metropolis Hasting 算法 中介绍的单分量 MH 算法
另一种则是吉布斯吉布斯采样(Gibbs Sampling),其基本思路是:从联合概率分布定义满条件概率分布,然后依次对满条件概率分布进行抽样,进而得到样本序列
单分量 MH 算法适合于满条件概率分布不容易抽样的情况,此时使用容易抽样的条件分布作为提议分布,而吉布斯采样适合于满条件概率容易抽样的情况
【满条件分布】
MCMC 的目标分布通常是多元联合概率分布 $p(\mathbf{x})=p(x_1,x_2,\cdots,x_k)$,其中 $\mathbf{x}=(x_1,x_2,\cdots,x_k)^T$ 是 $k$ 维随机变量
令
若条件概率分布 $p(\mathbf{x}_I|\mathbf{x}_{-I})$ 中所有的 $k$ 个变量均出现,那么称该条件概率分布为满条件分布(Full Conditional Distribution)
满条件分布具备如下性质:
对任意的 $\mathbf{x},\mathbf{x}’\in\mathcal{X}$ 和 $I\subset K$,有:
且满足:
吉布斯采样正是通过满条件分布来对每一个维度的分量进行抽样
【基本思路】
假设多元随机变量的联合概率分布为 $p(\mathbf{x})=p(x_1,x_2,\cdots,x_k)$,吉布斯采样从一个初始样本 $\mathbf{x}^{(0)}=(x_1^{(0)},x_2^{(0)},\cdots,x_k^{(0)})^T$ 出发,不断进行迭代,每一次迭代得到联合分布的一个样本 $\mathbf{x}^{(i)}=(x_1^{(i)},x_2^{(i)},\cdots,x_k^{(i)})^T$,最终得到样本序列 $\{\mathbf{x}^{(0)},\mathbf{x}^{(2)},\cdots,\mathbf{x}^{(n)}\}$
在每次迭代中,依次对 $k$ 个随机变量中的一个变量进行随机抽样,若在第 $i$ 次迭代中,对第 $j$ 个变量进行随机抽样,那么抽样的分布是满条件概率分布 $p(x_j|x_{-j}^{(i)})$,其中 $x_{-j}^{(i)}$ 代表第 $i$ 次迭代中,分量 $j$ 以外的其他变量
设在第 $i-1$ 步得到样本 $(x_1^{(i-1)},x_2^{(i-1)},\cdots,x_k^{(i-1)})^T$,在第 $i$ 步,按照如下步骤进行随机抽样:
Step 1:对第一个变量按以下满条件概率分布随机抽样得到 $x_1^{(i)}$
Step 2:依次对 $j$ 个变量按以下满条件概率分布随机抽样得到 $x_j^{(i)}$
Step 3:对第 $k$ 个变量按以下满条件概率分布随机抽样得到 $x_k^{(i)}$
故可得到整体样本 $\mathbf{x}^{(i)}=(x_1^{(i)},x_2^{(i)},\cdots,x_k^{(i)})^T$
【与 MH 算法的联系】
吉布斯采样是单分量 MH 算法的特殊情况
令转移核为满条件概率分布 $p(x’_j|x_{-j})\neq0$,即:
并令提议分布是当前变量 $x_j$ 的满条件概率分布,即:
由于:
故对接受概率,有:
也就是说,依次按照单变量的满条件概率分布 $p(x’_j|x_{-j})$ 进行随机抽样,就能实现单分量 MH 算法
此外,需要注意的是,吉布斯采样对每次抽样的结果都接受,这一点与 MH 算法不同
【算法流程】
综上所述,吉布斯采样的算法流程如下
输入:目标概率分布的概率密度函数 $p(\mathbf{x})$,函数 $f(\mathbf{x})$
输出:$p(\mathbf{x})$ 的随机样本 $\{ \mathbf{x}^{(m+1)},\mathbf{x}^{(m+2)},\cdots,\mathbf{x}^{(n)} \}$,函数样本均值 $\hat{f}_{mn}$
参数:收敛步数 $m$,迭代步数 $n$
算法步骤:
Step 1:算法初始化,随机取得或人工定义第一个样本 $\mathbf{x}^{(0)}=(x_1^{(0)},x_2^{(0)},\cdots,x_k^{(0)})^T$
Step 2:对 $i=1,2,\cdots,n$ 循环执行
设第 $i-1$ 次迭代结束时的样本为 $\mathbf{x}^{(i-1)}=(x_1^{(i-1)},x_2^{(i-1)},\cdots,x_k^{(i-1)})^T$,则第 $i$ 次迭代进行如下几步操作
1)由满条件分布 $p(x_1|x_2^{(i-1)},x_3^{(i-1)},\cdots,x_k^{(i-1)})$ 抽取 $x_1^{(i)}$
2)由满条件分布 $p(x_2|x_1^{(i)},x_3^{(i-1)},\cdots,x_k^{(i-1)})$ 抽取 $x_2^{(i)}$
j)由满条件分布 $p(x_j|x_1^{(i)},x_2^{(i)},\cdots,x_{j-1}^{(i)},x_{j+1}^{(i-1)},\cdots,x_k^{(i-1)})$ 抽取 $x_j^{(i)}$
k)由满条件分布 $p(x_k|x_1^{(i)},x_2^{(i)},\cdots,x_{k-1}^{(i)})$ 抽取 $x_k^{(i)}$
得到第 $i$ 次迭代值 $\mathbf{x}^{(i)}=(x_1^{(i)},x_2^{(i)},\cdots,x_k^{(i)})^T$
Step 3:从样本集合 $\{ \mathbf{x}^{(0)},\mathbf{x}^{(1)},\cdots,\mathbf{x}^{(k)} \}$ 中得到样本集合 $\{ \mathbf{x}^{(m+1)},\mathbf{x}^{(m+2)},\cdots,\mathbf{x}^{(n)} \}$,并计算函数样本均值 $\hat{f}_{mn}$
【示例】
使用吉布斯采样,从以下二元正态分布中抽取随机样本
对于 $p(x_1,x_2)\sim N(0,\Sigma)$,条件概率分布为一元正态分布:
假设初始样本 $\mathbf{x}^{(0)}=(x_1^{(0)},x_2^{(0)})$,通过吉布斯采样,可以得到如下图所示的样本序列:
得到的样本集合 $\{ \mathbf{x}^{(m+1)},\mathbf{x}^{(m+2)},\cdots,\mathbf{x}^{(n)} \}$ 就是二元正态分布得多随机抽样
下图展示了吉布斯采样的迭代过程
单分量 MH 算法在抽样时,在样本间移动时可能会在某些点上停留(抽样被拒绝),而吉布斯采样在抽样时,会在样本点间持续移动