首页 > 教程攻略 > ai资讯 >基于能量的模型(EBM):用能量函数替代概率分布的建模框架

基于能量的模型(EBM):用能量函数替代概率分布的建模框架

来源:互联网 时间:2026-06-11 08:14:45

Yann LeCun 反复强调一个核心判断:当前大语言模型那种基于概率、逐 Token 预测的设计路线,很可能走不到人类水平的 AI。他的团队更看好另一条路——基于能量的模型(EBM)。

上图来自他十多年前的一篇论文。两者的区别很直观:给候选答案打分时,LLM 返回的是“概率”,EBM 返回的则是“能量”,能量最低的选项胜出。用个例子就清楚了。输入 X = “汽车有4个轮子吗?”,LLM 可能给出 p("是") = 0.9、p("否") = 0.1;而 EBM 则可能给出 E("是", X) = -3.1、E("否", X) = 0.4。谁的能量低,谁就是正确答案。

这两类模型的差别到底有多大?理论上,如果把 EBM 的输出做某种“归一化”,应该能得到 LLM 输出的概率。但差别恰恰就卡在归一化这一步。LLM 用 Softmax 保证所有概率之和为 1,EBM 则放开了这条约束。训练阶段不需要归一化、不需要计算概率,反而在高维连续空间里收获了更大的灵活性和可训练性。要知道,对连续数据(比如图像)的所有可能输出做归一化,本身就是一件极其困难的事——能绕开就绕开。

构建EBM模型

EBM 的思路是:给每个(可能的)数据点分配一个能量值,这个值是某个函数 E(x) 对输入数据点返回的一个标量。数据点出现的概率和这个标量成反比——能量越低,概率越高。反过来也成立。回想一下高中物理里的各种“能量”(势能、动能等),势能越低的系统通常越稳定,道理是一样的。

假设我们已经拿到了 E(x),能不能把它转换成概率?有时候确实需要这么做。因为两个独立训练的系统各自输出的能量,没有共同的校准基准,没法直接比较或合并;在做密度估计时,也需要概率这个形式。

密度估计是整个概率 AI 的核心主题。它假定存在一个随机过程,持续不断地产生可观测的数据点。密度估计的任务,就是根据已经观测到的数据,去“猜”出这个过程的概率密度函数(PDF)。一旦掌握了 PDF,数据的分布规律就清楚了——不仅能做预测,还能做生成。

理解数据生成过程的 PDF,已经远远超出了常规 AI 中“给定 X 预测 Y”的范畴。后者只是在估计某个过程的结果,并不尝试理解或建模整个过程的机制。生成,完全是另一码事。

寻找能量函数 E(x)

训练 EBM 的核心目标很明确:找到一个能量函数,能够为给定的 X 识别出最佳的 Y。换句话说,在一系列可能的 Y 值中,哪一个和当前的 X 最“兼容”?

合理的做法是训练一个深度神经网络,接收数据点(X 和 Y 的组合)作为输入,输出一个标量。X 和 Y 兼容性低时,输出高值;兼容性好时,输出低值。为了符号简洁,我们把能量函数的输入统一记作 x,即 E(x),这里的 x 就代表 X 和 Y 的组合。

训练方式也是常规套路:用大量数据样本,让模型学习能量函数 E(x) 的参数 θ,目标是让那些已经观测到的、合理的数据点能量低,而那些不太可能出现的数据点能量高。损失函数需要同时做两件事:压低正确答案的能量,同时抬高错误答案的能量。

一般性的理论到这里就够了,但接下来才进入更棘手的部分:寻找密度函数。

寻找概率密度函数(PDF)

目标是找到一个由 θ 参数化的概率密度函数 q(x):

能量函数 E(x) 的值域是 -∞ 到 +∞,取指数后输出自动变为正值——概率必须为正。至于为什么不直接约束 E(x) 本身为正?因为放开了限制,能让设计更自由,只要用 exp(E(x)) 保证输出为正就可以了。接下来就是做归一化:所有状态的概率之和(或积分)应该等于 1,分母中的 Z 干的就是这件事。这样 PDF 就搞定了。

