Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

4.1 生成建模要做什么

前三讲的模型都在学一个映射:给 x\boldsymbol x,输出标签 yy。这一节要换一个问法,换成关于数据本身的问题——这批图像、这段音频、这些折叠角度的分布,长什么样?

听起来抽象,但它对应三件非常具体的事。第一件是采样:我们想造出训练集里没有、但看起来属于同一批数据的新样本(补数据、做超分、生成动作序列)。第二件是打分:给一个 x\boldsymbol x,判断它更像「真实数据」还是「异类」(异常检测、越界动作报警、给生成结果排序)。第三件是表示:把高维数据压到低维、找到可编辑的方向(把一张脸的「笑」这个方向调大一点)。

这三件事对应同一台机器的三个出口,而这台机器的名字叫概率密度 p(x)p(\boldsymbol x)。本节的任务是把这个说法精确化,然后给出一张地图:所有生成模型都在同一片地形上,只是选的路不同。地图画对了,后面七节的每一节都能被定位到某个格子里。

4.1.1 从判别式到生成式

定义 4.1.1 · 判别模型与生成模型

给定数据 x\boldsymbol x(如图像、音频帧、动作序列)与标签 yy:

判别模型(discriminative model)直接建模条件分布 p(y∣x)p(y\mid\boldsymbol x) 或等价的决策函数,训练目标是「在给定输入上预测正确标签」。它不需要知道 x\boldsymbol x 本身长什么样。

生成模型(generative model)建模数据自身的分布 p(x)p(\boldsymbol x)(或联合分布 p(x,y)p(\boldsymbol x,y))。一个合格的生成模型需要提供下面两项中的至少一项、通常尽力提供两项:

  1. 密度(或其代理):对任意 x\boldsymbol x 能给出 p(x)p(\boldsymbol x)、它的一个下界、或一个单调相关的相对分数;
  2. 采样:能从 p(x)p(\boldsymbol x) 或它的近似里抽出训练集里没有出现过的新样本 x~\tilde{\boldsymbol x}。
一句话区分:谁会做「无中生有」

判别模型是被动的判官——你把东西递过去,它说「这是猫」。生成模型得能自己造一只猫出来。这两件事的能力并不互相蕴含:一个能完美分类猫狗的模型,对「猫的图像在像素空间里应该长什么样」可能一无所知;一个能画出逼真猫的模型,也可能完全不知道「猫」这个词对应什么标签。

还有一层更实际的差别:判别模型有逐样本的正确答案(yy 就在数据里),所以损失可以逐样本算;生成模型没有「这张图应该是哪张图」的标准答案,只有「你给出的分布与该数据集的分布差多远」这个整体性判据。本讲全部难度都源自这一点——后面每一节都是在用不同的办法绕过它。

批量形式与形状约定

本讲沿用第 1 讲的批优先约定:张量第 0 维是批维。生成建模里额外需要显式区分「数据空间」与「潜空间」两套坐标:

量 形状 说明
x\boldsymbol x B×DB\times D 一批数据;图像时 D=C×H×WD=C\times H\times W(展平后)
zz B×dB\times d 潜码(latent code),通常 d≪Dd\ll D
p(x)p(\boldsymbol x) 标量密度 对连续数据是密度(可大于 1);对离散数据是概率质量
TT 标量 扩散 / 流的步数(离散时间)或积分时间上限(连续时间)

密度与概率的分工:连续情形下 p(x)p(\boldsymbol x) 是密度,只有积分 ∫Ap(x)dx\int_{\mathcal A}p(\boldsymbol x)d\boldsymbol x 才是概率。这条差别在评价生成模型时会立刻咬人——第 4.1.4 节的那道例题就踩在这里。

4.1.2 三支谱系:显式似然、隐式、得分—能量

所有生成模型都在做同一件事:逼近 pdata(x)p_{\text{data}}(\boldsymbol x)。但它们选择暴露什么、隐藏什么的方式不同,于是分成三支。

