3.1 定义目标:让真实数据具有低能量#

前几章引入了两个关键视角:统计物理的 概率框架(第 1 章)和循环神经网络的 架构原则(第 2 章)。现在,我们把它们统一到 基于能量的模型(Energy-Based Models, EBMs) 之下。本节定义驱动所有基于能量模型(包括玻尔兹曼机)的核心学习目标:塑造能量景观,使真实数据位于深谷中,而其他构型处于更高位置。

基于能量的建模范式#

基于能量的模型由一个标量 能量函数 Eθ(x)E_\theta(\mathbf{x}) 定义,该函数由参数 θ\theta 参数化,并为变量的每个可能构型 x\mathbf{x} 分配一个实值能量。对于玻尔兹曼机,x\mathbf{x} 表示可见单元和隐藏单元的联合状态;但这一框架可以广泛应用于任何结构化构型。

能量函数通过 玻尔兹曼分布(或 Gibbs 分布)诱导出概率分布:

Pθ(x)=exp(Eθ(x))Zθ,whereZθ=x~exp(Eθ(x~))P_\theta(\mathbf{x}) = \frac{\exp\left(-E_\theta(\mathbf{x})\right)}{Z_\theta}, \quad \text{where} \quad Z_\theta = \sum_{\tilde{\mathbf{x}}} \exp\left(-E_\theta(\tilde{\mathbf{x}})\right)

这一形式完成了一个根本转换:低能量对应高概率。模型会根据自身内部标准,把更高似然分配给它认为“好”或“兼容”的构型。

关键在于,能量函数是 未归一化的:它提供构型之间的相对排序,但如果没有配分函数 ZθZ_\theta,并不能直接给出概率。这既是优点(能量函数设计灵活),也是挑战(ZθZ_\theta 难以计算)。

学习目标:最大似然#

给定从未知数据分布 Pdata(x) P_{\text{data}}(\mathbf{x}) 独立采样得到的训练集 D={x(1),x(2),,x(M)} \mathcal{D} = \{\mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \ldots, \mathbf{x}^{(M)}\} ,学习目标是调整参数 θ \theta ,使模型分布 Pθ(x) P_\theta(\mathbf{x}) 尽可能接近 Pdata P_{\text{data}}

衡量这种接近性的标准准则是 最大似然估计(MLE)。我们希望找到使观测数据在模型下概率最大的参数:

θ=argmaxθm=1MPθ(x(m))=argmaxθm=1MlogPθ(x(m))\theta^* = \arg\max_\theta \prod_{m=1}^M P_\theta(\mathbf{x}^{(m)}) = \arg\max_\theta \sum_{m=1}^M \log P_\theta(\mathbf{x}^{(m)})

等价地,我们最小化 负对数似然

L(θ)=1Mm=1MlogPθ(x(m))\mathcal{L}(\theta) = -\frac{1}{M} \sum_{m=1}^M \log P_\theta(\mathbf{x}^{(m)})

代入 Pθ P_\theta 的玻尔兹曼分布形式:

logPθ(x)=Eθ(x)logZθ\log P_\theta(\mathbf{x}) = -E_\theta(\mathbf{x}) - \log Z_\theta

于是负对数似然变为:

L(θ)=1Mm=1MEθ(x(m))+logZθ\mathcal{L}(\theta) = \frac{1}{M} \sum_{m=1}^M E_\theta(\mathbf{x}^{(m)}) + \log Z_\theta

与 KL 散度的联系

  1. MLE 目标在信息论中还有更深层的解释。最小化负对数似然 等价于 最小化数据分布到模型分布的 Kullback-Leibler(KL)散度

  2. 它可以改写为:

其中 H(Pdata)=Edata[logPdata(X)]H(P_{\text{data}}) = -\mathbb{E}_{\text{data}}[\log P_{\text{data}}(\mathbf{X})] 是数据分布的熵,与 θ\theta 无关。因此,最小化 KL(PdataPθ)\text{KL}(P_{\text{data}} \parallel P_\theta) 等价于最大化期望对数似然 f(θ)f(\theta)

与 KL 散度的联系#

MLE 目标在信息论中还有更深层的解释。最小化负对数似然 等价于 最小化数据分布到模型分布的 Kullback-Leibler(KL)散度

KL(PdataPθ)=x~Pdata(x~)logPdata(x~)Pθ(x~)\text{KL}(P_{\text{data}} \parallel P_\theta) = \sum_{\tilde{\mathbf{x}}} P_{\text{data}}(\tilde{\mathbf{x}}) \log \frac{P_{\text{data}}(\tilde{\mathbf{x}})}{P_\theta(\tilde{\mathbf{x}})}

它可以改写为:

KL(PdataPθ)=Edata[logPθ(X)]H(Pdata)\text{KL}(P_{\text{data}} \parallel P_\theta) = -\mathbb{E}_{\text{data}}[\log P_\theta(\mathbf{X})] - H(P_{\text{data}})

