3.3 对比散度#
3.2 难以精确处理的配分函数问题 已经说明,由于配分函数不可处理,玻尔兹曼机的精确最大似然学习在计算上不可行。梯度中的模型期望项需要从平衡分布 中采样,而这又要求 Markov 链运行到收敛,过程极其缓慢。本节介绍 对比散度(contrastive divergence, CD),这一使玻尔兹曼机在实际应用中可用的算法突破。CD 为梯度提供了简单高效的近似,绕开了平衡采样需求,以理论纯粹性换取经验有效性。
核心洞见:截断 Markov 链#
Geoffrey Hinton 于 2002 年提出对比散度,其关键观察是:我们不必把 Markov 链一直运行到平衡。相反,可以把链初始化在 数据点 上,只运行少量步骤,通常甚至只运行 一步,然后把得到的状态当作来自模型分布的近似样本。
为什么这会有效?考虑负对数似然梯度:
第一项是数据分布上的期望,易于计算。第二项才是困难所在。在对比散度中,我们用从数据初始化并经过 步 Gibbs 采样后得到的分布上的期望,替代模型期望。这给出 CD-k 更新规则:
直觉是,即使只运行几步,Markov 链也会从数据分布向模型分布移动。数据统计量与 步后统计量之间的差,可以近似真实梯度方向。令人惊讶的是,当 时,这个简单启发式已经足以训练有用的生成模型。
Note that this is equivalent to the standard CD update because .
用于训练受限玻尔兹曼机(RBM)或一般玻尔兹曼机的 CD-k 算法如下:
CD-k 算法细节#
用于训练受限玻尔兹曼机(RBM)或一般玻尔兹曼机的 CD-k 算法如下:
算法:对比散度(CD-k)
对每个训练样本 (可见状态):
正相:
将可见单元固定到数据向量 。
计算隐藏单元激活 ,并采样二值隐藏状态 。
记录外积 作为 正统计量。
负相(执行 步 Gibbs 采样):
对 到 :
采样可见重构 。
采样隐藏重构 。
记录外积 作为 负统计量。
权重更新:
用正、负统计量之间的差更新每个权重 :
其中 是学习率。偏置也用单元激活以类似方式更新。
局限与注意事项#
对比散度是实用近似,而非精确算法。它有若干已知局限:
偏差:CD 不产生真实对数似然梯度的无偏估计。小 时偏差可能很大,得到的参数也不是最大似然估计。学习到的模型未必给数据分配最高可能似然。
不是某个固定函数的严格梯度:当 时,CD 更新通常不是任何固定目标函数的梯度。这使理论分析困难,也使收敛监控更复杂。
从对比散度到现代近似#
CD 的成功启发了一系列相关算法,用以改进其局限:
持久对比散度(PCD):使用持久 Markov 链获得更好的负样本。
快速持久对比散度(FPCD):引入额外的快速学习权重以改善混合。
并行回火(Parallel Tempering):在不同温度运行多条链,以跨越能垒。
持久对比散度(PCD):一个重要变体,持久对比散度 会维护一组持久 Markov链,其状态会在权重更新之间保留。它不是每次都从数据重新初始化,而是让这些链继续演化。PCD产生的样本更接近真实模型分布,并能提升学习模型质量,尤其是在更深架构中。
实践实现:mini-batch 与采样#
实践中,期望 通常不是在完整数据集上计算,而是在包含 个样本的 mini-batch 上计算。这可以降低计算成本,并提供随机梯度,后者往往有助于逃离局部极小值。常见 mini-batch 大小在 10 到 100 之间。
对于负相中的 Gibbs 采样,通常会从数据出发运行 步(常见 )。这就是 Contrastive Divergence-(CD-)算法。它虽然并不严格遵循对数似然梯度,但实践效果良好。实现更新时,一个 mini-batch 上的权重变化为:
其中 是经过 步 Gibbs 采样后的最终状态。使用 mini-batch 对扩展到 MNIST 或 ImageNet 这类大型数据集非常关键。
效率提示:在代码中,尤其是 Python 中,应尽量使用矩阵运算对整个 mini-batch 做向量化计算,而不是逐样本循环。这通常能带来数量级的速度提升。
实践实现:mini-batch 与采样
实践中,期望 通常不是在完整数据集上计算,而是在包含 个样本的 mini-batch 上计算。这可以降低计算成本,并提供随机梯度,后者往往有助于逃离局部极小值。常见 mini-batch 大小在 10 到 100 之间。
小结#
对比散度(CD) 是训练玻尔兹曼机时对最大似然梯度的实用近似。
CD 用从数据初始化的 短 Markov 链 上的期望替代模型期望,通常只运行 步(常见 )。
CD-k 算法在 正相(固定到数据)和 负相(短暂自由运行重构)之间交替。
从几何上看,CD 加深数据点处的能量盆地,同时抬高其 MCMC 可达邻域中的能量。
分数匹配和噪声对比估计:如 3.2 难以精确处理的配分函数问题 所述,这类方法完全绕开了 MCMC 需求。
局限包括 偏差、 时缺少严格目标函数,以及潜在 模态塌缩。
从几何上看,CD 加深数据点处的能量盆地,同时抬高其 MCMC 可达邻域中的能量。#
CD 最小化的是 KL 散度之差,而不是直接最小化负对数似然。
局限包括 偏差、 时缺少严格目标函数,以及潜在 模态塌缩。
持久对比散度(PCD) 通过在更新之间维护持久 Markov 链来提高采样质量。
小结#
CD 使 RBM 和深度置信网络的实际训练成为可能,并在 2000 年代深度学习复兴中发挥了关键作用。
对比散度(CD) 是训练玻尔兹曼机时对最大似然梯度的实用近似。
CD 用从数据初始化的 短 Markov 链 上的期望替代模型期望,通常只运行 步(常见 )。
CD-k 算法在 正相(固定到数据)和 负相(短暂自由运行重构)之间交替。
从几何上看,CD 加深数据点处的能量盆地,同时抬高其 MCMC 可达邻域中的能量。
CD 最小化的是 KL 散度之差,而不是直接最小化负对数似然。
局限包括 偏差、 时缺少严格目标函数,以及潜在 模态塌缩。
持久对比散度(PCD) 通过在更新之间维护持久 Markov 链来提高采样质量。
Mini-batch 训练 和 向量化 是高效实现中的关键实践要点。