【深度学习】配分函数:近似最大似然与替代准则
作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。
之前的文章参考下面的链接:
【深度学习】蒙特卡罗方法:原理、应用与未来趋势
【深度学习】深度学习中的结构化概率模型:理论、方法与应用
【深度学习】表示学习:深度学习的数据解构与重构艺术
【深度学习】自编码器:数据压缩与特征学习的神经网络引擎
【深度学习】线性因子模型:数据降维与结构解析的数学透镜
【学习笔记】强化学习:实用方法论
【学习笔记】序列建模:递归神经网络(RNN)
【学习笔记】理解深度学习和机器学习的数学基础:数值计算
【学习笔记】理解深度学习的基础:机器学习
【学习笔记】深度学习网络-深度前馈网络(MLP)
【学习笔记】深度学习网络-正则化方法
【学习笔记】深度学习网络-深度模型中的优化
【学习笔记】卷积网络简介及原理探析
引言
在能量模型的学习过程中,配分函数(Partition Function) 始终是一道难以跨越的障碍。它决定了模型的归一化,却往往因维度过高而无法精确计算。这使得直接应用最大似然估计几乎不可行。为了应对这一挑战,研究者们发展出两条主要路径:一是通过近似方法来模拟最大似然的训练过程,例如对比散度(CD)、持续对比散度(PCD)等基于 MCMC 的技术;二是完全绕开配分函数,转而使用替代准则,如伪似然、得分匹配与噪声对比估计(NCE)。此外,在需要估计配分函数时,人们还引入了退火重要性采样(AIS)等高效的近似方法。本章将系统讨论这些方法,揭示在面对配分函数难题时,深度学习与统计建模领域所采取的多种策略。
第18章: 面对配分函数
│
├── 18.1 问题背景
│ └── 配分函数 Z(θ) 的难点:高维积分/求和 → 训练困难
│
├── 18.2 最大似然与 MCMC 学习
│ └── 正相 vs 负相梯度
│
├── 18.3 对比散度 (CD)
│ └── 从数据初始化短链 Gibbs 采样
│ └── 优点: 高效,广泛使用
│ └── 缺点: 偏差,探索不足
│
├── 18.4 持续对比散度 (PCD/SML)
│ └── 持续运行采样链,不从头重置
│ └── 优点: 更贴近模型分布
│
├── 18.5 快速 PCD (FPCD)
│ └── 引入“快参数”加速混合
│ └── 平衡采样效率和稳定性
│
├── 18.6 替代准则方法
│ ├── 伪似然 (Pseudolikelihood) —— 条件概率乘积
│ ├── 得分匹配 (Score Matching) —— 利用梯度,避开 Z(θ)
│ ├── 比率匹配 (Ratio Matching) —— 二值数据翻转概率比值
│ ├── 去噪得分匹配 (Denoising Score Matching) —— 与去噪自编码器相关
│ └── 噪声对比估计 (NCE) —— 转换为二分类问题,学习归一化常数
│
├── 18.11 配分函数的估计方法
│ ├── 重要性采样 (IS)
│ ├── 退火重要性采样 (AIS) —— 常用
│ ├── 桥采样 (Bridge Sampling)
│ └── 对数线性上下界
│
└── 18.12 总结├── 两大思路:│ 1) 近似最大似然 (CD/PCD/FPCD)│ 2) 替代训练准则 (NCE/Score Matching)└── 需要估计 Z(θ) 时 → AIS 等方法
18.1 Partition Function 的挑战
在许多概率模型中,我们并不能直接给出一个已经归一化的概率分布,而是定义一个未归一化的概率函数:
p~(x;θ)=exp(−E(x;θ))\tilde{p}(x;\theta) = \exp(-E(x;\theta)) p~(x;θ)=exp(−E(x;θ))
这里 E(x;θ)E(x;\theta)E(x;θ)是能量函数。
为了得到真正的概率分布,我们需要除以一个归一化常数(即配分函数):
p(x;θ)=p~(x;θ)Z(θ),Z(θ)=∑xp~(x;θ)p(x;\theta) = \frac{\tilde{p}(x;\theta)}{Z(\theta)}, \quad Z(\theta) = \sum_x \tilde{p}(x;\theta) p(x;θ)=Z(θ)p~(x;θ),Z(θ)=x∑p~(x;θ)
然而,问题在于:
- Z(θ)Z(\theta)Z(θ) 的计算往往不可行,因为它涉及对所有可能的 xxx 求和(或积分),状态空间往往是指数级别的。
- 在最大似然训练时,log-likelihood 的梯度包含两部分:
- 正相(positive phase):容易计算,直接依赖于观测数据。
- 负相(negative phase):涉及对整个模型分布的期望,必须用到 (Z(\theta)),计算代价极大。
因此,训练这类模型的难点,就是如何处理 partition function。
18.2 使用 MCMC 的原始学习算法
最直接的方法是使用**马尔可夫链蒙特卡洛(MCMC)**来近似负相的期望:
- 每次更新参数时,从某个初始化点开始运行一个马尔可夫链。
- 等待链收敛(burn-in),直到它接近目标分布。
- 从该链中采样,近似负相梯度。
这种方法理论上可行,但在实际中有巨大缺点:
- 每次参数更新都要重新从头运行一条马尔可夫链,开销非常大。
- 链收敛可能需要很长时间。
- 对于高维复杂模型,几乎不可用。
因此,这种**“朴素的 MCMC 学习”**在实际中不常使用,但它为后续改进(如 Contrastive Divergence)奠定了理论基础。
18.3 对比散度(Contrastive Divergence, CD)
Hinton 提出了一种称为 Contrastive Divergence (CD) 的近似方法,用于高效训练像 RBM(受限玻尔兹曼机)这样的能量模型。
核心思想是:
- 不必等到 MCMC 完全收敛。
- 直接从观测数据点初始化 Gibbs 采样链,只运行少量步骤(通常 1–5 步)。
- 这样得到的样本近似模型分布,用于估算负相梯度。
优点:
- 相比“原始 MCMC 学习”,大大降低了计算成本。
- 在实践中效果很好,因此成为训练 RBM 的标准方法。
缺点:
- 因为链没有完全混合,CD 可能无法探索模型分布中的所有模式。
- 它可能导致模型“忽视”数据之外的一些潜在状态(即虚假峰值),在生成任务中表现不佳。
18.4 持续对比散度(Persistent Contrastive Divergence, PCD / SML)
为了解决 CD 的偏差问题,提出了 Persistent Contrastive Divergence (PCD),又称 Stochastic Maximum Likelihood (SML)。
主要改进是:
- 不再每次都从数据点初始化链,而是保持一批马尔可夫链的状态跨迭代更新。
- 每次参数更新后,继续从上一次的状态开始采样,而不是重新开始。
这样做的好处:
- 链能够逐渐接近并跟随真实的模型分布,而不是被数据强行“重置”。
- 更适合训练复杂的能量模型。
18.5 快速持续对比散度(Fast Persistent Contrastive Divergence, FPCD)
在实践中,即使使用 PCD,马尔可夫链的混合速度依旧可能很慢。为此,提出了 FPCD:
- 将参数分为两类:
- 慢速参数:正常学习率更新,用于稳定收敛。
- 快速参数:采用更快的动态,用来加速 MCMC 混合。
- 在训练过程中,快速参数帮助采样更快遍历空间,而最终模型由慢速参数主导。
这种方法在一定程度上平衡了 高效采样 与 模型稳定性。
18.6 伪似然(Pseudolikelihood)
原文要点翻译:
- 在无向模型中,直接最大化对数似然很难,因为涉及到配分函数。
- 一种替代方法是最大化 伪似然(pseudolikelihood),它不是对完整联合分布求和,而是最大化每个变量在给定其余变量时的条件概率:
∏ip(xi∣x∖i;θ)\prod_i p(x_i \mid x_{\setminus i}; \theta) i∏p(xi∣x∖i;θ)
- 优点:
- 不需要计算配分函数,因为条件概率中的分母只涉及有限的状态。
- 在一些任务(如缺失值推断、标注任务)表现不错。
- 缺点:
- 伪似然与真实的对数似然不完全等价。
- 在某些情况下训练结果会偏离生成模型的真实分布。
18.7 得分匹配(Score Matching)
- 对于连续型随机变量,可以利用 得分函数(score function) 来规避配分函数:
∇xlogp(x;θ)=∇xlogp~(x;θ)\nabla_x \log p(x;\theta) = \nabla_x \log \tilde{p}(x;\theta) ∇xlogp(x;θ)=∇xlogp~(x;θ)
- 因为右边不涉及 Z(θ)Z(\theta)Z(θ),所以可以直接计算。
- Score Matching 通过最小化模型得分与数据分布得分的差异来进行训练。
优点:
- 不需要估计配分函数。
- 对连续数据集效果好。
缺点:
- 不适用于离散数据。
- 对深度模型效果有限。
18.8 比率匹配(Ratio Matching)
- Ratio Matching 是针对二值数据提出的替代方法。
- 它不是使用 log-likelihood,而是考虑单个比特翻转前后概率的比值:
p(x)p(x~)\frac{p(x)}{p(\tilde{x})} p(x~)p(x)
- 这样就避免了直接计算配分函数。
优点:
- 适合二进制输入的模型。
- 与 CD 类似,计算开销小。
缺点:
- 推理性能不如基于最大似然的方法。
18.9 去噪得分匹配(Denoising Score Matching)
- 在数据上添加少量噪声,再训练模型去恢复原始数据分布。
- 这与**去噪自编码器(Denoising Autoencoder)**的思想密切相关。
- 实际上,得分匹配和去噪自编码器之间有等价关系。
优点:
- 避免了计算配分函数。
- 在连续数据的学习任务中常用,效果良好。
18.10 噪声对比估计(Noise-Contrastive Estimation, NCE)
-
NCE 将生成建模问题转化为一个二分类问题。
-
做法:
- 从真实数据分布 pdatap_{data}pdata采样。
- 从某个已知的“噪声分布” pnp_npn采样。
- 训练一个分类器,判断样本来自数据分布还是噪声分布。
-
在训练过程中,引入一个额外参数c≈−logZ(θ)c \approx -\log Z(\theta)c≈−logZ(θ),让模型同时学习生成分布和归一化常数。
优点:
- 避免直接计算 Z(θ)Z(\theta)Z(θ)。
- 在大词汇表建模(如语言模型)中非常有效。
缺点:
- 仍然依赖噪声分布的选择。
- 如果噪声分布选得不好,估计会有偏差。
18.11 配分函数的估计方法
即使我们无法在训练中显式计算 Z(θ)Z(\theta)Z(θ),在一些情况下(如模型比较或模型选择),我们仍然需要估计配分函数或其对数。以下方法常用:
18.11.1 重要性采样(Importance Sampling)
- 核心思想是使用一个易于采样的分布 q(x)q(x)q(x),来近似计算目标分布的配分函数:
Z(θ)=∑xp~(x;θ)q(x)q(x)Z(\theta) = \sum_x \frac{\tilde{p}(x;\theta)}{q(x)} q(x) Z(θ)=x∑q(x)p~(x;θ)q(x)
- 通过采样 x∼qx \sim qx∼q,我们得到一个无偏估计。
- 问题在于:如果 qqq与目标分布差异过大,方差会极高。
18.11.2 退火重要性采样(Annealed Importance Sampling, AIS)
- AIS 结合了 退火(从简单分布逐步过渡到复杂分布)与 重要性采样。
- 做法是构造一系列中间分布:
pk(x)∝p~(x)βkq(x)1−βk,0=β0<β1<...<βK=1p_k(x) \propto \tilde{p}(x)^{\beta_k} q(x)^{1-\beta_k}, \quad 0=\beta_0 < \beta_1 < ... < \beta_K=1 pk(x)∝p~(x)βkq(x)1−βk,0=β0<β1<...<βK=1
- 通过逐渐“加热/冷却”参数,使采样过程更稳定。
- 这是目前估计配分函数最常用的方法之一。
18.11.3 桥采样(Bridge Sampling)与对数线性估计
- 桥采样在两个分布之间建立桥梁,减少方差。
- 对数线性方法利用 Jensen 不等式,得到配分函数的上下界。
- 这些方法适用于在两个模型间比较对数似然时。
18.12 总结
- 在能量模型中,配分函数是训练的最大难点。
- 我们有两大类解决思路:
- 近似最大似然:通过 MCMC(如 CD、PCD、FPCD)近似负相梯度。
- 替代准则:完全绕开配分函数(如伪似然、得分匹配、NCE)。
- 在需要估计Z(θ)Z(\theta)Z(θ) 时,常用 AIS 等采样方法。
整体而言,配分函数为能量模型训练提供了一整套策略,核心思想就是:要么近似计算负相,要么找到能绕过配分函数的训练目标。