生成模型 / 表示与压缩 速查进阶 23 分钟阅读 查看源文件 ↗

视觉损失与评估指标#

本页内容7 个部分
查看概览图
FOUNDATIONS · 04d

三条线:对齐什么、
评估什么、训练什么

图文对齐用对比学习,生成质量用特征空间距离与分布距离,生成训练靠 ε / v / x₀ 参数化与重建三件套。

①图文对齐线

Contrastive → Triplet → InfoNCE

  • Contrastive (2006)显式成对 y=0/1;margin m 控制负对推开距离
  • Triplet (FaceNet 2015)每个 anchor 配一个正、一个负;margin α
  • InfoNCE / NT-Xent (2018)batch 内其他样本全当负;本质是多类分类
    CLIP
②生成评估线

Perceptual → LPIPS → FID → FD-DINOv2

  • 成对图像:Perceptual / Style / LPIPSVGG 多层 conv 特征;LPIPS 多一组学习到的线性权重
  • 图像集合:FID / FD-DINOv2多元高斯的 Fréchet 距离;backbone 从 Inception-v3 换成 DINOv2
    分布级
③生成训练三件套

扩散 / VAE / VQGAN 配方

  • ε-pred大 t 端 loss 主导;小 t 端预测变平凡,方差不稳
  • v-pred全时间步方差稳定;渐进式蒸馏必备
    两端不退化
  • x₀-pred直接预测终点;适合一步 / 少步采样
指标Backbone用哪层 / 哪种输出比较对象聚合方式
Perceptual LossVGG-16/19多层 conv 特征成对图像 (x, x̂)逐层 MSE 求和
Style (Gram) LossVGG-16/19多层 conv 特征的 Gram 矩阵成对图像逐层 Gram MSE
LPIPSVGG / AlexNet / SqueezeNet多层 conv 特征 + 学习到的线性权重成对图像加权 L2
FIDInception-v3pool3(2048 维全局池化)两个图像集合多元高斯的 Fréchet 距离
FD-DINOv2DINOv2 (ViT)[CLS] token 或 patch 池化两个图像集合同 FID 的 Fréchet 距离
∂基础 loss 的形状

近零光滑,远处别爆炸

误差 e →loss
L2 · 离群点主导L1 · 恒定梯度Huber · 两段
同一个误差 不同的惩罚
不同的最优解
→选哪一个

最优解决定图像长什么样

  • L2 / MSE最优解 = 条件均值 → 偏模糊;对离群值敏感
    VAE 重建
  • L1 / MAE最优解 = 条件中位数;不保证更锐利
    Pix2Pix · VQGAN
  • Huber / Smooth L1近零 L2、远处 L1——平滑 + 鲁棒
    bbox 回归
  • CharbonnierL1 的光滑近似(ε ≈ 10⁻³)
    EDSR · ESRGAN
  • SSIM亮度 / 对比度 / 结构三分量乘积;比 pixel MSE 贴近人眼,不如 LPIPS 稳健
    去噪 · 去模糊
为什么像素 loss 不够
最优解决定了图像长什么样

无约束逐点回归下,L2 对应条件均值、L1 对应条件中位数;多解任务都可能出现模糊。感知或分布损失提供另一种度量,但也有偏差与训练成本。

成对图像 vs 图像集合backbone 决定指标性格最优解决定视觉表现

多模态视角 · 图文对齐 · 生成评估 · 生成训练 · 基础速查

**总纲:**多模态视觉的 loss,本质上都在做一件事——在某个"语义对齐"的空间里度量距离。CLIP 把图和文拉进同一个 embedding 空间(InfoNCE);Perceptual/LPIPS/FID 借 ImageNet 分类特征空间衡量"像不像";FD-DINOv2 用自监督特征去 ImageNet 偏置;扩散在 latent 空间做去噪 MSE;VQGAN 的 VAE 用 L1 + LPIPS + Hinge GAN 在像素、感知、对抗三个空间同时对齐。**选 loss 前先问:对齐用的空间是谁训的、训的什么任务。**这条线索贯穿后文所有章节。

1. 为什么像素空间 loss 不够用#

最朴素的图像 loss 是逐像素 MSE/L1:把生成图 x^\hat{x} 和真实图 xx 拉成向量算对应位置差的平方或绝对值均值。简单、可导、零额外开销——但几乎不能单独用来评估或优化"感知质量",原因是 像素距离和人类感知距离差得很远。

经典反例:平移 1 个像素

把一张图整体向右平移 1 像素,人眼几乎看不出差别——两张图语义完全一样。但 Pixel MSE 会很大(每个像素都和原来的邻居对应上),而人类判断几乎为零。pixel 距离对"平移、旋转、亮度、对比度、轻微噪声"这类感知无关扰动过度敏感,而对"感知相关"的扰动(物体形状改变)反而未必更敏感。

为什么直接最小化 pixel MSE 会"模糊":草叶例子

给定同一 condition,草叶的朝向、毛发的走向、布料的织纹——这些微观高频排列有无数种都符合语义。记为 x1,x2,…,xNx_1, x_2, \dots, x_N。MSE 的数学性质是:

arg⁡min⁡x^ Ex[∥x^−x∥2]=E[x]\arg\min_{\hat{x}}\ \mathbb{E}_{x}\big[\|\hat{x}-x\|^2\big] = \mathbb{E}[x]

所以最优输出是这无数合理样本的逐像素平均。每根草叶朝向各异,平均后高频信息互相抵消,只剩一片平滑的灰绿色——这就是"模糊"的本质:不是模型能力不够,而是 loss 鼓励它这么做。

解决思路很统一:先用一个预训练模型把图像映射到"语义特征空间",在那个空间里再算距离。预训练目标已经把"哪些变化重要、哪些不重要"隐含在了特征的不变性和区分性里,特征空间的距离就比 pixel 空间更贴近人类判断。后文 §2 和 §3 展开的所有方法——CLIP Score、Perceptual、LPIPS、FID、FD-DINOv2——都是这个思路的不同实例,区别只在于:用什么 backbone、取哪一层、怎么聚合、比较的对象是成对图像还是两个分布。

2. 图文对齐线:InfoNCE → CLIP Score#

2.1 对比学习家族:Contrastive → Triplet → InfoNCE#

三者都是"拉正样本近、推负样本远"的度量学习 loss,演进线索是负样本怎么取、怎么利用。