这个 Z,大概是学概率模型的人最怕遇到的东西。它有好几个名字——配分函数、归一化常数——但无论叫什么都改变不了它出了名地难算这个事实。

至于指数前面那个负号,坦白讲,没什么功能性的意义,纯粹是惯例。去掉也不影响。

能量函数和密度函数的概念,到这里就基本说清楚了。

来自物理学的一点启发

上面的内容大量借鉴了物理学的思想。把墨水滴入水中,它会怎么扩散?过程本身是随机的,但宏观上系统总是从高能量状态向低能量状态演化。如果一个随机过程有 10 种可能的状态,每种状态各有其能量值,系统最终大概率会停留在能量最低的那个状态。能量其实是一种粗粒度的度量,它把某个状态内部所有微观过程的贡献浓缩成了一个数。

远在 AI 出现之前,Boltzmann 就发明了一种概率分布,用来描述热平衡中气体的统计力学行为。Gibbs 后来做了进一步的改进,这个分布被称为 Boltzmann 分布(也叫 Gibbs 分布)。它会给出系统处于某个状态的概率,这个概率是该状态能量和系统温度的函数。

p_i 是系统处于状态 i 的概率,ε_i 是该状态的能量,常数 k*T 暂时不重要。Boltzmann 分布说的事情很简单:能量低的状态,被占据的概率更高。要得到精确的概率值,除以归一化常数 Z 即可。而这个方程,和 EBM 的密度估计 q(x) 几乎一模一样——物理学的直觉和 EBM 的数学,最终走到了同一条路上。

训练EBM

LeCun 讨论了多种损失函数。这类任务天然适合对比训练方法:拿一对样本喂给模型,训练目标是让其中一个的能量高于另一个。这种对比性质很适合自监督训练。要绕开 Z 这个麻烦,可以构造只关心能量相对差异、不需要计算绝对概率的训练场景——比如取两个能量的比值,让 Z 在分子分母之间自行消掉。

最终目标是学到一个“能量景观”:高概率的数据点能量低,低概率的数据点能量高,全程不碰 Z。可选的算法有 Score Matching 一族以及其他几类方法。但问题来了:如果我们需要建模密度函数 q(x) 呢?

这意味着要计算精确概率,而不是相对概率。分母里的 Z 注定会让事情变得困难。精确计算需要遍历所有可能的数据配置,计算量是“不可解”的。绕过精确 Z 的常用办法,是用 MCMC 这类采样过程产生大量样本,对训练所需的对数似然梯度做近似估计。对数似然展开后,会有两个关键项:

第一项的梯度,把已观测数据点的能量往下压,让它们更可能出现。第二项,对数配分函数 Z 的梯度,则把其余所有位置的能量往上抬,防止模型给什么数据都打低能量。这一项实际上就是能量在模型当前分布上的平均梯度。

操作上可以这么理解:从模型中“生成”样本,和已观测的数据点混在一起训练,目的是让已观测数据点获得低能量、让模型生成的样本获得高能量。用 LeCun 讲课时的比喻来说,损失函数应该在能量景观中“雕刻”出地形——训练样本附近挖坑(能量低),其他地方填高。模型要学会在观测数据所在位置“挖洞”,在其余位置“堆土”。详细的推导见附录。

回头再看看 LeCun 论文中训练 EBM 的原始图示:

Y_i 是正确答案,Y_i 上方带 hash 标记的则是“最具迷惑性的错误答案”——所有错误答案中能量最低的那个。在连续情况下,定义正误很直观:Y_i 一定距离内的答案算正确,超出该距离的算错误。设计良好的损失函数,会在学习过程中压低 E(Y_i, X_i),同时抬高错误答案的能量,尤其是 E(Y¯_i, X_i)。

不过,生成样本非常慢,因为马尔可夫链必须跑到平衡态才能采样,步数往往很大。为此,Hinton 提出了对比散度(CD)方法:只运行极短的马尔可夫链,采样速度大幅提升。设 p_0 为数据分布、p_∞ 为模型分布,梯度按以下公式计算:

