news 2026/10/10 2:37:19

NYU-DLSP20 课程精读:从自监督学习到能量模型——详解 EBM 训练、潜变量建模与对比方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NYU-DLSP20 课程精读:从自监督学习到能量模型——详解 EBM 训练、潜变量建模与对比方法
  • 示例工程

【免费下载链接】NYU-DLSP20

NYU Deep Learning Spring 2020

项目地址:https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning
点击查看免费下载

本文基于 NYU Deep Learning Spring 2020(NYU-DLSP20)第七周课程第二部分(Yann LeCun 主讲)整理而成,对应仓库文档 docs/it/week07/07-2.md(意大利语版)与 docs/en/week07/07-2.md(英文原版)。文章从自监督学习(SSL)出发,系统梳理能量模型(EBM)为何适合高维不确定场景、如何用两类方法(对比方法/架构方法)训练能量函数、潜变量 EBM 及其 K-means 实例,并逐条拆解去噪自编码器与对比散度的实现细节。读完本文,你将理解"为什么要用能量而非概率建模预测",并能把 EBM 框架对应到视频预测、图像补全、NLP 掩码建模等具体任务上。

1. 开篇:为什么需要自监督学习与能量模型

1.1 自监督学习(SSL)的定位与预文本任务

自监督学习(Self-Supervised Learning, SSL)同时涵盖监督学习与非监督学习。其核心思想是:通过一个**预文本任务(pretext task)**学习输入的优质表征,之后这些表征可复用于真正的监督任务。在 SSL 中,模型被训练为"用数据的一部分预测另一部分"。

课程给出了 SSL 任务的典型定义:

  • 用过去预测未来(Predict the future from the past);
  • 用可见部分预测被掩码的部分(Predict the masked from the visible);
  • 用所有可用部分预测任意被遮挡部分(Predict any occluded parts from all available parts)。

以移动摄像机预测下一帧为例:系统隐式学习深度(depth)与视差(parallax),被迫理解"被遮挡的物体不会消失而是继续存在",同时学会区分有生命物体、无生命物体与背景,甚至可能学到重力这类直觉物理概念。

NLP 中的标杆案例是 BERT:在句子里移除部分单词,训练巨型神经网络预测缺失词,取得了巨大成功。同样的思路也被尝试用于计算机视觉——如图中所示,可移除图像的一部分,训练模型预测缺失区域(对应 Fig. 2)。课程同时指出一个关键事实:虽然这类视觉模型能够补全空缺,却未获得 NLP 系统同等的成功——用这类模型生成的内部表征作为视觉系统输入,无法胜过在 ImageNet 上以监督方式预训练的模型。

原因在于离散域与连续域的差异:NLP 是离散的,我们可以在所有可能输出上做巨大的 softmax(归一化指数)来显式表达不确定性;而图像是连续的,无法对连续高维空间做 softmax,也就没有直接表达不确定性的标准方式。这正是能量模型(EBM)登场的原因。

自监督学习在时间/空间序列上划分并预测语义单元,无需外部标注(对应 Fig. 1)。

2. 从"平均模糊"到潜变量 EBM:视频下一帧预测的困境与出路

一个智能体(AI agent)必须能够预测自身动作对环境和对自身的结果,才能做出智能决策。世界并非完全确定,机器/人脑也没有足够的算力穷举所有可能,因此必须教会 AI 在高维空间中带着不确定性做预测——能量模型对此极为有用。

一个直观的反例:用最小二乘(Least Squares)损失训练神经网络预测视频下一帧,得到的一定是模糊图像。因为模型无法精确预测未来,为了降低损失,它学会了对训练数据中所有可能的下一帧取平均。线性回归式的单点预测,本质上是"期望值输出",无法表达多模态未来。

课程给出的解决方案是潜变量能量模型(Latent Variable EBM):不同于线性回归只利用已知信息,它把"我们对世界的已知"与"一个描述真实世界发生了什么"的潜变量 $z$ 结合起来,从而生成接近真实情况的预测。