名字 公式 负样本 代表工作
Contrastive(Hadsell 2006) y⋅d2+(1−y)⋅max⁡(0,m−d)2y\cdot d^2 + (1-y)\cdot\max(0, m-d)^2 显式成对(y ⁣= ⁣0/1y\!=\!0/1);margin mm 控制负对推开距离 Siamese 原版
Triplet(FaceNet 2015) max⁡ ⁣(0, d(a,p)−d(a,n)+α)\max\!\big(0,\ d(a,p) - d(a,n) + \alpha\big) 每个 anchor 配一个正、一个负;margin α\alpha FaceNet 人脸识别
InfoNCE / NT-Xent(Oord 2018, SimCLR/CLIP) −log⁡esim(x,x+)/τ∑kesim(x,xk)/τ-\log\dfrac{e^{\text{sim}(x,x^+)/\tau}}{\sum_{k} e^{\text{sim}(x,x_k)/\tau}} batch 内其他样本全当负;本质上是多类分类 SimCLR、MoCo、CLIP

三者各自在做什么

  • Contrastive(样本对粒度):输入是一对样本 (x1,x2)(x_1, x_2) 和标签 yy。正对(y=1y=1)只管拉近 d→0d\to 0;负对(y=0y=0)推开到 margin mm 就停(hinge 项避免把负对无意义地推到无限远,浪费表征容量)。局限:需要显式准备正负对,每步只能利用 1 对,难负样本靠人工挖掘。
  • Triplet(三元组粒度):输入是 (anchor, 正, 负) 三元组,约束 d(a,p)+α<d(a,n)d(a,p)+\alpha < d(a,n)——只关心"正比负近 α\alpha"的相对关系,不强求绝对距离。比 Contrastive 高效(一步同时用 1 正 1 负),且相对判据更贴合"人脸验证/图像检索"这类排序任务。局限:每步仍只推开 1 个负样本,且 triplet 采样策略(semi-hard mining)决定成败——FaceNet 的主要工程难点就在挖 triplet。
  • InfoNCE / NT-Xent(batch 粒度):不再成对喂,而是把 batch 里其他 N−1N-1 个样本全当负,一次推开 N−1N-1 个。本质是"NN 类 softmax 分类"——正样本是正确答案,其他全是错误答案。可证明它在最大化样本间互信息的下界(名字 Info-NCE 的由来)。硬负样本会在大 batch 内自然出现,无需人工挖掘;CLIP 靠这个把 batch 做到 32768。

前置速览:Cross-Entropy(CE)——InfoNCE 的数学母体

InfoNCE 被称作"NN 类 softmax 分类"不是比喻,它就是把 CE 套在"batch 里 NN 个候选中选出正样本"这个分类问题上。

定义:真实分布 pp、预测分布 qq,交叉熵 H(p,q)=−∑ipilog⁡qiH(p,q) = -\sum_i p_i \log q_i。分类里 pp 是 one-hot,求和只剩正确类那一项:

L=−log⁡q正确类别\mathcal{L} = -\log q_\text{正确类别}

为什么是 −log⁡-\log:① MLE 等价——最小化 CE = 最大化模型对数据的对数似然;② KL 等价——H(p,q)=H(p)+DKL(p∥q)H(p,q)=H(p)+D_{KL}(p\|q),H(p)H(p) 是常数,所以也 = 最小化预测到真实分布的 KL 散度;③ 惩罚形状——q ⁣→ ⁣0q\!\to\!0 时罚爆炸,q ⁣→ ⁣1q\!\to\!1 时趋 0,契合"错得越离谱罚越狠"。

与 softmax 的黄金搭档:logits zz 过 softmax 得 qq,再过 CE,梯度 ∂L/∂zi=qi−pi\partial\mathcal{L}/\partial z_i = q_i - p_i——"预测减真实",形式干净到不需要任何额外项。这是 softmax + CE 成为分类标配的根本数学原因。

接到 InfoNCE:把"类别"换成"batch 里 NN 个候选",正样本位置 one-hot 为 1,相似度 sim(x,xk)/τ\text{sim}(x,x_k)/\tau 当 logits,套 softmax + CE——就得到 §2.1 表格里 InfoNCE 的公式。InfoNCE 的温度 τ\tau 实际上就是给 logits 除了个 scale,道理和 CE/softmax 完全相通。

InfoNCE 两种变体:CLIP 式 vs SimCLR 式

同一个 InfoNCE 公式,放在不同任务里"一个 batch 能推开多少负样本"不一样。差别在正样本从哪来:

  • 变体 A:CLIP 式(跨模态,正对天然存在)
    batch 里有 NN 对天然配对,例如 NN 张图 + NN 段 caption。对第 ii 张图,正样本是第 ii 段文本,负样本是其他 N−1N-1 段文本。相似度矩阵 N×NN\times N,对角线是正样本。每个 query 一次推开 N−1N-1 个负样本。CLIP / ALIGN / BLIP 等图文对比预训练都是这套模式——无需做数据增强造正对。
  • 变体 B:SimCLR 式(单模态,靠增强造正对)
    batch 里 NN 个原始样本,每个做两次数据增强得 2N2N 个 view。对 view xix_i,正样本是"同一张原图的另一个增强" xi+x_i^+,负样本是剩余 2N−22N-2 个 view(包括其他原图的两个增强)。相似度矩阵 2N×2N2N\times 2N。每个 query 一次推开 2N−22N-2 个负样本。SimCLR / MoCo / DINO 等单模态自监督都是这套模式。

所以前文(以及下一框)说的"batch 内其他 N−1N-1 样本都当负"严格讲是CLIP 式的表述;SimCLR 式下实际是 2N−22N-2。一句话概括差异:有没有天然配对 → 决定正样本从哪来 → 决定相似度矩阵多大、一次能推开多少负样本。

为什么 InfoNCE 赢了:负样本规模 × 对比强度

Contrastive / Triplet 每步只用 1–2 个负样本,"难负样本"要靠手工挖掘;InfoNCE 把 batch 内其他 N−1N-1 样本都当负,负样本规模由 batch size 决定——SimCLR 用 8192,MoCo 搭 queue 到 65536,CLIP 训练时 batch = 32768。负样本越多、任务越难、表征越判别。

温度 τ\tau 控制 softmax 分布尖锐度:τ\tau 小 → 分布尖锐 → loss 对"最难的那个负样本"更敏感,梯度集中;τ\tau 大 → 分布平缓 → 所有负样本都贡献梯度。CLIP 把 τ\tau 做成可学参数(初始化在 0.07 附近)。

2.2 CLIP 的训练目标:对称 InfoNCE#

Radford et al. 2021。图像和文本各过一个 encoder,输出同维度 embedding(一般 512 或 768),在同一个空间做对比学习:

LCLIP=−12N∑i=1N[log⁡esim(Ii,Ti)/τ∑jesim(Ii,Tj)/τ+log⁡esim(Ii,Ti)/τ∑jesim(Ij,Ti)/τ]\mathcal{L}_\text{CLIP} = -\frac{1}{2N}\sum_{i=1}^{N}\left[\log\frac{e^{\text{sim}(I_i, T_i)/\tau}}{\sum_j e^{\text{sim}(I_i, T_j)/\tau}} + \log\frac{e^{\text{sim}(I_i, T_i)/\tau}}{\sum_j e^{\text{sim}(I_j, T_i)/\tau}}\right]

一个 batch 内 NN 对 (Ii,Ti)(I_i, T_i),构造 N×NN\times N 相似度矩阵,对角线是正样本。双向 softmax:每张图找自己的描述,每段描述找自己的图。

Backbone 训练目标:为什么这套 loss 产出的特征天然适合图文任务

  • 数据:WIT 数据集,4 亿从网上爬的 (image, caption) 对——规模远超 ImageNet 的 128 万张
  • 架构:图像编码器(ViT-L/14 或 ResNet-50)+ 文本编码器(Transformer),末端接投影层到共享 embedding 空间
  • 对称性:i→t 和 t→i 两个方向同时 softmax,强制两个 encoder 的输出严格可互查

三个关键后果:

  1. 共享 embedding 空间是训练目标的直接结果——不像 VGG/Inception 的特征空间只对图像有意义,CLIP 的图像特征被强迫"能被文本描述"。这是后面 CLIP Score 用 cosine 衡量图文一致性的根基
  2. 语义覆盖远超 ImageNet 1000 类。"穿毛衣的柴犬""赛博朋克城市""莫奈风格的睡莲"——分类网络根本没见过这些,CLIP 全能编码
  3. 零样本泛化——文本端是自然语言,test 时任意 prompt 都能编码到同一空间,无需 fine-tune。这也是 CLIP 能当 T2I 生成模型 condition encoder 的基础

2.3 CLIP Score:T2I 评估的标配#

Hessel et al. 2021。评估文生图的图文匹配度:

CLIPScore(x,t)=max⁡(0, cos⁡(CLIPimg(x), CLIPtext(t)))\text{CLIPScore}(x, t) = \max\big(0,\ \cos(\text{CLIP}_\text{img}(x),\ \text{CLIP}_\text{text}(t))\big)

图像 xx 和文本 prompt tt 各过 CLIP 的 image/text encoder,取两个 embedding 的余弦相似度(负值裁到 0)。

为什么必须有它:T2I 评估的核心问题不是"图像好不好看"(FID 能管),而是"图像和文本说的是不是一回事"。FID 完全无视 prompt——只要生成分布和真实分布像,它就认为好——无法回答 prompt 是否被遵循。CLIP Score 正好补上这块:它不关心分布像不像,只看单张图和 prompt 语义对不对得上。

已知局限:CLIP Score 的三个盲区

  • 数量:"三只猫"和"两只猫"的 CLIP Score 差不多,因为对比学习没强制区分精确计数
  • 空间关系:"猫在狗的左边"vs"狗在猫的左边"——CLIP 捕捉的是"图里有猫和狗",对方位不敏感
  • 细粒度属性:"镁合金""巴洛克风格""哥特式"——这些词罕见但 prompt 常用,CLIP 区分弱

原因可能是对比学习的 batch 内负样本区分度不足以强制模型学到这些细节。所以现代 T2I 评估里 CLIP Score 从来不单独用,而是和 FID/FD-DINOv2 + 人评配合。

小结:§2 这条线的本质是"把图文拉进同一个 embedding 空间"。InfoNCE 是训练这个空间的工具,CLIP Score 是在这个空间里量距离的指标——两者都建立在"共享语义空间"这个前提上。面试时被问 CLIP,几乎必然追问 InfoNCE 的公式、τ\tau 的作用、以及为什么 CLIP 的 embedding 空间适合 zero-shot。

3. 生成评估线:Perceptual → LPIPS → FID → FD-DINOv2#

这一章把图像生成质量评估的几个指标按演进叙事串起来:手工选层 → 人类标注校准 → 分布级 Fréchet → 去 ImageNet 偏置。它们共享同一个模板,差别只在 backbone 训练目标、取哪一层、成对 vs 分布、聚合方式。

3.1 共同模板#

distance(x,x^)=aggregate(ϕ(x), ϕ(x^))\text{distance}(x,\hat{x}) = \text{aggregate}\big(\phi(x),\ \phi(\hat{x})\big)

ϕ\phi 是预训练 backbone 提供的特征提取器;aggregate 可以是成对逐层 MSE、特征集合的分布距离、图-文 embedding 余弦等。

指标 Backbone 用哪层/哪种输出 比较对象 聚合方式
Perceptual Loss VGG-16/19 多层 conv 特征 成对图像 (x,x^)(x, \hat{x}) 逐层 MSE 求和
Style (Gram) Loss VGG-16/19 多层 conv 特征的 Gram 矩阵 成对图像 逐层 Gram MSE
LPIPS VGG / AlexNet / SqueezeNet 多层 conv 特征 + 学习到的线性权重 成对图像 加权 L2
FID Inception-v3 pool3(2048 维全局池化) 两个图像集合 多元高斯的 Fréchet 距离
FD-DINOv2 DINOv2(ViT) [CLS] token 或 patch 池化 两个图像集合 同 FID 的 Fréchet 距离

3.2 Perceptual Loss(VGG)——起点#

Johnson et al. 2016。用预训练 VGG 提取生成图和真实图的中间层特征,然后算 MSE:

Lperceptual=∑l∈L1ClHlWl∥ϕl(x)−ϕl(x^)∥22\mathcal{L}_\text{perceptual} = \sum_{l \in \mathcal{L}} \frac{1}{C_l H_l W_l}\big\| \phi_l(x) - \phi_l(\hat{x}) \big\|_2^2

ϕl\phi_l 是 VGG 第 ll 层的特征图,L\mathcal{L} 通常取 relu1_2, relu2_2, relu3_3, relu4_3 或其子集。

效果:比 pixel MSE 锐利得多。SRGAN、Pix2Pix、VQGAN 里都是必配组件。

Backbone 训练目标:VGG 为什么学到了"感知对齐"的特征

VGG(Simonyan & Zisserman, 2014)在 ImageNet-1k 分类上训练:128 万张图、1000 类、交叉熵。架构极简:只有 3×33\times3 conv + ReLU + maxpool + FC。

