基于能量的无监督学习(Energy-Based Unsupervised Learning)算法原理与训练机制
题目描述
在深度学习中,无监督学习旨在从未标注的数据中发现结构、模式或特征表示。传统的生成模型,如变分自编码器(VAE)和生成对抗网络(GAN),为无监督学习提供了强大工具。而基于能量的模型(Energy-Based Model, EBM) 提供了另一种框架,其核心思想是为每个数据点分配一个“能量”,使得数据分布区域具有低能量,其他区域具有高能量。本题目旨在详细讲解如何利用能量函数进行无监督表示学习,特别是其核心的训练目标、困难(如配分函数的计算)以及现代高效的训练方法。
解题过程与原理
第一步:核心概念与建模
-
能量函数:EBM的核心是一个可学习的标量函数 \(E_{\theta}(x)\),称为能量函数。它由深度神经网络参数化,输入是数据点 \(x\)(如图像)。能量 \(E_{\theta}(x)\) 并非概率,而是一个标量。其基本假设是:在数据分布 \(p_{data}(x)\) 上的样本,其能量值应该较低;不在数据分布上的样本,其能量值应该较高。
-
从能量到概率:为了得到可解释的概率分布,我们通过吉布斯分布(Gibbs Distribution)将能量转换为概率:
\[ p_{\theta}(x) = \frac{e^{-E_{\theta}(x)}}{Z(\theta)} \]
其中,$Z(\theta) = \int e^{-E_{\theta}(x)} dx$ 称为**配分函数(Partition Function)**。这个函数的作用是对所有可能的 $x$ 进行归一化,使得 $p_{\theta}(x)$ 成为一个有效的概率分布(积分和为1)。从公式可以看出,能量越低,概率越大。
- 关键挑战:直接评估和优化 \(p_{\theta}(x)\) 是极其困难的,因为 \(Z(\theta)\) 涉及对整个高维输入空间的积分,通常是无法计算(intractable) 的。因此,无法像监督学习那样直接计算对数似然(log-likelihood)\(\log p_{\theta}(x)\) 并进行梯度下降。
第二步:核心训练目标——最大似然估计的变体
我们的目标仍然是让模型分布 \(p_{\theta}(x)\) 尽可能接近真实数据分布 \(p_{data}(x)\)。这等价于最大化数据样本的期望对数似然:
\[\max_{\theta} \mathbb{E}_{x \sim p_{data}} [\log p_{\theta}(x)] \]
将 \(p_{\theta}(x) = e^{-E_{\theta}(x)} / Z(\theta)\) 代入:
\[\log p_{\theta}(x) = -E_{\theta}(x) - \log Z(\theta) \]
那么,目标函数为:
\[\mathcal{L}(\theta) = \mathbb{E}_{x \sim p_{data}} [-E_{\theta}(x)] - \log Z(\theta) \]
第三步:梯度的推导与“正负样本”视角
对目标函数关于参数 \(\theta\) 求梯度:
\[\nabla_{\theta} \mathcal{L}(\theta) = -\mathbb{E}_{x \sim p_{data}} [\nabla_{\theta} E_{\theta}(x)] - \nabla_{\theta} \log Z(\theta) \]
这里关键的一步是计算 \(\nabla_{\theta} \log Z(\theta)\)。利用对数配分函数梯度的标准恒等式:
\[\nabla_{\theta} \log Z(\theta) = \nabla_{\theta} \log \int e^{-E_{\theta}(x)} dx = \frac{\int (-\nabla_{\theta} E_{\theta}(x)) e^{-E_{\theta}(x)} dx}{Z(\theta)} = -\mathbb{E}_{x \sim p_{\theta}} [\nabla_{\theta} E_{\theta}(x)] \]
其中,\(\mathbb{E}_{x \sim p_{\theta}}\) 表示从模型当前分布 \(p_{\theta}(x)\) 中采样得到的样本的期望。
将上述结果代回梯度公式,得到最大似然估计的梯度:
\[\nabla_{\theta} \mathcal{L}(\theta) = -\mathbb{E}_{x^+ \sim p_{data}} [\nabla_{\theta} E_{\theta}(x^+)] + \mathbb{E}_{x^- \sim p_{\theta}} [\nabla_{\theta} E_{\theta}(x^-)] \]
这是一个极其重要的公式,它揭示了EBM训练的本质:
- “正样本”梯度:第一项 \(-\mathbb{E}_{x^+ \sim p_{data}} [\nabla_{\theta} E_{\theta}(x^+)]\)。它作用于真实数据 \(x^+\),其更新方向是降低这些数据的能量(因为梯度前面是负号,我们减去该项的梯度,等价于向降低 \(E_{\theta}(x^+)\) 的方向更新)。
- “负样本”梯度:第二项 \(+\mathbb{E}_{x^- \sim p_{\theta}} [\nabla_{\theta} E_{\theta}(x^-)]\)。它作用于从模型分布中采样得到的样本 \(x^-\),其更新方向是提高这些样本的能量(因为梯度前面是正号,我们加上该项的梯度,等价于向提高 \(E_{\theta}(x^-)\) 的方向更新)。
直观理解:模型被训练来“推低”真实数据的能量,同时“推高”模型自己生成的、不像真实数据的样本的能量。
第四步:核心难题与求解——如何获得“负样本” \(x^- \sim p_{\theta}\)
梯度公式很漂亮,但问题在于如何从模型分布 \(p_{\theta}(x) \propto e^{-E_{\theta}(x)}\) 中采样 \(x^-\)。这是一个在复杂、高维、非归一化分布上的采样问题,直接采样非常困难。现代方法主要依赖于马尔可夫链蒙特卡洛(MCMC) 采样技术,特别是朗之万动力学(Langevin Dynamics)。
- 朗之万动力学采样:这是一种基于梯度的MCMC方法,可以从 \(p_{\theta}(x)\) 中近似采样。它的更新规则是:
\[ \tilde{x}_{t+1} = \tilde{x}_t - \frac{\lambda}{2} \nabla_{\tilde{x}_t} E_{\theta}(\tilde{x}_t) + \sqrt{\lambda} \epsilon_t, \quad \epsilon_t \sim \mathcal{N}(0, I) \]
其中,$\tilde{x}_t$ 是MCMC链在步骤 $t$ 的状态,$\lambda$ 是步长,$\epsilon_t$ 是高斯噪声。这个公式的直觉是:沿着能量函数下坡方向($-\nabla_x E$)走,同时加入噪声帮助探索。理论上,当 $t \to \infty$ 且步长安排得当时,$\tilde{x}_t$ 的分布会收敛到 $p_{\theta}(x)$。
-
训练流程(对比散度,Contrastive Divergence, k-step CD):在实践中,我们不会运行非常长的MCMC链(计算代价太高)。经典的对比散度方法及其现代变体采用了一个关键技巧:用真实数据点作为MCMC链的起点,然后只运行少数几步(比如k=1, 5, 10)朗之万更新,得到近似负样本 \(\tilde{x}_k\)。这是因为在训练初期,模型分布很粗糙,但从数据点出发只需几步就能到达一个“看起来合理但不是真实数据”的样本(一个“负样本”)。
- 正样本:直接从训练集中取一个批次的数据 \(x^+\)。
- 负样本:对每个正样本 \(x^+\),运行k步朗之万动力学,得到 \(\tilde{x}^-\)。
\[ \tilde{x}_0 = x^+ \]
\[ \tilde{x}_{i+1} = \tilde{x}_i - \frac{\lambda}{2} \nabla_{\tilde{x}_i} E_{\theta}(\tilde{x}_i) + \sqrt{\lambda} \epsilon_i, \quad i=0,...,k-1 \]
\[ x^- = \tilde{x}_k \]
* **参数更新**:使用上面推导的梯度公式进行随机梯度下降更新:
\[ \theta \leftarrow \theta - \eta ( -\nabla_{\theta} E_{\theta}(x^+) + \nabla_{\theta} E_{\theta}(x^-) ) \]
即,用正样本的负能量梯度减去负样本的负能量梯度。
第五步:算法优势、变体与总结
-
优势:
- 灵活性:能量函数 \(E_{\theta}(x)\) 可以采用任意可微分的神经网络结构,不受像VAE需要编码器-解码器、GAN需要生成器-判别器这种固定架构的限制。
- 兼容性:可以方便地引入条件信息 \(y\),变成条件EBM:\(p_{\theta}(x|y) = e^{-E_{\theta}(x, y)} / Z(\theta|y)\),适用于各种条件生成任务。
- 单一模型:与GAN不同,EBM是单一模型,同时扮演“概率分布”和“特征提取器”的角色,没有对抗训练带来的模式崩溃和不稳定问题。
-
挑战与变体:
- MCMC采样效率:k步CD采样是计算瓶颈,尤其对于高维数据。研究提出了持续性对比散度、并行采样、更好的噪声调度等加速方法。
- 分数匹配:分数匹配是另一种训练EBM的方法,它通过直接匹配数据分布的“分数”(即梯度 \(\nabla_x \log p_{data}(x)\)),避免了显式计算负样本梯度,与朗之万动力学有深刻联系。扩散模型可视为一种特殊形式的EBM/分数匹配模型。
- 联合嵌入架构:近年来,像JEM(Joint Energy-based Model)等工作将分类器网络重新解释为能量函数(将logits视为负能量),从而在同一个模型上实现判别和生成,展现了EBM框架的统一潜力。
总结:基于能量的无监督学习通过定义一个可学习的能量函数来隐式地建模数据分布。其训练目标本质上是最大似然估计,梯度更新表现为“压低真实数据能量,抬高模型样本能量”。其核心计算挑战在于从模型分布中采样负样本,这通常通过以真实数据为起点的、短步长的朗之万动力学MCMC采样来解决。该框架为构建灵活、统一的无监督学习模型提供了强大的理论基础。