定义 4.1.2 · 生成模型的三支谱系

设 pθ(x)p_\theta(\boldsymbol x) 是模型分布。

(一)显式似然(explicit likelihood):模型给出归一化的密度或它的可计算下界。∫pθ(x)dx=1\int p_\theta(\boldsymbol x)d\boldsymbol x=1 由构造保证。旗下两种子构造:

  • 精确可算:自回归模型 pθ(x)=∏ipθ(xi∣x<i)p_\theta(\boldsymbol x)=\prod_i p_\theta(x_i\mid \boldsymbol x_{&lt;i});归一化流(normalizing flow)pθ(x)=pz(fθ−1(x))∣det⁡∂fθ−1∂x∣p_\theta(\boldsymbol x)=p_z(f_\theta^{-1}(\boldsymbol x))\left|\det\frac{\partial f_\theta^{-1}}{\partial \boldsymbol x}\right|。
  • 下界可算:变分自编码器与扩散模型,优化 log⁡pθ(x)\log p_\theta(\boldsymbol x) 的一个下界(ELBO),密度本身不可解。

(二)隐式(implicit):不定义密度,只定义一个采样过程 x~=Gθ(u)\tilde{\boldsymbol x}=G_\theta(\boldsymbol u)(u\boldsymbol u 为已知噪声),pθp_\theta 就是该过程诱导的推前分布(pushforward)。GAN 属此类,密度无法写出,只能通过判别器间接比较。

(三)得分—能量(score / energy):只学密度的形状而不是它的大小。能量模型写成 pθ(x)=exp⁡(−Eθ(x))/Zθp_\theta(\boldsymbol x)=\exp(-E_\theta(\boldsymbol x))/Z_\theta,配分函数 ZθZ_\theta 不可解、训练与采样要跑 MCMC;得分模型直接回归 ∇xlog⁡pt(x)\nabla_{\boldsymbol x}\log p_t(\boldsymbol x),用朗之万(Langevin)动力学采样。

三支路线各自「放弃」了什么

把生成任务想成「造一把尺子」:

  • 显式似然最贪心,要尺子上有刻度(密度)。能做到的两种办法是「把数据拆成一步步可算的条件概率」(自回归)和「用可逆变换搬运已知分布」(流)。放弃的是采样速度:自回归必须逐 token 串行,流要求网络结构可逆。
  • 隐式放弃刻度,只保留一把比较器:不告诉你这个东西概率是多少,只说「它比你更像真的」。放弃的是目标函数的稳定性——比较器本身也要训练,于是变成博弈。
  • 得分—能量放弃刻度,但保留坡度的方向:不告诉你高度,只告诉你往哪边走会更高。放弃的是便宜采样——从坡度恢复样本要迭代积分。

扩散模型是这三支的杂交体:它像能量 / 得分模型那样用「噪声梯度」描述分布,像显式似然那样有可写的变分下界,采样时又像自回归那样需要多步迭代。理解这一点,4.5 与 4.6 的很多设计就会显得理所当然。

一句话记忆:显式似然守住刻度,隐式守住比较,得分—能量守住方向。

代表性模型的一张对照表(数字量级仅示意,用于建立方向感):

模型密度可否直接算采样是否一步到位训练信号主要短板
全可见自回归(PixelCNN / Transformer LM)可算(连乘)否,逐 token逐位置交叉熵串行慢;固定顺序引入归纳偏置
归一化流(RealNVP / Glow)可算(含雅可比行列式)是(反向映射)精确对数似然结构与维度必须可逆,表达受限
VAE只有 ELBO是(一次前向解码)重建 − KL样本偏糊;后验坍塌
GAN不可算是(一次前向)对抗博弈模式坍塌、训练不稳
能量 / 得分模型能量可算、ZZ 不可算否,MCMC / 朗之万对比散度 / 得分匹配采样慢且难判收敛
扩散模型有 ELBO(另可导出精确似然)否,多步去噪去噪回归采样步数多(可用蒸馏 / 流匹配压缩)