为什么"1000 类分类"就能学到感知对齐?分类 loss 隐含两个约束:

  1. 类内不变:同一类("金毛犬")的不同姿态、光照、背景要输出同一类别——网络必须忽略"感知无关"的像素变化
  2. 类间可分:不同类("金毛"vs"吉娃娃")要能分开——网络必须捕捉物体形状、纹理、部件等"感知相关"的细节

这两条恰好就是我们想要的"感知距离"定义。

Gatys 2015 的发现:VGG 的浅层特征捕捉纹理和笔触(适合描述"风格"),深层特征捕捉物体部件和语义结构(适合描述"内容")。挑层 = 挑要惩罚什么:草地纹理像塑料布 → 浅层 loss 大;该是草地却生成沙漠 → 深层 loss 大。这是"content vs style"分解的起源,也是 perceptual loss 能工作的原因。

为什么不用 ResNet? 实践上 ResNet 特征也能用但略差——residual + BN 让中间层特征偏向最终分类头,损失了层间的"低级到高级"梯度;VGG 的纯堆叠反而保留了这种梯度。

同源姐妹:Style / Gram Matrix Loss#

同样用 VGG,但对特征图的 Gram 矩阵做 MSE:

Gl(x)ij=∑kϕl(x)ik ϕl(x)jk,Lstyle=∑l∥Gl(x)−Gl(x^)∥F2G_l(x)_{ij} = \sum_{k} \phi_l(x)_{ik}\,\phi_l(x)_{jk},\qquad \mathcal{L}_\text{style} = \sum_l \| G_l(x) - G_l(\hat{x}) \|_F^2

Gram 矩阵丢掉空间信息,只保留通道间二阶统计,恰好对应"纹理/笔触风格"。Perceptual + Style 组合 = Neural Style Transfer 的全部公式。

3.3 LPIPS——用人类 2AFC 标注校准 Perceptual#

Zhang et al. 2018。在 Perceptual Loss 基础上加一层"向人类感知对齐"的校准:

LPIPS(x,x^)=∑l1HlWl∑h,w∥wl⊙(ϕ^l(x)hw−ϕ^l(x^)hw)∥22\text{LPIPS}(x,\hat{x}) = \sum_{l}\frac{1}{H_l W_l}\sum_{h,w}\big\| w_l \odot \big(\hat\phi_l(x)_{hw} - \hat\phi_l(\hat{x})_{hw}\big) \big\|_2^2

ϕ^l\hat\phi_l 是对第 ll 层特征做通道维 L2 归一化后的结果;wl∈RClw_l \in \mathbb{R}^{C_l} 是学习得到的逐通道权重。

LPIPS 相对 Perceptual Loss 做了两件事

  1. 通道维 unit-normalize:消除"某些通道激活值天然偏大"造成的偏置——否则强通道主导距离,弱但感知相关的通道被淹没
  2. 学权重 wl∈RClw_l \in \mathbb{R}^{C_l}:对每一层的每一个 channel 都学习一个标量权重(而不是每层只学一个整体权重)。直观上 LPIPS 在说"conv3_3 的 channel #17(可能检测眼睛纹理)对人类判断很重要,权重 0.8;channel #42(可能检测无关背景)不重要,权重 0.05"——通道粒度的加权远比层粒度细

校准目标:拟合 BAPPS 的 2AFC 人类判断

LPIPS 的 backbone(VGG / AlexNet / SqueezeNet)保持 ImageNet 分类预训练冻结不动;真正"学"的只有 wlw_l。

BAPPS 数据集:约 15 万组"2AFC"(two-alternative forced choice)人类判断。每组包含参考 patch + 两个 distorted 版本 + 人选"哪个更像参考"。distorted 类型涵盖 JPEG 压缩、模糊、噪声、色彩偏移、CNN artifact 等。

训练目标:让 LPIPS 距离对"人选的那个"小、对"没选的那个"大——本质上在让 wlw_l 拟合一个"人类感知预言器"。

效果:LPIPS 和人类判断的 Spearman 相关系数比任何手工选层方案都高,成为图像质量评估的新标准。

注意:LPIPS 既可做评估指标,也可直接做训练 loss(对图像可导、wlw_l 固定)。这份校准红利让 VQGAN、LDM/SD 的 VAE 训练把 LPIPS 当做 loss 的核心组件——见 §4.3。

3.4 FID——从"成对"到"分布"#

Heusel et al. 2017。评估"一批生成图"和"一批真实图"作为分布的相似程度,不是单张对单张:

FID=∥μr−μg∥22+Tr ⁣(Σr+Σg−2(ΣrΣg)1/2)\text{FID} = \|\mu_r - \mu_g\|_2^2 + \mathrm{Tr}\!\Big(\Sigma_r + \Sigma_g - 2(\Sigma_r\Sigma_g)^{1/2}\Big)

μ,Σ\mu,\Sigma 是 Inception-v3 的 pool3 特征(2048 维)在每个集合上的均值和协方差,两个多元高斯之间的 Fréchet 距离有闭式解。

为什么做到分布级:单张对单张的指标无法衡量"多样性"。FID 同时考虑:

  • 均值差异 ∥μr−μg∥2\|\mu_r - \mu_g\|^2:生成图的"平均语义"和真实图的"平均语义"是否一致——衡量质量
  • 协方差项:生成图覆盖的特征范围是否和真实图一样广——衡量多样性。mode collapse 的模型协方差会显著偏小,FID 就高

这是 FID 至今仍是主流评估指标的原因:唯一同时惩罚"质量差"和"多样性差"的常用指标。

Backbone 训练目标:Inception-v3 为什么适合做分布估计

Inception-v3(Szegedy 2015)也是 ImageNet-1k 分类,但比 VGG 先进——top-1 约 78.8%。关键是 Inception module(并行 1×1/3×3/5×51\times1/3\times3/5\times5 conv + pool)让网络多尺度感知。

为什么用 pool3(分类前的全局池化,2048 维):

  1. 语义浓缩:整张图压成 2048 维向量——"图像语义摘要"。分类 logits 丢失了"类内差异"(两张都是'猫'的图都接近 cat logit),pool3 保留了
  2. 多尺度架构的副产品:Inception module 让 pool3 特征对物体大小、位置鲁棒
  3. 维度合适:2048 维够大承载语义,又小到让 2048×20482048\times2048 的协方差估计稳定

局限:Fréchet 距离假设特征高斯,实际非严格高斯但"够用";Inception 在 ImageNet 上训,如果生成图分布离 ImageNet 远(医学、动漫、抽象艺术),特征失真,FID 不可靠。这是 §3.5 FD-DINOv2 出现的直接动因。

历史对照:IS(Inception Score)为什么被淘汰

