1. 引言
在本文中,我们将介绍一种采样技术:Gibbs 采样(Gibbs Sampling)。在统计学中,采样是从总体中选取子集以估计其特征的一种方法。通过采样,我们可以在无法测量整个总体的情况下,快速收集数据并获得有效洞察。
Gibbs 采样是一种从多维概率分布中获取样本的技术,属于马尔可夫链蒙特卡洛方法(Markov Chain Monte Carlo, MCMC)的一类。它特别适用于联合分布难以直接采样但条件分布已知的情况。
2. 什么是采样?
采样是从一个总体中选择子集的方法。通过合适的采样策略,我们可以选择一个能代表整体的小样本进行分析。这样得出的结论可以推广到整个总体。
常见的采样方法包括:
- 随机采样(Random Sampling)
- 系统采样(Interval Sampling)
- 分层采样(Stratified Sampling)
- 聚类采样(Cluster Sampling)
采样在很多场景中都有应用。例如:
- 在城市调查中,采样一组人群来代表整个城市居民
- 在机器学习中,使用分层交叉验证(Stratified Cross-Validation)来划分训练集与验证集
- 在工厂中,食品技术员通过抽检少量产品来判断整批产品的质量
3. Gibbs 采样简介
Gibbs 采样是一种从多维联合分布中采样的方法。它属于马尔可夫链蒙特卡洛(MCMC)算法,因此是一种依赖性采样(Dependent Sampling)。这意味着生成的样本之间存在依赖关系。
✅ 优点:当我们无法直接从联合分布采样时,但可以轻松从每个变量的条件分布中采样时,Gibbs 采样非常有用。
❌ 缺点:由于样本之间存在依赖性,通常需要丢弃初始阶段的一些样本(称为 burn-in 阶段),以减少初始值对最终结果的影响。
4. Gibbs 采样原理
Gibbs 采样的核心思想是:
给定一个多维联合分布,从条件分布中采样比从联合分布中采样更容易。
例如,假设我们想从联合分布 $ P(x, y) $ 中采样,但直接采样困难。Gibbs 采样建议我们依次从条件分布 $ P(x|y) $ 和 $ P(y|x) $ 中采样。
具体步骤如下:
- 初始化一个随机样本 $ (x^{(0)}, y^{(0)}) $
- 从 $ P(x | y^{(0)}) $ 中采样得到 $ x^{(1)} $
- 从 $ P(y | x^{(1)}) $ 中采样得到 $ y^{(1)} $
- 重复步骤 2~3,直到获得足够多的样本
推广到多维情况,我们依次对每个变量进行条件采样,保持其他变量不变。
5. Gibbs 采样定义(算法流程)
假设我们想从联合分布 $ P(x_1, x_2, \dots, x_d) $ 中采样 n 个样本,记第 i 次采样为 $ \mathbf{X}^{(i)} = (x_1^{(i)}, x_2^{(i)}, \dots, x_d^{(i)}) $。Gibbs 采样算法如下:
- 初始化 $ \mathbf{X}^{(0)} = (x_1^{(0)}, x_2^{(0)}, \dots, x_d^{(0)}) $
- 对于每次迭代 $ t = 1 $ 到 $ n $:
- 对每个变量 $ j = 1 $ 到 $ d $:
- 从条件分布 $ P(x_j | x_1^{(t)}, \dots, x_{j-1}^{(t)}, x_{j+1}^{(t-1)}, \dots, x_d^{(t-1)}) $ 中采样得到 $ x_j^{(t)} $
- 对每个变量 $ j = 1 $ 到 $ d $:
6. Gibbs 采样示例
我们通过一个简单示例来说明 Gibbs 采样的过程。
假设我们有两个事件 A 和 B,其联合概率如下:
- $ P(A \text{ 且 } B) = 0.2 $
- $ P(A \text{ 且 } \neg B) = 0.4 $
- $ P(\neg A \text{ 且 } B) = 0.3 $
- $ P(\neg A \text{ 且 } \neg B) = 0.1 $
我们希望从这个联合分布中采样,生成一系列样本 $ (x, y) $,其中 $ x, y \in {0, 1} $,分别表示 A 和 B 是否发生。
6.1 计算条件概率
我们先计算以下条件概率:
- $ P(A=1|B=1) = 0.4 $
- $ P(A=0|B=1) = 0.6 $
- $ P(A=1|B=0) = 0.8 $
- $ P(A=0|B=0) = 0.2 $
- $ P(B=1|A=1) = 0.333 $
- $ P(B=0|A=1) = 0.666 $
- $ P(B=1|A=0) = 0.75 $
- $ P(B=0|A=0) = 0.25 $
6.2 Gibbs 采样过程
假设初始样本为 $ (x^{(0)}, y^{(0)}) = (1, 0) $
从 $ P(x|y^{(0)}=0) $ 中采样 $ x^{(1)} $:
- $ P(x=1|y=0) = 0.8 $,$ P(x=0|y=0) = 0.2 $
- 假设我们采样到 $ x^{(1)} = 1 $
从 $ P(y|x^{(1)}=1) $ 中采样 $ y^{(1)} $:
- $ P(y=1|x=1) = 0.333 $,$ P(y=0|x=1) = 0.666 $
- 假设我们采样到 $ y^{(1)} = 1 $
此时,新的样本为 $ (x^{(1)}, y^{(1)}) = (1, 1) $,样本集变为 $ S = {(1, 0), (1, 1)} $
重复上述过程,我们就可以生成更多样本。
7. 总结
在本文中,我们介绍了采样的基本概念,并重点讲解了 Gibbs 采样这一技术。
✅ 适用场景:当联合分布难以直接采样,但每个变量的条件分布已知且易于采样时,Gibbs 采样非常有效。
⚠️ 注意事项:
- 采样结果之间存在依赖关系,需进行 burn-in 处理
- 条件分布必须正确推导并实现
- 适用于离散和连续变量,但连续变量时需使用适当的采样方法(如 Metropolis-Hastings)
Gibbs 采样是贝叶斯推断、隐变量模型、图像处理等领域的重要工具,值得深入理解和掌握。