右侧第一项是数据分布与模型分布之间的“散度”,即 p_0 和 p_∞ 之差(至于它们为什么不直接叫 P_data 和 P_model,LeCun 也没解释)。第二项是短程 MCMC 链——从 p_0 出发跑 n 步得到 p_n——与模型分布 p_∞ 之间的散度。直觉解释见附录。

上面这个差分,关注的是“模型经过 n 步后偏离数据的程度”,由此产生的梯度引导模型,让训练数据更可能出现,同时让 n 步重建的结果更不可能出现。令人意外的是,即使 n = 1,训练出来的 EBM 质量也相当好。

配合一些工程技巧——比如训练过程中维护并复用样本缓冲区——速度还能进一步提升。

使用训练好的EBM做推理

假设手上已经有了一个训练好的 EBM,推理过程是什么样的?

和常规模型不同,EBM 的推理不是直接“给定 X 输出 Y”。这里需要遍历 Y 的所有可能取值,找出哪个 X 与 Y 的组合能量最低,那就是最终的预测。本质上,这是一个优化问题,模型预测的是输入 X 和输出 Y 之间的兼容程度。由此可以衍生出几类任务:分类——“哪个 Y 与 X 最兼容?”取能量最低的组合,应用场景如机器人导航;排序——“Y1 和 Y2 哪个与 X 更兼容?”按能量排序即可,应用场景如数据挖掘;检测——“这个 Y 与 X 兼容吗?”看能量升降趋势,比如人脸检测中,图像越不像人脸,能量越高。

推理可以概括为:固定已观测变量的值,搜索剩余变量的配置,使能量最小化。这个过程代价可能很高,需要选择合适的优化算法。参考 LeCun 的论文,按照 Y 的形式不同,推理策略也不同:

  • 如果 Y 是连续变量且能量曲面 E(X,Y) 光滑,直接套用基于梯度的优化算法找最优 Y 就行。和训练阶段更新网络权重不同,这里是对 Y 本身做优化——从某个初始 Y 出发,沿 E(X,Y) 对 Y 的梯度方向迭代,直到落入极小值。思路和训练神经网络并无本质区别。
  • 如果 Y 是一组离散变量,能量函数可以表达为因子图——即若干依赖于不同变量子集的能量函数(因子)之和——那么可以用 min-sum 这类算法。图、团和 EBM 的关系,后面会进一步讨论。
  • 如果输出 Y 的每个元素可以表示为加权有向无环图(DAG)中的一条路径,特定 Y 的能量就是沿路径的边和节点值之和;因为图无环且能量是简单求和,最优路径可以用动态规划(如 Viterbi 算法)高效求解,这在生物序列分析(如基因查找)中很实用。
  • 还有一些情况下,能量函数依赖于一组隐变量 Z——比如训练人脸检测系统时,尺度和姿态信息是未知的。很多时候精确优化不切实际,必须诉诸近似方法,包括替代能量函数。

EBM的优势

EBM 属于指数族,在 AI 领域有大量成熟的技术和工具可供复用。做最大似然估计、取对数似然时,“对数”和“指数”会相互抵消,让数学处理变得简洁得多。统计物理中配分函数、自由能、变分近似等概念,同样可以直接搬过来用。

在架构设计和训练准则方面,EBM 比概率方法有更大的回旋余地。最关键的优势在于:在概率方法不可解的场景下,EBM 是可解的。概率模型必须做归一化,往往需要在所有可能的变量配置空间上计算积分,而很多时候这个积分根本算不出来。EBM 不要求归一化,这个问题被天然绕开了。

EBM 还有一个有意思的性质:总能量可以是多个能量函数之和——即“专家乘积”(Product of Experts)。图模型其实是 EBM 的一个特例,能量函数分解为各个能量项的和。为每个团(clique)分别设计能量函数,然后简单相加就得到总能量,而且已经有成熟的推理算法,可以对这些东西之和关于目标变量求最小值。听起来有些抽象,值得展开解释。