Salimans 2016 提出的 IS 比 FID 更早。IS 用一个预训练好的 Inception 分类器,把每张生成图喂进去,得到一个"这张图属于各个类的概率分布" p(y∣x)p(y|x)(1000 个 ImageNet 类上的 softmax)。公式是:

IS=exp⁡(Ex[KL(p(y∣x) ∥ p(y))])\text{IS} = \exp\big(\mathbb{E}_{x}[\mathrm{KL}(p(y|x)\,\|\,p(y))]\big)

这个 KL 同时奖励两件事:

  1. 单张图的 p(y∣x)p(y|x) 要尖锐——某一类概率接近 1、其他接近 0,意思是"这张图清楚地是某个东西",不是糊成一团。→ 衡量质量
  2. 整体 p(y)=Ex[p(y∣x)]p(y)=\mathbb{E}_x[p(y|x)] 要均匀——1000 个类都有生成到,不是只会画狗。→ 衡量多样性

致命缺陷:整个计算里只有生成图,没有真实图参与——只问"Inception 看着你的图觉得怎么样",不问"你的图和真实图像不像"。这就漏出两个大洞:

  • 漏洞 1:Mode collapse 到每类一张。假设生成器学会了"每个 ImageNet 类恰好产出一张清晰标准图",总共 1000 张,反复输出这 1000 张。每张图 Inception 都能自信分类(p(y∣x)p(y|x) 极尖锐 ✓),1000 类全覆盖(p(y)p(y) 完美均匀 ✓),IS 满分。但这是个只能产 1000 张的废物生成器——完全没学到分布。IS 发现不了,因为它不和真实数据比多样性,只看类别覆盖度。
  • 漏洞 2:"非自然但有猫味"。一张奇形怪状、人眼一看就不像真实照片的图,但它恰好有足够多的猫特征让 Inception 自信判成"猫"——p(y∣x)p(y|x) 尖锐 → IS 奖励你。但这张图根本不在真实图像分布里,IS 不知道,因为它从不和真实猫的图做对比。

对照 FID 如何堵这两个洞:FID 全程在和真实分布对比。Mode collapse → 生成分布的协方差远小于真实分布 → FID 立刻飙高;非自然图 → 特征统计和真实图对不上 → FID 也高。两个洞都堵上了。

3.5 FD-DINOv2——去 ImageNet 偏置#

Stein et al. 2023。公式和 FID 完全一样,但把 Inception-v3 换成 DINOv2:

FD-DINOv2=∥μr−μg∥22+Tr ⁣(Σr+Σg−2(ΣrΣg)1/2)\text{FD-DINOv2} = \|\mu_r - \mu_g\|_2^2 + \mathrm{Tr}\!\Big(\Sigma_r + \Sigma_g - 2(\Sigma_r\Sigma_g)^{1/2}\Big)

μ,Σ\mu,\Sigma 改为在 DINOv2 的 ViT 输出(如 [CLS] token 或 patch 池化)上估计。

Backbone 训练目标:DINOv2 为什么比 Inception 更中立

DINOv2(Oquab et al. 2023,Meta)是自监督预训练,完全无标签。融合两条之前的路线:

  • DINO self-distillation(Caron 2021):学生网络看一张图的一个增广视图,目标是输出和教师网络(学生的 EMA)看另一个视图相同的 embedding。无负样本、无对比 loss
  • iBOT masked image modeling:随机遮盖一部分 patch,让网络从剩下的预测被遮 patch 的 embedding——BERT 的 masked token prediction 搬到图像

数据:LVD-142M,Meta 自建的 142M 张精选无标签图。

为什么特征比 Inception 更适合做评估:

  1. 无 ImageNet 类偏置。Inception 特征被 1000 类 one-hot 目标"塑造"过,对 ImageNet 外概念(艺术、动漫、医学)失真。DINOv2 自监督 loss 没有"类"的概念,特征对任意视觉概念一视同仁
  2. 自监督目标学的是"图像内在结构"——两视图一致性、mask patch 上下文预测——不绑定具体下游任务,特征更"通用"
  3. Stein 2023 实证:FD-DINOv2 和人类判断的 Spearman 相关系数显著高于 FID。特别是现代扩散模型(SD、Imagen、Muse),FID 常给和人类直觉相反的排名——因为扩散生成图在 Inception 看来"不够 ImageNet 味"。DINOv2 不吃这一套

学界正在把 FD-DINOv2 当作 FID 的接班人,尤其在评估扩散/流匹配模型时。

**一条线贯穿 §3:**Perceptual → LPIPS → FID → FD-DINOv2 本质上都是"借 backbone 映射到语义空间再算距离"。脾气由 backbone 训练目标决定:VGG/Inception 是 ImageNet 分类,对 ImageNet 分布内自然图最准,类外失真;LPIPS 在 VGG 之上再用人类 2AFC 学一层权重,和人类判断相关性最高;DINOv2 是无标签自监督,不受类偏置影响,评估扩散模型更稳定。选指标前先问"backbone 训得对不对",再问"聚合方式合不合理"。

4. 生成训练三件套:扩散 / VAE / VQGAN 配方#

前面两章讲的是"评估"和"对齐";这一章讲实际训练生成模型时用什么 loss。

4.1 扩散模型:ε / v / x₀ 三种参数化#

DDPM / LDM / 流匹配模型的训练 loss 都是 MSE,但 MSE 作用在"什么变量"上有三种选择:

Lϵ=∥ϵ−ϵθ(xt,t)∥2,Lv=∥vt−vθ(xt,t)∥2,Lx0=∥x0−fθ(xt,t)∥2\mathcal{L}_{\epsilon} = \|\epsilon - \epsilon_\theta(x_t, t)\|^2,\quad \mathcal{L}_{v} = \|v_t - v_\theta(x_t, t)\|^2,\quad \mathcal{L}_{x_0} = \|x_0 - f_\theta(x_t, t)\|^2

其中 xt=αtx0+σtϵx_t = \alpha_t x_0 + \sigma_t \epsilon, vt=αtϵ−σtx0v_t = \alpha_t \epsilon - \sigma_t x_0。三者之间是线性变换,梯度方向等价,但方差结构不同——不同时间步 tt 对 loss 的贡献不一样。

参数化 来源 特点 典型场景
ϵ\epsilon-pred DDPM 原始(Ho 2020) 大 tt(高噪)端 loss 主导;小 tt(低噪)端 ϵ\epsilon 几乎全是 xtx_t,预测变"平凡",方差不稳 标准 DDPM / LDM
vv-pred Salimans 2022(Progressive Distillation) 全时间步方差稳定;渐进式蒸馏必备;大 tt 端 v≈ϵv\approx\epsilon、小 tt 端 v≈−x0v\approx-x_0,两端都不退化 Stable Diffusion 2.x / 蒸馏
x0x_0-pred Consistency Models / LCM 直接预测"终点",适合一步/少步采样;小 tt 端预测简单,大 tt 端难度高 Consistency Models / LCM