4.1.3 采样与似然:一对经常错位的能力

初学者最容易形成的误解是:「似然高的模型,样本一定好」。这句话作为直觉是错的,而且在真实数据上错得很有规律。要看清它,先要看清采样与似然在技术上有多不同。

命题 4.1.1 · 采样与似然是两项独立的能力

存在四类模型构造,分别实现「有似然无采样」「有采样无似然」「两者都有」「两者都难」:

  1. 有似然、无便宜采样:能量模型 pθ(x)∝e−Eθ(x)p_\theta(\boldsymbol x)\propto e^{-E_\theta(\boldsymbol x)}。密度比值可算,但从它采样需要 MCMC,且无法保证混合到平稳分布。
  2. 有采样、无似然:GAN。GθG_\theta 的推前分布定义明确,但计算它的密度需要解一个不可解的不动点问题。
  3. 两者兼有(近似):VAE 与扩散(下界 + 采样)、流(精确似然 + 反向采样)。
  4. 两者都难:把任意复杂分布隐式地定义成一个神经网络的不动点或解方程结果时,密度与采样可能同时不可解。
为什么「似然高」未必「样本好」

三个理由,按重要程度排列:

  1. 似然是加权的、样本观感是逐点的。对数似然是数据分布下的期望,它在高密度区权重最大——也就是在最常见、最平淡的区域。而人类看到一张样本时,注意力落在细节与结构上。一个把「天空的渐变色」拟合得很准、却把人脸结构画歪的模型,可以在对数似然上赢,却在观感上输。(这是「似然—质量错位」的主因)
  2. 连续密度可以被「偷」。离散数据上的对数似然有下界,连续密度没有。一个把密度堆到极窄尖峰上的模型可以让 p(x)p(\boldsymbol x) 无穷大,但那个模型什么也没学到(见 例 4.1.1)。
  3. 似然不衡量多样性之外的东西,也不衡量多样性本身。「覆盖了全部模式但每个模式都偏糊」和「只覆盖一个模式但极锐利」可以在同一个对数似然下打平。

正确的说法:似然是「模型分布与数据分布在期望意义上有多接近」的度量,样本质量是「单个样本落在数据流形附近的哪个位置」的问题。二者相关,但不单调对应,工程上必须分别度量。

例 4.1.1 · 一个「对数似然无界」的合法概率模型

构造一个定义在 R\mathbb R 上的密度 qq,满足:∫Rq=1\int_{\mathbb R}q=1;q(0)=+∞q(0)=+\infty,即 log⁡q(0)=+∞\log q(0)=+\infty。并说明为什么这把「对数似然」变成了一个有欺骗性的指标。

解

取标准正态密度 φ(x)=12πe−x2/2\varphi(x)=\frac{1}{\sqrt{2\pi}}e^{-x^2/2},再构造一个在原点发散的合法密度 ψ(x)=18∣x∣exp⁡ ⁣(−∣x∣2)  (x≠0),q(x)=12φ(x)+12ψ(x).\psi(x)=\frac{1}{8\sqrt{|x|}}\exp\!\Bigl(-\frac{\sqrt{|x|}}{2}\Bigr)\ \ (x\neq 0),\qquad q(x)=\tfrac12\varphi(x)+\tfrac12\psi(x).

① ψ\psi 是合法密度。 由对称性只需算正半轴,作换元 x=u2 (u>0, dx=2u du)x=u^2\ (u\gt0,\ dx=2u\,du): ∫0∞18xe−x/2dx=18∫0∞1ue−u/2⋅2u du=14[−2e−u/2]0∞=12.\int_0^\infty \frac{1}{8\sqrt{x}}e^{-\sqrt{x}/2}dx=\frac{1}{8}\int_0^\infty \frac{1}{u}e^{-u/2}\cdot2u\,du=\frac14\bigl[-2e^{-u/2}\bigr]_0^\infty=\frac12 . 负半轴同值,故 ∫Rψ=1\int_{\mathbb R}\psi=1,从而 ∫Rq=1\int_{\mathbb R}q=1:它是一个完全合法的概率模型。

