尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
基于能量的模型:从统计力学到现代生成模型的概率框架
早几年第一次接触“基于能量的模型”时我就被“能量”这个词搞得晕头转向。做机器学习的人习惯把一切都看成拟合或者极大似然突然冒出来一个物理味十足的概念还要和配分函数、自由能较劲第一反应基本都是“这跟我有什么关系”。直到我把统计力学的基本视角搬过来把概率模型重新理解为“能量地形上的粒子分布”很多问题才真正开始变得清晰。这篇内容就是概率模型的统计力学理论系列的第一篇核心围绕 Energy Based ModelEBM就是把概率密度写成 (p(x)\propto e^{-E(x)}) 的一类模型。我会从统计力学的底层图像讲起再逐步拆到训练 EBMs 时真正绕不开的那些难点包括配分函数、对比散度、能量崩塌这些实际操作中天天见的问题。适合正在做生成模型研究、或者对概率图模型和物理交叉方向感兴趣的朋友也适合那些已经跑过 RBM、Hopfield 代码但没细想过原理的实践者。1. 为什么“能量”会和“概率”扯上关系1.1 从统计力学借用的一套世界观统计力学处理的核心问题是“知道了大量微观粒子的规则怎么预测宏观状态”。一个经典设定是系统有很多可能微观状态比如一堆气体分子各自的位置和动量每个状态都有一个能量 (E)。宏观上我们看到的是温度、体积、压强这些量本质上是无数微观状态的统计平均。能量在这里扮演的角色不是“物体运动的度量”而是一个排序指标能量越低的状态越容易出现。玻尔兹曼分布把这个直觉精确化它告诉我们在温度 (T) 下系统处于某个状态 (x) 的概率正比于 (e^{-E(x)/kT})。注意这里用的是“正比于”而不是等号因为要保证所有状态概率加起来等于 1后面那个让分布归一化的常数就是机器学习里人人头疼的配分函数。这个“低能量态高频出现”的框架为理解概率模型提供了一个完全不同于贝叶斯视角的切入方式在统计力学里概率不是由先验和后验推出来的而是由能量函数直接诱导出来的。你只要定义好状态空间和能量函数概率分布就跟着确定了。机器学习中大量概念比如能量、熵、自由能、退火全都是从这套物理语言里借用过来的放在统计力学的背景下理解会少走很多弯路。1.2 基于能量的模型到底在建模什么把上面的物理图像搬到数据上就得到 EBM 的标准定义给定一个数据点 (x)我们定义一个能量函数 (E_\theta(x))然后用[ p_\theta(x)\frac{e^{-E_\theta(x)}}{Z(\theta)},\quad Z(\theta)\int e^{-E_\theta(x)}dx ]来定义概率密度。这个形式不是某个具体模型的专利而是一个极其宽泛的框架。只要你能写出一个能量函数并保证它在整个数据空间上可积分你就定义了一个概率模型。宽泛意味着灵活也意味着麻烦。你不需要像自回归模型那样强制设定因变量顺序也不需要像 VAE 那样显式构造一个隐变量生成过程。你只需要一个打分函数告诉模型哪些 (x) 好哪些 (x) 差剩下的交给 boltzmann 机制自动转化为概率。这就是“无向图模型”的核心思想一切依赖关系都通过能量函数的势能项来表达局部约束可以设计得非常自然。我在实操中经常用一个类比去解释 EBM 的作用方式想象地上有一张高低不平的地形图能量就是每一处的高度。你把一个小球放到地形上任意位置它在重力作用下更倾向于滚到低洼处。“数据”就集中在那些低洼处也就是低能量区域。EBM 的学习任务就是调整地形的高度形状使得真实数据对应的位置都变成低洼地而没见过的、不真实的位置尽量垫高。模型采样就是让小球在地形上滚一滚、跳一跳最终落到那些低洼处去。1.3 为什么我建议先理解物理图像再学数学表达现在的教科书往往直接给出 EBM 的损失函数、梯度计算公式然后让你跑代码。对少数人这样学没问题但对多数人很容易产生一种“不知道自己在优化什么”的悬浮感。我自己就是在接触统计力学之后才真正把这些公式串成一条线最大似然训练是在降低数据点的能量、升高采样点的能量对比散度是拿“当前模型最可能生成的样本”作为负样本MCMC 是让粒子在地形上移动并找到低能量洼地。这套物理图像还有一层额外的价值就是能帮你预判训练失败的方式。比如我见过很多人第一次跑 EBM 时遇到“能量崩塌”也就是模型把所有样本都压低到同一个能量值分布坍缩成一个尖峰。如果脑子里只有损失函数你会觉得这是优化问题如果脑子里有能量地形图你会立刻意识到这是地形被挖成了一个深坑小球全滚到同一个坑里去了自然丧失了多样性。解决思路也立刻清晰要么约束地形的复杂度要么引入正则项限制这个坑的深度和宽度。物理图像和数学表达之间不是二选一的关系而是互补的关系。2. Boltzmann分布是EBM的引擎推导、细节和温度2.1 从最大熵推导出玻尔兹曼分布EBM 的根本公式能写成一页纸但可能很少有人说清楚为什么一定是指数形式。最常见的推导是从最大熵原理出发的。设想我们只知道系统的一个约束条件某个函数 (E(x)) 在分布 (p(x)) 下的期望是一个常数 (\langle E\rangle\bar E)现在我们希望在所有满足这个均值约束的分布中选一个最不确定的分布即熵[ S[p]-\int p(x)\ln p(x)dx ]最大的分布。用拉格朗日乘子法处理这个约束优化引入乘子 (\beta) 和归一化乘子 (\ln Z)最大化目标函数[ \mathcal{L}[p]-\int p\ln p,dx-\beta\left(\int Ep,dx-\bar E\right)-\lambda\left(\int p,dx-1\right). ]对 (p(x)) 变分得到驻值条件[ -\ln p(x)-1-\beta E(x)-\lambda0, ]于是[ p(x)\propto e^{-\beta E(x)}. ]这里 (\beta) 就是温度的倒数 (1/kT)。如果我们没有引入任何数据这个分布只表示“给定能量均值的约束最无偏的分布是什么”如果我们把能量函数视为模型的参数用数据去确定它就变成了 EBM 的学习问题。最大熵推导的好处在于它让指数形式不再神秘只要约束是能量的期望指数分布就是概率论给出的唯一选择而不是我们为了数学方便随意设的。对做机器学习的人而言这条推导也揭示了 EBM 的归纳偏置——它假设真实分布可以用“低能量区域集中概率”来表达这恰好和物理系统的平衡态分布同构。2.2 温度参数到底应不应该出现物理公式里温度 (T) 不是摆设它控制着分布的陡峭程度。(T) 很高时指数被抹平几乎所有状态等概率出现(T) 很低时分布尖锐集中在全局最低能量附近。这个特性对采样和优化非常有用模拟退火就是在训练或采样的过程中逐渐降低温度让系统经历从“到处乱跑”到“锁定低能量区”的过程。但在机器学习实现里温度往往被吸收到能量函数的尺度里不再显式出现。原因很实际将 (\beta) 乘进 (E) 后(E\beta E)新能量函数和原来的模型只是差一个常数缩放表达能力没有任何损失。对训练来说多一个温度和参数化完全是冗余的对解释来说保留温度反而让读者更清楚地理解所谓“能量”的量纲是可调整的。我自己的经验是在实现深层 EBM 时千万不要在能量函数里随意加一个“temperature”超参却不去调它的尺度。有一次我把能量函数输出乘以 0.1表面上看只是把 logits 缩小了实际相当于温度升高了 10 倍原有学习率、MCMC 步数全部要重新调否则训练方差会出现剧烈波动。这种混乱的根源就在于没有弄清温度和能量尺度在公式里的角色。2.3 能量函数可以有哪些设计从势函数到神经网络EBM 的框架不限制能量函数的具体形式。最经典的是成对势能形式[ E(x)\sum_i \phi_i(x_i)\sum_{ij}\phi_{ij}(x_i,x_j), ]比如 Ising 模型的能量就是二次形式Hopfield 网络则是 (E-\frac12 x^T W x)。这种结构化能量的好处是清晰、可解释、和概率图模型的团势能直接对应。缺点是表达能力受限对图像、文本这类高维复杂数据远远不够。现代 EBM 直接用神经网络来做能量函数(E_\theta(x)) 可以是一整个 ConvNet 或 Transformer 的输出输出是一个实数标量。思路很简单我们把“打分函数”领域里所有能用上的参数化工具都拿过来。你可以把 (E_\theta(x)) 理解为把数据映射到实数轴的任意复杂的函数。模型越是复杂能量地形就越能贴合真实数据分布。这里有个常被误解的点既然 EBM 的能量函数可以任意复杂那它和判别模型有什么区别区别在于训练目标完全不同。判别模型训练的是条件概率 (p(y|x))只需要在类之间建立相对分数EBM 训练的对象是边缘分布 (p(x))需要在整个数据空间上归一化那些高能量区域不能随心所欲地高因为归一化会把它们拉回来参与概率分配。换句话说EBM 的能量函数不仅要区分好和坏还要控制坏样本的空间体积这就是配分函数真正难算的本质原因。3. 配分函数所有EBM头疼的根源3.1 归一化常数为什么这么难缠配分函数[ Z(\theta)\int e^{-E_\theta(x)}dx ]看起来只是一个归一化常数但在连续高维空间里这个积分几乎不可能精确计算。以一张 64x64 的灰度图像为例状态空间是 (R^{4096})你需要在整个 4096 维空间上对 (e^{-E}) 做积分。普通数值积分想都不用想蒙特卡洛的困难在于 (e^{-E}) 的分布极度不均匀绝大多数区域的能量很高指数项接近 0贡献微乎其微只有集中在数据流形附近的低能量区域才有实质贡献。如果你随机撒点几乎全部落在贡献为 0 的区域估算结果毫无意义。这个问题本质上是高维积分中的“有效体积”问题。物理学家早就知道配分函数虽然常出现在理论公式里但在实际计算中从不直接算积分而是通过采样估计各种可观测量期望值。机器学习中的 EBMs 继承了同样的尴尬给出一个概率密度表达式却无法算出归一化的似然值说“这个模型给某张图片打了 0.8 分”其实只是能量值离真正的概率还差一个未知的 (Z)。3.2 无法精确计算那大家用什么办法近似几种常见近似思路我按实用性排序说一下。第一种是 MCMC 直接估计期望。比如用 Langevin 动力学生成模型分布下的样本然后用这些样本估计梯度里的负相期望。虽然配分函数本身依然不知道但最大似然梯度中用到的恰恰是期望而不是 (Z) 的绝对值因此很多训练方法可以绕开配分函数。只要能高效采样训练就不那么依赖于计算 (Z)。第二种是重要性采样。选择某个易采样的提议分布 (q(x))把 (Z) 写成[ Z\int \frac{e^{-E(x)}}{q(x)}q(x)dx. ]用 (q(x)) 样本去近似这个期望。这里的困难是当 (e^{-E}) 集中在某个低能量区域而 (q(x)) 覆盖范围很广时多数样本的权重趋近 0方差爆炸。于是有了 annealed importance samplingAIS通过一系列中间分布从简单分布逐渐迁移到目标分布每个中间步骤之间的重要性权重相乘能显著降低方差。AIS 是评估 EBM 配分函数的常用标准但它的计算量大而且对能量函数的光滑性和中间分布的设计很敏感实际使用中需要反复验证。第三种是变分方法也就是去优化一个下界比如用另一个可处理分布 (q_\phi(x)) 去近似真实分布然后最小化它们的差异。这类方法训练时通常更稳定因为不需要跑长链 MCMC但会带来近似偏差而且很难保证 (q_\phi) 足够接近真实的复杂分布。在实际研究里大家往往不追求配分函数的精确值而是关注概率模型的相对变化和梯度方向。但在做模型评估时还是需要估计出可比较的似然指标这时 AIS 几乎成了标配。如果有朋友要在论文里报告 NLL建议至少跑两遍 AIS用不同种子和中间分布数量交叉验证一下否则数值波动会大到让人怀疑人生。3.3 怎么判断配分函数估算靠不靠谱被 AIS 出来的数字骗过的人肯定不少。我自己遇到的情况是同一个模型AIS 的中间分布数量从 100 增加到 10000估计出的 log-likelihood 还能差出几十个 nats。如果中间分布跳得太大每个相邻分布间的重叠很小权重链就会在某个环节失效整个估计结果远小于真实值。判断估计可靠性的几个经验做法第一是画“中间分布权重直方图”。如果权重分布在某一步骤附近出现大量极端小值说明相邻分布间几乎没有重叠需要加大中间分布数量。第二是改变随机种子跑多次看结果的方差。方差大说明估计没有收敛。第三是拿一个已知配分函数的参考模型做对照比如高斯分布用同一套 AIS 流程去估计看看偏差有多大。如果连参考模型都估计不准那么对新模型的估计值也基本不可信。这些检查方法看起来很基础但真正常见的 bug 反而是数据没有做标准化能量函数里包含了某个尺度很大的特征导致 (e^{-E}) 的值域极端连浮点数都溢出。先把能量输出中心化和尺度化再谈配分函数的精度能省下大量调试时间。4. 能量模型在机器学习中的几副面孔从Hopfield到RBM再到深度EBM4.1 Hopfield网络老前辈的能量语言Hopfield 网络是最容易理解的能量模型例子。它把每个神经元的状态设为 (x_i\in{1,-1})定义能量[ E-\frac12\sum_{i,j}W_{ij}x_i x_j. ]记忆存储本质上就是在这个能量地形上挖低洼点。当你给网络一个不完整或受噪声污染的输入它会在状态空间里沿着能量下降的方向迭代更新最终收敛到某个低能量吸引子也就是某个存储的记忆。用统计力学去理解 Hopfield 网络特别自然。能量地形上有很多局域极小值每个极小值对应一个“记忆状态”网络的动力学就是让系统从初始状态出发顺着梯度流落到附近极小值。很多物理概念比如吸引子、能量壁垒、温度噪声都能在这个模型中找到直观对应。这也是我强烈建议初学者先从 Hopfield 入手理解 EBM 的原因——它简单到可以手算却涵盖了能量模型的所有核心意象。4.2 受限Boltzmann机结构约束改变一切RBM 是 Hopfield 的一个概率化扩展。它在可见变量 (v) 和隐变量 (h) 之间建立全连接但限制同层内部无连接于是能量函数写成[ E(v,h)-a^T v-b^T h-v^T W h. ]这个二分图结构带来了一个压倒性的计算优势给定可见层隐单元条件独立给定隐层可见单元也条件独立。这意味着条件采样 (p(h|v)) 和 (p(v|h)) 可以直接用一个 sigmoid 完成不需要 MCMC 展开。配合对比散度训练RBM 在很长一段时间里成为深度学习之前的生成模型主力也常用于特征学习和初始化。RBM 的力量和局限都在于“受限”二字。层间全连接让隐变量可以捕捉可见变量之间的高阶相关性但同一层内部的变量独立又限制了它对复杂依赖关系的建模。因此单个 RBM 往往不够才发展出 DBN深度信念网络和 DBm 这类栈式扩展。不过从统计力学角度看RBM 最大的贡献是把隐变量引进来让扩展后的自由能和有效相互作用可以逐层构造这为后来的深度生成模型提供了概念基础。4.3 深度EBM与生成模型中的现代变体到了深度学习时代EBM 不再局限于二分图结构而是直接用一个深度网络 (E_\theta(x)) 定义能量。代表性工作包括 2019 年 Yilun Du 和 Igor Mordatch 的 Implicit Generation and Modeling with Energy-Based Models以及后续 You Yang 等人在大规模图像生成上的工作。这类模型的思路回头看了还是同一个框架只不过将能量函数替换成了表达能力更强的深度网络。深度 EBM 的训练难点也不出意料地落到采样上。MCMC 在高维连续空间里很难混合尤其当真实分布包含很多分离的模式时马尔可夫链会长期停留在一个模式里无法在模式之间跳转训练过程就会产生模式坍塌。于是研究者提出用持续对比散度PCD即维护一组持续更新的采样缓冲区让 MCMC 链在训练过程中不断延续而不是每步训练都重新初始化这样模式间的迁移概率会提高。另外一些工作干脆放弃纯 EBM把能量模型和自回归模型或者 VAE 结合比如 VAE 本身可以看作一种显式隐变量模型它的 ELBO 目标和 EBM 的能量视角有深刻联系分数匹配和去噪扩散模型更是能量模型思路的“梯度版本”不去学习能量函数本身而是学习能量函数的梯度 (\nabla_x E(x))从而绕开配分函数。可以说现代扩散模型许多推导都藏着 EBM 的影子只是换了一套训练目标。5. 训练EBM的核心矛盾最大似然、对比散度与稳定化5.1 对数似然梯度中的“正相”和“负相”假设我们用最大似然训练 EBM对数似然对参数 (\theta) 的梯度可以写成[ \nabla_\theta \log p_\theta(x_{\text{data}})-\nabla_\theta E_\theta(x_{\text{data}})\mathbb{E}{p\theta(x)}[\nabla_\theta E_\theta(x)]。 ]这个式子拆成两部分第一项叫正相作用是把数据点的能量拉低第二项叫负相作用是把模型分布下采出的样本点能量抬高。两部分配合最终让数据点成为能量地形上的低洼处同时把非数据区域的土地“垫高”。这看似简单实际执行起来非常微妙。正相可以直接计算数据点的能量梯度负相需要从 (p_\theta(x)) 采样而这个采样恰好又需要我们计算一个带未知配分函数的分布。如果没有有效采样器负相估计不准能量地形就会被挖得乱七八糟。很多 EBM 训练失败的例子最终都能追溯到负相质量太差。我曾经为了直观理解这两项各自的效果在二维高斯数据上做了个简单实验只跑正相模型会把所有训练点能量无限压低各种噪点也被压低只跑负相模型会无限抬高所有采样点最终把整个分布推开。只有正相和负相配合能量地形才能稳定成一个合理山谷。这个实验花不了十分钟但对理解 EBM 训练的博弈结构极有帮助。5.2 对比散度的动机和局限对比散度CD的思路非常简单负相不需要从真正的 (p_\theta) 采样只要从以数据点为起点的短 MCMC 链采样近似即可。比如 CD-k 就是从训练样本开始跑 (k) 步吉布斯采样用最后一步样本作为负样本。因为初始化是数据附近短链就能很快到达数据周围的低能量区负相估计方差较小。这个想法在 RBM 上效果极好因为 RBM 的块吉布斯采样很便宜(k1) 就够用。但在深度 EBM 上CD 的近似误差会积累因为真实分布在数据点附近可能并不包含足够多的高能量负样本短链采样很容易停留在数据流形附近导致负相低估了非数据区域的能量模型最终学出一个“处处低能量”的地形无法区分真实和虚假。我在实际使用中明显感觉CD 更像是一个“用近似避免崩溃”的折中方案。它牺牲了负相的无偏性换来了训练初期的稳定性。如果你的数据维度不高、模型复杂度适中CD 可以快速看到模型效果一旦数据复杂度上来就需要转向更持久的采样策略。5.3 稳定训练的实际技巧缓冲区、谱归一化与能量边界训练深层 EBM 是一个工程性很强的工作比理论漂亮得多也脏得多。我把自己踩过的坑和看到的社区经验整理成几个可操作项。持续采样缓冲区replay buffer。把每次训练中 MCMC 产生的样本保存下来下轮训练时一部分样本从缓冲区里拿一部分重新从数据初始化。这个技巧能显著提高负相样本的多样性降低模式坍塌风险。谱归一化。对能量网络每一层的权重矩阵做谱归一化限制 Lipschitz 常数使能量函数的变化不会太剧烈MCMC 链在高频震荡中更容易混合。没有谱归一化Langevin 动力学经常会出现能量震荡甚至发散。对能量输出做边界约束。有些实现里会给能量函数加正则项比如限制 (E(x)) 的绝对大小防止正相把能量压到负无穷或者负相把能量推到正无穷导致梯度爆炸。Langevin 动力学参数要小心。步长太大采样发散步长太小链走不动。惯项的引入即 momentum 版本能缓解混合变慢的问题但也增加了调参维度。多做诊断可视化。在二维玩具数据上先验证模型能学出正确的多峰分布再上真实图像数据集。很多人直接上 ImageNet失败了都不知道是采样的问题还是优化的问题。这些技巧听起来很杂但本质目标是同一个让负相采样尽量准确地反映当前模型的分布。只要采样器不行后面的一切花哨设计都白搭。6. 从理论到复现一个最小实验指南与常见陷阱6.1 用PyTorch训练最小的高斯EBM为了让你能亲手体会 EBM 的整套流程我给出一个最小可运行的实验设计用二维混合高斯数据训练一个简单 MLP 能量函数并用 Langevin 动力学采样。环境PyTorch数据生成用两个偏移的高斯组分。能量网络用两层 MLP输出单个标量。训练循环大致是import torch import torch.nn as nn from torch.distributions import MultivariateNormal class SimpleEBM(nn.Module): def __init__(self, dim2, hidden64): super().__init__() self.net nn.Sequential( nn.Linear(dim, hidden), nn.SiLU(), nn.Linear(hidden, hidden), nn.SiLU(), nn.Linear(hidden, 1), ) def forward(self, x): return self.net(x).squeeze(-1) def langevin_step(x, model, step_size0.1, noise_scale0.01): x x.detach().requires_grad_(True) energy model(x).sum() grad torch.autograd.grad(energy, x)[0] x_new x - step_size * grad noise_scale * torch.randn_like(x) return x_new.detach()这个代码片段只是骨架真正跑通需要注意数据要标准化到一个合适的尺度比如把混合高斯各分量的均值控制在 -2 和 2 附近方差不超过 1学习率和 Langevin 步长都要小否则训练过程会剧烈震荡。训练若干轮后把采样点画出来你应该能看到两个簇和真实数据大致重合。这个实验的价值在于它把“正相拉低能量、负相抬高能量”的抽象概念转化为可观测的样本分布如果采样点只落在某一个簇里那你的负相采样器发生模式坍塌问题几乎一定出在采样链长度或缓冲区策略上而不是能量网络的表达力。6.2 常见失败模式能量崩塌、模式坍塌和训练发散能量崩塌模型把所有点不管真实还是虚假的能量都压得很低训练损失下降但采样结果毫无意义。通常源于负相估计不准模型不需要区分真伪就能降低当前样本能量。模式坍塌采样样本集中在少数几个模式缺失其他模式。主要原因是 MCMC 混合慢不同模式的能量壁垒太高负相样本无法反映全局分布。训练发散能量值越训越高或者直接 NaN。常见原因是步长过大、能量函数输出尺度失控或谱归一化缺失。我在实践中几乎都是靠检查 Langevin 采样的梯度范数定位到问题的。这些失败不是理论问题而是工程问题所以修复思路也是工程性的加缓冲区、调步长、加正则化。但如果你不理解“能量地形”的图像这些修复手段看起来就像碰运气理解了之后每个手段都有明确的物理含义。6.3 把EBM放进更大的工具箱对比VAE和GAN和 VAE 相比EBM 不需要显式构造隐变量的先验和生成网络直接定义评分函数因此在图像锐度上天然占便宜但代价是采样和归一化的困难。GAN 则通过对抗训练隐式定义了损失不需要显式概率训练出的样本质量很高但缺少概率解释且容易记忆训练样本。EBM 处于两者的中间地带以可解释的能量函数为代价换来了清晰的概率模型和与物理理论深度融合的潜力。在我自己的项目里EBM 最大的价值不是直接当最终生成器而是作为辅助模块。比如用能量函数对 VAE 生成的样本做重排序或者用 EBM 提供判别式的能量边界来提升扩散模型的采样质量。这种混合用法往往比单打独斗更稳定特别是在数据模态复杂、难以显式建模的领域。7. 从模型评估到未来方向自由能、边缘分布与概率校准7.1 自由能和证据下界EBM与变分推断的桥梁统计力学中的自由能定义为[ F-\frac{1}{\beta}\ln Z, ]它把配分函数和概率分布联系起来。在机器学习中如果我们有一个隐变量模型比如 (p_\theta(x,h))那么边缘分布 (p_\theta(x)) 的负对数可以看成系统在给定可见变量时的自由能。于是很多看似无关的工作其实都在做同一件事找一个可计算的上界或下界来近似这个自由能。VAE 的 ELBO 本质上就是对自由能的变分近似EM 算法每次迭代的 E 步就是在给定观测下逼近隐变量的后验分布。这个视角让 EBM 和生成模型之间不再是隔离的派别而是共享同一个物理数学框架的不同角度。你在读论文时经常看到“free energy”、“evidence lower bound”这些词来回用本质上都在描述同一个东西。7.2 概率校准EBM容易忽略的一件事EBM 输出的是能量而能量要转化为概率还差一个配分函数。因此在分类任务中如果把 EBM 当成判别模型用需要额外做校准。我在实践里经常看到有人直接把负能量当置信度使用这在分布内数据上也许可行但一旦遇到分布外数据或对抗样本置信度会失去意义。校准的常用方法是用温度缩放或 Platt scaling在验证集上拟合一个从能量到概率的单调映射。如果你是做假设检验或不确定性估计这一步千万不能省。否则模型给出的所谓 p 值完全不可信可能连概率模型这个名号都撑不住。7.3 下一步可以深入的方向这个系列的路还很长。后续可以继续讨论 MCMC 采样与扩散模型的关联、分数匹配与 EBM 的梯度视角、以及统计力学中相变理论对理解深度模型泛化能力的启发。如果有朋友想深入学习建议先从 Boltzmann machine 的经典论文和 Hinton 的对比散度原始论文开始再上手现代 EBM 代码最后回头补统计力学里的 Ising 模型和平均场理论这是目前我能想到的最快路径。个人体会是不要把 EBM 当成一个老掉牙的模型它的思想正在以各种新形式渗透进生成模型和自监督学习中。真正理解这套能量与概率的对话方式比记住某一个具体网络结构重要得多。希望这篇内容能帮你把机器学习里的“能量”两个字从玄学变成工具。
RELATED