面试高频:为什么蒸馏偏爱 vv-pred

蒸馏把"多步采样"压成"一步/少步"。如果用 ϵ\epsilon-pred,小 tt 端的 loss 几乎没信号(网络学的是"认出自己"),但蒸馏需要网络在所有 tt 都能一步到位,小 tt 端的行为必须准确。vv-pred 把 loss 方差在所有 tt 上拉平,每一步都能提供有效学习信号——这就是 progressive distillation 用 v-pred 而不用 ε-pred 的根本原因。

4.2 VAE:重建 + KL#

LVAE=Eq(z∣x)[−log⁡p(x∣z)]⏟重建+β⋅KL(q(z∣x) ∥ p(z))⏟后验拉向先验\mathcal{L}_\text{VAE} = \underbrace{\mathbb{E}_{q(z|x)}[-\log p(x|z)]}_{\text{重建}} + \beta\cdot\underbrace{\mathrm{KL}(q(z|x)\,\|\,p(z))}_{\text{后验拉向先验}}

  • 重建项:可以是 L2 / L1 / perceptual / LPIPS(VQGAN 里全用,见 §4.3)
  • KL 项:encoder 输出的后验 q(z∣x)q(z|x) 拉向标准高斯先验 p(z)=N(0,I)p(z) = \mathcal{N}(0, I),规整后验;先验采样质量还取决于后验匹配与解码器
  • β\beta 权重:β=1\beta=1 是标准 ELBO;β>1\beta>1(β-VAE)加强解耦和正则化,代价是重建更模糊;LDM/SD 的 VAE 实际用 β ⁣≈ ⁣10−6\beta\!\approx\!10^{-6}——几乎不约束 KL,目标是"纯重建 + 可采样近似",因为 latent 不需要严格标准高斯

4.3 VQGAN / LDM VAE 配方:L1 + LPIPS + patch Hinge GAN#

现代潜空间生成模型(SD、LDM、Imagen 的 VAE 部分)几乎都用这套配方训练编码器/解码器。

LVAE-GAN=λ1LL1+λ2LLPIPS+λ3LGANHinge+λ4LKL (+λ5LVQ)\mathcal{L}_\text{VAE-GAN} = \lambda_1 \mathcal{L}_\text{L1} + \lambda_2 \mathcal{L}_\text{LPIPS} + \lambda_3 \mathcal{L}_\text{GAN}^\text{Hinge} + \lambda_4 \mathcal{L}_\text{KL}\ (+ \lambda_5 \mathcal{L}_\text{VQ})

VQGAN 再加一项 codebook commitment loss(见下)。

每项的作用(这是面试最爱问的拆解)

  • L1 重建:保像素准度。L1 的条件中位数性质比 L2 的条件均值少一点"平均模糊"
  • LPIPS:保感知细节。解决"L1 导致纹理模糊"——在 VGG 特征空间 + 人类校准权重下算距离,鼓励输出纹理锐利、结构正确
  • patch Hinge GAN:保高频纹理。判别器是 PatchGAN(对每个 patch 独立判真假,而不是整图),强制输出在局部 patch 上也"像真实图"。Hinge loss 是 BigGAN/StyleGAN2/VQGAN 的默认 GAN loss:max⁡(0,1−D(x))+max⁡(0,1+D(x^))\max(0,1-D(x)) + \max(0,1+D(\hat{x})),训练稳定性远优于 vanilla GAN
  • KL(或 VQ commitment):正则 latent 空间。LDM 用 KL,VQGAN 用 codebook commitment(下)

经验系数比例:典型配比是 L1:1, LPIPS:1, GAN:0.1~0.5, KL:1e-6。GAN 权重小因为判别器学得快,梯度幅度大;KL 权重极小因为只想"轻度正则"latent

VQ Commitment Loss(VQGAN 专属)#

VQGAN 用离散 codebook 替代连续高斯先验——encoder 输出 zez_e 被最近的 codebook entry ee 替换:

LVQ=∥sg[ze]−e∥22⏟codebook loss+β∥ze−sg[e]∥22⏟commitment loss\mathcal{L}_\text{VQ} = \underbrace{\|\text{sg}[z_e] - e\|_2^2}_{\text{codebook loss}} + \beta\underbrace{\|z_e - \text{sg}[e]\|_2^2}_{\text{commitment loss}}

sg[⋅]\text{sg}[\cdot] 是 stop-gradient。两项分别把 codebook 拉向 encoder 输出 / 把 encoder 输出拉向 codebook。

加上这项后,encoder 输出和 codebook 会共同收敛,离散 latent 空间逐步稳定。LDM 用连续高斯 KL 替代,两条路线并存;SDXL / SD3 的 VAE 仍属 KL 路线。

4.4 附属:Cycle / Identity#

用于无配对图像转换(CycleGAN)或多模态风格迁移。核心思路:没有配对数据时,靠"双向翻译回到自己"来约束语义一致性。

Lcycle=∥F(G(x))−x∥1+∥G(F(y))−y∥1,Lidentity=∥G(y)−y∥1+∥F(x)−x∥1\mathcal{L}_\text{cycle} = \|F(G(x)) - x\|_1 + \|G(F(y)) - y\|_1,\qquad \mathcal{L}_\text{identity} = \|G(y) - y\|_1 + \|F(x) - x\|_1

  • Cycle:x ⁣→ ⁣y ⁣→ ⁣xx\!\to\!y\!\to\!x 要还原自己,防止 mode collapse 到"不管输入啥都输出同一张 yy"
  • Identity:把目标域图直接输入 GG 应该输出自己,稳定颜色/风格,避免不必要的改动

多模态岗不常直接用 CycleGAN,但在"图像到图像翻译""风格化"类任务里这对 loss 仍常见。

5. 基础与配角 loss 速查#

以下 loss 在多模态岗不是核心考点,但偶尔被问到原理。以速查表为主,不展开推导。

5.1 像素与结构基础#