② 它在原点发散,对数似然无界。 ∣x∣−1/2→∞ (x→0)|x|^{-1/2}\to\infty\ (x\to0),故 q(x)→+∞q(x)\to+\infty,于是 log⁡q(0)=+∞\log q(0)=+\infty。只要训练集里有一个样本恰好落在 00,这个模型在「平均对数似然」指标上就能压过任何正常模型。

③ 它的质量与「原点附近」几乎无关,且尾部极重。 用同一个换元算违反直觉的那一项——指数矩阵的期望: Ex∼ψ[ex]=∫Rexψ(x)dx=+∞.\mathbb E_{x\sim\psi}\bigl[e^{x}\bigr]=\int_{\mathbb R}e^{x}\psi(x)dx=+\infty . 也就是说,ψ\psi 在正半轴的尾部比任何指数衰减都慢,它把绝大部分「质量感」放在了 ∣x∣|x| 很大的地方,只在原点留了一根细尖峰。设 YY 服从该分布并令 U=∣Y∣U=\sqrt{|Y|},则 U∼Exp(1/2)U\sim\text{Exp}(1/2),于是 P(∣Y∣<a)=1−e−a/2P(|Y|\lt a)=1-e^{-a/2}:∣x∣<0.01|x|\lt0.01 的概率约 0.5%0.5\%,而尾部的贡献无限发散。

④ 对训练的影响。 用这份数据(有限样本)去比较两个模型的平均对数似然时,指标被样本点上的密度值支配,而这些点几乎不会落在原点。一个在原点上「作弊」(堆尖峰)的模型,在有限样本上得不到惩罚,却可以在支撑的其他位置很差。

结论:对连续数据,「密度值很高」本身不构成「模型好」的证据——密度是可积的而不是有界的。任何实际训练都只在有限样本点上评估密度,而支撑上几乎处处没有样本。这就是「似然—质量错位」的数学根源。■\blacksquare

∎
那为什么还要用似然

因为它是唯一一个不需要我们就「什么算好」达成一致的指标。FID 需要选一个特征提取器,IS 需要选一个分类器,人类偏好需要招人——每一个选择都会把评价者自己的偏好注入评价结果。对数似然只在概率公理上有争议(密度定义),其余都是干净的。

所以工程上的做法是:训练用似然(或它的代理),评价同时看似然与感知指标,并对二者的分歧保持警觉。4.1.4 会看到这种分歧的实测形态。

4.1.4 评价困境:FID、IS 与人类偏好

4.1.4.1 为什么没有现成的指标

生成模型没有标准答案,这直接导致评价必须用代理。当前工业界默认的三个代理,各自度量的是完全不同的东西。

定义 4.1.3 · FID 与 IS(两个最常用的代理指标)

FID(Fréchet Inception Distance,2021 之前即被广泛使用)。取一个在 ImageNet 上预训练的分类网络(惯例是 Inception-v3)在某个中间层抽取特征,把真实集与生成集的激活分别拟合成多元高斯 N(μr,Σr)\mathcal N(\boldsymbol\mu_r,\Sigma_r) 与 N(μg,Σg)\mathcal N(\boldsymbol\mu_g,\Sigma_g),定义为

FID=∥μr−μg∥22+tr⁡(Σr+Σg−2(Σr1/2ΣgΣr1/2)1/2).\mathrm{FID}=\bigl\lVert\boldsymbol\mu_r-\boldsymbol\mu_g\bigr\rVert_2^2+\operatorname{tr}\Bigl(\Sigma_r+\Sigma_g-2\bigl(\Sigma_r^{1/2}\Sigma_g\Sigma_r^{1/2}\bigr)^{1/2}\Bigr).

