找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2878

积分

0

好友

374

主题
发表于 15 小时前 | 查看: 2| 回复: 0

Yann LeCun 反复强调过一个观点:当前 LLM 基于概率、逐 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模型

核心思想很简单:给每个(可能的)数据点分配一个能量值,这个值是某个函数 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) 的参数 θ,目标是让已观测到的、合理的数据点能量低,让不太可能出现的数据点能量高。因此,损失函数需要同时做两件事:(1) 压低正确答案的能量;(2) 抬高错误答案的能量。

训练前后能量函数变化对比图

一般性的理论到这里就够了,但接下来才进入更棘手的部分:如何从能量函数推导出概率密度函数。

寻找概率密度函数(PDF)

我们的目标是找到由参数 θ 定义的概率密度函数 q(x):

概率密度函数公式

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

这个 Z 大概是学概率模型的人最怕遇到的东西。它名字有好几个——配分函数、归一化常数——出了名地难算。

至于指数前面那个负号呢?坦白讲它没有功能性意义,纯粹是惯例,所以去掉它也不会影响模型本质。

能量函数和密度函数的概念到此为止。

来自物理学的一点启发

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

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

玻尔兹曼分布公式

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

训练EBM

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

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

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

对数似然函数公式

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

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

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

EBM训练过程示意图

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

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

对比散度公式

右侧第一项是数据分布与模型分布之间的“散度”。第二项是短程 MCMC 链——从 p_0 出发跑 n 步得到 pn——与模型分布 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 是一组离散变量,能量函数可以表达为因子图,那么可以用 min-sum 等算法。
  • 如果输出 Y 的每个元素可以表示为加权有向无环图(DAG)中的一条路径,最优路径可以用动态规划高效求解。
  • 还有一些情况下,能量函数依赖于一组隐变量 Z,很多时候精确优化不切实际,必须诉诸近似方法。

EBM的优势

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

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

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

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 网络。

模拟和训练玻尔兹曼机不容易。一种简化方案是移除所有层内连接、只保留层间连接——由此得到的受限玻尔兹曼机参数更少、训练更方便。训练依然适用前面讨论过的那些技术。

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,因而可以利用学到的能量对推理轨迹做受控的局部编辑。在困难数独上,Kona 的解题率达到 96.2%,超出了当时所有前沿 LLM。

附录

每当在概率 AI 方面有疑问,翻开 Goodfellow 等人的《深度学习》总能找到答案。直接跳到第 18 章,标题恰如其分——“面对配分函数”。先从我们讨论过的对数似然入手。

对数似然函数公式

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

归一化概率公式

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

梯度公式第一步

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

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

梯度公式第二步(期望形式)

有了期望值的形式,就可以用采样来近似:从模型 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) 中采到的点可能来自任何位置——好的数据点也好,坏的数据点也好,一律压低。把好数据点的概率推回去是正阶段的职责。

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

负阶段降低了从模型中采样的点的概率,因此这些点通常被解读为模型对世界的“错误信念”。一个引人遐想的推论是:负阶段被提议用于解释人类的做梦——大脑维护着一个关于世界的概率模型,清醒时经历真实事件并更新模型,睡眠时则经历从当前模型中采样出的事件并进行反向调整。

如何简化MCMC采样

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

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

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

对比散度公式

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

希望这篇关于 EBM 的深入解析能帮助你理解这一前沿建模框架。如果你想进一步探讨机器学习中的优化理论或概率模型,欢迎来云栈社区与更多开发者交流。

向下指示手势




上一篇:2025年美国电商市场分析:集中度加剧,亚马逊、Shopify双雄格局稳固
下一篇:遇到Git多分支并行AI编程太麻烦?我用GitButler解决了
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-1 21:56 , Processed in 0.763684 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表