EBM作为因子图

从专家乘积(PoE)说起。PoE 模型将多个专家各自输出的概率密度相乘得到总概率,每个“专家”对应一个未归一化能量函数。之前定义过归一化版本的能量函数:

未归一化能量函数就是分子部分,即 Exp(-E(x))。

假设整体能量函数复杂到无法直接处理——高维、变量众多。如果能把这个复杂系统拆分成若干子系统,每个子系统只依赖一小部分变量,每个子系统就是一个“专家”。这些专家的乘积给出总概率。因为子系统规模小得多,可以更透彻地分析和设计各自的能量函数。

做乘积时,把各专家的指数函数相乘即可。根据 Exp(a) * Exp(b) = Exp(a+b),乘法变成了各能量的简单加法,整体(未归一化)能量就是各子能量之和。

和试图为整个复杂系统找一个巨大的能量函数相比,把多个小而专的能量函数直接相加,明显更可行——一个专家负责某一方面,另一个负责另一方面。EBM 的能量函数就这样被“因式分解”为各个函数(因子)之和,等价于因子图表示的图模型。

任何传统图模型都可以表示为因子图,EBM 在这类场景下有天然的适配性。为每个团分别定义能量函数,求和即得总能量。团就是变量的一个子集。循环置信传播等高效算法,可以用来计算最低能量配置。

从Hopfield网络到Transformer注意力机制

能量模型并非新事物。1982 年,John Hopfield 就提出了一种循环人工神经网络,功能类似“联想记忆系统”。

就像一丝微弱的气味能唤起完整的记忆一样,Hopfield 网络接收不完整的数据,尝试还原完整的原始模式。它的机制正是 EBM:将“模式”存储为能量景观中稳定的局部最小值。面对损坏或缺失的输入,网络迭代更新神经元状态,沿着能量景观不断下降,直至落入最近的稳定“记忆”,输出完整的重建结果。具体过程如下:

  • 将损坏或不完整的图像输入网络。
  • 网络中的神经元彼此相连,迭代更新自身状态,持续降低系统总能量。
  • 网络达到稳定的最低能量状态时停止更新——得到对原始未损坏模式的最佳重建。

去噪只是一个方面。这类网络也能用于求解优化问题(如旅行商问题),收敛到低能量状态就对应着优化问题的解。

Hopfield 网络的能量函数由 Lyapunov 函数控制,返回一个将神经元状态映射到实数值的标量。Hopfield 网络是确定性的,总会收敛到最近的局部能量最小值。另一种架构——玻尔兹曼机——则引入了随机性(概率性),使网络有能力跳出局部最小值去寻找全局最优。

玻尔兹曼机通常包含隐含单元,因而能建模更复杂的数据结构、学习内部表示。从物理意义上说,隐含节点在可见节点之间引入了有效的高阶交互,产生了针对可见节点的新能量函数。当隐含节点与可见节点之间的交互设为零时,玻尔兹曼机就退化为 Hopfield 网络。

模拟和训练玻尔兹曼机并不容易。一种简化方案是移除所有层内连接、只保留层间连接——所有可见节点都连到所有隐含节点,同层内无连接。由此得到的受限玻尔兹曼机参数更少、表达能力有所下降,但训练更方便,泛化性能也更好。训练时依然适用前面讨论过的那些技术。

2024 年诺贝尔物理学奖颁给了 Geoffrey Hinton 和 John Hopfield。Hopfield 网络启发了现代机器学习方法。虽然 AI 领域没有独立的诺贝尔奖类别,但 Hinton 和 LeCun 拿到了地位相当的图灵奖——话题又回到了 LeCun 和他的团队。

LeCun的世界模型

LeCun 离开 Meta 后创立了 AMI Labs。他的核心论点是:当前 LLM 一次生成一个 Token 的固有设计,决定了它无法达到人类水平的智能,EBM 可能是另一条出路。

