Chapter 18 Confronting the Partition Function
18.1 引言
在概率图模型中,归一化常数(normalization constant)是连接未归一化概率分布与真实概率分布的关键桥梁。对于一个基于能量的模型(Energy-Based Model, EBM),其未归一化概率分布定义为:
其中 \(E(\mathbf{x}; \boldsymbol{\theta})\) 是能量函数,\(\boldsymbol{\theta}\) 是模型参数。真实的概率分布需要通过归一化得到:
配分函数(partition function) \(Z(\boldsymbol{\theta})\) 的定义为:
对于离散变量,求积分变为求和。配分函数的存在使得概率分布能够正确归一化,但其计算复杂性是困扰整个深度学习领域的根本性问题之一。
当能量函数由神经网络定义时,配分函数通常无法解析求解。以受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)为例,其配分函数涉及对所有可见单元和隐藏单元配置的求和:
随着单元数量增加,配置空间呈指数增长,使得精确计算变得不可行。
本章系统探讨解决配分函数问题的多种方法,包括配分函数的估计方法、对数配分函数梯度的近似计算,以及无需计算配分函数的替代训练准则。
18.2 配分函数在归一化中的作用
18.2.1 归一化常数的意义
配分函数的核心作用在于确保概率分布的归一化性质:
这保证了模型定义的分布确实是一个合法的概率密度函数。没有归一化,所有基于概率的推理(如边缘化、条件概率计算、期望估计)都将失去数学基础。
18.2.2 对数似然梯度与配分函数
在实际应用中,我们通常通过最大化对数似然来学习模型参数。对数似然为:
对参数求梯度:
其中配分函数的对数梯度为:
这揭示了一个关键问题:对数似然的梯度涉及对模型分布 \(p(\mathbf{x})\) 下的期望计算,而 \(p(\mathbf{x})\) 本身依赖于配分函数,形成了一个循环依赖。
18.2.3 配分函数与模型容量
配分函数的大小直接反映了模型的"尖锐程度"(sharpness)。当 \(Z(\boldsymbol{\theta})\) 很小(相对于 \(\tilde{p}\) 的峰值)时,模型分布在少数区域有很高的概率;当 \(Z(\boldsymbol{\theta})\) 很大时,分布更加均匀。这种尖锐程度与模型的表达能力密切相关,也是学习过程中需要控制的关键因素。
18.3 配分函数的计算方法
18.3.1 精确枚举法
对于状态空间有限且较小的模型,精确枚举是可行的。配分函数通过穷举所有可能配置计算:
适用场景:可见单元和隐藏单元数量较小时(如小规模RBM、二值图像模型)。
局限性:当单元数为 \(n\) 时,复杂度为 \(O(2^n)\)。对于具有数百个单元的真实模型,此方法完全不可行。
变体优化:如果能量函数具有可分解结构(如RBM的层内无连接),可以利用和-积算法或动态规划在多项式时间内计算配分函数。但这种结构假设在复杂神经网络中通常不成立。
18.3.2 退火重要性采样(Annealed Importance Sampling, AIS)
AIS是一种蒙特卡洛方法,通过引入一系列中间分布逐步"退火",有效探索分布空间。
算法核心:定义一组中间分布 \(p_0, p_1, \ldots, p_K\),其中 \(p_0 = q\)(简单提议分布),\(p_K = \tilde{p}\)(目标未归一化分布)。典型设置:
其中 \(\{\beta_i\}\) 是退火调度schedule。
重要性权重:
配分函数估计:
其中 \(N\) 是独立链的数量。
优点:能够有效处理多模态分布;在温和条件下提供下界估计。
缺点:需要选择合适的退火调度和提议分布;对于高度尖锐的分布仍可能失效。
18.3.3 嵌套采样(Nested Sampling)
嵌套采样由Skilling提出,是一种专门用于计算归一化常数的贝叶斯方法。
核心思想:从概率质量最大的区域开始,逐步向外扩展采样。
算法流程:
- 从先验分布采样 \(N\) 个点 \(\{\mathbf{x}_i\}\)
- 计算每个点的似然 \(L_i = \tilde{p}(\mathbf{x}_i)\)
- 将具有最小似然的点替换为从优先分布(prior)采样并通过MCMC使其达到当前似然阈值的点
- 更新权重和配分函数估计
配分函数估计:
其中 \(\Delta X_i\) 是每步采样的体积权重。
特点:能够追踪 \(Z\) 的不确定性;不依赖于传统的MCMC收敛诊断;但计算量仍然较大。
18.3.4 交换重要性采样(Exchange Importance Sampling)
交换采样(也称为交换MCMC或平行回火)是处理配分函数估计的另一类方法。
平行回火框架:同时运行多个不同"温度"的链。
温度参数化:定义分布族 \(p_\beta(\mathbf{x}) \propto \tilde{p}(\mathbf{x})^\beta\),其中 \(\beta \in (0,1]\)。
- \(\beta = 1\):目标分布
- \(\beta < 1\):更平滑的分布,更易采样
交换机制:周期性地尝试交换相邻温度链的状态,接收概率:
配分函数关系:
通过不同温度下的期望比值,可以递推计算完整配分函数。
18.4 对数配分函数梯度的计算
18.4.1 对比散度(Contrastive Divergence, CD)
对比散度是训练RBM最广泛使用的算法,由Hinton于2002年提出。
核心思想:用马尔可夫链的短期运行代替真实配分函数梯度中的期望。
CD-k算法:
- 从数据样本 \(\mathbf{x}^{(0)}\) 开始
- 使用Gibbs采样运行 \(k\) 步:\(\mathbf{x}^{(t)} \sim p(\mathbf{x}^{(t-1)})\)
- 用 \(\mathbf{x}^{(k)}\) 近似计算负相期望
梯度近似:
完整CD梯度:
优点:计算效率高;只需运行少量Gibbs步骤;实践中效果良好。
缺点:\(k\) 的选择影响近似质量;梯度存在偏差;对于非平稳分布可能不稳定。
CD-1的特殊性:当 \(k=1\) 时,CD使用一步Gibbs采样。由于RBM的条件独立性(给定可见单元时隐藏单元条件独立,反之亦然),CD-1只需一次同步更新即可完成。
18.4.2 随机最大似然(Stochastic Maximum Likelihood, SML)
SML(也称持续对比散度,Persistent CD)是CD的改进版本。
核心思想:不从头开始Gibbs采样,而是维护一组"持久"(persistent)的样本来近似负相期望。
算法流程:
- 初始化持久链状态 \(\{\mathbf{x}^{(i)}\}_{i=1}^{N_p}\)
- 对每批数据,持久链独立运行几步Gibbs采样
- 使用持久链的当前状态估计负相期望
与CD的区别:CD使用数据初始化链,每次迭代可能引入偏差;SML假设链足够慢变化,持久链可以追踪模型分布的变化。
方差控制:持久链可能"卡住"在分布的某个模式中。改进方法包括: - 监控链的接受率 - 周期性重初始化 - 使用更大的步长或更灵活的提议分布
18.4.3 持续对比散度(Persistent Contrastive Divergence, PCD)
PCD与SML在概念上非常接近,有时被视为同一方法的不同名称。主要区别在于: - PCD强调持久链的概念 - SML强调最大似然目标下的随机优化
实践经验: - 使用多个持久链(通常等于minibatch大小) - Gibbs步数通常设为 \(k=1\) 或 \(k=10\) - 学习率需要仔细调整以维持链的有效性
18.5 比率匹配(Ratio Matching)
18.5.1 基本原理
比率匹配是一种无需计算配分函数的训练准则,直接对二元分布的比值进行匹配。
观察:对于二元分布 \(p(\mathbf{x})\),比率函数定义为:
其中 \(\bar{\mathbf{x}}\) 是 \(\mathbf{x}\) 按位取反得到的配置。
比率匹配目标:使模型分布与数据分布的比率函数一致。
损失函数:
其中单样本损失:
更具体地:
其中 \(s_i(\mathbf{x}) = \log \tilde{p}(\mathbf{x}) - \log \tilde{p}(\bar{\mathbf{x}}^i)\),\(\bar{\mathbf{x}}^i\) 表示第 \(i\) 位取反的配置。
18.5.2 理论性质
无需归一化:比率匹配损失只涉及未归一化概率的比值,因此不依赖于配分函数。
一致性:在大数据极限下,比率匹配估计满足一致性。
与得分匹配的关系:比率匹配可视为得分匹配(score matching)的二元离散版本。
计算效率:每次损失计算需要 \(O(n)\) 次网络前向传播(每个比特位一次)。
18.5.3 应用场景
比率匹配特别适用于: - 二值图像模型 - 二值自编码器 - 稀疏编码模型的离散版本 - 任何具有二元变量的无向概率模型
18.6 噪声对比估计(Noise-Contrastive Estimation, NCE)
18.6.1 NCE的核心思想
NCE将密度估计问题转化为二分类问题,通过区分真实数据与噪声来学习模型参数。
数据-噪声二分类:对于每个真实样本 \(\mathbf{x} \sim p_{\text{data}}\),生成 \(k\) 个噪声样本 \(\mathbf{y}_i \sim q\)(噪声分布)。任务是区分真实数据(标签=1)和噪声(标签=0)。
分类模型:
对数损失:
其中 \(c(\mathbf{x}) = \log p_{\boldsymbol{\theta}}(\mathbf{x}) - \log q(\mathbf{x})\),\(\sigma\) 是sigmoid函数。
18.6.2 与配分函数的关系
注意 \(p_{\boldsymbol{\theta}}(\mathbf{x}) = \tilde{p}_{\boldsymbol{\theta}}(\mathbf{x}) / Z(\boldsymbol{\theta})\),因此:
关键性质:在NCE损失中,配分函数可以作为额外参数 \(c = -\log Z\) 一起优化。这意味着:
其中 \(s_{\boldsymbol{\theta}}(\mathbf{x}) = \log \tilde{p}_{\boldsymbol{\theta}}(\mathbf{x})\)。
估计一致性:当噪声分布 \(q\) 足够灵活且样本量足够大时,NCE能够一致地估计真实参数和配分函数的对数值。
18.6.3 噪声分布选择
噪声分布的选择对NCE性能至关重要:
要求: - 易于采样 - 易于计算概率密度 - 与数据分布有一定重叠
常用选择: - 均匀分布(适用于二值数据) - 高斯分布(适用于连续数据) - 数据驱动噪声:通过数据增强或扰动生成噪声样本 - 训练早期可使用简单噪声,后期切换到更复杂的噪声
噪声比率 \(k\):通常选择 \(k \in [1, 100]\)。较大的 \(k\) 提供更多的对比信号,但每个样本的计算成本增加。
18.6.4 NCE的优缺点
优点: - 无需计算配分函数 - 训练稳定(梯度方向清晰) - 可以同时估计配分函数 - 适用于任意未归一化概率模型
缺点: - 需要选择合适的噪声分布 - 噪声分布的选择可能引入偏差 - 每个真实样本需要生成 \(k\) 个噪声样本,计算成本增加 - 当数据分布复杂时,可能需要复杂的噪声模型
18.7 得分匹配(Score Matching)
18.7.1 得分函数
得分匹配优化的目标函数涉及得分函数(score function):
得分函数指向对数概率增长最快的方向。
18.7.2 得分匹配损失
得分匹配损失定义为模型分布与数据分布的得分函数期望差异的平方范数:
其中 \(\psi^*(\mathbf{x})\) 是真实数据分布的得分函数(未知)。
展开形式(假设数据维度为 \(n\)):
去掉常数项后,等价的优化目标为:
18.7.3 无需配分函数的原因
得分匹配的核心洞察是:数据分布的得分函数在优化过程中会自然消去。
具体而言,损失中出现的 \(\psi^*(\mathbf{x})\) 是一个与参数 \(\boldsymbol{\theta}\) 无关的量(虽然未知)。通过适当的数学变换,可以将优化目标重写为不显式包含 \(\psi^*\) 的形式:
其中
由于 \(\log p(\mathbf{x}; \boldsymbol{\theta}) = \log \tilde{p}(\mathbf{x}; \boldsymbol{\theta}) - \log Z(\boldsymbol{\theta})\),而 \(Z(\boldsymbol{\theta})\) 不依赖于 \(\mathbf{x}\),因此:
这意味着配分函数在求导过程中被消去,得分匹配无需显式计算 \(Z\)。
18.7.4 得分匹配的应用
得分匹配主要应用于: - 能量模型:训练未归一化的能量函数 - EBM训练:作为CD等方法的替代 - 去噪自编码器:与重构误差有深层联系 - 生成模型:作为GAN框架中判别器的理论基础
18.8 应用实例:RBM、DBM与NADE
18.8.1 受限玻尔兹曼机(Restricted Boltzmann Machine, RBM)
RBM是配分函数问题最具代表性的应用场景。
RBM能量函数:
其中 \(\mathbf{v} \in \{0,1\}^{n_v}\),\(\mathbf{h} \in \{0,1\}^{n_h}\)。
配分函数:
由于层内无连接,配分函数可以分解:
但这仍需要指数级求和,难以精确计算。
RBM的训练方法总结:
| 方法 | 正相梯度 | 负相梯度估计 | 配分函数处理 |
|---|---|---|---|
| CD-k | \(\mathbb{E}_{\text{data}}[\cdot]\) | Gibbs链\(k\)步 | 近似 |
| PCD | \(\mathbb{E}_{\text{data}}[\cdot]\) | 持久链 | 近似 |
| 比率匹配 | 直接 | 无需 | 不需要 |
| NCE | 二分类目标 | 噪声分布 | 联合优化 |
| 得分匹配 | 得分函数 | 无需 | 不需要 |
18.8.2 深度玻尔兹曼机(Deep Boltzmann Machine, DBM)
DBM通过堆叠多个RBM层形成,其配分函数问题更加严峻。
DBM能量函数:
对于两层DBM:
配分函数:
层间连接使得无法像RBM那样分解为独立组件的乘积。
训练策略: - 贪婪逐层预训练:先训练第一层RBM,再固定其参数训练第二层,以此类推 - 平均场近似:用变分推断近似后验分布 - wake-sleep算法:结合识别和生成网络 - CD/PCD微调:预训练后使用对比散度方法精调
近似配分函数估计: - 变分上界 - AIS(需要更多的中间分布) - 嵌套采样(计算成本高)
18.8.3 NADE(Neural Autoregressive Density Estimator)
NADE是一种基于神经网络的密度估计器,采用自回归分解。
NADE概率模型:
每个条件分布由神经网络参数化:
其中隐藏层激活:
与配分函数的关系:
NADE的优势在于其归一化性质是内在的:通过链式法则分解,每个条件分布都是归一化的(sigmoid输出),因此整体分布自动归一化,无需额外的配分函数。
这与RBM形成鲜明对比:RBM的联合分布需要除以全局配分函数,而NADE通过局部归一化实现全局归一化。
训练NADE:
直接最大化对数似然:
由于每个因子自动归一化,梯度计算不需要估计配分函数。
NADE的变体: - CKNADE:复值NADE - RNADE:实值NADE(使用混合-of-高斯输出) - PixelRNN:将NADE思想与RNN结合用于图像生成 - ** MADE**:Masked Autoencoder for Distribution Estimation
18.8.4 方法比较总结
| 模型 | 归一化方式 | 配分函数问题 | 训练方法 |
|---|---|---|---|
| RBM | 全局除以\(Z\) | 必须处理 | CD/PCD/SML |
| DBM | 全局除以\(Z\) | 严重 | 逐层预训练+微调 |
| NADE | 局部归一化 | 无 | 直接MLE |
| 得分匹配EBM | 无显式归一化 | 不需要 | 得分匹配损失 |
| NCE模型 | 比例归一化 | 联合优化 | 二分类损失 |
18.9 公式总结表
| 概念 | 公式 | 说明 |
|---|---|---|
| 配分函数 | \(Z(\boldsymbol{\theta}) = \int \exp(-E(\mathbf{x};\boldsymbol{\theta}))d\mathbf{x}\) | 归一化常数 |
| 归一化分布 | \(p(\mathbf{x};\boldsymbol{\theta}) = \frac{1}{Z}\tilde{p}(\mathbf{x})\) | 真实概率分布 |
| 对数似然梯度 | \(\frac{\partial\log Z}{\partial\boldsymbol{\theta}} = \mathbb{E}_p[\frac{\partial E}{\partial\boldsymbol{\theta}}]\) | 关键等式 |
| CD-k梯度 | \(\Delta\boldsymbol{\theta} \approx \mathbb{E}_d[\frac{\partial E}{\partial\boldsymbol{\theta}}] - \mathbb{E}_k[\frac{\partial E}{\partial\boldsymbol{\theta}}]\) | \(k\)步Gibbs近似 |
| AIS权重 | \(w = \prod_{i=1}^{K}\frac{p_i(\mathbf{x}_i)}{p_{i-1}(\mathbf{x}_i)}\) | 退火重要性采样 |
| NCE损失 | \(\mathcal{L}_{\text{NCE}} = -\mathbb{E}_d[\log\sigma(c)] - k\mathbb{E}_n[\log(1-\sigma(c))]\) | \(c = \log\tilde{p} - \log q\) |
| 得分匹配 | \(\ell_{\text{SM}} = \sum_i(\frac{\partial^2\log p}{\partial x_i^2} + \frac{1}{2}(\frac{\partial\log p}{\partial x_i})^2)\) | 无需\(Z\) |
| 比率匹配 | \(\ell_{\text{RM}} = \sum_i(\sigma(s_i) - x_i)^2\) | \(s_i = \log\tilde{p}(\mathbf{x}) - \log\tilde{p}(\bar{\mathbf{x}}^i)\) |
| RBM配分函数 | \(Z = \sum_\mathbf{v}\exp(\mathbf{b}^\top\mathbf{v})\prod_j(1+\exp(c_j+\mathbf{W}_{j,:}\mathbf{v}))\) | 可分解但仍指数级 |
| NADE概率 | \(p(\mathbf{x}) = \prod_{i=1}^n \sigma(\mathbf{W}_{:,i}\cdot\mathbf{h}_i+b_i)\) | 局部归一化 |
18.10 结论与展望
本章系统探讨了概率图模型中配分函数带来的核心挑战及其多种解决方案。
主要方法回顾:
- 精确计算:仅适用于极小规模模型
- 蒙特卡洛估计:AIS、嵌套采样、交换采样等提供渐近无偏估计,但方差可能较大
- 近似梯度方法:CD、PCD、SML等通过短期马尔可夫链近似负相梯度,实际应用最广泛
- 替代目标函数:比率匹配、NCE、得分匹配等完全避开配分函数计算,拓宽了训练可能性
- 模型设计策略:如NADE的局部归一化,从根本上消除全局配分函数问题
实践建议:
- RBM/DBM训练优先选择PCD或CD-k
- 需要稳定训练时考虑NCE
- 二值模型可尝试比率匹配
- 生成连续数据时得分匹配是良好起点
- 模型设计时可考虑局部归一化架构
开放问题:
- 更高效的配分函数估计方法
- 方差控制技术的进一步改进
- 深度生成模型中配分函数问题的理论理解
- 不同方法的渐近收敛性质比较
配分函数问题贯穿于整个深度生成模型领域,其解决方法的演进也推动了如变分推断、蒙特卡洛方法、替代损失函数等领域的快速发展。理解这些问题对于深入掌握现代深度学习至关重要。