第一项惩罚「均值不对」(整体分布位置偏移),第二项惩罚「协方差不对」(尺度与相关性不匹配)。越低越好。

IS(Inception Score)。对生成样本 x\boldsymbol x,用同一个分类器给出标签分布 p(y∣x)p(y\mid\boldsymbol x),定义为

IS=exp⁡(Ex[KL(p(y∣x) ∥ p(y))]),p(y)=Ex[p(y∣x)],\mathrm{IS}=\exp\Bigl(\mathbb E_{\boldsymbol x}\bigl[\mathrm{KL}\bigl(p(y\mid\boldsymbol x)\,\|\,p(y)\bigr)\bigr]\Bigr),\qquad p(y)=\mathbb E_{\boldsymbol x}\bigl[p(y\mid\boldsymbol x)\bigr],

其中期望对生成分布取。越高越好:单个样本的预测要「尖」(锐利、可信),生成集整体的预测要「平」(类别覆盖要广)。

这两个指标到底在量什么
  • FID 量的是「两组特征分布的形状差」。它用 Inception-v3 的特征空间当代理坐标系,本质是「在这套坐标里,真实集与生成集的高斯拟合有多不重合」。它同时吃质量与多样性:一个只生成狗、但每张都极像的模型,均值会偏、方差会缩,FID 反而高。
  • IS 量的是「单样本自信度 × 类别覆盖度」。它只吃生成集,完全不看真实数据——这是它最致命的结构性缺陷:一个把 ImageNet 每一类都记得滚瓜烂熟的分类器打高分,不代表生成的图好;而一个生成集类别分布与真实集不匹配的模型可能得分很高。

关键事实:IS 只看锐利与类覆盖,FID 只看特征空间的高斯拟合。二者都依赖一个固定的、与任务无关的特征提取器。因此它们对「纹理、光照、局部细节」这类 Inception 特征敏感的差异很敏感,而对「结构、计数、文字、物理合理性」这类差异几乎不敏感。

FID / IS 的五条已知缺陷(引用它们时必须知道)
  1. 有偏且依赖样本量。FID 的高斯拟合与协方差估计都是小样本有偏估计,生成集的样本数会系统性影响 FID 值;不同论文用不同样本量(10k / 50k)时,数字不可直接比较。
  2. 依赖特征提取器的训练数据。用 ImageNet 预训练的 Inception-v3 评价医学图像或 3D 点云,等于用一套不相干的语义坐标系测量距离,结论没有意义。
  3. 对预处理与实现细节敏感。缩放插值方式、归一化范围、是否裁剪、Inception 的哪个池化层——这些细节足以让 FID 变动数个百分点,而论文常常不写全。
  4. 不惩罚过拟合与记忆。如果在生成集里混入训练样本,FID 会显著变好。任何 FID 对比都必须声明是否做过最近邻检查(判断生成样本是否只是训练样本的近似复制)。
  5. 与人类偏好只有中等相关性。多项人类盲测与指标的系统性对比发现:FID 的排名与人类偏好排名在不少设置下不一致,且不一致的模式随数据集而变。因此「FID 更低」不能单独充当「更好」的证据。

4.1.4.2 人类偏好与成对比较

当代理指标与观感冲突时,唯一的仲裁者是人。图像 / 视频生成里成熟的做法是成对比较(pairwise comparison):给评审者两张(或两段)来自不同模型的样本,只问「哪个更好」,再把大量比较汇总成排名(Elo 或 Bradley–Terry 模型)。这与 第 6 讲要讲的大模型 Arena 式评测是同一套方法论。

它的代价是真实且不可忽略的:贵(需要人或一个被信任的强模型当裁判)、慢、不可复现(评审人群会变)。而用「LLM-as-judge」替代人工时又会引入新的偏差——裁判模型对风格、长度、以及它自己训练数据的偏好。可用的折中是:用人类偏好做少量但决定性的对比,用 FID / IS 做大批量的回归测试,两者都不单独作为结论。