EBM 能同时预测整个输出序列的能量,而 LLM 每次只输出单个 Token 的概率。给整个句子算一个能量,再和其他候选句子比较,这在 LLM 框架下是做不到的。推而广之,规划在中途就能评估进展时效果最好——如果只在最后才拿到反馈,那和猜没什么区别。一个可以施加到中间状态的评分,能告诉你当前是否正确、哪里需要修复。EBM 正好提供了这种能力:能量可以在部分轨迹上计算,而非仅限于最终答案。

从认知科学角度看,EBM 可以(大致)对应 Daniel Kahneman《思考,快与慢》中那种缓慢而审慎的类型 2 思维:在推理时运行优化过程以最小化能量,模仿深思熟虑的过程。LLM 则按顺序逐 Token 生成、从不回头检查,本质上是“快”而直觉式的类型 1 思考。EBM 可以在输出之前对完整答案反复斟酌,正如人类在面对复杂问题时所做的那样。LeCun 的原话是:“真正的推理应该被表述为一个优化问题。”

Softmax 在这方面有结构性缺陷。它本质上是“赢者通吃”——两个输出值只要稍有差距,Softmax 就会把这个差距放大为概率上的巨大悬殊。生成模型在理想状态下应当能考虑多种可能的下一步,而不是每次都锁定得分最高的那个选项。基于 Softmax 的模型天生具有单峰偏差:擅长表示分布中单一的宽峰,难以处理落在输入空间不相邻区域的数据。EBM 不存在这个问题,它可以同时给多个不相交的数据区域赋予低能量(多峰分布中多个不同的峰)。Softmax 还带来过度自信的问题——膨胀大的输出、压制小的输出,程度远超合理范围。虽然有各种变通方案,但这是一个结构层面的硬伤。

LLM 还有一个根本局限:它困在文本的离散世界里,缺乏人类意义上的“世界模型”,无法预判行动的后果。试图构建一个预测未来每个细节的生成模型注定行不通。在世界建模的框架下,做法是在输入空间中预测未来状态,再通过 EBM 衡量这些预测状态与当前上下文之间的“兼容性”。

人脑对世界的感知方式也不是直接的。大脑通过感官观察世界,从中构建出外部世界的表征,这个过程发生在一个独立的潜空间中。潜空间的结构与真实世界有关联,但针对实用性而非精确性做了优化。世界模型也应当具备类似特性。

JEPA(联合嵌入预测架构)是世界模型方向上的一次尝试。它学习世界的抽象表征(团队用视频做了实验),在抽象空间中做预测。I-JEPA 面向图像,V-JEPA 面向视频,都跳过了像素级重建,直接在潜空间中预测更高层次的特征。JEPA 及类似模型在不同程度上借鉴了 EBM 的思想。严格说它们不是完整的 EBM——推理时不做能量优化,仍然走常规前向传播——但确实把能量或相关替代指标用作了模型架构的关键组件。Logical Intelligence 发布的 Kona 是一个更激进的例子。

Kona 是面向关键系统的“基于能量”的 AI 模型,核心机制是物理驱动的优化而非逐 Token 预测。它能同时生成完整的推理轨迹,并直接对问题和约束做条件化。推理在连续潜空间中进行,输出密集向量 Token 而非离散 Token,因而可以利用学到的能量对推理轨迹做受控的局部编辑,通过近似梯度信息改善连贯性和约束满足度。在困难数独上,Kona 的解题率达到 96.2%,超出了当时所有前沿 LLM。

附录

每当在概率 AI 方面有疑问,翻开 Goodfellow 等人的《深度学习》总能找到答案。这本书封底有三位在 AI 领域可能无人能及的学者的推荐语,不是没有原因的。直接跳到第 18 章,标题恰如其分——“面对配分函数”。先从前面对论过的对数似然入手。

它来源于一个简单的关系:

PDF p 等于未归一化的 PDF(p 上方带 hash 标记)除以归一化常数 Z。θ 是要通过梯度下降求解的参数集。上式对数似然的梯度展开后变成:

到这里并没有做什么复杂的操作。倒三角是梯度符号。幸运的是,这在机器学习中是常见的模式——学习的正阶段(第一项)和负阶段(第二项)。第一项从数据集中采样就能轻松求出,真正麻烦的是第二项。注意,Z 本身只是 p(带 hash 标记)的求和或积分,因而是 θ 的函数,求梯度就必须对它做计算。

第二项可以通过几步简单变换,改写为期望值的形式。

有了期望值的形式,就可以用采样来近似:从模型 p(x) 中抽取若干 x 的样本,做蒙特卡罗估计得到训练所需的梯度。最终的对数似然梯度变为:

方程中两项各有分工。第一项对应从数据集中均匀抽样计算梯度;第二项对应从正在训练的模型 p(x) 中用 MCMC 抽样、取平均后计算梯度。这就是机器学习文献中的正阶段与负阶段。正阶段中,对从数据集抽取的 x 增大 log p˜(x);负阶段中,对从模型分布抽取的 x 减小 log p˜(x),以此降低配分函数。全程只需要处理未归一化的 p˜,不涉及 Z 的精确计算,操作上完全可行。

能量函数去哪了?Goodfellow 给出了连接:深度学习文献中通常用能量函数来参数化 log p˜。正阶段于是对应压低数据集中训练样本的能量,负阶段对应抬高从模型中抽取的样本的能量。

再看 Goodfellow 版本的能量升降图示,和 LeCun 的版本略有不同:

绿色的点表示数据集的 PDF。从数据集中均匀采样时,取到的 x 更多地集中在绿色峰值附近。正阶段是对数似然梯度的第一项,它让模型的 PDF p(x) 在这些数据点周围有更高的密度(对应的能量应被压低,但这里暂不引入能量概念以保持简洁),从而让模型逐渐逼近数据分布。

但这正阶段有一个副作用:它盲目地在所有位置增加未归一化概率——绿色峰值处加得多一些,其他地方也加了。只做这一步是不够的。要加速收敛,必须同步降低其他位置的未归一化概率。这正是负阶段做的事情。(虽然叫“阶段”,两者实际上是同步发生的。)

负阶段从模型分布中采样点,压低它们的未归一化概率。通过 MCMC 从 p(x) 中采到的点可能来自任何位置——好的数据点也好,坏的数据点也好,一律压低。把好数据点的概率推回去,那是正阶段的职责。

两项协同工作。第二项抵消了正阶段到处加常数的倾向,训练过程中模型与数据集的分布逐渐趋同。当二者完全相等时,正阶段在任何一点推高的力与负阶段推低的力大小相等,梯度的期望降为零,训练收敛。

负阶段降低了从模型中采样的点的概率,因此这些点通常被解读为模型对世界的“错误信念”。一个引人遐想的推论:负阶段被提议用于解释人类的做梦——大脑维护着一个关于世界的概率模型,清醒时经历真实事件并沿 log p˜ 的梯度更新模型,睡眠时经历从当前模型中采样出的事件并沿 log p˜ 的负梯度走,以最小化 log Z。

如何简化MCMC采样

MCMC 的主要成本在于每步都要从随机初始化开始“预热”马尔可夫链(详见前面分享的 MCMC 链接)。自然的优化思路是从一个接近模型分布的分布出发来初始化链。用什么初始化?可以直接用数据集。

对比散度(CD)算法在每步用数据分布的样本初始化马尔可夫链。训练初期,数据分布和模型分布差距较大,负阶段精度不高;与此同时正阶段默默发挥作用。等正阶段把模型分布拉近了数据分布,负阶段的精度也跟着上来。

CD 算法的梯度计算方式前面已经展示过:

可以这样理解:当输入来自数据时,如果模型的马尔可夫链对输入做了剧烈改动,就予以惩罚。这个估计有偏差——MCMC 中 n 步之后的项被忽略了——但偏差很小。研究表明,CD 丢掉的恰恰是正确 MCMC 更新梯度中最小的那些项。