ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于能量的模型(EBM)与统计力学:配分函数与对比散度训练解析

基于能量的模型(EBM)与统计力学:配分函数与对比散度训练解析 概率模型的统计力学理论I——基于能量的模型Energy Based Model, EBM做生成模型的人十有八九都被同一个问题折磨过我们要让模型学会一批数据的分布把概率密度函数写出来然后一算归一化常数瞬间傻眼——它根本没法解析计算。正则化常数是配分函数为什么没法算因为归一化常数是一个对所有可能样本求和的积分。图像有上百万个像素维度文本的序列空间更是组合爆炸这个积分在绝大多数情况下没有解析解数值方法也会随着维度升高而崩溃。而基于能量的模型英文叫Energy Based Model简写EBM它的核心思路就是绕开这个问题干脆不显式建模一个归一化好的概率密度而是先定义一个“能量函数”能量越低的地方模型越喜欢然后再通过玻尔兹曼分布把能量映射成概率。这套框架不是哪个人灵光一现的产物。它直接借用统计力学的理论工具物理学家研究粒子系统平衡态分布已经研究了一百多年Boltzmann分布和配分函数这套语言搬到机器学习里几乎可以无缝对接。我这里写一个系列从统计力学的视角系统梳理EBM的理论基础和实操方法这是第一篇重点讲清楚三个问题为什么用能量建模、配分函数为什么躲不掉、以及怎么在“配分函数不可计算”的约束下把模型训练起来。这篇内容适合有一定生成模型基础的读者。如果你了解VAE、GAN的基本原理但对EBM的数学框架和训练技巧还不太熟悉这篇正好补上这块拼图。我也会尽量用物理的语言和直观的例子把概念掰开揉碎毕竟这套理论本来就来自物理顺着物理的思路去理解会顺畅得多。1. 核心框架与设计思路1.1 为什么非要绕道能量函数先说一个根本性问题为什么不能像朴素贝叶斯那样直接写概率密度函数看一眼数据空间的维度就明白了。一张256x256的RGB图像数据维度是19万维。在这个空间里定义一个归一化的概率密度意味着你需要确保概率密度在整个空间上的积分等于1。而这个积分是19万重积分。除非你使用极其特殊的设计——比如自回归模型按链式法则一步一步做条件概率分解否则这个积分就是天堑。那RBM、DBM这类模型的思路就很粗暴我不管归一化我只定义“谁比谁更合理”。用一个打分函数来刻画样本的合理程度得分越低越合理。然后通过指数映射和配分函数的桥接把这个打分变成合法的概率分布。这个设计有一个很微妙的红利你不需要知道配分函数Z的具体数值也可以做很多事情。比如比较两个样本的似然比配分函数直接消掉了比如做MCMC采样只需要能量差来决定跳转概率也不需要Z。更妙的是做最大似然估计时梯度可以分解成“数据项”和“模型项”的差值数据项好算模型项本质是对模型分布求期望——这个期望可以用MCMC采样去逼近Z的具体值从头到尾都不需要算出来。这是EBM整个体系得以运转的基石。顺带多说一句这套“不需要知道归一化常数也能做推断”的思想后来被发展成了更抽象的框架。Score Matching、Ratio Matching、对比学习本质上都是在绕开配分函数。理解了EBM再去读Hinton的对比散度Contrastive Divergence、Hyvärinen的得分匹配你会觉得思路一脉相承并不突兀。1.2 从物理直觉到统计力学语言EBM的概率形式和统计力学里的Boltzmann分布如出一辙。物理学家用能量来描述一个微观状态的权重能量低的微观状态出现概率高能量高的出现概率低温度T控制这个差距的陡峭程度。写成公式就是其中是Boltzmann常数在机器学习里我们习惯把它吸收进能量函数或者温度参数里直接令其为1。分母里的对所有状态求和就是配分函数它的作用是让这些权重归一化成概率。这个映射的直觉是非常深刻的如果把数据想象成物理系统的某个平衡态数据点就是系统经常出现的那些微观状态它们所在的能量谷比较深。而那些看着不像数据的噪声则是能量极高的状态系统几乎不会访问到。训练EBM的过程本质上是雕刻一个能量地形——把数据所在的位置挖成盆地把非数据区域抬成山脊和高原。用生活化的类比就更好理解了把能量地形想象成一座山峰的地势图山谷代表合理的数据点山峰代表噪声。你要做的是在数据流形附近“挖坑”在数据分布以外“堆山”让模型采样的粒子自然地滚落到山谷里。1.3 对传统模型优势与痛点跟其他生成模型放在一起比EBM的定位很有意思。GAN用一个生成器和判别器的对抗博弈来隐式逼近真实分布。判别器输出的那个概率本质上就可以理解为“这个样本有多真”这其实就是在学一个能量函数。但GAN的问题在于训练不稳定——生成器和判别器的优化目标此消彼长很容易振荡甚至崩溃。EBM的训练目标其实更干净它优化的是显式的似然训练过程的稳定性问题虽然存在但至少理论和实践的鸿沟比GAN窄一些。VAE通过变分下界来近似真实后验。它有显式的编码器-解码器结构训练稳定采样高效但代价是生成质量上界受限于变分近似的质量。EBM没有这个瓶颈——只要能量函数表达力足够强模型理论上可以逼近任意分布。当然代价就是训练和采样的计算开销远高于VAE。自回归模型如GPT家族则完全绕开了配分函数问题通过条件概率链式分解把全局归一化变成逐位置的局部归一化。这很聪明但引入了序关系你必须定义一个固定的token生成顺序。EBM没有这个约束天然适合处理那些顺序不那么明确的场景比如纹理生成、图像去噪、分子构象采样。下表把几类模型的对比放在一起看得更清楚模型类型是否显式密度采样方式训练目标主要瓶颈VAE近似密度前向传播采样变分下界ELBO生成质量受限GAN隐式分布生成器前向传播对抗博弈模式崩溃、训练不稳自回归模型显式密度逐位置归一化逐个位置采样最大似然顺序强制、采样慢EBM显式密度归一化常数未知MCMC最大似然采样逼近训练和采样计算昂贵EBM不是“更好的GAN”或者“更好的VAE”这么简单的说法它是一个不同维度的建模方式你拿到的是一个能量函数它可以被拿去计算概率也可以被直接当成判别器用还可以跟其他模型组合。这种灵活性是它最大的价值。2. 统计力学视角下的EBM核心概念2.1 能量函数到底能长什么样能量函数的选择直接决定了模型能力的上限。最早的能量函数由人工设计例如RBM中采用双向线性项加偏置项这里的呈二进制状态。显层和隐层之间的权重矩阵W加上各自的偏置项b和c构成一个带参数的二次能量函数。这种形式的好处是条件概率可以精确计算便于Gibbs采样——给定显层各个隐单元的条件分布是独立的。但表达力受限也是显而易见的。线性项只能刻画显隐两层之间的二阶相关性对于高维图像中的非线性结构根本无能为力。现代EBM的做法是把能量函数换成深度神经网络。比如基于ConvNet的EBM输入图像输出一个标量能量值网络参数即能量函数的参数。理论上神经网络只要能表达足够复杂的函数对应能量函数的表达能力就没有什么限制。实际经验是网络结构的选择和普通判别网络略有差别。EBM的能量网络一般不会用太强的归一化层BatchNorm这类层会破坏能量值的绝对标度很多实现选择LayerNorm或直接不使用归一化。深层残差结构在图像EBM上效果比较好但训练时需要小心配置学习率。2.2 配分函数不可计算的原因与后果配分函数是连接能量函数和概率分布的一座桥但它本身也成了整个EBM体系最大的“债务”。上面提到数据维度很高Z的积分维度同样很高。对一个高维连续空间里的能量函数求积分解析解只存在于极少数简单情形——比如能量函数是二次型时配分函数有高斯积分的解析结果。其他情况下你只能依靠采样近似或者变分近似。更麻烦的是这个积分结果会随着能量函数的参数变化而变化训练过程中每次参数更新Z都要跟着变这就断绝了“算一次后面复用”的念头。配分函数不可计算的直接后果是什么呢最本质的一点你无法直接计算一个样本的似然值因此无法直接做最大似然估计。这不仅影响训练也影响模型评估——两个EBM之间比较似然都很困难。但正像前面提到的计算似然梯度时Z的存在形式很特殊。对能量参数求似然梯度Z的梯度恰好等于能量函数在模型分布下的期望。这个期望用MCMC采样就能逼近于是整个训练闭环可以运转起来。配分函数本身依然是一个黑箱但它不再是一堵墙更像是一道需要绕行的弯道。2.3 自由能、温度与数据分布的物理图像统计力学的第二个核心概念是自由能。自由能F定义为它把配分函数和平均能量联系在了一起物理含义是系统在给定温度下能对外做功的那部分能量。在EBM语境下自由能的概念出现在很多衍生模型中。比如Hinton等人曾经提出用自由能作为RBM的判别准则给定一个数据点你可以计算它的自由能自由能越低说明这个点在模型看来越“像数据”。这实际上是把一个生成模型变成了分类器。温度参数在EBM里也很有意思。温度越低能量地形上的差异越被放大采样更容易集中在能量最小值附近温度越高所有状态的概率趋于均匀。这个性质可以用于控制生成样本的“锐度”。实际中可以配合退火采样使用先高温探索全局再逐步降温聚焦到高概率区域这比直接从低温开始采样更容易逃离局部陷阱。物理图像在调试EBM时非常有用。当你盯着训练曲线不知道哪里出了问题想象一下“能量地形是什么样的”——如果模型把所有训练数据都过拟合到几个极小值点那相当于能量地形上形成了几个异常深的坑采样出来的样本重复率高说明MCMC没有在全局探索。如果模型生成的结果很模糊可能是能量地形太“平”模型没有学到数据的精细结构。3. 最大似然训练与对比散度算法3.1 似然梯度如何分解为正负相位现在进入实操层面的核心问题模型到底怎么练有了能量函数概率密度写成了。最大似然的目标是让训练数据的对数似然最大化对参数求梯度经过一番推导会得到一个很漂亮的分解形式这个公式中的第一项是对训练数据分布求能量梯度的期望因为我们可以直接拿到训练样本所以这一项可以在小批量上直接计算称为正相位positive phase。它拉着模型把训练数据位置的能量降低。第二项是对模型分布求能量梯度的期望模型分布在训练过程中不断变化这一项只能靠MCMC采样去估计称为负相位negative phase。它推着模型把当前采样到的样本位置的能量升高。训练过程的思想很清晰了数据点处能量下降模型采样点处能量上升两者共同作用直到数据点和采样点的能量分布趋于一致模型分布就逼近了数据分布。这个“拔河”的动态过程实际上对应着一个盒式博弈正相位像收缩的力把概率质量拉向数据流形负相位像扩散的力把概率质量推向所有区域但更倾向于当前高概率区域最终达到平衡。3.2 对比散度CD与其局限性负相位需要从模型分布中采样最经典的做法是Gibbs采样交替固定隐层采样显层、固定显层采样隐层。但问题来了——在训练的每一轮都跑长链Gibbs采样计算量不可接受。Hinton在2002年提出的对比散度Contrastive Divergence简称CD就是解决这个问题的经典方案。CD的核心洞察我们不需要让负相位采样链完全收敛到模型分布只需要从训练样本出发跑k步Gibbs采样用这个“一个不完全混合的样本”来估计负相位梯度。这就把MCMC的计算成本从“不计代价”降到了“几行代码”。k1时就是CD-1实际使用中最常见。为什么这招能work因为模型参数在训练初期离真实分布很远负相位的采样质量要求并不高精确采样反而浪费算力。而启动采样链时如果从训练数据出发相当于初始化已经站在了高概率区域短链也能捕捉到模型分布的一些关键特征。等到训练后期模型分布逐渐接近数据分布再考虑增大k值或者使用更精细的采样方案。CD的局限性在于它是一个有偏估计。负相位采样链没有真正遍历模型分布梯度估计不是无偏的这意味着即便训练到稳定状态模型参数也可能并不严格对应最大似然解。CD更严格的理论分析揭示了偏差的大小与链混合速率有关。此外CD还存在一个问题从数据样本出发的短MCMC很难发现那些距离数据流形很远、但能量同样很低的区域——这会导致模型在那些区域产生虚假的“能量空洞”也就是所谓的模式崩溃的前兆。3.3 持续对比散度PCD与更稳健的选择持续对比散度Persistent Contrastive Divergence简称PCD是对CD的一个重要改进。它的思想非常简单维护一组持续存在的采样链通常叫persistent chain这些链不随训练迭代重置而是不断更新位置。每一轮训练时对这组链跑几步MCMC得到负相位样本然后用这些样本计算梯度链的终点作为下一轮链的起点保留下来。PCD的效果是负相位采样链有机会充分探索模型分布的空间而且随着训练的推进这些链会逐渐弥散到整个能量地形。与CD相比PCD对模型分布的采样质量要高得多训练出来的模型对多峰分布的覆盖也更均匀。代价是PCD需要更多的状态存储和采样计算。实际使用中还需要小心处理所谓“链老化”问题早期训练的模型分布和后期差异巨大早期链的位置在后期意义不大需要定期重新初始化。还有一个更微妙的实际问题使用PCD训练图片模型时采样链容易掉进两个mode之间的区域反复震荡导致生成的图片不真实。近年来的一些工作尝试用短链加回放缓冲区replay buffer的方式缓解这个问题——把过去训练的样本缓存起来与当前采样链混合既能增加探索性也避免链被单一模式“捕获”。另外提一下基于得分匹配Score Matching的训练方法逐渐成为主流替代方案。它的核心是让模型的得分函数能量函数的负梯度接近数据分布的得分函数从而绕开负相位采样。近年扩散模型大放异彩本质上就是用去噪得分匹配训练一个EBM式的概率模型。这些内容我会在后续文章中展开讨论。4. 受限玻尔兹曼机RBM作为可工作样例4.1 RBM结构与前向计算说了这么多理论总得落地一个能跑的模型。受限玻尔兹曼机Restricted Boltzmann MachineRBM是最经典的EBM它结构简单理论完备非常适合作为理解整套框架的起点。RBM由两层组成可见层v对应输入数据的维度隐藏层h对应特征提取。层间用权重矩阵W双向连接层内无连接。这个“受限”的二分图结构是RBM的核心优势给定可见层隐藏层之间互相独立给定隐藏层可见层之间互相独立。它们都是条件独立的这使得Gibbs采样可以直接并行计算。给定可见层隐藏层第j个单元的激活概率是sigmoid函数其中是权重矩阵的第j列是偏置。由于隐藏单元条件独立整层激活概率可以一次矩阵运算得到。同样已知隐藏层时可见层的激活概率也是一个sigmoid。训练的目标就是用CD算法最大化训练数据的对数似然。但RBM在实际使用中有一个很重要的技巧二值RBM的采样使用伯努利分布但重构时如果直接使用概率值而非采样值噪声更低训练更稳定。这是实践中的常见选择。4.2 CD-k训练步骤的逐步拆解整个CD-k训练流程用伪代码描述如下def train_rbm_cd(X, W, bv, bh, lr, k, batch_size): X: 训练数据矩阵, 形状 [n_samples, n_visible] W, bv, bh: 模型参数, 分别表示权重、可见层偏置、隐藏层偏置 lr: 学习率 k: CD步数 for batch in get_batches(X, batch_size): # 正相位计算隐藏层激活概率并采样 pos_h_prob sigmoid(batch W bh) pos_h_sample sample_bernoulli(pos_h_prob) # 正相位统计量可见层与隐藏层采样的外积 pos_associations batch.T pos_h_sample # 负相位从数据出发Gibbs采样k步 neg_v batch for step in range(k): neg_h_prob sigmoid(neg_v W bh) neg_h_sample sample_bernoulli(neg_h_prob) neg_v_prob sigmoid(neg_h_sample W.T bv) neg_v sample_bernoulli(neg_v_prob) # 负相位统计量最后一步的可见层与对应隐藏层的外积 neg_h_prob_final sigmoid(neg_v W bh) neg_h_sample_final sample_bernoulli(neg_h_prob_final) neg_associations neg_v.T neg_h_sample_final # 参数更新正相位拉低能量负相位拉高能量 batch_size batch.shape[0] dW (pos_associations - neg_associations) / batch_size dbv (batch - neg_v).mean(axis0) dbh (pos_h_sample - neg_h_sample_final).mean(axis0) W lr * dW bv lr * dbv bh lr * dbh return W, bv, bh概括整个流程正相位从训练数据出发计算隐藏激活和外积统计量负相位则通过k步Gibbs采样从当前模型分布中生成“反例”然后用两者之差更新参数。这个差值的含义很直白数据的关联强度高于模型样本的关联强度就将参数向数据方向调整反之则向模型方向调整。从能量梯度公式来看这与“正相位降低数据点能量、负相位升高采样点能量”的框架完全一致。4.3 训练中需要留意的关键参数我在实际跑RBM的过程中总结过几个直接影响成败的细节这些基本是踩坑踩出来的。第一权重初始化。初始权重一般取均值为0的小随机数标准差0.01左右偏置通常初始化可见层偏置为训练数据的均值对数函数隐藏层偏置为0。可见层偏置设置成可以捕获数据的边际分布能让训练一开始比较顺利。第二学习率。RBM对学习率比普通神经网络更敏感。学习率太大负相位采样链不稳定训练曲线会剧烈震荡太小则收敛慢。通常先跑几个epoch观察重构误差的变化再动态调整。现在更推荐用Adam这类自适应优化器虽然在原始RBM文献中不太常见但实测效果稳定得多。第三正则化与稀疏性。RBM容易过拟合特别是在小数据集上。权重的L2正则化、隐层激活的稀疏性约束如给激活概率加上KL散度惩罚使其趋向一个小的目标稀疏度p都能显著提升泛化能力。稀疏约束在文本和图像特征学习中被反复验证过有效。第四重构误差不靠谱。真的重构误差下降并不代表对数似然上升这一点坑了无数新手。因为重构误差只是训练过程中的副产品它甚至可能在训练良好时上升。要评估RBM真正学到的分布质量应该用Annealed Importance SamplingAIS估计对数似然或者看下游任务的性能。5. 现代EBM的训练技巧与架构选型5.1 从RBM到深度卷积EBM的演进路径如果RBM只是用线性权重连接隐层和显层表达力就太受限了。把RBM的权重矩阵换成卷积网络就有了基于卷积神经网络的EBM。它的能量函数直接定义在输入数据上不再需要显式的隐层结构可以非常灵活。典型结构如下输入是一张图像。经过一系列卷积、池化、归一化层逐步提取特征。最后接一个全连接层输出一个标量作为能量值。这个方案由杜克大学的团队在2020年前后重新挖掘配合短链MCMC、数据增强和正则化在图像生成任务上达到过接近GAN的效果。与RBM相比卷积EBM不需要对数据分布做任何独立假设网络自己学习特征建模能力强大得多。不过要注意能量网络和分类网络在结构设计上有一个关键差异分类网络最后一层接softmax网络内部的特征表示被“挤压”到类别可分的方向而能量网络输出的是标量网络必须有足够的容量去编码数据流形的复杂结构。实际中常用较深层的ResNet架构并加入谱归一化来控制Lipschitz常数这能让能量函数在数据流形外变化更平滑利于MCMC采样。5.2 短链MCMC与缓冲区采样的实用组合在图像EBM的训练中直接用CD或PCD都有明显的计算瓶颈。图像空间维度太大Gibbs采样每一步都要做一次完整的前向传播长链根本跑不动。现在比较实用的方案是短链MCMCshort-run MCMC配合回放缓冲区。具体做法是每个训练轮次对当前批量中的样本执行5到10步朗之万动力学采样或者几步HMC采样。采样起点有两个来源一部分从训练数据出发类似CD另一部分从回放缓冲区中随机抽取。回放缓冲区中保留了最近若干轮次的负相位样本它的存在给负相位提供了“多样性起点”避免采样链反复陷入同一个模式。def langevin_step(x, energy_net, step_size, noise_scale): 朗之万动力学单步更新 x: 当前样本, 需要梯度 energy_net: 能量网络 step_size: 步长 noise_scale: 噪声幅度 x x.detach().requires_grad_(True) energy energy_net(x).sum() grad torch.autograd.grad(energy, x)[0] x_new x - 0.5 * step_size * step_size * grad noise_scale * torch.randn_like(x) return x_new.detach()朗之万采样之所以受到青睐是因为它不要求能量函数具备条件分布可采样的属性且实现简单。但它的采样质量对能量函数的光滑度高度敏感——能量函数如果粗糙不平朗之万动力学容易困在局部最小值区域。这也是为什么现代EBM架构几乎都会采用谱归一化它限制了网络每层权的谱范数间接限制了整体函数的Lipschitz常数让能量函数的变化不至于太剧烈。5.3 EBM与对比学习的关联及其扩展还有一个值得单独说的点EBM和对比学习之间有天然的亲缘关系。对比学习里的InfoNCE损失本质上是把正样本的似然比与负样本的似然比做比较用一组负样本去逼近配分函数。从EBM视角看这其实是对能量函数的对比式估计——不需要精确计算Z只需要保证正样本相对负样本的log概率差正确就行。这个视角的意义在于很多现代对比学习方法的成功可以从EBM训练的角度重新解读。反过来EBM训练中遇到的各种问题——负样本质量、采样数量、温度选择——在对比学习实现中都有对应的注意点。如果你熟悉其中一边的技巧学另一边就会快很多。除了对比学习EBM还可以做很多有趣的扩展。比如用EBM给另一个生成模型的采样结果做重新加权能量修正或者把能量函数当作判别器嵌入GAN的框架中补齐概率信息。这些方向目前的学术文献都相当活跃等后续文章我们逐个拆解。6. 实操中的常见问题与排查心得6.1 能量振荡与训练不收敛的真实原因接触过EBM训练的人几乎都会遇到训练曲线剧烈振荡的情况。第一反应当然是调学习率但我实测下来最有用的手段其实是降低负相位的“破坏力”。振荡的直接原因是正相位和负相位之间的力量失衡——数据能量降得过快或者模型样本能量升得过快都会导致参数在两者之间反复横跳。具体排查顺序可以参考下面的表格现象可能原因排查与调整方法能量值整体发散学习率过大或负相位噪声过大降低学习率减小MCMC步长噪声能量周期性震荡负相位采样链混合不充分增加MCMC步数或使用PCD增大回放缓冲区生成样本重复单一采样链陷入能量局部最小值提升采样温度添加退火增大噪声初始幅度生成样本模糊能量地形过于平滑增加模型容量提高能量函数对局部结构的敏感度训练集样本能量过低模型过拟合到数据点增加L2正则使用数据增强增大回放缓冲区规模注意一个很多人忽略的事实训练数据点的能量理论上应该大致等于自由能。如果数据点能量远低于平均能量几乎可以断定模型过拟合了。此时可以关注数据点和负相位样本的平均能量差这个差值不应持续扩大。6.2 采样发散问题与去噪得分匹配的启示经常有人说采样出来的样本越采越差初期看着还行迭代到后面就变成了噪声。我遇到过很多次这几乎都是MCMC链条没有真正在“快速混合”造成的。一个值得借鉴的修复手段是从扩散模型的做法中寻找到灵感。扩散模型的核心训练目标等价于一个去噪得分匹配问题给数据加不同尺度的噪声训练一个网络估计噪声去除噪声后的数据恢复过程天然是稳定且平滑的。如果你把EBM的训练目标改造成“去噪式”也就是训练时加噪声让能量网络学习带噪声数据的得分训练会稳定得多。这实际上就是基于能量的角度去训练扩散模型的那套思路——两者之间本来没有不可跨越的屏障。6.3 我建议的调试工作流最后分享一个我常用的调试工作流按顺序走能节约大量时间。第一步先在小数据集上快速验证模型是否能够过拟合。如果在一个小批量数据上训练几十个迭代后数据点能量能明显下降负相位样本能量能上升说明梯度流通正常模型结构没有问题。如果连这个小批量都学不动问题在架构或优化器设置。第二步检查和调整采样参数。步长过大会导致采样发散步长过小导致MCMC几乎不移动。一个快速检查方法是训练后从模型分布采样统计相邻两步之间的距离调整步长让平均移动距离处在一个合适的量级。第三步检查训练动态。观察数据点能量与模型采样点能量的差值理想的训练过程是这个差值缓慢减小并最终趋于稳定。如果差值一直很大说明模型分布和数据分布之间还有明显gap。第四步评估生成质量不要只看重构误差。用肉眼观察采样图片、用FID等指标评估分布覆盖度或者用AIS估计对数似然都比看训练损失曲线靠谱得多。结尾这套基于能量的建模框架在我实际做生成模型的经验里它的价值不止于一个具体算法更是一副理解“概率模型如何与物理直觉互译”的眼镜。配分函数这个东西你在别的模型里看不见摸不着但它其实始终都在——VAE里它被变分下界逼近GAN里它被对抗博弈隐式处理扩散模型里它被逐步高斯化消解掉。EBM把这个问题摊在桌面上不回避直接面对反而让人能把这些模型的内在关系看得更清楚。如果你刚开始接触EBM建议不要一上来就苦钻配分函数的数学细节先跑通一个RBM理解“正相位降低数据点能量、负相位升高采样点能量”这个朴素的动态过程再一步步往前走。后面本系列还会继续沿着这条统计力学的路径讲得分匹配、对比散度的理论修正以及EBM在文本和结构化数据上的应用。每一步都是站在前人扎实的理论地基上推进的像我一样踩过几次坑之后你会理解这套方法的优雅之处在哪里。
返回列表