名称 公式 特点 典型场景
L2 / MSE ∣x−x^∣22|x-\hat{x}|_2^2 光滑可导;对离群值敏感;生成图偏模糊(最优解 = 条件均值) 回归基线、VAE 重建
L1 / MAE ∣x−x^∣1|x-\hat{x}|_1 对离群值更鲁棒;可能更抗离群值(最优解 = 逐坐标条件中位数,但不保证落在真实模式);0 处不可导(次梯度) Pix2Pix、VQGAN、超分
Huber / Smooth L1 $\begin{cases}\tfrac{1}{2}r^2 & r <\delta\ \delta(
Charbonnier (x−x^)2+ϵ2\sqrt{(x-\hat{x})^2 + \epsilon^2} L1 的光滑近似(ϵ≈10−3\epsilon\approx 10^{-3}) EDSR / ESRGAN / 去噪
SSIM (2μxμy+c1)(2σxy+c2)(μx2+μy2+c1)(σx2+σy2+c2)\dfrac{(2\mu_x\mu_y + c_1)(2\sigma_{xy} + c_2)}{(\mu_x^2+\mu_y^2+c_1)(\sigma_x^2+\sigma_y^2+c_2)} 局部亮度/对比度/结构三分量乘积;比 pixel MSE 更符合人眼;不如 LPIPS 稳健 图像去噪/去模糊
MS-SSIM SSIM 在图像金字塔多尺度加权 对尺度变化更鲁棒 同上

深挖:为什么 L1 比 L2 对离群点更鲁棒

① 梯度视角(最直观)。L2 梯度 ∂(y−y^)2/∂y^=−2(y−y^)\partial(y-\hat{y})^2/\partial\hat{y} = -2(y-\hat{y}) 随残差线性放大,L1 梯度 ∂∣y−y^∣/∂y^=−sign(y−y^)∈{±1}\partial|y-\hat{y}|/\partial\hat{y} = -\text{sign}(y-\hat{y}) \in \{\pm 1\} 恒为常数。残差 1 / 10 / 100 时,L2 梯度分别是 2 / 20 / 200,L1 始终是 1。

设 batch 里 99 个正常样本残差 ≈ 1、1 个离群点残差 = 100:L2 下离群点贡献梯度 200、正常样本合计 198——一个离群点 ≈ 所有正常样本之和,模型被它拽着走,为降其残差而牺牲正常样本;L1 下离群点贡献 1、正常样本合计 99——离群点只是普通一员。这就是"鲁棒"的真正含义:离群点的话语权不因它偏得远而被放大。

② 图像重建视角。 对固定条件做确定性回归,MSE 的总体最优解是条件均值,逐坐标 MAE 的最优解是条件中位数。二者都可能落在低密度区域:例如等概率取 −1 或 +1 时,区间 [−1,1] 内任一点都是 L1 最优解。因而“L1 自动选中真实模式、必然锐利”不成立。感知或对抗项改变了目标,是否改善纹理需要实验确认。

上面的残差梯度比较只针对输出;参数梯度还要乘网络 Jacobian,不同样本的方向也可能抵消。不能只按残差数量断言总参数更新必被某个样本主导。

5.2 GAN loss 家族#

名字 判别器 loss 生成器 loss 特点
Vanilla GAN (Goodfellow 2014) −log⁡D(x)−log⁡(1−D(G(z)))-\log D(x) - \log(1-D(G(z))) −log⁡D(G(z))-\log D(G(z))(non-saturating) 理论源头;梯度消失严重
LSGAN (Mao 2016) 12(D(x)−1)2+12D(G(z))2\tfrac{1}{2}(D(x)-1)^2 + \tfrac{1}{2}D(G(z))^2 12(D(G(z))−1)2\tfrac{1}{2}(D(G(z))-1)^2 MSE 替 log;更稳定
WGAN (Arjovsky 2017) −D(x)+D(G(z))-D(x) + D(G(z)) + weight clipping −D(G(z))-D(G(z)) Wasserstein 距离;clipping 不优
WGAN-GP (Gulrajani 2017) 同 WGAN + 梯度惩罚 λ(∣∇D∣2−1)2\lambda(|\nabla D|_2 - 1)^2 同 WGAN 工程稳定
Hinge GAN (Lim 2017) max⁡(0,1−D(x))+max⁡(0,1+D(G(z)))\max(0,1-D(x)) + \max(0,1+D(G(z))) −D(G(z))-D(G(z)) 现代 SOTA 事实标准:BigGAN / StyleGAN2 / VQGAN

工程共识:GAN loss 单独很难收敛,需搭配 L1/LPIPS/feature matching 稳定训练。StyleGAN2 用 "non-saturating + R1 梯度惩罚";VQGAN 用 §4.3 的三件套;这也是现代扩散 VAE 的主流配方。

Feature Matching Loss#

Pix2PixHD:让生成图通过判别器中间层特征和真实图对齐:LFM=∑l∥D(l)(x)−D(l)(G(z))∥1\mathcal{L}_\text{FM} = \sum_l \|D^{(l)}(x) - D^{(l)}(G(z))\|_1。判别器充当"动态感知特征提取器",稳定 GAN 训练并让高频细节更准。

5.3 分类与分割(检测/分割岗相关)#

名称 公式 目标
Cross-Entropy −∑cyclog⁡y^c-\sum_c y_c \log \hat{y}_c 分类基础
Focal Loss (Lin 2017) −αc(1−y^c)γlog⁡y^c-\alpha_c(1-\hat{y}_c)^\gamma \log \hat{y}_c 降低易分样本权重;RetinaNet 解决正负样本不平衡
Dice Loss $1 - \dfrac{2 X\cap Y
Tversky / Focal Tversky Dice 广义版,可调 FP/FN 权重 严重不平衡分割(医学)
BCE −ylog⁡y^−(1−y)log⁡(1−y^)-y\log\hat{y} - (1-y)\log(1-\hat{y}) 二分类;分割常用 BCE + Dice
IoU / GIoU / DIoU / CIoU 1−IoU1 - \text{IoU} 及广义版 bbox 回归,比 L1 更贴近检测指标

5.4 度量学习(非 InfoNCE 部分)#

InfoNCE 已在 §2.1 讲透。以下是其他度量学习 loss,人脸/检索岗常见。

名称 公式 用途
Contrastive(Hadsell 2006) y⋅d2+(1−y)⋅max⁡(0,m−d)2y\cdot d^2 + (1-y)\cdot\max(0, m-d)^2 Siamese 原版
Triplet(FaceNet 2015) max⁡(0,d(a,p)−d(a,n)+α)\max(0, d(a,p) - d(a,n) + \alpha) 度量学习 / 人脸识别
ArcFace / CosFace softmax 前给正确类 logit 加 angular margin 人脸识别 SOTA;强制类间夹角大

5.5 其他常见辅助#

  • Total Variation (TV) Loss:∑∣xi+1,j−xi,j∣+∣xi,j+1−xi,j∣\sum |x_{i+1,j} - x_{i,j}| + |x_{i,j+1} - x_{i,j}|——惩罚相邻像素差异,去伪影/平滑噪声,早期风格迁移常用
  • Path Length Regularization(StyleGAN2):让 ww 空间到图像空间的 Jacobian 范数稳定,改善感知 smoothness

6. 任务 → 损失选用指南#

实际项目的"默认配方",按岗位相关性分层。

6.1 多模态核心场景#

任务 典型 loss 组合 说明
VLM 对比预训练
(CLIP、SigLIP、EVA-CLIP)
对称 InfoNCE(图→文 + 文→图) CLIP 的 τ 可学习;SigLIP 把 softmax 换 sigmoid,摆脱 batch 全局规约
T2I 生成训练
(SD / LDM / Imagen)
Diffusion ϵ- 或 v-pred MSE(在 latent 上) v-pred 方差稳定、蒸馏友好;条件 CLIP 文本 embedding 作 cross-attn 输入
VAE / VQGAN 编码器
(LDM/SD 的 VAE)
L1 + LPIPS + patch Hinge GAN + KL(或 VQ commitment) §4.3 的三件套;现代潜空间模型标配
T2I 评估 FD-DINOv2(或 FID)+ CLIP Score + 人评 FID/FD-DINOv2 看"分布像",CLIP Score 看"prompt 对",人评看细节;三者缺一不可
扩散蒸馏
(Progressive / Consistency / LCM)
v-pred MSE 或 x0-pred MSE + 对教师的一致性约束 v-pred 因为方差稳而被蒸馏青睐;LCM 用 x₀-pred 一步到位
自监督图像预训练 InfoNCE(MoCo/SimCLR)或 DINO 自蒸馏(DINOv2) 对比 vs 非对比两条路线

6.2 传统视觉场景(背景)#

任务 典型 loss 组合 说明
超分辨率 L1 (Charbonnier) + VGG perceptual + Hinge GAN SRGAN / ESRGAN 配方
图像去噪/去模糊 L1 或 Charbonnier + SSIM 经典恢复任务通常不上 GAN
图像翻译 (Pix2Pix) L1 + conditional GAN L1 均值模糊 + GAN 锐化,互补
Unpaired 翻译 (CycleGAN) GAN + Cycle + Identity 无配对数据时的语义一致约束
风格迁移 (Gatys) VGG content + VGG Gram style Perceptual + Style 组合
GAN 生成 (StyleGAN2) Non-saturating GAN + R1 + path length 大规模 adversarial 单独训即可
检测 (Faster R-CNN / RetinaNet) CE (或 Focal) + Smooth L1 (或 GIoU) 分类 + bbox 回归
语义分割 CE + Dice 不平衡时加 Focal
人脸识别 ArcFace (或 CosFace) margin-based softmax 比 triplet 稳定

通用经验原则

  • 像素重建 loss 的适用性取决于任务:确定性一对多重建可能产生平均化;扩散的噪声 MSE 并不等于直接回归最终图像。
  • 无条件 GAN 不要求成对的 L1/LPIPS:是否增加重建或感知约束取决于任务,训练稳定性仍需验证。
  • 评估指标至少用两种:分布级(FID / FD-DINOv2)+ 语义对齐(CLIP Score)+ 成对(LPIPS)
  • L1 + LPIPS + Hinge GAN 是一种常见配方;权重、判别器启用时机与数据域需要校准。
  • 多 loss 加权系数反映梯度幅度差异,不是随便配的——典型 "GAN:0.1~0.5 + LPIPS:1 + L1:1 + KL:1e-6" 是量级调过的结果

7. 要点速查#

按多模态岗考查频率从高到低排。

① 图文对齐线(最高频)——CLIP 用对称 InfoNCE在 4 亿图文对上训练,产出图文共享 embedding 空间。这既解释了 zero-shot 分类能力,也解释了 CLIP Score 为什么能衡量 T2I 的 prompt 遵循度。InfoNCE 的温度 τ\tau 控制 softmax 尖锐度,τ\tau 小对难负样本敏感,CLIP 把 τ\tau 做成可学参数。CLIP Score 的三大盲区:计数、空间关系、细粒度属性——所以 T2I 评估从不单独用。

② 生成评估线——FID = Inception-v3 pool3 特征的 Fréchet 距离,同时惩罚质量(均值差)和多样性(协方差),这是它比 IS 受信任的根本原因(IS 不看真实数据)。FD-DINOv2 公式和 FID 完全一样,但 backbone 换成自监督 DINOv2——无 ImageNet 类偏置,评估扩散模型时 Spearman 相关性显著高于 FID,正成为新标准。LPIPS 在 VGG 特征上额外学一层per-channel 权重,用 BAPPS 的 2AFC 人类标注校准——和人类判断相关性最高,既可做指标也可做 loss(SD/LDM 的 VAE 就用它)。

③ 扩散参数化——ϵ\epsilon / vv / x0x_0 三种参数化梯度方向等价但方差结构不同。vv-pred 是蒸馏首选:全时间步方差稳定,两端都不退化(v ⁣≈ ⁣ϵv\!\approx\!\epsilon 当大 tt,v ⁣≈ ⁣−x0v\!\approx\!-x_0 当小 tt),这就是 Progressive Distillation / SD 2.x 用 v-pred 的原因。x0x_0-pred 用于 Consistency Models / LCM 的"一步到位"。

**④ 生成训练三件套——**LDM/SD/VQGAN 的 VAE 都用 L1 + LPIPS + patch Hinge GAN:L1 保像素,LPIPS 保感知(人类校准),patchGAN Hinge 保高频纹理,再加 KL(连续)或 VQ commitment(离散)正则 latent。VAE 的 β:LDM 实际用 β ⁣≈ ⁣10−6\beta\!\approx\!10^{-6}——几乎不约束 KL,因为 latent 不需要严格标准高斯,目标是"纯重建 + 可采样近似"。

**⑤ 工程心法(兜底)——**纯 pixel loss 必模糊(条件均值),纯 GAN loss 必发散,两者组合才出可用生成。L1 比 L2 锐利的根本原因是条件中位数 vs 条件均值。Hinge GAN 是现代 SOTA 事实标准(BigGAN/StyleGAN2/VQGAN)。多 loss 加权系数反映梯度量级差异,典型配比 "GAN:0.1~0.5 + LPIPS:1 + L1:1 + KL:1e-6" 是调过的结果。

资料:LPIPS、FID、CLIP。评估应固定样本数、预处理与特征提取器;FID 有有限样本偏差,跨配置数值不宜直接比较。