其中 H(Pdata)=Edata[logPdata(X)]H(P_{\text{data}}) = -\mathbb{E}_{\text{data}}[\log P_{\text{data}}(\mathbf{X})] 是数据分布的熵,与 θ\theta 无关。因此,最小化 KL(PdataPθ)\text{KL}(P_{\text{data}} \parallel P_\theta) 等价于最大化期望对数似然 f(θ)=Edata[logPθ(X)]=1Mm=1MlogPθ(x(m))f(\theta) = \mathbb{E}_{\text{data}}[\log P_\theta(\mathbf{X})] = \frac{1}{M} \sum_{m=1}^M \log P_\theta(\mathbf{x}^{(m)})

这个等价关系说明:MLE 本质上是在匹配分布,也就是把模型分布 PθP_\theta 训练得在 KL 散度意义下尽可能接近经验数据分布。

几何直觉:塑造能量景观#

可以把能量景观看作定义在所有构型空间上的可变形表面。初始时,该表面可能是平坦的(所有构型能量和概率相近),也可能任意褶皱。

f(θ)=Edata[logPθ(X)]=Edata[Eθ(X)]logZθ\nabla f(\theta) = \mathbb{E}_{\text{data}}[\nabla \log P_\theta(\mathbf{X})] = -\mathbb{E}_{\text{data}}[\nabla E_\theta(\mathbf{X})] - \nabla \log Z_\theta

学习通过反复执行两类操作进行:

logZθ=1Zθx~exp(Eθ(x~))Eθ(x~)=Eθ[Eθ(X)]\nabla \log Z_\theta = \frac{1}{Z_\theta} \sum_{\tilde{\mathbf{x}}} \exp(-E_\theta(\tilde{\mathbf{x}})) \nabla E_\theta(\tilde{\mathbf{x}}) = \mathbb{E}_\theta[\nabla E_\theta(\mathbf{X})]

挖掘:在训练样本所在位置向下挖,降低能量以形成吸引盆地。

f(θ)=Edata[Eθ(X)]+Eθ[Eθ(X)]\nabla f(\theta) = -\mathbb{E}_{\text{data}}[\nabla E_\theta(\mathbf{X})] + \mathbb{E}_\theta[\nabla E_\theta(\mathbf{X})]

抬升:在其他区域抬高景观,防止模型给没有数据的区域分配高概率。

对数似然梯度#

如果改用对数似然 f(θ)f(\theta) 而不是负对数似然 L(θ)\mathcal{L}(\theta),梯度符号会相反:

f(θ)wij=XiXjdataXiXjmodel\frac{\partial f(\theta)}{\partial w_{ij}} = \langle X_i X_j \rangle_{\text{data}} - \langle X_i X_j \rangle_{\text{model}}

这种对比形式,即 数据分布 下期望与 模型分布 下期望之间的差,是所有玻尔兹曼机学习算法的数学核心。第一项降低观测数据构型的能量;第二项提高模型当前认为可能的构型的能量。

特殊情形:仅含可见单元的玻尔兹曼机#

对于只有可见单元、没有隐藏单元的玻尔兹曼机,梯度可以化为特别直观的形式。代入能量函数 Eθ(x)=bx12xWxE_\theta(\mathbf{x}) = -\mathbf{b}^\top \mathbf{x} - \frac{1}{2} \mathbf{x}^\top \mathbf{W} \mathbf{x},并对权重 wijw_{ij} 求导,可得:

其中 XiXjdata\langle X_i X_j \rangle_{\text{data}} 表示可见单元被固定到数据时,单元 iijj 活动乘积的期望(正相);XiXjmodel\langle X_i X_j \rangle_{\text{model}} 表示网络从自身平衡分布自由采样时的期望乘积(负相)。这个简单表达式直接捕捉了对比学习的本质:强化数据中出现的共激活,抑制模型自身“幻想”中产生的共激活。

  • 特殊情形:仅含可见单元的玻尔兹曼机

  • 对于只有可见单元、没有隐藏单元的玻尔兹曼机,梯度可以化为特别直观的形式。代入能量函数 Eθ(x)=bx12xWxE_\theta(\mathbf{x}) = -\mathbf{b}^\top \mathbf{x} - \frac{1}{2} \mathbf{x}^\top \mathbf{W} \mathbf{x},并对权重 wijw_{ij} 求导,可得:

其中 XiXjdata\langle X_i X_j \rangle_{\text{data}} 表示可见单元被固定到数据时,单元 iijj 活动乘积的期望(正相);XiXjmodel\langle X_i X_j \rangle_{\text{model}} 表示网络从自身平衡分布自由采样时的期望乘积(负相)。这个简单表达式直接捕捉了对比学习的本质:强化数据中出现的共激活,抑制模型自身“幻想”中产生的共激活。