生成模型评价的务实清单
  1. 声明口径:样本数、特征提取器、预处理、随机种子、是否做近邻去记忆检查。缺一项,数字就是不可比的。
  2. 至少报两个轴:一个「保真度」指标(FID 或人工判别准确率)+ 一个「多样性 / 覆盖」指标(如生成集与真实集的类别分布距离、或 Recall 类指标)。
  3. 抽样人看:随机抽 30–50 组样本做盲评,专门找「指标看不出的错」——手、文字、计数、物理合理性。
  4. 报条件一致性:有条件生成时,单独度量「提示—样本对齐度」(可以用一个独立的图文模型打分),不要把它混进 FID。
  5. 记录失败样例:把最差的若干张样本留档。它们是定位问题(模式坍塌?条件忽略?过度引导?)的第一手材料。
import torch

def fid_from_features(feat_real, feat_gen):
    """给定两组特征激活,计算 FID(协方差项的矩阵平方根用 eigh 实现)。
    feat_real / feat_gen: (N, d) 的浮点张量,来自同一个固定的特征提取器。"""
    mu_r, mu_g = feat_real.mean(0), feat_gen.mean(0)
    # 用无偏协方差(unbiased=True)是惯例;样本量小时它本身有偏,见 errata 第 1 条
    Sr = torch.cov(feat_real.T.double())
    Sg = torch.cov(feat_gen.T.double())

    # 均值差项:两项分布整体位置偏移的量
    mean_term = ((mu_r - mu_g) ** 2).sum()

    # 协方差项:trace(Sr + Sg - 2*(Sr^{1/2} Sg Sr^{1/2})^{1/2})
    # eigh 给出对称矩阵的特征分解,用它算 sqrt 比 scipy.linalg.sqrtm 更稳、更快
    def sqrtm_psd(S):
        w, V = torch.linalg.eigh(S)                 # S 对称半正定,特征值为实数
        w = torch.clamp(w, min=0.0)                 # 数值误差可能带来极小负值
        return (V * w.sqrt()) @ V.T

    Sr_sqrt = sqrtm_psd(Sr)
    inner = sqrtm_psd(Sr_sqrt @ Sg @ Sr_sqrt)
    cov_term = torch.trace(Sr + Sg - 2 * inner)

    return (mean_term + cov_term).item()

# 用法示意:feat_* 由同一个冻结的 Inception-v3 中间层给出(此处不构造真实图像)
# fid = fid_from_features(feat_real, feat_gen)
# 判据:只比较「同一特征提取器 + 同一样本量 + 同一预处理」下的数字,跨设置比较无意义。
本节五个高频误解
  1. 「FID 越低模型越好」:FID 依赖特征提取器、样本量与预处理,跨设置不可比;它也不惩罚记忆、不衡量结构合理性。见 4.1.4.1 的五条缺陷。
  2. 「IS 高就说明样本逼真」:IS 完全不看真实数据,可以被「锐利但离谱」的样本抬高。它现在主要用于历史对比,不单独作为结论。
  3. 「似然高说明样本好」:见 例 4.1.1——连续密度上的对数似然可以无界,且在期望意义下由高密度区主导。
  4. 「能用朗之万 / MCMC 从任意模型采样,所以采样能力不是问题」:MCMC 要混合到平稳分布,在高维、多模态分布上混合时间可能天文数字;这正是能量模型在图像生成上不流行的原因。
  5. 「估计密度就等于会生成」:密度估计与采样是两项能力(命题 4.1.1)。反过来也成立——GAN 能采样,却没有可算的密度。
即时自测 · 4.1

Q1 用一句话区分判别模型与生成模型;再举出一个「能采样但给不出密度」的模型,并说明为什么。

Q2 显式似然、隐式、得分—能量三支路线各自「守住」了什么、放弃了什么?

