示例工程【免费下载链接】NYU-DLSP20NYU Deep Learning Spring 2020项目地址https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning点击查看免费下载本文基于 NYU-DLSP20 课程第十五周讲义docs/zh/week15/15.md及其实践课讲义15-1.md、15-2.md系统梳理隐变量能量基础模型Latent Variable Energy-Based Models, EBMs的动机、推理、训练与自监督应用。读者将掌握为什么一对多映射场景下前馈网络失效、如何用能量函数与自由能建模数据流形、如何通过温度松弛获得可微的自由能softmin以及如何用能量损失、Hinge 损失、Log 损失训练 EBM最终用条件 EBM 完成号角流形的自监督学习。一、为什么需要隐变量 EBM一对多映射的困境标准的 Feed-Forward 神经网络天然建模的是一个输入 → 一个输出的确定性映射。然而真实数据中大量存在一个输入对应多个合法输出的隐式依赖implicit dependencies此时前向网络无法刻画数据的内在结构。课程用一个椭圆流形上的玩具数据集直观展示了这一困境给定输入 $x$可能输出多个 $\vect{y}$例如固定 $y_1$ 时几乎总是存在两个不同的 $y_2$ 与之对应。这种一对多关系正是引入隐变量能量基础模型的动机——用一个额外的隐变量 $z$ 来解释输出的多样性用能量函数而非条件概率来度量兼容性。1.1 椭圆数据集的生成训练样本来自如下参数化椭圆$$ \vect{y} \begin{bmatrix} \rho_1(x)\cos(\theta) \epsilon \ \rho_2(x)\sin(\theta) \epsilon \end{bmatrix}, $$其中随机变量满足$x \sim \mathcal{U}(0,1)$输入$\theta \sim \mathcal{U}(0,2\pi)$角度$\epsilon \sim \mathcal{N}\left[0, \left(\tfrac{1}{20}\right)^2\right]$观测噪声而 $\rho: \mathbb{R} \mapsto \mathbb{R}^2$ 将 $x$ 映射为椭圆的半轴长度$$ \rho(x) \begin{bmatrix} \alpha x \beta (1-x) \ \beta x \alpha (1-x) \end{bmatrix}\exp(2x). $$下图图 1原图见 15-1.md是该椭圆函数的 3D 可视化同一 $x$ 对应一环而非一个点明确展示了多输出特性。1.2 简化设定与能量函数定义为便于手工推演固定输入 $x0$ 并令 $\alpha 1.5,\ \beta 2$椭圆退化为$$ \vect{y} \begin{bmatrix} 2\cos(\theta) \epsilon \ 1.5\sin(\theta) \epsilon \end{bmatrix}. $$从中随机采样 $24$ 个数据点 $Y [\vect{y}^{(1)},\ldots,\vect{y}^{(24)}]$。与此同时取隐变量 $z [0:\tfrac{\pi}{24}:2\pi)$送入解码器decoder生成流形上的点 $\tilde{\vect{y}}$其中解码器为$$ \vect{g}(z) [w_1\cos(z),\ w_2\sin(z)]^{\top},\quad \vect{g}:\mathbb{R}\mapsto\mathbb{R}^2. $$能量函数定义为数据点与解码点之间的平方欧几里得距离$$ E(\vect{y},z) \equiv E(\vect{y},\tilde{\vect{y}}(z)) [y_1 - g_1(z)]^2 [y_2 - g_2(z)]^2, \quad \vect{y} \in Y. $$对 $Y$ 中每个样本 $i\in[1,24]$通过改变 $z$ 可得到 24 条能量曲线 $E_1,\ldots,E_{24}$横轴为隐变量 $z$纵轴为能量值。这里已经能看到 EBM 的核心思想能量低 ⇔ 兼容性好该隐变量能合理解释该样本能量高 ⇔ 兼容性差。二、能量函数剖析以第 23 个样本为例考察固定样本 $\vect{y}^{(23)}$ 的能量函数 $E_{23}(z)$见 15-1.md上图为后文自由能横截面示意图下图为能量曲线形态分析$E_{23}$ 是一个周期函数最大值出现在 $z0$ 与 $z2\pi$ 附近最小值出现在 $z\pi$ 附近。这种对称形态来源于 $\vect{y}^{(23)}$ 在 $\vect{y}$ 空间中相对解码环 $\tilde{\vect{y}}$ 的位置——$\vect{y}^{(23)}$ 恰好与解码环的水平轴对齐。隐变量 $z$ 可视为一个反向极坐标角顺时针为正方向$z0$最左端紫色点$\tilde{\vect{y}}$ 与 $\vect{y}^{(23)}$ 欧氏距离大 → 能量高$z\to\pi$最右端紫色点$\tilde{\vect{y}}$ 逼近 $\vect{y}^{(23)}$ → 能量降至最小$z$ 继续从 $\pi$ 增至 $2\pi$距离重新拉大 → 能量回升至最大。2.1 零温度极限自由能与隐变量推理在理解能量分布后定义零温度极限Zero-Temperature Limit, ZTL自由能$$ F_{\infty}(\vect{y}) \equiv \min_{z} E(\vect{y}, z), $$以及取得该最小值的最优隐变量$$ \check{z} \arg\min_{z} E(\vect{y}, z). $$$\check{z}$ 的求解属于**推理inference**过程可采用多种优化算法例如穷举搜索exhaustive search共轭梯度conjugate gradient线搜索line search有限内存 BFGSlimited-memory BFGS, L-BFGS在 $\vect{y}$ 空间中观察该优化过程随着迭代推进隐变量不断增大解码点 $\tilde{\vect{y}}$ 沿顺时针方向逼近 $\vect{y}^{(23)}$到达自由能时$\tilde{\vect{y}}$ 与样本的距离亦即能量被最小化。因此通过计算 $F_\infty$ 与对应的 $\check{z}$即可找到与样本数据最贴近的解码点——这就是隐变量 EBM 完成用流形解释数据的推理方式。三、自由能稠密估计从网格点到热力图为了更深入理解自由能函数课程在 $\vect{y}$ 空间中铺设网格15-1.md蓝色曲线代表流形隐变量 $z$ 的所有可能取值。对网格上的每个点计算$$ F_\infty \min_z E(\vect{y},z) E(\vect{y},\check{z}). $$推理过程的几何直观从蓝色流形上任选一点 $z$ 出发沿流形移动寻找离采样点 $\vect{y}$ 最近的流形点 $\check{z}$最终自由能就是样本点 $\vect{y}$ 到 $\tilde{\vect{y}}(\check{z})$ 的欧氏距离。课程进一步考察网格中 5 个不同颜色的样本点蓝色点能量函数幅度最大5 个点中自由能最大橙色点自由能最小。5 条能量函数曲线中交叉号×标记了各能量函数对应的 $\check{z}$ 取值。3.1 自由能的定义域与值域由于能量使用欧氏距离自由能函数取值非负标量$$ F_\infty: \mathbb{R}^2 \rightarrow \mathbb{R}^. $$定义域$\mathbb{R}^2$仅 $\vect{y}$ 空间与隐变量无关值域$\mathbb{R}^$非负标量。将网格中所有点的自由能值绘制成热力图图中箭头表示梯度值即可看到能量盆地集中在流形附近、向外二次增大的全景。需要强调$F_\infty$完全不依赖隐变量 $z$——它是在 $z$ 上取最小值后的结果只是 $\vect{y}$ 的标量函数。四、松弛自由能用温度平滑能量函数4.1 为什么需要松弛在椭圆中心区域零温度极限自由能会出现无限大的尖峰中心点距流形任何位置都遥远且自由能表面存在局部极小值不利于优化与学习。为避免这种冷能量带来的尖峰需要引入松弛版本的自由能见 15-2.md$$ F_\beta(\vect{y}) \doteq -\frac{1}{\beta} \log \frac{1}{\vert\mathcal{Z}\vert} \int_{\mathcal{Z}} \exp[-\beta E(\vect{y},z)],\mathrm{d}z, $$其中 $\beta (k_B T)^{-1}$ 为逆温度$k_B$ 为玻尔兹曼常数$T$ 为温度温度很高 → $\beta$ 极小温度很冷 → $\beta \to \infty$。4.2 简单离散近似与 softmin在实践中通常用离散求和近似积分$$ \tilde{F}\beta(\vect{y}) -\frac{1}{\beta} \log \frac{1}{\vert\mathcal{Z}\vert} \sum{z\in\mathcal{Z}} \exp[-\beta E(\vect{y},z)],\Delta z, $$其中核心项 $-\frac{1}{\beta}\log\frac{1}{\vert\mathcal{Z}\vert}\sum_{z\in\mathcal{Z}}\exp[-\beta E(\vect{y},z)]$ 被定义为 $\mathrm{softmin}_\beta[E(\vect{y},z)]$——松弛后的零温度极限自由能即成为真正的 softmin。4.3 三个直观示例回顾此前实践中的样本点观察松弛后的效果情况 1$\vect{y} Y[23]$—— 靠近 $\vect{y}$ 的点能量小、指数项大远离的点指数项趋于零情况 2$\vect{y} Y[10]$—— 注意颜色条范围的变化上限值由 $\exp[-\beta E(\vect{y},z)]$ 推导而来情况 3$\vect{y} (0,0)$—— 以原点为查询点时所有流形点都贡献能量自由能对称变化。随着降低 $\beta$升高温度尖峰逐渐被抹平最终得到只有一个全局极小值的抛物线当 $\beta \to 0$ 时退化为平均值即恢复 MSE 损失。4.4 冷、温、热自由能的三种语义从技术角度看自由能的不同温度区间对应不同含义状态含义热hot指平均值$\beta\to0$恢复 MSE温warm指隐变量的边缘化marginalization冷cold指最小值$\beta\to\infty$即 ZTL五、命名法与 PyTorch 实现正式定义actual-softmax$$ \mathrm{softmax}\beta[E(\vect{y},z)] \doteq \frac{1}{\beta} \log \sum{z\in\mathcal{Z}} \exp[\beta E(\vect{y},z)] - \frac{1}{\beta} \log N_z, $$其中 $N_z \vert\mathcal{Z}\vert / \Delta z$。在 PyTorch 中可直接用torch.logsumexp实现$$ \mathrm{softmax}_\beta[E(\vect{y},z)] \frac{1}{\beta},\texttt{torch.logsumexp}(\beta E(\vect{y},z),\ \texttt{dim}z) - \frac{1}{\beta}\log N_z. $$actual-softmin则定义为$$ \mathrm{softmin}\beta[E(\vect{y},z)] \doteq -\frac{1}{\beta}\log\frac{1}{N_z}\sum{z\in\mathcal{Z}}\exp[-\beta E(\vect{y},z)]. $$Softmin 可以通过带两个负号的 softmax实现$$ \mathrm{softmin}\beta[E(\vect{y},z)] -\mathrm{softmax}\beta[-E(\vect{y},z)]. $$同时torch.softmax(l(j), dimj) \mathrm{softargmax}_{\beta1}[l(j)]。这一节15-2.md给出了从数学定义到 PyTorch 原语logsumexp、softmax的完整映射是动手实现松弛自由能的关键代码依据。六、训练 EBM损失函数loss functional的设计6.1 目标与基本区分训练 EBM 的目标是寻找一个表现良好的能量函数对来自训练分布的数据能量小对其他区域能量大。需要严格区分两个概念见 15-2.md能量函数由推理inference过程最小化对隐变量 $z$ 求最小值损失函数loss functional由学习learning过程最小化对模型参数求最小值它是一个标量函数度量当前能量函数的好坏。数据集上的整体损失是各样本损失的均值$$ \mathcal{L}(F(\cdot),Y) \frac{1}{N}\sum_{n1}^{N} l(F(\cdot),\vect{y}^{(n)}) \in \mathbb{R}. $$6.2 三种经典损失函数① 能量损失energy loss——将正确数据点的能量往下推$$ l_{\text{energy}}(F(\cdot),\check{\vect{y}}) F(\check{\vect{y}}), $$其中 $\check{\vect{y}}$ 表示要被压低的正确数据点。② Hinge 损失——要求冷能量正确标签与热能量错误标签之差大于边界 $m$$$ l_{\text{hinge}}(F(\cdot),\check{\vect{y}},\hat{\vect{y}}) \big(m - [F(\hat{\vect{y}})-F(\check{\vect{y}})]\big)^{}, $$其中 $[\cdot]^{}$ 是 ReLU 函数保证损失恒非负$F(\check{\vect{y}})$ 与 $F(\hat{\vect{y}})$ 分别是冷正确标签与热错误标签能量的自由能。Hinge 损失的行为只要差值小于边界 $m$就持续推动能量一旦 $F(\hat{\vect{y}}) - F(\check{\vect{y}}) \geq m$$[m - (\cdot)]$ 变为负值经 ReLU 截断为 0停止推动因此 Hinge 损失没有光滑的边界。③ Log 损失——具有光滑边界的软Hinge$$ l_{\log}(F(\cdot),\check{\vect{y}},\hat{\vect{y}}) \log\big(1\exp[F(\check{\vect{y}})-F(\hat{\vect{y}})]\big). $$由于指数函数的存在Log 损失边界更平滑可视为具有无限边界的软 Hinge 损失。6.3 ZTL 训练与边缘化的对比训练效果对比15-2.md未经训练左图每个训练点对应一个流形上离它最近的 $x$交叉点以 ZTL 训练时梯度把流形上最接近训练点的那个点推向训练点训练 1 个 epoch 后右图流形点到达期望位置训练点蓝色对应能量降至零。边缘化marginalization则不同若选取流形上某个点 $\vect{y}$左下图绿色叉其梯度是指向该点所有箭头的平均值即所有流形点都被适度拉向 $\vect{y}$。这样能避免模型过拟合单个训练点——注意训练版本并未完全贴合所有训练点。从训练后模型的自由能横截面见上节配图可以清楚看到ZTL$\beta\infty$时自由能出现高峰值随着 $\beta$ 减小尖峰不断降低最终得到蓝色平滑抛物线即边缘化情形的自由能剖面$$ F_\beta(\vect{y}) \doteq -\frac{1}{\beta}\log\frac{1}{\vert\mathcal{Z}\vert}\int_{\mathcal{Z}}\exp[-\beta E(\vect{y},z)],\mathrm{d}z. $$七、自监督学习用条件 EBM 学习号角流形7.1 问题设定将上述思想推广到有条件的情形条件 EBM即自监督学习见 15-2.md。训练目标是学习号角horn形状的数据流形。隐变量与输入取离散网格$z [0:\tfrac{\pi}{24}:2\pi[$不含$2\pi$线性取值送入解码器得到环绕椭圆的 $\tilde{\vect{y}}$$x [0:\tfrac{1}{50}:1]$由预测器predictor观测后送入解码器。在 ZTL 下训练给定号角上一点 $\vect{y}$找到流形上离它最近的点并将其拉向 $\vect{y}$。7.2 条件能量函数与网络结构此时的能量函数为$$ E(x,\vect{y},z) [\vect{y}_1 - f_1(x)g_1(z)]^2 [\vect{y}_2 - f_2(x)g_2(z)]^2, $$其中 $f,g: \mathbb{R} \rightarrow \mathbb{R}^{2}$具体结构为$$ \begin{array}{l} x \xmapsto{f} x \xrightarrow{\mathrm{L}^{}} 8 \xrightarrow{\mathrm{L}^{}} 8 \xrightarrow{\mathrm{L}} 2, \[2pt] z \xmapsto{g} [\cos(z)\ \ \sin(z)]^{\top}. \end{array} $$即$x$ 经过两层带正激活$\mathrm{L}^{}$如 ReLU的 8 维线性层再映射到 2 维$g$ 输出 $\sin/\cos$ 基函数其分量被 $f$ 的输出缩放。7.3 向真实场景推广玩具示例几乎不需要训练时间但推广到真实问题需要两步升级第一步让 $g$ 成为神经网络。推广为$$ \begin{array}{l} f: \mathbb{R} \rightarrow \mathbb{R}^{\dim(f)}, \ g: \mathbb{R}^{\dim(f)} \times \mathbb{R} \rightarrow \mathbb{R}^{2}, \end{array} \qquad E(x,\vect{y},z) [\vect{y}_1 - g_1(f(x), z)]^2 [\vect{y}_2 - g_2(f(x), z)]^2. $$此时 $g$ 接收 $f$ 的输出与 $z$且 $g$ 本身可以是一个神经网络。模型必须自己学会$\vect{y}$ 绕圈运动这一此前被我们想当然的 $\sin/\cos$ 结构。第二步确定隐变量维度并正则化。进一步推广$$ \begin{array}{l} f: \mathbb{R} \rightarrow \mathbb{R}^{\dim(f)}, \ g: \mathbb{R}^{\dim(f)} \times \mathbb{R}^{\dim(z)} \rightarrow \mathbb{R}^{2}, \end{array} \qquad E(x,\vect{y},z) [\vect{y}_1 - g_1(f(x), z)]^2 [\vect{y}_2 - g_2(f(x), z)]^2. $$高维隐变量倾向于过拟合若不加以正则化模型会记住所有数据点导致整个空间能量为零流形结构完全失效。因此隐变量维度的选择与正则化是条件 EBM 落地时不可回避的工程问题。八、理解性问答课程要点回顾Q1为什么能量平面上的值是标量能量平面取值即自由能 $F_\infty$——它是能量函数 $E(\vect{y},z)$ 对所有可能隐变量 $z$ 的最小值。因此 $F_\infty$ 不依赖 $z$只依赖 $\vect{y}$对每个 $\vect{y}$ 输出一个标量。例如上述 $17\times 25425$ 个网格点就有 425 个自由能值每个值都是该点到流形的二次欧氏距离。Q2如何选择表达数据流形的函数关于隐变量选择已有大量研究可以用多层神经网络来表达隐变量的选择。典型例子是语言翻译同一句子可有多种合法译法若用 softmax 训练会面临翻译结果无穷多的问题因此改用 EBM——能量函数直接度量原句与译句的兼容程度。Q3在训练流形上最小化能量是否基本等同于去噪是的。如果模型已从真实流形中学到结构那么通过最小化能量即可找到输入的去噪版本——将含噪输入投影回流形上的最近点。九、小结与仓库导航第十五周的核心脉络可以概括为一条完整的技术链路动机一对多映射场景下前馈网络失效 → 引入隐变量 EBM推理定义能量函数 $E(\vect{y},z)$通过优化隐变量求零温度极限自由能 $F_\infty \min_z E$松弛用逆温度 $\beta$ 平滑自由能得到可微的 softmin 表达torch.logsumexp实现训练用能量损失 / Hinge 损失 / Log 损失最小化 loss functionalZTL 训练 vs 边缘化应用条件 EBM 自监督学习号角流形并探讨 $g$ 网络化与隐变量正则化。如需继续深入可在仓库内查阅中文讲义总览docs/zh/week15/15.md推理部分完整推导与图示docs/zh/week15/15-1.md松弛自由能与训练部分docs/zh/week15/15-2.md英文原版讲义docs/en/week15/15-1.md、docs/en/week15/15-2.md实践课视频字幕含完整推导口述docs/en/week15/practicum15A.sbv、docs/en/week15/practicum15B.sbv配套图示docs/images/week15/15-1、docs/images/week15/15-2提示本文所有公式与结论均来自上述讲义原文涉及torch.logsumexp等 API 的实现细节建议结合 PyTorch 官方文档验证$\beta$ 取值、dim参数与 $N_z$ 归一化项需按离散化方案对齐。赞分享示例工程【免费下载链接】NYU-DLSP20NYU Deep Learning Spring 2020项目地址https://gitcode.com/gh_mirrors/pyt/pytorch-Deep-Learning点击查看免费下载相关推荐深入理解潜在变量能量模型LV-EBM从椭圆数据到自监督学习的推理与训练实践 —— 基于 NYU-DLSP20 第 15 周教程深入理解潜在变量能量模型LV EBM从椭圆数据到自监督学习的推理与训练实践 —— 基于 NYU DLSP20 第 15 周教程 本篇技术指南以 NYU D示例工程隐变量能量模型EBM推理与训练全解析NYU-DLSP20 第 15 周精读隐变量能量模型EBM推理与训练全解析NYU DLSP20 第 15 周精读 本篇技术指南以 NYU DLSP20 第 15 周课程文档 docs/en/示例工程NYU-DLSP20 第 7 周精讲自监督学习与能量基模型EBM——从潜在变量建模到对比训练方法NYU DLSP20 第 7 周精讲自监督学习与能量基模型EBM——从潜在变量建模到对比训练方法 本篇技术指南以 NYU DLSP20NYU Deep示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考