可以把这类模型理解为"打分系统":观察输入 $x$,针对输入 $x$ 与潜变量 $z$ 的不同组合产生可能的预测 $\bar{y}$,然后选择使系统能量(预测误差)最小化的那个。潜变量 $z$ 可以被视为 $y$ 中那些不在 $x$ 里的重要信息——随抽取的 $z$ 不同,我们可以得到所有可能的预测结果。

标量值能量函数有两种形式:

  1. 条件能量 $F(x, y)$:衡量 $x$ 与 $y$ 之间的兼容性;
  2. 无条件能量 $F(y)$:衡量 $y$ 各分量之间的兼容性。

补充阅读:能量函数的定义、基于梯度的推断以及 EBM 与概率模型的关系(Gibbs-Boltzmann 分布、自由能 $F_\beta$),可参见前序章节 docs/en/week07/07-1.md 与 docs/it/week07/07-1.md;本讲周次总览见 docs/en/week07/07.md(意大利语版为 docs/it/week07/07.md)。

3. 如何训练能量模型:对比方法与架构方法

为参数化 $F(x, y)$,训练能量模型共有两类学习模型:

  1. 对比方法(Contrastive Methods):压低 $F(x[i], y[i])$(训练样本处的能量),抬高其他点 $F(x[i], y')$(非训练样本处的能量);
  2. 架构方法(Architectural Methods):通过构造 $F(x, y)$ 本身,借助正则化技术限制或最小化低能量区域的体积。

课程指出共有七种塑造能量函数的策略:对比方法的差异在于"如何挑选要抬高能量的点",架构方法的差异在于"如何限制编码的信息容量"。

3.1 对比方法的代表:最大似然学习

最大似然(Maximum Likelihood)是对比方法的典型例子。能量可被解释为未归一化的负对数密度,Gibbs 分布给出给定 $x$ 时 $y$ 的似然:

$$ P(Y \mid W) = \frac{e^{-\beta E(Y,W)}}{\int_{y}e^{-\beta E(y,W)}} $$

最大似然希望分子大、分母小,即最小化 $-\log(P(Y \mid W))$:

$$ L(Y, W) = E(Y,W) + \frac{1}{\beta}\log\int_{y}e^{-\beta E(y,W)} $$

对于单个样本 $Y$,负对数似然损失的梯度为:

$$ \frac{\partial L(Y, W)}{\partial W} = \frac{\partial E(Y, W)}{\partial W} - \int_{y} P(y\mid W) \frac{\partial E(y,W)}{\partial W} $$

梯度中:第一项是数据点 $Y$ 处的能量梯度;第二项是能量梯度在所有 $Y$ 上的期望值。因此执行梯度下降时,第一项试图降低数据点 $Y$ 的能量,第二项试图抬高所有其他 $Y$ 的能量——这正是"对比"的机制。由于能量函数的梯度通常非常复杂,计算、估计或近似该积分是一个极具挑战的问题,在大多数情况下不可解(intractable)。

4. 潜变量 EBM:多模态预测的形式化

潜变量模型的主要优势是通过潜变量实现多重预测:当 $z$ 在某个集合内变化时,$y$ 在可能的预测流形(manifold)上随之变化。典型例子包括:

  1. K-means;
  2. 稀疏建模(Sparse modeling);
  3. 生成式潜变量优化(Generative Latent Optimization,GLO)。

潜变量模型可分为两类:

1. 条件模型($y$ 依赖 $x$):

$$F(x,y) = \text{min}_{z}, E(x,y,z)$$

$$F_\beta(x,y) = -\frac{1}{\beta}\log\int_z e^{-\beta E(x,y,z)}$$

2. 无条件模型(标量值能量函数 $F(y)$ 衡量 $y$ 分量间的兼容性):

$$F(y) = \text{min}_{z}, E(y,z)$$

$$F_\beta(y) = -\frac{1}{\beta}\log\int_z e^{-\beta E(y,z)}$$

补充:$F_\beta$ 即物理学家所称的"自由能"。在 docs/it/week07/07-1.md 中,LeCun 强调:若想以概率上正确的方式消去潜变量 $z$,只需把能量函数重定义为自由能 $F_\beta(x,y)=-\frac{1}{\beta}\log\int_z e^{-\beta E(x,y,z)}$;最小化对应 $\beta \to \infty$ 的极限,且计算该积分在大多数情况下不可解。

4.1 潜变量 EBM 实例:K-means

K-means 是一个简单的划分聚类算法,也可被视为能量模型——我们在尝试对 $y$ 上的分布建模。其能量函数为:

$$E(y,z) = \Vert y-Wz \Vert^2$$

其中 $z$ 是 one-hot 向量(除一个元素为 1 外其余全为 0),$W$ 的列即聚类原型(prototype)。

推断:给定 $y$ 和 $k$,找出 $k$ 个可能的 $W$ 列中哪一个最小化重建误差(能量函数),即完成聚类分配。

训练:一种思路是——找到 $z$ 使 $W$ 中最接近 $y$ 的那一列被选中,然后沿梯度走一步使其更接近,重复该过程;但课程指出坐标下降(coordinate descent)效果更好、收敛更快。图中可以看到沿粉色螺旋分布的数据点,黑斑对应每个 $W$ 原型周围的二次势阱(quadratic wells)(见 Fig. 5)。

K-means 的能量函数 $E(y,z)=\Vert y-Wz\Vert^2$:通过最小化重建误差选择聚类原型(对应 Fig. 4)。

学得能量函数后,就可以回答这类问题:

  1. 给定点 $y_1$,能否预测 $y_2$?
  2. 给定 $y$,能否找到数据流形上离它最近的点?

K-means 属于架构方法(与对比方法相对):它不在任何地方抬高能量,只把某些区域的能量压低。其缺点是:一旦 $k$ 确定,只有 $k$ 个点能量为 0,其他所有点的能量随远离这些原型而二次增长——能量面的表达能力受限于原型数量。

5. 对比方法详解:去噪自编码器、BERT 与对比散度

课程援引 LeCun 的观点:未来大家都会用架构方法,但现阶段图像任务上有效的仍是对比方法。考虑能量面的数据点与等高线:理想情况下,能量面应在数据流形上最低。因此我们压低训练样本附近的能量(即 $F(x,y)$ 的值),但这可能不够——还需要抬高那些"本应高能量却低能量"区域中 $y$ 的能量(见 Fig. 6)。

寻找"需要抬高能量的候选 $y$"有多种方式,例如:

  1. 去噪自编码器(Denoising Autoencoder, DAE);
  2. 对比散度(Contrastive Divergence);
  3. 蒙特卡洛(Monte Carlo);
  4. 马尔可夫链蒙特卡洛(Markov Chain Monte Carlo, MCMC);
  5. 哈密顿蒙特卡洛(Hamiltonian Monte Carlo)。

课程重点展开前两种。

5.1 去噪自编码器(DAE)

找到"要抬高能量的 $y$"的一种方式,是对训练样本做随机扰动(图中绿色箭头所示,见 Fig. 7)。

一旦得到被扰动的数据点,就在该点抬高能量。对所有数据点重复足够多次,能量样本就会"蜷曲"在训练样本周围(见 Fig. 8)。

训练步骤:

  1. 取一个点 $y$ 并扰动(corrupt)它;
  2. 训练编码器(Encoder)和解码器(Decoder),从被扰动的点重建原始数据点。

如果 DAE 训练得当,能量会随着离开数据流形而二次增长——即能量面在数据流形上形成"低谷",这正是 EBM 期望的形状。使用阶段则是:任意给定一个点(包括被扰动的点),通过编码器-解码器把它映射回流形上(见 Fig. 9)。

5.2 BERT:离散域中的掩码自编码器

BERT 以类似方式训练,区别在于空间是离散的(处理的是文本):扰动技术是掩码(masking)部分单词,重建步骤是预测这些被掩码的词——因此这种方法也被称为掩码自编码器(masked autoencoder)。这正是离散域能成功的原因:mask 掉的词可以在巨大的词表上用 softmax 表达不确定性。

延伸关联:仓库第七周实践部分(docs/en/week07/07-3.md)实现了标准自编码器与去噪自编码器,并讨论欠完备/过完备隐层、过拟合规避与损失函数选择,可作为 DAE 原理的动手实验佐证。

5.3 对比散度(Contrastive Divergence)

对比散度提供了更聪明的寻找"抬高能量点"的方法:

  1. 给训练点一个随机踢(random kick)(随机扰动);
  2. 沿能量函数做梯度下降(向下移动,靠近数据流形);
  3. 在轨迹终点,抬高落在该点的能量。

图中绿色线条展示了该轨迹(见 Fig. 10)。与朴素 DAE 的随机扰动相比,对比散度通过"先沿能量面下滑、再在落点抬升能量",使能量面在数据流形处形成低谷,同时在高能量区域得到校正,属于对比方法中兼顾效率与质量的代表。

对比散度:随机踢出训练点后沿能量面梯度下降,在轨迹终点抬高能量(对应 Fig. 10)。

6. 小结:本讲知识在课程体系中的位置

本讲(第七周 B 部分)在课程中的位置清晰:A 部分(docs/en/week07/07-1.md)引入了 EBM 概念与潜变量推断,说明前馈网络的两个难题(复杂推断过程、单输入多输出);B 部分(本文对应的 docs/it/week07/07-2.md)则在 A 部分框架上深入:先讲 SSL 及其与 EBM 的动机联系,再讲 EBM 的两类训练方法(对比/架构)、潜变量 EBM 与 K-means 实例,最后以 DAE、BERT、对比散度三个具体方法收尾。实践部分(docs/en/week07/07-3.md)则落地为自编码器实现。

核心知识链条可概括为:

  • 动机:高维连续空间无法用 softmax 表达不确定性 → 需要能量模型;
  • 推断:$\check{y}=\text{argmin}_y F(x,y)$,引入潜变量 $z$ 后为 $F(x,y)=\min_z E(x,y,z)$(或自由能形式);
  • 训练:对比方法(压低数据点能量 + 抬高负样本能量)vs 架构方法(限制低能量区域体积,如 K-means 只允许 $k$ 个零能量点);
  • 实例:DAE(随机扰动 + 编码器解码器重建)、BERT(离散域掩码重建)、对比散度(随机踢 + 梯度下滑 + 落点抬升)。

掌握这套框架后,你可以将任何"预测不确定的多模态输出"问题(视频预测、图像补全、翻译、语音等)重新表述为能量函数的推断与训练问题,并依据数据是离散还是连续,在 softmax 式概率建模与能量建模之间做出合理选择。

  • 示例工程

【免费下载链接】NYU-DLSP20

NYU Deep Learning Spring 2020

项目地址:https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning
点击查看免费下载

相关推荐

上一篇:amis Log 实时日志组件完全指南:流式日志展示、轮询方案与超长日志优化
下一篇:Microsoft Entra ID 密码认证连接 Azure SQL Database:Password 示例实战与源码解析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/10 2:36:28

每周一道 Agent 面试题 - Top K 怎么设

每周一道 Agent 面试题 - Top K 怎么设 面试官问:你们 Agent 的 RAG 检索,Top K 是怎么定的? 这是 RAG 类问题里出现频率最高的一道,而且它有一个陷阱属性:看起来人人都能答两句,所以答得好坏的差距会被放得…

作者头像 李华
网站建设 2026/10/10 2:36:01

绘图机器题解:四语言实现坐标模拟与线段去重

最近刷到一套新卷的 100 分题,题名叫“绘图机器”,要求用 Java、JS、Python、C 四门语言分别实现。这题我在本地从建模到测试完整过了一遍,踩了不少坑,尤其是用不同语言重写同一套逻辑时,细节差异比想象中大得多。写这…

作者头像 李华