Q3 一个团队报告:模型 A 的 FID 是 12.3,模型 B 是 14.1,因此 A 更好。列出至少三条你会追问的信息。

Q4 为什么说「扩散模型是三支路线的杂交体」?它分别继承了哪一支的什么特征?

参考要点

Q1 判别模型学 p(y∣x)p(y\mid\boldsymbol x)(给输入判标签);生成模型学 p(x)p(\boldsymbol x)(密度 / 相对分数 + 采样)。能采样但给不出密度:GAN——它的分布由 GθG_\theta 的映射定义(采样便宜),但要写出该分布的密度需要求解 GθG_\theta 的逆映射与其雅可比,一般不可解。

Q2 显式似然守住刻度(归一化密度或其下界),放弃采样速度(自回归串行、流要求可逆);隐式守住比较(判别器给出的相对信号),放弃目标稳定性(博弈、模式坍塌);得分—能量守住方向(密度梯度),放弃便宜采样(需 MCMC 或迭代积分)。

Q3 (任意三条即可)① 样本量多少(10k 与 50k 的 FID 不可比);② 用哪个特征提取器与预处理(不同 Inception 层、缩放方式、归一化范围都会改变结果);③ 是否做过训练集近邻去记忆检查;④ 是单次实验结果还是多次运行的均值与方差;⑤ 是否有独立的人类偏好盲测结果;⑥ 两组是否使用相同的评测代码与版本。

Q4 它像得分 / 能量模型那样用梯度方向(噪声)描述分布的形状、用多步迭代采样;像显式似然那样有可写的变分下界(ELBO),因此可以用「最大化下界」的方式训练(而不是 MCMC 对比散度);采样过程本身又是确定性或半随机的迭代轨迹(4.5、4.6 会看到 ODE 视角)。这三条分别来自得分—能量、显式似然与流(连续时间变换)传统。

延伸阅读
  • Goodfellow et al., Generative Adversarial Nets(2014,arXiv:1406.2661)——隐式路线的开创论文,第 2 节给出「最优判别器」的原始推导(4.4 会重推)。
  • Kingma & Welling, Auto-Encoding Variational Bayes(2013,arXiv:1312.6114)——VAE 与重参数化技巧的原始论文(4.3 的主干)。
  • Ho, Jain & Abbeel, Denoising Diffusion Probabilistic Models(2020,arXiv:2006.11239)——扩散的现代形式(4.5)。
  • Hyvärinen, Estimation of Non-Normalized Statistical Models by Score Matching(2005)——得分匹配的原始文献,得分—能量路线的起点;想理解扩散为什么和「分数」有关,从这篇入手最省力。
  • Heusel et al., GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium(2017,arXiv:1706.08500)——FID 的提出论文,同时给出 GAN 的 TTUR 训练规则(4.4 会用到)。
  • Salimans et al., Improved Techniques for Training GANs(2016,arXiv:1606.03498)——Inception Score 的提出论文,读它的第 4 节可以看到作者自己承认的指标局限。
  • Barratt & Sharma, A Note on the Inception Score(2018,arXiv:1801.01973)——对 IS 缺陷的系统分析,是引用 IS 前必读的一页。

本节小结:生成建模 = 密度(或相对分数)+ 采样,目标分布是 p(x)p(\boldsymbol x) 而非 p(y∣x)p(y\mid\boldsymbol x);谱系分三支——显式似然守住刻度、隐式守住比较、得分—能量守住方向,扩散是三者杂交。采样与似然是两项独立的能力(命题 4.1.1),而连续密度上的对数似然可以无界(例 4.1.1),所以「似然高」不能证明「样本好」。评价必须同时用保真度指标、覆盖指标与少量人类盲评,且任何 FID / IS 数字都必须带上样本量与实现口径。下一节从最简单的骨架开始:自编码器——它会精确地告诉我们,「能重建」离「能采样」差在哪一步。