fθ=1Mm=1MEθ(x(m))θ+EPθ[Eθ(x)θ]\frac{\partial f}{\partial \theta} = -\frac{1}{M} \sum_{m=1}^M \frac{\partial E_\theta(\mathbf{x}^{(m)})}{\partial \theta} + \mathbb{E}_{P_\theta} \left[ \frac{\partial E_\theta(\mathbf{x})}{\partial \theta} \right]

为什么真实数据应具有低能量?

“让真实数据具有低能量”不是任意选择;它直接来自最大似然原则,以及能量与概率之间的指数关系。除了数学上的必然性,这一目标还有多个直观和实践优势:

未归一化的灵活性:设计能量函数时无需担心归一化。构型上的任意可微函数都可以作为能量,因此可融入领域知识、约束与结构化架构。

为什么真实数据应具有低能量?#

“让真实数据具有低能量”不是任意选择;它直接来自最大似然原则,以及能量与概率之间的指数关系。除了数学上的必然性,这一目标还有多个直观和实践优势:

  1. 未归一化的灵活性:设计能量函数时无需担心归一化。构型上的任意可微函数都可以作为能量,因此可融入领域知识、约束与结构化架构。

  2. 自然处理不确定性:在没有观测数据的区域,模型能量可以保持较高,对应较低概率。模型不会被迫在未观测区域做出任意预测。

  3. 通过下降生成:训练完成后,可以从随机构型出发,在能量景观上执行随机下降过程生成新样本。这会产生学习分布下的典型构型。

  4. 可组合性:能量函数可以相加组合。如果 E1(x)E_1(\mathbf{x})E2(x)E_2(\mathbf{x}) 建模数据的不同方面,则 E1+E2E_1 + E_2 定义了一个专家乘积模型,可同时捕捉多种约束。

  5. 物理合理性:基于能量的视角把学习与退火、相变等成熟物理过程连接起来,为理解模型行为提供丰富概念词汇。

挑战:配分函数梯度#

基于能量目标的优雅伴随着计算代价。梯度包含模型分布下的期望:

EPθ[Eθ(x)θ]=x~Pθ(x~)Eθ(x~)θ\mathbb{E}_{P_\theta} \left[ \frac{\partial E_\theta(\mathbf{x})}{\partial \theta} \right] = \sum_{\tilde{\mathbf{x}}} P_\theta(\tilde{\mathbf{x}}) \frac{\partial E_\theta(\tilde{\mathbf{x}})}{\partial \theta}

对所有可能构型求和,对任何非平凡模型都是不可处理的。我们既无法精确计算,也无法枚举所有构型来近似它。

这种不可处理性是定义基于能量学习领域的核心计算挑战。几乎所有训练玻尔兹曼机的实用算法,都可以理解为近似这一模型期望的策略。

后续章节将深入讨论这些策略:

与判别式学习的联系#

把基于能量的生成式目标与前馈分类器中更熟悉的 判别式 目标进行对比,能够进一步加深理解。

在判别模型中,例如逻辑回归或多层感知机分类器,我们直接建模条件分布 P(yx)P(y \mid \mathbf{x}),而不建模输入分布 P(x)P(\mathbf{x})。能量函数定义在联合空间 (x,y)(\mathbf{x}, y) 上,给定输入时某个标签的概率为:

P(yx)=exp(E(x,y))yexp(E(x,y))P(y \mid \mathbf{x}) = \frac{\exp(-E(\mathbf{x}, y))}{\sum_{y'} \exp(-E(\mathbf{x}, y'))}

关键是,此时配分函数只对固定输入 x\mathbf{x} 下的可能标签 yy' 求和。该求和通常是可处理的(例如有限类别集合)。判别式训练 不需要 对所有构型 x\mathbf{x} 的不可处理求和。

这解释了为什么判别模型在监督学习中如此成功:它们完全绕开了配分函数瓶颈。但代价是,它们无法生成新输入、补全缺失数据或从无标签样本中学习。

基于能量的生成模型接受配分函数的全部复杂性,因为它们的目标是建模整个数据分布,而不只是类别之间的决策边界。回报是模型更加丰富和灵活,能够进行无监督学习、生成以及任意方向的推断。

小结#

  • 基于能量的模型 通过 Pθ(x)exp(Eθ(x))P_\theta(\mathbf{x}) \propto \exp(-E_\theta(\mathbf{x})) 定义概率分布,将低能量与高概率联系起来。

  • 学习目标是 最大似然,它分解为降低数据平均能量,同时控制配分函数。

  • 负对数似然的梯度包含 数据项(易计算)和 模型期望(无法精确计算)。

  • 学习可以几何地理解为 雕塑能量景观:降低数据点处的盆地,同时抬高周围地形。

  • 模型期望的不可处理性是核心计算挑战,并推动了 对比散度 等近似方法。

  • 生成式基于能量模型通过建模完整联合分布区别于判别模型,以配分函数不可处理性为代价,获得生成与无监督学习能力。