相关推荐

YOLOv11红绿灯检测系统实战:从模型选型到PyQt界面部署

YOLOv11红绿灯检测系统实战:从模型选型到PyQt界面部署

红绿灯检测这个题目,看起来像是老生常谈,但真要把整套系统跑通、跑稳,中间要填的坑比想象中多得多。我前后用YOLOv11搭过三套不同规模的红绿灯识别系统,从最初只能跑单张图片的demo,到后来带PyQt界面、支持图片/视频/摄…

📅 2026/10/2 5:50:15
语言模型进化史:从n-gram统计到Transformer预训练范式

语言模型进化史:从n-gram统计到Transformer预训练范式

1. 从规则到统计:语言模型的起点最近和几个做 NLP 的朋友聊起大模型的落地选型,发现很多人对“语言模型到底怎么一步步走到今天的”这件事其实挺模糊的。大家天天在用 BERT、GPT、LLaMA 这些名字,但真要问一句“为什么预训练语言模型能 work”…

📅 2026/10/2 5:50:15
DeepSeek Harness桌面端:安装配置、内网部署与插件实战

DeepSeek Harness桌面端:安装配置、内网部署与插件实战

DeepSeek Harness 官方桌面端终于出了,这应该是很多在 CLI 里熬了几个月的人最想看到的消息。作为一款以编码代理和自动化任务为核心的 AI 工具,Harness 此前最大的门槛就是没有图形界面,装完依赖、在终端里敲命令、看 JSON 日志,…

📅 2026/10/2 5:50:15
MORE NEWS

更多资讯

📰

让Claude Code成为生产力:快捷键、Hooks与Plugins实战

先把话撂这儿:Claude Code 是 Anthropic 官方出的命令行 AI 编程代理,装好之后你可以直接在终端里让它读代码、改文件、跑命令、提 PR。但说句实话,真正让它从“能跑”变成“生产力工具”的,反而是看着不起眼的三样东西&#xff1…

📰

小妖工具集正式上线!纯前端黑科技拆解:Canvas 语音记账与证件照制作的 AI 辅助开发实践(TaoToken 统一 Key 通道)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

AIbase MCP服务库上线:TaoToken统一Key接入服务器与客户端教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

2026年5月会议纪要产品评测:TaoToken统一Key接入随身鹿的实测记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

CUDA、HIP、OpenCL和oneAPI编程模型总结及比较:用TaoToken统一Key跑通四类异构计算示例

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Windows+Mac 双端适配 OpenClaw 2.9.0,零基础完整搭建教程(TaoToken 统一 Key 接入版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