Formal derivation notes

生成模型数学推导

从数据分布的概率建模出发,推导典型生成模型如何训练、如何采样,以及偏好后训练如何改变模型分布。

总体问题:从数据分布到可采样模型

生成模型的共同目标是用可训练、可采样的模型分布逼近未知数据分布。

前置知识
  • 随机变量:\(x\) 表示可能出现的数据对象,例如文本序列、图像 latent 或视频片段;生成模型要描述这些对象出现的概率规律。
  • 概率密度:\(p(x)\) 给连续样本附近分配概率质量,密度本身不是单点概率,但可用于比较哪些区域更可能。
  • 经验样本:训练集 \(\{x_i\}_{i=1}^{N}\) 是从未知 \(p_{\mathrm{data}}\) 抽到的有限观测,真实期望通常用样本平均近似。
  • 条件分布:\(p_\theta(x|c)\) 表示给定条件 \(c\) 时模型对输出 \(x\) 的分布;文本提示、类别、音频和图像上下文都可以作为条件。

0. 生成建模到底难在哪里?

生成模型的目标不是记住训练集,而是学习一个能产生类似新样本的分布。困难在于真实世界的 \(p_{\mathrm{data}}(x)\) 通常没有解析表达式,我们只能看到有限样本 \(x_1,\ldots,x_N\)。

可以把训练集想象成从一台看不见内部公式的机器里吐出来的点。生成建模要做的是训练一个可计算模型 \(p_\theta\),让它也能吐出来自同一类机制的新样本。不同模型的差异不只是网络结构不同,而是选择了不同的“可计算接口”:AR 计算 token 条件概率,Flow 计算可逆变换的 Jacobian,VAE 计算 ELBO,GAN 学 density ratio,Diffusion 学 denoising / score,Flow Matching 学 velocity field,Post-training 用 preference / reward 移动条件分布。

直观解释:如果暂时不懂测度论、SDE 或变分推断,可以先读每章的直觉、可计算接口、训练/采样和诊断信号;公式推导适合第二遍阅读。
技术要点:全文默认以“训练时可观测什么、能构造什么 surrogate、采样时哪些变量消失”为主线。严格等价、下界和工程 surrogate 会分开标注。
常见误区:不要先按模型名背公式;先问它能计算什么、不能计算什么,以及 loss 是严格目标、下界还是 surrogate。

符号速查:每个符号在真实系统里代表什么?

符号直觉含义例子
\(x\)一个数据样本一张图片、一段文本、一段音频或一个 latent
\(c\)条件信息prompt、类别标签、上文 tokens、边缘图、音频条件
\(z\)潜变量或简单随机源风格、姿态、语义压缩码、标准高斯噪声
\(p_{\mathrm{data}}\)真实数据分布真实世界产生数据的未知机制
\(p_\theta\)模型分布神经网络参数 \(\theta\) 定义的可训练分布
\(q\)人为设计或近似的辅助分布VAE encoder、diffusion forward process、proposal distribution
loss替代目标因为不能直接比较两个未知分布,所以构造可优化打分规则
sampler采样过程训练好后如何从随机数或 prompt 变成样本

贯穿例子:一个双峰 toy distribution

后文会反复用这个一维双峰分布作为直觉参照:

\[ p_{\mathrm{data}}(x)=0.5\mathcal{N}(-2,0.5^2)+0.5\mathcal{N}(2,0.5^2). \](P-0)

forward KL 会惩罚漏掉任一真实 mode;reverse KL 在受限模型族中可能选择其中一个 mode;GAN 的判别器学习真实/生成样本的密度比;score matching 学每个位置往高密度区域移动的方向;Flow Matching 学把简单噪声分布搬运到双峰分布的速度场。

0. 一句话直觉

训练集给出的是样本,不是密度;生成模型要选择一个可计算接口,把样本变成目标函数,再把简单随机源变成新样本。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(p_{\mathrm{data}}(x)\)真实数据分布。只通过样本观测,密度通常未知。
\(p_\theta(x|c)\)条件生成模型。由神经网络参数 \(\theta\) 定义或隐式采样。
\(c\)条件变量,例如文本提示、类别、音频、视频上下文。训练数据提供或推断时由用户给定。
\(z, x_T, x_0\)不同模型的采样入口:latent、纯噪声或干净样本。由模型族决定。

2. 训练目标从哪里来

目标:把未知的 \(p_{\mathrm{data}}\) 与可训练的 \(p_\theta\) 对齐。若模型可以计算 likelihood,就可以从 forward KL 推出最大似然。

\[ \begin{aligned} D_{KL}(p_{\mathrm{data}}\Vert p_\theta) &=\mathbb{E}_{x\sim p_{\mathrm{data}}}\left[\log p_{\mathrm{data}}(x)-\log p_\theta(x)\right]\\ &=-\mathbb{E}_{x\sim p_{\mathrm{data}}}\log p_\theta(x)+C, \quad C=\mathbb{E}_{x\sim p_{\mathrm{data}}}\log p_{\mathrm{data}}(x). \end{aligned} \](P-1)

常数 \(C\) 不含 \(\theta\),所以最小化 forward KL 等价于最大化数据样本的 log-likelihood。

3. 完整推导

  1. Step 1

    \[ \theta^*=\arg\max_\theta\frac{1}{N}\sum_{i=1}^{N}\log p_\theta(x_i|c_i). \](P-2)

    用训练集均值近似真实期望。无条件生成时去掉 \(c_i\)。

    本步使用经验平均,也就是 Monte Carlo 估计:真实期望 \(\mathbb{E}_{p_{\mathrm{data}}}\) 需要知道完整数据分布,但训练时只有有限样本。把每个样本的 log-likelihood 求平均,就是用训练集的经验分布近似真实分布;样本越多、覆盖越充分,这个平均值通常越接近真实期望。

  2. Step 2

    \[ \text{samples }x\sim p_{\mathrm{data}}\rightarrow \text{computable interface}\rightarrow \text{objective}\rightarrow p_\theta\rightarrow \text{samples}. \](P-3)

    不同模型族的差异来自可计算接口,而不是任务目标不同。

    本步使用分布匹配视角:所有方法都希望让模型分布接近数据分布,真正不同的是“能算什么”。能算 likelihood 时可做 MLE;只能采样时需要判别器、score、velocity 或 reward 信号;训练目标的形状来自这个可计算接口。

4. 训练过程与采样过程

训练伪代码

given dataset D = {(c_i, x_i)}
choose a computable interface:
  likelihood / ELBO / discriminator / score / velocity / reward
for each minibatch:
  sample training examples from D
  sample auxiliary variables if needed
  compute objective from the chosen interface
  update model parameters theta
  log diagnostics matched to that interface

同一个分布匹配任务会因为“能计算什么”而变成不同 objective。

采样 / 推断伪代码

given condition c if conditional generation:
initialize from model-specific source:
  prefix / latent z / noise x_T / base sample / policy state
run the sampler:
  autoregressive decoding
  decoder forward
  reverse denoising
  ODE integration
  policy rollout
return generated sample x_hat or response y

采样入口和训练目标相关,但训练 loss 本身不是 sampler。

接口地图:同一任务,不同可计算接口

读表时先看“可计算接口”:它决定 loss 从哪里来,也决定训练时能看到什么、采样时从哪里开始。

方法直观解释可计算接口训练信号采样方式技术边界
Autoregressive一个 token 一个 token 接龙\(p(x_i|x_{\lt i})\)NLL / CE顺序采样teacher forcing 与 inference mismatch
Normalizing Flow用可逆函数把噪声变成数据exact likelihood + Jacobianexact NLLbase noise \(\to\) map可逆性带来 likelihood,也限制架构自由度
VAE概率版 autoencoderELBOreconstruction + KLprior \(z\to\) decoderELBO gap、posterior collapse
VQ-VAE / VQGAN把连续数据离散成 codebook tokensdiscrete latent codereconstruction + codebook + commitmentcodes \(\to\) decodercodebook collapse、perceptual/adversarial bias
GAN让判别器提供真假密度比信号density ratioadversarial lossnoise \(\to\) generatornon-saturating loss 不等同于严格 JS 最小化
Score / Diffusion学往高密度区域走或逐步去噪score / denoisingDSM / noise MSE / weighted ELBOnoise \(\to\) reverse chainsimple loss 是工程 surrogate,不是完整 ELBO 本身
Flow Matching学从噪声搬到数据的速度场velocity fieldvelocity regressionODE integration条件速度是训练构造,模型学 marginal vector field
Post-training用偏好/奖励移动条件分布reward / preferenceSFT、RLHF、DPO、GRPO、DDPOupdated policy / samplerreward hacking、KL drift、分布偏移

5. 可视化实验:统一问题图

样本、可计算接口、目标函数和采样入口构成同一条分布匹配管线。

samples\(x\sim p_{\mathrm{data}}\)
choose interface
objectivelikelihood / score / reward
train
sampler\(p_\theta(x|c)\)

6. 常见误解

  • 模型族不同不代表任务不同。AR、VAE、GAN、Diffusion 和 Flow Matching 都在让 \(p_\theta(x|c)\) 接近目标数据分布,只是选择了不同的可计算信号。
  • post-processing 与 post-training 的边界在于是否更新模型。post-processing 是对已生成样本做筛选、重排、修补或 best-of-N,不改变参数,也不改变下一次采样的 \(p_\theta(x|c)\)。post-training 会用示范、偏好或 reward 继续更新参数,使同一条件下模型更倾向某类输出,因此改变条件分布。

7. 特点、问题与诊断信号

核心特点

这一章给出统一问题:训练目标并不是凭空设计,而是从“未知数据分布 + 可计算模型接口”推出来。理解这一点后,后面的模型差异会变成接口差异,而不是零散公式。

适用场景

阅读任何新生成模型时,先问它能显式算密度、只能采样、能构造噪声监督、能定义速度场,还是只拿得到偏好信号。

典型问题

若混淆训练目标和采样过程,会把 NLL、score、velocity、reward 当成同一类对象;若混淆后训练和后处理,会误判方法是否真的改变模型行为。

诊断信号

likelihood/perplexity 反映概率建模,FID/LPIPS 反映感知质量,coverage 与 diversity 反映模式覆盖,reward/KL drift 反映对齐时的分布移动幅度。

工程判断

选择模型族时先看数据形态和约束:离散序列通常适合 AR,高维连续视觉更常用 latent diffusion 或 flow,偏好对齐则应在已有模型附近小心移动分布。

8. 读完本章你应该理解

  • 为什么生成模型都在逼近 \(p_{\mathrm{data}}\):训练集是从真实分布采样得到的有限观测,模型训练就是让 \(p_\theta\) 在这些观测及其邻域上分配合理概率,并在采样时产生同类数据。
  • 为什么会出现多种方法:差异来自可计算接口。显式密度可以直接做 MLE;隐式采样需要 adversarial、score 或 velocity 监督;偏好对齐需要 reward 或 preference signal。
  • 训练目标和采样入口如何对应:训练目标决定模型学到的对象,采样入口决定生成路径;例如 Diffusion 学噪声预测并从 \(x_T\) 去噪,Flow Matching 学速度场并从 base distribution 积分。

最大似然、交叉熵与 KL 散度

生成建模的第一条主线是把数据样本变成 likelihood 或 divergence。

前置知识
  • MLE:MLE 是 Maximum Likelihood Estimation,即最大似然估计;在生成建模中就是选择参数 \(\theta\),让训练样本在 \(p_\theta\) 下的概率尽可能大。
  • likelihood:\(p_\theta(x)\) 是模型给观测样本的密度或概率;最大似然就是提高真实样本在模型下的概率。
  • NLL:\(-\log p_\theta(x)\) 是负对数似然,模型对真实样本越不自信,惩罚越大。
  • cross entropy:\(H(p,q)=\mathbb{E}_{x\sim p}[-\log q(x)]\),在经验数据上就是平均 NLL。
  • KL 散度:\(D_{KL}(p\Vert q)=\mathbb{E}_{p}\log\frac{p(x)}{q(x)}\),方向不同会导致 mode-covering 与 mode-seeking 行为差异。

0. 一句话直觉

最大似然不是孤立技巧;它等价于最小化 \(KL(p_{\mathrm{data}}\Vert p_\theta)\),而 cross entropy 是 NLL 的期望形式。

直观解释:我们不能直接算完整 KL,因为真实分布 \(p_{\mathrm{data}}\) 没有公式;训练集均值只是对真实期望的经验近似。
技术要点:忽略的是 \(\mathbb{E}_{p_{\mathrm{data}}}\log p_{\mathrm{data}}(x)\),它不含 \(\theta\)。这不等于我们知道数据熵,只是优化 \(\theta\) 时它是常数。
常见误区:forward KL 更 mode-covering、reverse KL 更 mode-seeking 是常见受限模型族下的优化偏好,不是对所有 support、模型族和优化过程的无条件定理。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(p_{\mathrm{data}}(x)\)真实数据分布。只通过样本观测,密度通常未知。
\(p_\theta(x|c)\)条件生成模型。由神经网络参数 \(\theta\) 定义或隐式采样。
\(H(p,q)\)cross entropy,\(\mathbb{E}_{p}[-\log q]\)。分类和语言模型中的平均 NLL。
\(D_{KL}(p\Vert q)\)非对称散度。forward/reverse 方向决定优化行为。

2. 训练目标从哪里来

目标:说明经验 NLL 为什么对应 forward KL,并解释 KL 方向如何影响 mode-covering 与 mode-seeking。

\[ \theta^*=\arg\max_\theta\frac{1}{N}\sum_{i=1}^{N}\log p_\theta(x_i). \](KL-1)

3. 完整推导

  1. Step 1

    \[ \mathbb{E}_{p_{\mathrm{data}}}[-\log p_\theta(x)]=H(p_{\mathrm{data}})+D_{KL}(p_{\mathrm{data}}\Vert p_\theta). \](KL-2)

    数据熵不依赖模型参数,因此最小化 cross entropy 等价于最小化 forward KL。

    本步展开 entropy 与 KL 的定义:\(H(p,q)\) 比 \(D_{KL}(p\Vert q)\) 多出的只是数据自身熵 \(H(p)\)。训练时 \(\theta\) 只出现在 \(q=p_\theta\) 里,所以这个常数不影响最优模型。

  2. Step 2

    \[ D_{KL}(p_{\mathrm{data}}\Vert p_\theta)=\mathbb{E}_{p_{\mathrm{data}}}\left[\log p_{\mathrm{data}}(x)-\log p_\theta(x)\right]. \](KL-3)

    若数据处有质量而模型给出低概率,forward KL 会强惩罚,因此偏 mode-covering。

    本步依赖 KL 的非负性和方向性:期望从 \(p_{\mathrm{data}}\) 取样,真实数据覆盖到的区域都会被检查;模型在这些区域给出过小概率会产生很大惩罚,因此更倾向覆盖所有真实模式。

  3. Step 3

    \[ D_{KL}(p_\theta\Vert p_{\mathrm{data}})=\mathbb{E}_{p_\theta}\left[\log p_\theta(x)-\log p_{\mathrm{data}}(x)\right]. \](KL-4)

    reverse KL 更惩罚模型落在数据低密度区域,常表现为 mode-seeking。

    本步只是交换 KL 的采样方向,但行为会明显改变:期望从 \(p_\theta\) 取样,模型自己没有采到的真实 mode 不会被直接惩罚;落到真实低密度区域反而代价很高,所以常出现选择少数安全 mode 的倾向。

4. 训练过程与采样过程

训练伪代码

for each minibatch {x_i}:
  logp = model.log_prob(x_i)
  nll = -mean(logp)
  update theta to minimize nll

estimate:
  E_{p_data}[-log p_theta(x)]
  by empirical average over the minibatch

这一步只适用于能显式计算或估计 log likelihood 的模型。

采样 / 推断伪代码

if model provides ancestral sampler:
  sample from its factorization
elif model provides latent sampler:
  z ~ base distribution
  x = decoder_or_transform(z)
else:
  use the sampler defined by that model family

evaluate:
  likelihood if available
  sample quality and coverage otherwise

KL/cross entropy 是训练目标,不直接告诉你如何采样;采样规则由模型结构决定。

5. 可视化实验:KL Lab

调节模型分布 \(q\) 的均值、方差和 mixture 权重,比较 KL/JS/Wasserstein 的方向差异。

拖动参数后显示 divergence 数值。

forward KL 会惩罚漏掉真实 mode。

为什么 \(H(p,q)=H(p)+D_{KL}(p\Vert q)\)

这个等式只是在展开三个定义:entropy 衡量真实分布自身的不确定性,cross entropy 衡量用 \(q\) 去编码来自 \(p\) 的样本时的平均代价,KL 衡量二者之间多出的编码代价。

  1. 先写出三个定义:
    \[ \begin{aligned} H(p,q)&=-\mathbb{E}_{x\sim p}\log q(x),\\ H(p)&=-\mathbb{E}_{x\sim p}\log p(x),\\ D_{KL}(p\Vert q)&=\mathbb{E}_{x\sim p}\log\frac{p(x)}{q(x)}. \end{aligned} \](KL-5)
  2. 展开 KL 的对数比:
    \[ \begin{aligned} D_{KL}(p\Vert q) &=\mathbb{E}_{p}\left[\log p(x)-\log q(x)\right]\\ &=\mathbb{E}_{p}\log p(x)-\mathbb{E}_{p}\log q(x). \end{aligned} \](KL-6)

    这里使用的数学工具只是 \(\log\frac{a}{b}=\log a-\log b\),以及期望的线性性。

  3. 把 entropy 和 cross entropy 代回去:
    \[ \begin{aligned} D_{KL}(p\Vert q) &=-H(p)+H(p,q),\\ H(p,q)&=H(p)+D_{KL}(p\Vert q). \end{aligned} \](KL-7)

    因此,当 \(q=p_\theta\) 是待训练模型时,\(H(p)\) 只由真实数据分布决定,不含 \(\theta\)。最小化 cross entropy \(H(p_{\mathrm{data}},p_\theta)\),等价于最小化 \(D_{KL}(p_{\mathrm{data}}\Vert p_\theta)\)。在有限训练集上,\(H(p_{\mathrm{data}},p_\theta)\) 就由平均 NLL \(-\frac{1}{N}\sum_i\log p_\theta(x_i)\) 近似。

6. 常见误解

  • KL 不能随意交换方向。\(D_{KL}(p_{\mathrm{data}}\Vert p_\theta)\) 检查真实样本所在区域是否被模型覆盖;\(D_{KL}(p_\theta\Vert p_{\mathrm{data}})\) 检查模型采样是否落到真实低密度区域。方向变了,优化行为也变了。
  • likelihood 高不等于样本一定好看。显式密度模型可以在 NLL 上表现很好,但高维视觉任务中的感知质量还受 inductive bias、decoder 形式和采样机制影响。
  • 隐式模型不是脱离分布匹配。GAN、Diffusion、Flow Matching 只是不能直接用同一个 likelihood 目标,因此换成 density ratio、score 或 velocity 监督。

7. 特点、问题与诊断信号

核心特点

这一章提供 likelihood-based 训练的地基:NLL、cross entropy 和 forward KL 是同一件事的不同写法,区别只在是否把数据熵常数显式写出。

适用场景

语言模型、分类器、Normalizing Flow 和任何能显式给出 \(p_\theta(x)\) 的模型,都可以直接用这个框架解释训练目标。

典型问题

forward KL 倾向覆盖真实模式,但可能给低质量区域也留概率;reverse KL 倾向避开低密度区域,但可能忽略一部分真实 mode。

诊断信号

NLL/perplexity 看平均概率分配,support coverage 看是否漏 mode,样本质量指标看人眼或感知空间结果,三者不一致时需要回到目标函数判断。

工程判断

如果任务需要稳定训练和可比较 likelihood,优先选择显式密度或可估计 likelihood 的路线;如果视觉质量优先,则 likelihood 只是诊断之一。

8. 读完本章你应该理解

  • NLL、cross entropy 与 forward KL 的关系:\(\mathbb{E}_{p_{\mathrm{data}}}[-\log p_\theta]\) 等于 \(H(p_{\mathrm{data}})+D_{KL}(p_{\mathrm{data}}\Vert p_\theta)\),其中数据熵不含 \(\theta\),所以优化 NLL 等价于优化 forward KL。
  • KL 方向为什么重要:forward KL 由真实数据采样,漏掉真实 mode 会受罚;reverse KL 由模型采样,更惩罚模型落在真实低密度区域,因此常表现为 mode-seeking。
  • 隐式模型为什么需要 surrogate:当 \(p_\theta(x)\) 不可计算时,无法直接写 NLL,只能通过判别器、score、velocity 或 reward 构造可优化的替代信号。

Autoregressive:链式分解与 next-token 最大似然

自回归模型用链式法则把联合分布拆成可计算的 next-token 条件分布;Transformer 是实现这种条件分布的常见网络架构,而不是链式分解本身。

前置知识
  • 链式法则:\(p(x_1,\ldots,x_T)=\prod_t p(x_t|x_{\lt t})\),它把联合分布拆成 next-token 条件分布。
  • softmax:\(\operatorname{softmax}(l_i)=\exp(l_i)/\sum_j\exp(l_j)\),把 logits 归一化为 token 概率。
  • teacher forcing:训练时用真实前缀 \(x_{\lt t}\) 预测真实 token \(x_t\),因此所有位置可以并行算 cross entropy。
  • decoding:temperature、top-k、top-p 和 beam search 是推断时的采样策略,会改变输出但不更新模型参数。

0. 一句话直觉

如果能预测下一个 token,就能按顺序生成整个序列。

直观解释:AR 的关键魔法是链式法则:只要每一步的“下一个 token 概率”定义好,整段序列的联合概率就定义好了。
技术要点:训练时用真实前缀 \(x_{\lt i}\),采样时用模型自己生成的 \(\hat{x}_{\lt i}\),这会造成 exposure bias / distribution shift。
常见误区:Transformer 不是 AR 的数学定义;它只是实现 \(p_\theta(x_i|x_{\lt i})\) 的常见网络架构。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(p_{\mathrm{data}}(x)\)真实数据分布。只通过样本观测,密度通常未知。
\(x_1,\ldots,x_T\)离散 token 序列。来自文本、图像 token、音频 token 或动作序列。
\(p_\theta(x_t|x_{\lt t},c)\)给定前缀的 next-token 分布。由序列网络输出 logits 后经 softmax 得到;Transformer 是最常见实现之一。
\(T_{temp}, k, p\)temperature、top-k、top-p decoding 参数。推断时改变采样策略,不改变参数。

2. 训练目标从哪里来

目标:把序列 likelihood 精确分解成每个位置的条件 likelihood。

\[ p_\theta(x_1,\ldots,x_T|c)=\prod_{t=1}^{T}p_\theta(x_t|x_{\lt t},c). \](AR-1)

3. 完整推导

  1. Step 1

    \[ \mathcal{J}_{AR}=-\sum_{t=1}^{T}\log p_\theta(x_t|x_{\lt t},c). \](AR-2)

    训练时真实前缀作为输入,这就是 teacher forcing。

    本步使用概率链式法则和 MLE(Maximum Likelihood Estimation,最大似然估计):联合序列概率可以精确拆成每个 token 的条件概率,最大化整句 likelihood 等价于最小化所有位置的 next-token NLL。

  2. Step 2

    \[ p_i(T_{temp})=\frac{\exp(l_i/T_{temp})}{\sum_j\exp(l_j/T_{temp})}. \](AR-3)

    推断时 temperature 改变 logits 的 sharpness;top-k/top-p 截断候选集。

    本步使用 softmax 重标定:logits 除以 temperature 后再归一化,低温会放大最大 logit 的优势,高温会让尾部 token 更容易被采到;top-k/top-p 则是在归一化前裁剪候选集合。

4. 训练过程与采样过程

训练与采样的前缀差异

阶段输入目标 / 动作风险
训练真实前缀 \(x_{\lt i}\)预测真实下一个 token \(x_i\)teacher forcing 隐藏了自回归错误累积
采样模型自己生成的前缀 \(\hat{x}_{\lt i}\)从 \(p_\theta(x_i|\hat{x}_{\lt i})\) 采样早期错误会改变后续上下文分布

5. 可视化实验:AR Decoding Lab

观察 temperature、top-k 和 top-p 如何改变候选集合、采样 token 与后续前缀。

causal mask

generated prefix

p_i(T)=softmax(l_i / T)

低 temperature 让分布更尖,高 temperature 让分布更平。

6. 常见误解

  • decoding 不是训练。temperature、top-k、top-p 和 beam search 改变推断时如何从同一个 next-token 分布取样,但不会更新参数。
  • teacher forcing 不等于真实部署条件。训练时前缀来自数据,推断时前缀来自模型自己生成;早期错误会改变后续条件,这就是 sampling mismatch 的来源。
  • perplexity 低不保证回答一定好。perplexity 衡量平均 next-token 概率,但事实性、指令遵循和安全性还依赖数据、后训练和 decoding。

7. 特点、问题与诊断信号

核心特点

AR 的优势是联合概率可以精确链式分解,训练目标清晰、稳定,并且天然适配文本和离散 token。

适用场景

LLM、代码模型、离散视觉 token、语音 token、动作序列和任何可以序列化的多模态表示。

典型问题

逐 token 采样导致延迟随长度线性增长;长上下文中错误会累积,过低 temperature 易重复,过高 temperature 易漂移。

诊断信号

perplexity 看语言建模,重复率和 distinct-n 看多样性,长度分布看偏置,事实性和条件遵循需要任务级评估。

工程判断

当输出天然是离散序列时,AR 通常是强基线;当需要极快并行生成大尺寸图像时,逐 token 采样可能成为瓶颈。

8. 读完本章你应该理解

  • 链式分解的结论:任意序列联合概率都可以写成 \(\prod_t p_\theta(x_t|x_{\lt t},c)\),因此 next-token MLE(Maximum Likelihood Estimation,最大似然估计)就是最大化整段序列 likelihood。
  • teacher forcing 的利弊:它让训练稳定并可并行计算所有位置 loss,但推断时模型要条件于自己生成的前缀,因此会出现训练/采样分布不一致。
  • 模型分布与 decoding 的区别:模型给出 logits 和 softmax 分布,decoding 只是从该分布中选择 token 的策略;换 decoding 不等于完成后训练。

Normalizing Flow:变量替换与 exact likelihood

Normalizing Flow 用可逆变换把 base density 映射到数据空间,并用 Jacobian determinant 修正密度。

前置知识
  • 显式密度:模型能直接计算 \(\log p_\theta(x)\),因此可以用 exact likelihood 训练。
  • 可逆映射:\(x=f_\theta(z)\) 必须有逆 \(z=f_\theta^{-1}(x)\),否则无法把数据点映回 base density。
  • Jacobian 矩阵:\(J_f(z)=\partial f_\theta(z)/\partial z\),描述局部各方向如何被线性近似地拉伸。
  • Jacobian determinant:\(|\det J_f|\) 是局部体积缩放因子;概率质量守恒时,密度会按体积缩放的倒数变化。

0. 一句话直觉

可逆映射会拉伸或压缩体积;密度必须用体积缩放项校正。

直观解释:Normalizing Flow 像一张可逆橡皮膜:把简单高斯空间揉成数据空间,但每块面积被拉伸多少必须用 Jacobian 修正密度。
技术要点:exact likelihood 的代价是 \(f_\theta^{-1}\) 和 \(\det J\) 都要可算,因此网络结构要服务于可逆性和 determinant。
常见误区:likelihood 高不必然等于感知质量高;density、视觉锐度、语义一致性和多样性可能错位。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(z\sim p_Z(z)\)简单 base 分布。通常为标准高斯。
\(x=f_\theta(z)\)可逆变换。要求能计算 \(f_\theta^{-1}\)。
\(J_f\)Jacobian 矩阵。determinant 表示局部体积缩放。

2. 训练目标从哪里来

目标:通过变量替换精确计算 \(p_X(x)\),从而直接最大化 likelihood。

3. 完整推导

  1. Step 1

    \[ p_X(x)=p_Z(f_\theta^{-1}(x))\left|\det\frac{\partial f_\theta^{-1}(x)}{\partial x}\right|. \](NF-1)

    密度随体积变化反向缩放。

    本步使用变量替换公式:可逆变换会改变局部体积,同样的概率质量被拉伸到更大区域时密度下降,被压缩到更小区域时密度上升;Jacobian determinant 正是这个局部体积因子。

  2. Step 2

    \[ \log p_X(x)=\log p_Z(z)-\log\left|\det\frac{\partial f_\theta(z)}{\partial z}\right|. \](NF-2)

    训练目标可以精确写成 log likelihood。

    本步把逆变换形式改写为正向 Jacobian:训练给定 \(x\),先求 \(z=f_\theta^{-1}(x)\),再扣除正向映射的 \(\log|\det J_f|\)。这个符号方向保证概率质量守恒。

变量替换公式逐步展开
  1. 从集合概率守恒开始:对数据空间任意小区域 \(A_x\),它在 base space 中的原像是 \(A_z=f_\theta^{-1}(A_x)\),因此 \(P_X(A_x)=P_Z(A_z)\)。
  2. 局部线性化:在 \(z\) 附近,可逆映射近似为 \(x\approx f_\theta(z)+J_f(z)\Delta z\)。小体积满足 \(dx\approx |\det J_f(z)|dz\)。
  3. 概率质量不变:同一小块概率质量可以写成 \(p_X(x)dx=p_Z(z)dz\)。代入体积关系得到 \(p_X(x)=p_Z(z)/|\det J_f(z)|\)。
  4. 换成逆映射形式:因为 \(z=f_\theta^{-1}(x)\),且 \(J_{f^{-1}}(x)=J_f(z)^{-1}\),所以 \(\left|\det J_{f^{-1}}(x)\right|=1/\left|\det J_f(z)\right|\)。
  5. 得到最终公式:\(p_X(x)=p_Z(f_\theta^{-1}(x))\left|\det\frac{\partial f_\theta^{-1}(x)}{\partial x}\right|\)。这不是附加技巧,而是密度随局部体积变化的必然校正。

4. 训练过程与采样过程

训练伪代码

for each minibatch x:
  z = f_theta^{-1}(x)
  log_base = log p_Z(z)
  log_det = log |det d f_theta(z) / d z|
  logp_x = log_base - log_det
  loss = -mean(logp_x)
  update theta

训练给定数据点 \(x\),所以先走逆变换回 base space,再用体积校正项计算 exact likelihood。

采样伪代码

z ~ p_Z(z)
x = f_theta(z)
return x

optional density evaluation:
  z_check = f_theta^{-1}(x)
  logp_x = log p_Z(z_check) - log |det J_f(z_check)|

采样只需正向可逆映射;密度评估需要逆映射和 Jacobian determinant。

5. 可视化实验:Jacobian Warp Lab

调节尺度项,观察可逆网格形变与 log determinant 如何改变密度。

log |det J| = 0.20

Normalizing Flow 的 flow 是可逆显式密度变换,不是 Flow Matching 的 velocity field。

6. 常见误解

  • Normalizing Flow 和 Flow Matching 不是同一类 flow。前者是可逆变换和 exact likelihood,后者是连续时间 velocity field 和 ODE sampling。
  • exact likelihood 有结构代价。为了计算逆变换和 determinant,网络必须采用 coupling、autoregressive transform 或其他受限结构。
  • 快速采样不代表表达无限。一次正向映射很快,但可逆性可能限制模型对复杂感知结构的表达。

7. 特点、问题与诊断信号

核心特点

Normalizing Flow 同时提供可采样性和 exact likelihood;这是许多隐式模型做不到的。

适用场景

需要密度评估、异常检测、可逆表示、latent prior 建模或小中规模连续数据生成的场景。

典型问题

可逆架构约束表达能力,Jacobian determinant 计算可能昂贵或不稳定,高维图像上的 likelihood 与感知质量仍可能脱节。

诊断信号

NLL、bits/dim、Jacobian log-det 范围、逆变换误差、样本多样性和样本感知质量需要一起看。

工程判断

若必须精确密度,Flow 很有价值;若目标是最高保真图像,现代系统更常选择 diffusion/flow matching 并在 latent space 中工作。

8. 读完本章你应该理解

  • 变量替换公式的含义:概率质量守恒,密度会随局部体积变化反向缩放,因此必须乘上逆变换 Jacobian determinant。
  • determinant 为什么出现:\(|\det J|\) 衡量局部小体积被映射后放大或缩小多少,是把 base density 转成 data density 的体积校正项。
  • 与 Flow Matching 的区别:Normalizing Flow 需要可逆映射并可算密度,Flow Matching 学速度场并通过 ODE 采样,通常不提供 exact likelihood。

VAE:从隐变量边缘似然到 ELBO

VAE 用可学习后验近似不可解真实后验,把边缘似然优化变成 ELBO 优化。

前置知识
  • 隐变量:\(z\) 是不可直接观测的生成原因,模型假设先采 \(z\sim p(z)\),再由 \(p_\theta(x|z)\) 生成 \(x\)。
  • 后验分布:\(p_\theta(z|x)\) 表示看到 \(x\) 后 latent 可能是什么;它通常不可解,因此引入 \(q_\phi(z|x)\) 近似。
  • Jensen 不等式:对凹函数 \(\log\),有 \(\log\mathbb{E}[A]\ge\mathbb{E}\log A\),这是 ELBO 下界的关键。
  • 变分下界:ELBO 是 \(\log p_\theta(x)\) 的可优化下界,由 reconstruction 项和 \(D_{KL}(q_\phi(z|x)\Vert p(z))\) 组成。
  • 重参数化:\(z=\mu+\sigma\odot\epsilon\) 把随机性移到外部噪声 \(\epsilon\),使 encoder 可反向传播。

0. 一句话直觉

VAE 是概率化 autoencoder:encoder 推断 latent,decoder 定义生成分布,KL 让训练 posterior 与采样 prior 对齐。

直观解释:VAE 像带随机性的 autoencoder:encoder 输出一个分布,decoder 从这个分布抽 \(z\) 后重构 \(x\)。
技术要点:ELBO 是 \(\log p_\theta(x)\) 的下界,gap 为 \(D_{KL}(q_\phi(z|x)\Vert p_\theta(z|x))\),不是真实 likelihood 本身。
常见误区:posterior collapse 不是单纯训练坏了;当 decoder 太强或 KL 压力过大时,latent 可能被模型主动忽略。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(z\)连续 latent variable。训练时由 encoder posterior 采样,生成时由 prior 采样。
\(q_\phi(z|x)\)amortized inference posterior。encoder 输出 \(\mu,\sigma\)。
\(p_\theta(x|z)\)decoder likelihood。决定 reconstruction loss 形式。
\(\beta\)beta-VAE 的 KL 权重。控制 rate-distortion trade-off。

2. 训练目标从哪里来

目标:把不可计算的 \(\log p_\theta(x)=\log\int p(z)p_\theta(x|z)\,dz\) 转成可优化下界。

\[ p_\theta(x)=\int p(z)p_\theta(x|z)\,dz. \](VAE-1)

3. 完整推导

  1. Step 1

    \[ \log p_\theta(x)=\log\int q_\phi(z|x)\frac{p(z)p_\theta(x|z)}{q_\phi(z|x)}dz\ge \mathbb{E}_{q_\phi}\log p_\theta(x|z)-D_{KL}(q_\phi(z|x)\Vert p(z)). \](VAE-2)

    在积分中乘除 \(q_\phi\),用 Jensen 得到 ELBO。

    本步使用 Jensen 不等式:\(\log\) 是凹函数,所以 \(\log\mathbb{E}[A]\ge \mathbb{E}\log A\)。引入 \(q_\phi(z|x)\) 后,原本不可直接求的 latent integral 变成对 encoder posterior 的期望下界。

  2. Step 2

    \[ \log p_\theta(x)=\mathcal{L}_{ELBO}(x)+D_{KL}(q_\phi(z|x)\Vert p_\theta(z|x)). \](VAE-3)

    ELBO gap 是近似后验与真实后验的 KL。

    本步使用 Bayes rule 和 KL 非负性:把真实后验 \(p_\theta(z|x)\) 代入后,\(\log p_\theta(x)\) 可分解为 ELBO 加一个 KL gap。最大化 ELBO 会同时提高证据下界并推动 \(q_\phi\) 接近真实后验。

  3. Step 3

    \[ D_{KL}(\mathcal{N}(\mu,\operatorname{diag}(\sigma^2))\Vert\mathcal{N}(0,I))=\frac{1}{2}\sum_i(\mu_i^2+\sigma_i^2-\log\sigma_i^2-1). \](VAE-4)

    对 diagonal Gaussian posterior,KL 有闭式。

    本步使用 Gaussian KL identity:当 posterior 和 prior 都是高斯且 covariance 对角时,积分可以解析化为每个维度的均值偏移、方差偏移和 log 方差项,因此训练不需要采样估计这个 KL。

  4. Step 4

    \[ z=\mu_\phi(x)+\sigma_\phi(x)\odot\epsilon,\quad \epsilon\sim\mathcal{N}(0,I). \](VAE-5)

    随机性移到外部噪声,允许对 encoder 参数反向传播。

    本步使用 reparameterization trick:采样 \(z\sim q_\phi(z|x)\) 本身不可直接对 \(\phi\) 求导,改写为确定性函数 \(\mu_\phi+\sigma_\phi\epsilon\) 后,随机性只在外部噪声 \(\epsilon\),梯度可以穿过 encoder。

  5. Step 5

    \[ \mathcal{J}_{\beta\text{-VAE}}=-\mathbb{E}_{q_\phi(z|x)}\log p_\theta(x|z)+\beta D_{KL}(q_\phi(z|x)\Vert p(z)). \](VAE-6)

    Gaussian decoder 对应 L2/MSE,Bernoulli decoder 对应 BCE;\(\beta\) 控制信息率。

    本步把 decoder likelihood 解释为重构损失:选择高斯观测模型会得到类似 MSE 的惩罚,选择 Bernoulli 观测模型会得到 BCE。\(\beta\) 放大 KL 项时 latent 信息率下降,压缩更强但重构细节可能损失。

4. 训练过程与采样过程

5. 可视化实验:VAE KL / Beta Lab

调节 \(\mu,\sigma,\beta\),观察 KL、重构压力和 posterior collapse 风险。

KL 与 beta-weighted KL 将由当前参数实时计算。

beta 增大时 posterior 更靠近 prior,但重构细节可能损失。

VAE 的价值与现代位置

vanilla VAE 很少作为最高保真图像生成器,但它系统化了概率编码、可微后验推断和连续 latent space。Latent Diffusion、latent Flow Matching、SD3/rectified flow 常先用 autoencoder 压缩像素,再在 latent space 中做主要分布生成。

6. 常见误解

  • ELBO 是下界,不是真实 likelihood。只有当 \(q_\phi(z|x)\) 等于真实后验时,ELBO gap 才为零;实际训练通常是在可优化性与近似误差之间折中。
  • 生成过于平滑不是简单的“VAE 不行”。Gaussian decoder 与 L2/MSE 会在多个合理输出之间取平均,高频纹理和感知细节容易被抹掉。
  • VAE 的现代价值不主要是直接生成最锐利图片。它更重要的作用是提供可编码、可压缩、可解码的 latent interface,让更强的 diffusion 或 flow 在低维 latent 中建模。

7. 特点、问题与诊断信号

核心特点

VAE 把 autoencoder 概率化:encoder 做 amortized inference,decoder 定义 \(p_\theta(x|z)\),ELBO 把不可解边缘似然变成可训练目标。

适用场景

latent diffusion、latent flow、representation compression、controllable latent editing、变分推断教学和需要 encoder/decoder 双向接口的系统。

典型问题

posterior collapse 表示 latent 不携带信息;过平滑来自观测 likelihood 与重构平均;prior-posterior gap 会让 prior sample 弱于 reconstruction。

诊断信号

blur、FID/LPIPS、KL vanishing、active units、reconstruction 与 prior sampling 的质量差距,以及 beta 调整后的 rate-distortion 曲线。

工程判断

把 VAE 当作最高质量采样器通常不是现代最优选择;把它当作 latent space 构造器和感知压缩前端,反而是高分辨率图像/视频生成系统的关键接口。

8. 读完本章你应该理解

  • ELBO 的来源:在 \(\log\int p(z)p_\theta(x|z)dz\) 中引入 \(q_\phi(z|x)\),再用 Jensen 得到 reconstruction term 减 KL term 的下界。
  • ELBO gap 的含义:\(\log p_\theta(x)=\mathcal{L}_{ELBO}+D_{KL}(q_\phi(z|x)\Vert p_\theta(z|x))\),gap 衡量近似后验与真实后验的距离。
  • reconstruction loss 为什么有不同形式:decoder likelihood 的选择决定 loss;Gaussian decoder 导向 MSE,Bernoulli decoder 导向 BCE。
  • VAE 的现代位置:它奠定 latent generative modeling 接口,常作为 Latent Diffusion 和 latent Flow Matching 的压缩与解码模块。

VQ-VAE / VQGAN:从连续 latent 到离散视觉 token

VQ 系列把连续 encoder 输出量化到 codebook,使图像、音频、视频可进入 token 建模。

前置知识
  • encoder/decoder:encoder 把输入压成 latent,decoder 从 latent 重构数据;VQ 系列在二者之间加入离散瓶颈。
  • codebook:\(\{e_k\}_{k=1}^{K}\) 是可学习向量表,连续 \(z_e(x)\) 会被替换成最近的 code 向量。
  • 最近邻量化:\(k^*=\arg\min_k\|z_e-e_k\|_2\),它把连续表示变成离散 index。
  • stop-gradient:\(\operatorname{sg}(\cdot)\) 前向保持数值、反向截断梯度,用于分开 encoder 与 codebook 的更新责任。
  • codebook perplexity:\(\exp(-\sum_k\hat p_k\log\hat p_k)\) 衡量有效 code 使用数,用于诊断 dead codes 和 usage imbalance。

0. 一句话直觉

VQ-VAE 是视觉 tokenizer;VQGAN 在 tokenizer 上加感知和对抗目标,让重构更锐利。

直观解释:VQ 系列把连续 latent 变成有限词表里的 code index,让图像、音频和视频也能像文本一样被 token 化。
技术要点:VQGAN 通常加入 perceptual loss 和 adversarial loss,提升人眼感知质量,但也引入感知/对抗训练偏置。
常见误区:codebook 大不等于容量有效;若 usage 不均衡,perplexity 会偏低,很多 code 实际上没有参与建模。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(z_e(x)\)encoder 连续输出。由输入样本计算。
\(e_k\)codebook 第 k 个向量。可梯度或 EMA 更新。
\(k^*\)最近 code index。nearest neighbor assignment。
\(\hat p_k\)code usage 频率。用于 perplexity 和 dead code 诊断。

2. 训练目标从哪里来

目标:学习离散 latent bottleneck,使 decoder 可从 code index 重构数据,并让上游 token prior 更容易建模。

3. 完整推导

  1. Step 1

    \[ k^*=\arg\min_k\|z_e(x)-e_k\|_2,\quad z_q=e_{k^*}. \](VQ-1)

    forward 使用最近 code 替换连续 latent。

    本步使用 nearest neighbor quantization:encoder 输出仍是连续向量,但前向传播只保留最近 code 的 index。这样 decoder 看到的是有限 vocabulary 中的视觉 token,而不是任意连续 latent。

  2. Step 2

    \[ z_q=z_e+\operatorname{sg}(e_{k^*}-z_e). \](VQ-2)

    forward 等于 code,backward 梯度近似传给 encoder。

    本步使用 straight-through estimator:最近邻选择是离散操作,严格梯度为零或不可导;实践中前向用 codebook 向量,反向近似把 decoder 梯度传给 encoder 输出,使 tokenizer 可以端到端训练。

  3. Step 3

    \[ \mathcal{J}_{VQ}=\mathcal{L}_{rec}(x,\hat{x})+\|\operatorname{sg}[z_e(x)]-e_{k^*}\|_2^2+\beta\|z_e(x)-\operatorname{sg}[e_{k^*}]\|_2^2. \](VQ-3)

    codebook loss 移动选中的 code,commitment loss 防止 encoder 漂移。

    本步使用 stop-gradient 分离责任:第二项只更新被选中的 \(e_{k^*}\),让该 code 靠近 encoder 输出;第三项只更新 encoder,让 \(z_e(x)\) commit 到这个 code。没有这种分离时,encoder 与 codebook 可能互相追逐导致量化不稳定。

  4. Step 4

    \[ N_i^{(t)}=\gamma N_i^{(t-1)}+(1-\gamma)n_i^{(t)},\quad e_i^{(t)}=\frac{m_i^{(t)}}{N_i^{(t)}}. \](VQ-4)

    EMA 更新类似 online k-means,可稳定 codebook。

    本步使用 moving average:每个 code 维护被分配次数 \(N_i\) 和向量和 \(m_i\),再用指数滑动平均更新中心。直觉上它像在线 k-means,比纯梯度更新更稳定,但长期无人分配的 code 仍会变成 dead code。

  5. Step 5

    \[ \operatorname{perplexity}=\exp\left(-\sum_k \hat{p}_k\log \hat{p}_k\right). \](VQ-5)

    perplexity 反映 codebook 使用是否均衡。

    本步使用 entropy effective support:若所有 code 使用均匀,entropy 高,perplexity 接近 code 数;若少数 code 垄断,entropy 低,perplexity 下降,说明 tokenizer 容量没有被充分利用。

4. 训练过程与采样过程

5. 可视化实验:VQ Codebook Lab

拖动 encoder point,观察最近 code、usage histogram、perplexity 和 dead code 标记。

perplexity 将由 code usage 实时计算。

dead codes 长期不用,即使 EMA 更新也可能需要重启策略。

6. 常见误解

  • VQ-VAE 通常不是完整生成器。它更像 tokenizer 或 compression front-end,后续还需要 AR、Diffusion 或其他 prior 在 code index 上建模。
  • EMA 不能自动解决所有 codebook 问题。EMA 稳定 code 更新,但长期无人分配的 code 仍可能死亡,仍需要监控 usage、重启或调整容量。
  • VQGAN 的锐度不是免费午餐。perceptual/adversarial loss 会提升视觉细节,但也可能生成与输入不完全一致的伪纹理。

7. 特点、问题与诊断信号

核心特点

VQ 系列把连续 latent 变成有限 codebook index,让图像、音频、视频进入 token 化建模框架。

适用场景

视觉 tokenizer、多模态 token、离散 latent prior、压缩感知表示,以及需要把连续信号交给 Transformer 的系统。

典型问题

dead codes 表示部分词表没有使用;usage imbalance 会降低有效容量;VQGAN 的对抗目标可能牺牲精确重构。

诊断信号

code usage histogram、perplexity、dead-code ratio、reconstruction error、LPIPS/FID、下游 token prior NLL 和生成样本的局部纹理一致性。

工程判断

codebook 大小要服务下游任务:太小会丢细节,太大会增加 prior 建模难度;EMA 适合稳定训练,但必须配合 usage 诊断。

8. 读完本章你应该理解

  • 量化公式的含义:\(k^*=\arg\min_k\|z_e-e_k\|\) 把连续 encoder 输出映射到最近 code,forward 使用 \(e_{k^*}\) 作为离散 latent。
  • straight-through 的作用:前向是离散查表,反向近似把 decoder 梯度传给 encoder,让不可导的最近邻选择可以参与端到端训练。
  • EMA 更新的意义:它用滑动计数和向量均值更新 code center,类似 online k-means,稳定但仍要处理 dead codes。
  • perplexity 如何诊断:perplexity 接近有效 code 数表示使用均衡,显著偏低说明少数 code 垄断,tokenizer 容量浪费。

GAN:从密度比估计到 adversarial divergence

GAN 用判别器估计真实分布与生成分布的密度比,训练隐式生成器。

前置知识
  • 隐式分布:生成器 \(G_\theta(z)\) 能采样 \(x\),但通常不能直接计算 \(p_g(x)\)。
  • 二分类交叉熵:判别器用真实/生成标签训练,最优解会变成 \(p_{\mathrm{data}}\) 与 \(p_g\) 的密度比。
  • JS divergence:原始 minimax GAN 在最优判别器下对应 \(D_{JS}(p_{\mathrm{data}}\Vert p_g)\)。
  • hinge / least-squares loss:hinge 用 margin 改善梯度,LSGAN 用平方误差把判别目标改成最小二乘形式。
  • PatchGAN:判别器输出局部 patch 网格,loss 对局部 logits 求平均,常用于图像翻译、超分和 tokenizer decoder 的纹理约束。

0. 一句话直觉

生成器不会显式写密度;判别器告诉它样本像不像真实数据。

直观解释:GAN 不直接问“这个样本概率多大”,而是训练一个判别器判断真假,再让生成器沿着判别器给出的方向改进。
技术要点:原始 minimax GAN 在 optimal discriminator 假设下对应 JS divergence;实践中 non-saturating loss 是改善梯度的替代目标,不是严格同一个 JS 目标。
常见误区:样本锐利不代表分布覆盖充分;mode collapse 可以让少数样本很好看,但 recall 和多样性很差。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(G_\theta(z)\)生成器。把噪声映射成样本。
\(D_\psi(x)\)判别器概率。估计样本来自真实分布的概率。
\(p_g\)生成器诱导分布。隐式可采样,通常不可算密度。
\(f_\psi\)WGAN critic。输出不是概率。

2. 训练目标从哪里来

目标:用二分类器提供分布差异信号,训练只能采样、不能算 likelihood 的生成器。

\[ \min_G\max_D\;\mathbb{E}_{p_{\mathrm{data}}}\log D(x)+\mathbb{E}_{p_g}\log(1-D(x)). \](GAN-1)

3. 完整推导

  1. Step 1

    \[ \frac{p_{\mathrm{data}}(x)}{D(x)}-\frac{p_g(x)}{1-D(x)}=0\quad\Rightarrow\quad D^*(x)=\frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)+p_g(x)}. \](GAN-2)

    固定生成器时,对每个 \(x\) 单独求最优判别器。

    本步使用一阶最优条件:固定 \(G\) 后,判别器目标在每个 \(x\) 上都是关于 \(D(x)\) 的二分类 log-likelihood。令导数为零,就得到真实密度与生成密度的比值形式。

  2. Step 2

    \[ V(G,D^*)=-\log4+2D_{JS}(p_{\mathrm{data}}\Vert p_g). \](GAN-3)

    原始 GAN 理论上最小化 JS divergence。

    本步把 \(D^*(x)\) 代回 minimax 目标:二分类最优值可以整理成 Jensen-Shannon divergence。这个结论解释了 GAN 的分布匹配意义,也解释了分布支撑几乎不重叠时梯度容易退化。

  3. Step 3

    \[ \mathcal{J}_{G,ns}=-\mathbb{E}_{z}\log D(G_\theta(z)). \](GAN-4)

    non-saturating loss 在判别器很强时给生成器更有效梯度。

    本步是生成器目标的重参数化:不再最小化 \(\log(1-D(G(z)))\),而是最大化 \(\log D(G(z))\)。最优点不变,但当判别器很确信“假”时,生成器获得的梯度更强。

  4. Step 4

    \[ \lambda\mathbb{E}_{\hat{x}}(\|\nabla_{\hat{x}}f_\psi(\hat{x})\|_2-1)^2. \](GAN-5)

    WGAN-GP 用 gradient penalty 近似 1-Lipschitz 约束,critic 不是概率。

    本步来自 Kantorovich-Rubinstein duality 的工程近似:Wasserstein-1 距离可由 1-Lipschitz critic 表示,gradient penalty 通过惩罚 \(\|\nabla f\|\) 偏离 1 来近似这个约束,使训练信号更平滑。

经典 GAN loss 的稳定化形式

这些目标不是在解决不同任务,而是在同一个真实/生成分布匹配博弈中改变判别器输出尺度、梯度形态或局部约束。

\[ \mathcal{L}_{D}^{hinge}=\mathbb{E}_{x\sim p_{\mathrm{data}}}\max(0,1-D(x))+\mathbb{E}_{z}\max(0,1+D(G(z))),\quad \mathcal{L}_{G}^{hinge}=-\mathbb{E}_{z}D(G(z)). \](GAN-6)

Hinge loss 把判别器看成 margin classifier,真实样本打分应高于 1,生成样本打分应低于 -1,常见于现代图像 GAN。

\[ \mathcal{L}_{D}^{LS}=\frac{1}{2}\mathbb{E}_{x}(D(x)-1)^2+\frac{1}{2}\mathbb{E}_{z}D(G(z))^2,\quad \mathcal{L}_{G}^{LS}=\frac{1}{2}\mathbb{E}_{z}(D(G(z))-1)^2. \](GAN-7)

LSGAN 用 least-squares 代替 BCE,目标是让判别器输出接近标签值,常用于缓解 BCE 饱和导致的梯度问题。

\[ \mathcal{L}_{D}^{patch}=\frac{1}{|\Omega|}\sum_{(u,v)\in\Omega}\ell\left(D_{u,v}(x),D_{u,v}(G(z))\right). \](GAN-8)

PatchGAN / patch loss 让判别器输出局部网格 logits,并在 patch 维度平均 loss。它强化局部纹理真实感,适合图像翻译、超分和 VQGAN decoder,但不能单独保证全局结构正确。

训练好的 GAN 应该是什么样子

理想状态不是“生成器 loss 很低”,而是生成器诱导出的分布 \(p_g\) 已经接近真实数据分布 \(p_{\mathrm{data}}\)。此时判别器难以区分真实样本和生成样本,是因为两类样本来自几乎相同的分布,而不是因为判别器能力不足。

\[ p_g(x)\approx p_{\mathrm{data}}(x)\quad\Longrightarrow\quad D^*(x)=\frac{p_{\mathrm{data}}(x)}{p_{\mathrm{data}}(x)+p_g(x)}\approx \frac{1}{2}. \](GAN-9)

当 \(p_g=p_{\mathrm{data}}\) 时,最优判别器在每个样本上只能给出 \(1/2\),原始 GAN 对应的 JS divergence 达到最小值 0。这个结论说明了 GAN 的理论终点:不是让生成器欺骗一个坏判别器,而是让真实分布和生成分布本身不可区分。

  • 样本逼真:局部纹理、颜色、边缘、结构和训练数据域一致,但不能只看少数 cherry-picked 样本。
  • 模式覆盖充分:不同 \(z\) 应覆盖真实数据中的类别、姿态、风格和长尾变化;只生成少数高质量样本仍是 mode collapse。
  • 多样性正常:相邻 latent 可以平滑变化,随机 latent 不应反复落到同一模板。
  • 不简单记忆:nearest-neighbor 检查不应显示生成样本只是训练图像的复制。
  • 条件一致:conditional GAN 中,输出应满足类别、文本、边缘图、姿态或其他条件 \(c\),否则只是无条件真实感。

因此,\(D\) 的准确率接近 50% 只能作为弱信号:如果判别器容量足够、训练正常、验证集判别也失效,才可能表示 \(p_g\) 接近 \(p_{\mathrm{data}}\)。如果判别器过弱、过拟合、训练不同步,50% 准确率也可能是失效而不是收敛。

4. 训练过程与采样过程

5. 可视化实验:GAN Gradient Lab

切换 original、non-saturating、WGAN,观察 toy 判别边界和生成器梯度方向。

non-saturating gives stronger gradient when D is confident.

这是 toy simulation,不是完整 GAN 训练。

6. 常见误解

  • WGAN critic 不是概率。原始 GAN 的 \(D(x)\) 可解释为真实概率,WGAN、hinge GAN 的 critic 输出是打分函数或 margin,不能当作概率读。
  • 采样快不代表训练简单。GAN 推断只需一次前向,但训练是两方博弈,判别器过强、过弱或优化不同步都会破坏梯度。
  • mode collapse 是分布覆盖失败。少数样本看起来很清晰并不能证明生成分布覆盖了真实数据的多样性。
  • PatchGAN 不是全局判别器的替代品。局部 patch loss 能强化纹理,但如果缺少全局条件或重构约束,可能出现局部真实、整体结构错误的样本。

7. 特点、问题与诊断信号

核心特点

GAN 用隐式采样分布和判别信号训练生成器,不需要显式 likelihood,推断速度非常快。训练完成的目标是 \(p_g\approx p_{\mathrm{data}}\),而不是某个单独 loss 数值最小。

适用场景

图像生成、风格迁移、超分辨率、感知损失辅助训练,以及需要 adversarial realism 的 decoder/tokenizer。

典型问题

训练不稳定、mode collapse、梯度消失、判别器过拟合和评价困难;PatchGAN 可能局部纹理逼真但全局结构错误。

诊断信号

FID、precision/recall、mode coverage、判别器验证准确率、critic gradient norm、hinge margin 饱和比例、patch 判别热图、nearest-neighbor 记忆检查、条件一致性、样本多样性和训练曲线振荡。

工程判断

不要只看 \(D\) accuracy 或 \(G\) loss。判别器接近随机猜测只有在判别器足够强、未过拟合且样本覆盖充分时才是好信号;若需要稳定大规模条件生成,Diffusion/Flow Matching 往往更容易扩展。

8. 读完本章你应该理解

  • 最优判别器的结论:固定生成器时,\(D^*(x)=p_{\mathrm{data}}(x)/(p_{\mathrm{data}}(x)+p_g(x))\),它本质上估计密度比。
  • JS divergence 的来源:把 \(D^*\) 代回原始 minimax 目标,会得到 \(-\log4+2D_{JS}(p_{\mathrm{data}}\Vert p_g)\)。
  • 训练完成的理想状态:当 \(p_g=p_{\mathrm{data}}\) 时,最优判别器输出 \(D^*(x)=1/2\),但工程上必须同时检查样本质量、模式覆盖、多样性、记忆风险和条件一致性。
  • non-saturating 为什么更常用:它保留相同最优点,但在判别器很强时给生成器更大的有效梯度。
  • WGAN-GP 的意义:gradient penalty 近似 1-Lipschitz 约束,使 critic 的训练信号与 Wasserstein 距离的对偶形式更一致。
  • hinge、LSGAN、PatchGAN 的位置:它们分别改变 margin 梯度、平方误差标签拟合和局部 patch 判别约束,目标都是让对抗训练更稳定或更贴近视觉纹理。

Score Matching:从 log-density 梯度到去噪方向

Score 是 log-density 对样本的梯度;它给出样本应向高概率区域移动的方向。

前置知识
  • log-density:\(\log p(x)\) 把密度转成可加的标量场,梯度方向表示局部上升最快方向。
  • score:\(s(x)=\nabla_x\log p(x)\),这里对样本 \(x\) 求梯度,不是对模型参数求梯度。
  • Gaussian score:若 \(\tilde{x}\sim\mathcal{N}(x,\sigma^2I)\),则 \(\nabla_{\tilde{x}}\log p(\tilde{x}|x)=-(\tilde{x}-x)/\sigma^2\)。
  • DSM:denoising score matching 用人为加噪得到闭式 score target,绕开真实数据 score 不可观测的问题。
  • Langevin dynamics:\(x_{k+1}=x_k+\eta s_\theta(x_k)+\sqrt{2\eta}\xi_k\),用 score 上升方向和噪声共同采样。

0. 一句话直觉

score 不是样本本身,而是 \(\nabla_x\log p(x)\):指向 log-density 上升最快方向。

直观解释:score 不是概率值,而是“往哪个方向走,概率会上升得最快”,像在看不见山峰高度时拿到每个位置的上坡方向。
技术要点:DSM 用 conditional Gaussian score 构造监督;平方损失下网络最优解逼近 noisy marginal score,而不是简单记住每个样本的条件噪声方向。
常见误区:score 的梯度对象是样本 \(x\),不是模型参数;不要把它和训练时的 parameter gradient 混淆。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(s(x)=\nabla_x\log p(x)\)score field。真实数据 score 通常不可直接获得。
\(\tilde{x}=x+\sigma\epsilon\)加噪样本。DSM 训练时构造。
\(s_\theta(\tilde{x},\sigma)\)score 网络。近似加噪分布的 score。
\(E_\theta(x)\)energy function。score 与 \(-\nabla_xE\) 相关。

2. 训练目标从哪里来

目标:学习不依赖归一化常数的 log-density 梯度,并连接到 diffusion 的噪声预测。

\[ s(x)=\nabla_x\log p(x). \](SM-1)

3. 完整推导

  1. Step 1

    \[ \nabla_x\log \frac{\exp(-E(x))}{Z}=-\nabla_xE(x). \](SM-2)

    归一化常数 \(Z\) 与 \(x\) 无关,求梯度后消失。

    本步对样本变量 \(x\) 求梯度,而不是对参数求梯度。因为 \(Z\) 不随 \(x\) 变化,\(\nabla_x\log Z=0\),所以即便归一化常数不可算,score 仍可由能量梯度表示。

  2. Step 2

    \[ \nabla_{\tilde{x}}\log p(\tilde{x}|x)=-\frac{\tilde{x}-x}{\sigma^2}=-\frac{\epsilon}{\sigma}. \](SM-3)

    条件高斯加噪的 score 有闭式。

    本步使用 Gaussian score identity:高斯 log-density 是二次函数,对 \(\tilde{x}\) 求梯度会得到指向均值 \(x\) 的线性向量。这个闭式 target 让 denoising score matching 可以构造监督信号。

  3. Step 3

    \[ \mathcal{J}_{DSM}=\mathbb{E}_{x,\epsilon,\sigma}\left\|s_\theta(x+\sigma\epsilon,\sigma)+\frac{\epsilon}{\sigma}\right\|_2^2. \](SM-4)

    denoising score matching 用可构造噪声提供监督信号。

    本步使用 DSM surrogate:真实数据分布的 score 不可直接观测,但我们可以人为加高斯噪声,并知道“加噪样本应往干净样本方向移动”的解析 score。网络学习的是不同噪声尺度下的去噪方向。

  4. Step 4

    \[ x_{k+1}=x_k+\eta s_\theta(x_k)+\sqrt{2\eta}\xi_k,\quad \xi_k\sim\mathcal{N}(0,I). \](SM-5)

    Langevin dynamics 沿 score 上升方向并注入噪声采样。

    本步使用 stochastic dynamics:score 项把样本推向更高 log-density,\(\sqrt{2\eta}\xi\) 保留随机探索。只做梯度上升会塌到局部高密度点,加入噪声才对应采样而不是优化。

DSM 为什么不是记住每个样本的噪声方向

训练样本给出的监督是 conditional score:

\[ \nabla_{\tilde{x}}\log q_\sigma(\tilde{x}|x)=-\frac{\tilde{x}-x}{\sigma^2}. \](SM-5A)

但网络输入只有 \(\tilde{x}\) 和 \(\sigma\),并不知道它来自哪一个干净样本 \(x\)。在平方损失下,最优预测是条件目标的条件期望:

\[ s_\theta^*(\tilde{x},\sigma)=\mathbb{E}\left[\nabla_{\tilde{x}}\log q_\sigma(\tilde{x}|x)\mid \tilde{x}\right]=\nabla_{\tilde{x}}\log q_\sigma(\tilde{x}). \](SM-5B)

因此 DSM 用 conditional score 构造可计算监督,但最终逼近的是 noisy marginal distribution 的 score。这是它能推广到未见样本和 diffusion 中间分布的关键。

Score 视角下的噪声预测与速度场

Diffusion 的噪声预测、\(\hat{x}_0\) 预测和 score 预测在给定噪声日程时是同一反向信息的不同参数化。Flow Matching 的 velocity 也能在常见 Gaussian probability path 下由 score 表示,但一般不是单纯的常数倍;它还包含由路径系数决定的线性漂移项。

\[ x_t=a_t x_{\mathrm{data}}+\sigma_t\epsilon,\quad \epsilon\sim\mathcal{N}(0,I),\quad s_t(x)=\nabla_x\log p_t(x). \](SM-6)

这里 \(p_t\) 是中间噪声分布。对 Gaussian corruption,score、噪声和去噪均值之间有解析关系。

\[ s_t(x)=-\frac{1}{\sigma_t}\mathbb{E}[\epsilon\mid x_t=x],\quad \epsilon^*(x,t)=-\sigma_t s_t(x),\quad \mathbb{E}[x_{\mathrm{data}}\mid x_t=x]=\frac{x+\sigma_t^2s_t(x)}{a_t}. \](SM-7)

因此在 DDPM/score-based diffusion 中,最优噪声预测器 \(\epsilon_\theta\) 本质上就是负 score 乘以时间相关尺度 \(\sigma_t\)。这就是“噪声预测和 score 只差尺度”的严格含义。

\[ \begin{aligned} v_t(x) &=\mathbb{E}\left[\dot{a}_t x_{\mathrm{data}}+\dot{\sigma}_t\epsilon\mid x_t=x\right]\\ &=\frac{\dot{a}_t}{a_t}x+ \left(\frac{\dot{a}_t}{a_t}\sigma_t^2-\dot{\sigma}_t\sigma_t\right)s_t(x). \end{aligned} \](SM-8)

这说明 Flow Matching 的速度场和 score 描述的是同一条概率路径的局部几何,但 velocity 通常是“已知线性漂移 + score 乘以时间系数”。若使用线性插值、OT path 或 rectified path,具体系数会随路径定义变化;不能简单说所有 velocity prediction 都只是 score 的常数缩放。

4. 训练过程与采样过程

训练伪代码

for each minibatch x:
  sigma ~ noise_scale_distribution
  epsilon ~ Normal(0, I)
  x_tilde = x + sigma * epsilon
  target_score = -epsilon / sigma
  score_hat = s_theta(x_tilde, sigma)
  loss = ||score_hat - target_score||_2^2
  update theta

真实数据 score 不可见;人为加高斯噪声后,条件 Gaussian score 有闭式。

Langevin 采样伪代码

x = initial_noise_or_corrupted_sample
for k = 0, ..., K - 1:
  xi ~ Normal(0, I)
  x = x + eta * s_theta(x, sigma_k)
        + sqrt(2 * eta) * xi
  optionally decrease sigma_k
return x

score 项让样本走向高密度区域;噪声项保持采样性,避免只做局部优化。

5. 可视化实验:Score Field Lab

切换 Gaussian/Laplace/Mixture,调节噪声平滑 sigma,点击点可观察沿 score 的 toy 轨迹。

Gaussian score points linearly to the mean.

6. 常见误解

  • score 不是概率值。score 是 \(\nabla_x\log p(x)\),表示样本在空间中应往哪里移动才能更快提高 log-density。
  • score 的梯度对象是样本,不是参数。参数梯度用于训练网络,score field 是对 \(x\) 求梯度,两者语义不同。
  • 加噪不是附属技巧。真实数据分布可能集中在低维流形上,直接学习 score 很难;加噪后的分布更平滑,才给 DSM 提供可稳定学习的目标。

7. 特点、问题与诊断信号

核心特点

Score Matching 绕开不可计算的归一化常数,直接学习 log-density 的空间梯度,是 Diffusion 和 EBM 之间的关键桥梁。

适用场景

Diffusion 噪声预测、Langevin sampling、能量模型、图像去噪、分布修复和 score-based inverse problem。

典型问题

不同噪声等级的 loss 权重会影响训练重点;score 尺度过大或方向错误会导致采样发散或陷入局部区域。

诊断信号

向量场是否指向高密度区域、denoising error、不同 sigma 下的误差、Langevin 轨迹是否回到真实 mode。

工程判断

若任务能构造可靠噪声监督,score 是强接口;若只能得到最终偏好或 reward,直接学 score 往往不是最自然的选择。

8. 读完本章你应该理解

  • score 的定义:\(s(x)=\nabla_x\log p(x)\),它是样本空间中的方向场,不是概率大小。
  • 高斯 DSM target 的来源:\(\tilde{x}=x+\sigma\epsilon\) 时,\(\nabla_{\tilde{x}}\log p(\tilde{x}|x)=-(\tilde{x}-x)/\sigma^2=-\epsilon/\sigma\)。
  • 与 Diffusion 的关系:DDPM 中预测噪声 \(\epsilon_\theta\) 等价于预测 \(-\sigma_t s_t(x_t)\),因此噪声预测和 score learning 是同一反向信息的两种参数化。
  • 与 Flow Matching 的关系:在 Gaussian probability path 下,velocity field 可写成已知漂移项加 score 项;它与 score 共享同一概率路径信息,但一般不只是常数倍缩放。

Diffusion / Score-based:从 Markov 加噪到反向去噪

Diffusion 固定前向加噪链,再学习从噪声回到数据的反向 transition。

前置知识
  • Markov chain:\(q(x_t|x_{t-1})\) 只依赖上一步状态;Diffusion 前向链是固定加噪链。
  • 线性高斯变换:\(x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\),多步叠加后仍是高斯。
  • Gaussian product / posterior:\(q(x_{t-1}|x_t,x_0)\propto q(x_t|x_{t-1})q(x_{t-1}|x_0)\),两个高斯相乘仍给出高斯 posterior。
  • ELBO:DDPM 用固定前向链构造 likelihood 下界,核心项是每一步 posterior KL。
  • 参数化:\(\epsilon\)-prediction、\(\hat{x}_0\)-prediction、score 和 \(v\)-prediction 都表达从 \(x_t\) 回到数据方向的信息。

0. 一句话直觉

训练时随机破坏数据并学习噪声;采样时从纯噪声逐步去噪。

直观解释:Diffusion 把“一步从噪声生成图片”的难题拆成很多小去噪步骤;每一步只需要估计当前该去掉多少噪声。
技术要点:完整 DDPM 可从 variational bound 推导;常用 \(\epsilon\)-prediction simple loss 是 posterior KL 的简化/重加权工程目标,不是完整 ELBO 的逐项原样实现。
常见误区:训练目标、参数化和 sampler 是相关但不同层次;DDPM、DDIM、DPM-Solver、Euler、Heun 是在同一 learned denoising/score 信息上的不同离散化。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(x_0\)干净数据。来自训练集。
\(x_t\)第 t 个噪声状态。由 forward noising 构造。
\(\beta_t,\alpha_t,\bar\alpha_t\)噪声日程。人为设定。
\(\epsilon_\theta(x_t,t,c)\)噪声预测网络。训练得到。

2. 训练目标从哪里来

目标:让 \(p_\theta(x_{t-1}|x_t,c)\) 逼近固定前向过程可解析得到的真实 posterior。

\[ q(x_t|x_{t-1})=\mathcal{N}(\sqrt{1-\beta_t}x_{t-1},\beta_tI). \](DDPM-1)

3. 完整推导

  1. Step 1

    \[ \alpha_t=1-\beta_t,\quad \bar{\alpha}_t=\prod_{s=1}^{t}\alpha_s,\quad q(x_t|x_0)=\mathcal{N}(\sqrt{\bar{\alpha}_t}x_0,(1-\bar{\alpha}_t)I). \](DDPM-2)

    前向链是高斯马尔可夫链,因此任意 t 可闭式采样。

    本步使用 Gaussian composition:每一步都是线性高斯变换,多步叠加后仍是高斯。于是 \(x_t\) 可以直接从 \(x_0\) 和一个标准高斯噪声构造,不必真的模拟 \(1\) 到 \(t\) 的完整加噪链。

  2. Step 2

    \[ x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon,\quad \epsilon\sim\mathcal{N}(0,I). \](DDPM-3)

    训练无需逐步运行前向链。

    本步使用 reparameterization:随机性来自外部 \(\epsilon\sim\mathcal{N}(0,I)\),\(x_t\) 是 \(x_0,t,\epsilon\) 的确定函数。这让训练可以随机抽一个时间步、直接构造噪声样本并反向传播。

  3. Step 3

    \[ q(x_{t-1}|x_t,x_0)=\mathcal{N}(\tilde{\mu}_t(x_t,x_0),\tilde{\beta}_t I). \](DDPM-4)

    前向过程固定,所以 posterior 可解析。

    本步使用 Gaussian posterior identity:\(q(x_t|x_{t-1})\) 和 \(q(x_{t-1}|x_0)\) 都是线性高斯,条件化到 \(x_t,x_0\) 后仍是高斯。这个解析 posterior 是反向模型要逼近的老师。

  4. Step 4

    \[ \tilde{\mu}_t=\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0+\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t,\quad \tilde{\beta}_t=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\beta_t. \](DDPM-5)

    反向模型学习逼近这个 posterior 的 mean/variance。

    本步使用 Gaussian conditioning:解析 posterior 的均值由 \(x_t\) 和 \(x_0\) 的线性组合给出。采样时 \(x_0\) 不可知,因此网络通过预测噪声或 \(\hat{x}_0\) 来间接构造反向均值。

  5. Step 5

    \[ L_{t-1}=D_{KL}\left(q(x_{t-1}|x_t,x_0)\Vert p_\theta(x_{t-1}|x_t,c)\right). \](DDPM-6)

    DDPM ELBO 的核心项是每一步 posterior matching。

    本步使用 variational bound:真实反向链不可直接最大似然,于是用固定前向链构造下界。下界中的主要训练项,是让 \(p_\theta(x_{t-1}|x_t,c)\) 匹配解析 posterior \(q(x_{t-1}|x_t,x_0)\)。

  6. Step 6

    \[ \mathcal{J}_{simple}=\mathbb{E}_{x_0\sim p_{\mathrm{data}},\epsilon\sim\mathcal{N}(0,I),t}\left\|\epsilon-\epsilon_\theta(x_t,t,c)\right\|_2^2. \](DDPM-7)

    实践中常用噪声预测简化目标。

    本步把固定方差 Gaussian KL 化简为 MSE:若方差日程固定,posterior matching 的主要差异落在均值;均值又可由噪声 \(\epsilon\) 参数化,所以训练常写成预测真实噪声的平方误差。

  7. Step 7

    \[ \hat{x}_0=\frac{x_t-\sqrt{1-\bar{\alpha}_t}\epsilon_\theta(x_t,t,c)}{\sqrt{\bar{\alpha}_t}},\quad s_\theta(x_t,t)\approx-\frac{\epsilon_\theta(x_t,t)}{\sqrt{1-\bar{\alpha}_t}}. \](DDPM-8)

    epsilon、x0、score 是同一反向信息的不同参数化。

    本步使用 DDPM 参数化关系:若 \(x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon\),最优噪声预测满足 \(\epsilon^*(x_t,t)=-\sqrt{1-\bar{\alpha}_t}\nabla_{x_t}\log p_t(x_t)\)。所以 \(\epsilon\)-prediction 与 score prediction 只差一个时间相关尺度;\(\hat{x}_0\) 则由同一个 score 通过 Tweedie identity 还原。

  8. Step 8

    \[ v=\sqrt{\bar{\alpha}_t}\epsilon-\sqrt{1-\bar{\alpha}_t}x_0. \](DDPM-9)

    v-parameterization 改善不同噪声等级的数值平衡。

    本步使用 signal/noise rotation:\(v\) 可以看成在 \(x_0\) 与 \(\epsilon\) 之间旋转后的目标,使高噪声和低噪声时间步的尺度更平衡,常有利于稳定训练和少步采样。

前向闭式、后验高斯与反向采样公式
  1. 一步加噪写成重参数化:\(x_t=\sqrt{\alpha_t}x_{t-1}+\sqrt{1-\alpha_t}\epsilon_t\),其中 \(\epsilon_t\sim\mathcal{N}(0,I)\)。这是线性函数加高斯噪声,所以结果仍是高斯。
  2. 多步叠加仍是高斯:不断代入 \(x_{t-1}\) 后,所有独立高斯噪声的线性组合仍是高斯,其总方差合并为 \(1-\bar{\alpha}_t\),得到 \(x_t=\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon\)。
  3. 用 Bayes rule 得到 posterior:\(q(x_{t-1}|x_t,x_0)\propto q(x_t|x_{t-1})q(x_{t-1}|x_0)\)。右边两个因子都是关于 \(x_{t-1}\) 的高斯,乘积仍是高斯。
  4. 高斯乘积给出均值:把两个二次型按 \(x_{t-1}\) 合并,得到 \(\tilde{\mu}_t=\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}x_0+\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}x_t\)。
  5. 采样时 \(x_0\) 不可见:网络先预测 \(\epsilon_\theta(x_t,t,c)\),再用 \(\hat{x}_0=\frac{x_t-\sqrt{1-\bar{\alpha}_t}\epsilon_\theta}{\sqrt{\bar{\alpha}_t}}\) 代入 posterior mean。
  6. DDPM 反向均值:整理后得到 \(\mu_\theta(x_t,t)=\frac{1}{\sqrt{\alpha_t}}\left(x_t-\frac{\beta_t}{\sqrt{1-\bar{\alpha}_t}}\epsilon_\theta(x_t,t,c)\right)\)。随机采样步为 \(x_{t-1}=\mu_\theta(x_t,t)+\sigma_tz,\;z\sim\mathcal{N}(0,I)\)。
  7. DDIM / probability flow ODE:若去掉或重写随机噪声项,就得到确定性轨迹版本。它使用同一个去噪网络,但采样路径不再是原始 DDPM 的随机 Markov chain。

Diffusion 参数化对照

这些参数化表达同一反向信息,但数值尺度、loss weighting 和 sampler 接口不同。

参数化网络预测从预测恢复信息优点常见场景
\(\epsilon\)-prediction噪声 \(\epsilon\)\(\hat{x}_0=(x_t-\sigma_t\hat{\epsilon})/\alpha_t\)简洁、经典DDPM 及许多基础实现
\(x_0\)-prediction干净样本 \(x_0\)直接输出 \(\hat{x}_0\)直观,便于解释重构一些图像 / latent 模型
\(v\)-predictionsignal/noise 旋转变量由 \((x_t,v)\) 解出 \(x_0\) 或 \(\epsilon\)数值平衡较好Imagen、Stable Diffusion 系列常见
score prediction\(\nabla_{x_t}\log p_t(x_t)\)\(\epsilon^*=-\sigma_t s_t(x_t)\)统一 SDE/ODE 视角score-based diffusion 与 inverse problem

Diffusion 训练与采样看到的信息不同

阶段可见变量网络任务注意点
训练\(x_0,t,\epsilon,x_t\)从 \(x_t,t,c\) 预测 \(\epsilon\)、\(x_0\)、score 或 \(v\)噪声是人为加入的,因此监督信号可得
采样\(x_t,t,c\)估计反向一步的均值或方向没有真实 \(x_0\),只能依赖模型预测

4. 训练过程与采样过程

5. 可视化实验:Diffusion Noise / SNR Lab

调节 t 和 schedule,观察 signal coefficient、noise coefficient、SNR 与 DDPM/DDIM toy path。

SNR 将由当前 timestep 和 schedule 实时计算。

t 增大时 signal 衰减,noise 增强。

展开 DDPM ELBO 分解
\[ -\log p_\theta(x_0)\le L_T+\sum_{t=2}^{T}L_{t-1}+L_0. \](DDPM-10)

核心项是每个时间步的 posterior KL;在固定方差与噪声参数化下可化简为加权噪声 MSE。

6. 常见误解

  • 前向 \(q\) 不需要学习。它是固定破坏过程,用来产生训练监督;真正学习的是反向 \(p_\theta(x_{t-1}|x_t,c)\)。
  • DDIM 不是重新训练模型。DDIM 使用同一个噪声预测网络,把随机反向步改成确定性或半确定性轨迹。
  • score、epsilon、x0、v 不是四个无关任务。它们在给定噪声日程时可以互相转换;其中 \(\epsilon_\theta\) 是 score 的负向时间尺度重标定,\(v\)-prediction 是信号与噪声坐标的旋转。

7. 特点、问题与诊断信号

核心特点

Diffusion 把复杂生成拆成许多局部去噪步骤,训练稳定、条件控制强,并能通过 score 视角统一到连续 SDE/ODE。

适用场景

图像、视频、音频、3D、inverse problem、editing、latent generation 和高质量多模态条件生成。

典型问题

多步采样带来延迟;noise schedule、SNR weighting 和 guidance 强度会影响细节、颜色、文本一致性和伪影。

诊断信号

噪声预测 MSE、分时间步误差、SNR 曲线、采样步数-质量曲线、CFG 过强伪影、视频时序一致性和 reward/偏好泛化。

工程判断

若追求高感知质量和可控生成,Diffusion 是强路线;若追求极低延迟,则需要 DDIM、distillation、consistency、rectified flow 或 latent-space 加速。

8. 读完本章你应该理解

  • \(q(x_t|x_0)\) 的闭式:由于前向链是线性高斯组合,任意时间步都可写成 \(\sqrt{\bar{\alpha}_t}x_0+\sqrt{1-\bar{\alpha}_t}\epsilon\)。
  • posterior KL 到噪声预测:DDPM ELBO 的核心项让反向模型匹配解析 posterior;在固定方差与噪声参数化下,这可化简为预测 \(\epsilon\) 的 MSE。
  • 反向采样如何执行:从 \(x_T\sim\mathcal{N}(0,I)\) 开始,逐步用 \(\epsilon_\theta\) 构造 \(\mu_\theta\),再按 DDPM 随机步或 DDIM 确定性步得到 \(x_{t-1}\)。
  • 参数化差异:epsilon、x0、score 和 v 都表达反向信息;epsilon 与 score 只差 \(\sqrt{1-\bar{\alpha}_t}\) 这样的时间尺度,选择哪一种主要影响数值尺度、训练稳定性和采样器实现。

Flow Matching / Rectified Flow / MeanFlow:从 probability path 到 velocity field

Flow Matching 学习从 base distribution 到 data distribution 的速度场,采样时解 ODE。

前置知识
  • probability path:\(\{p_t\}_{t\in[0,1]}\) 连接 base distribution \(p_0\) 和 data distribution \(p_1\)。
  • velocity field:\(v_t(x)\) 表示样本在时间 \(t\)、位置 \(x\) 的瞬时移动方向和速度。
  • continuity equation:\(\partial_t p_t+\nabla\cdot(p_tv_t)=0\),描述密度在速度场推动下如何守恒流动。
  • ODE sampling:\(\frac{dx_t}{dt}=v_\theta(x_t,t,c)\),采样时从 \(p_0\) 沿 learned velocity 积分到 \(p_1\)。
  • numerical solver:Euler、Heun、Runge-Kutta 都是把连续 ODE 离散成有限步的近似方法,步数越少越依赖速度场精度。

0. 一句话直觉

Diffusion 学反向去噪 transition;Flow Matching 学让样本沿路径移动的速度。

直观解释:Flow Matching 像学习一张风场图:训练时知道粒子从哪里来、要到哪里去;采样时只根据当前位置预测平均该往哪里走。
技术要点:训练监督来自 conditional velocity,但模型最优解是 \(v^*(x_t,t)=\mathbb{E}[u_t|x_t,t]\) 的 marginal velocity field。
常见误区:采样时模型不知道真实 endpoint \(x_1\),只能从 base sample 沿学到的 ODE 场积分。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(p_0,p_1\)base distribution 与 data distribution。\(p_0\) 可采样,\(p_1=p_{\mathrm{data}}\)。
\(x_t=\psi_t(x_0,x_1)\)条件概率路径。由 paired endpoints 构造。
\(u_t\)条件速度。路径对时间的导数。
\(v_\theta(x_t,t,c)\)学习到的 velocity field。采样时用于 ODE integration。

2. 训练目标从哪里来

目标:训练时直接回归路径上的 velocity field,而不是显式训练 score 或 Markov transition。但在 Gaussian probability path 下,最优 velocity 可以由中间分布的 score 和路径系数表示,因此它与 score 是同一概率流的不同坐标表达。

\[ \partial_t p_t(x)+\nabla\cdot(p_t(x)v_t(x))=0. \](FM-1)

3. 完整推导

  1. Step 1

    \[ x_t=\psi_t(x_0,x_1),\quad x_0\sim p_0,\quad x_1\sim p_{\mathrm{data}}. \](FM-2)

    训练时用 endpoints 构造路径状态。

    本步使用 conditional probability path:训练时可以同时拿到 base 样本 \(x_0\) 和数据样本 \(x_1\),人为定义二者之间的中间状态 \(x_t\)。这条路径提供监督信号,但采样时不会知道真实终点 \(x_1\)。

  2. Step 2

    \[ u_t=\frac{d}{dt}\psi_t(x_0,x_1),\quad \mathcal{J}_{FM}=\mathbb{E}_{t,x_0,x_1}\left\|v_\theta(x_t,t,c)-u_t\right\|_2^2. \](FM-3)

    监督目标是速度回归。

    本步使用 least-squares velocity matching:路径对时间求导给出目标速度 \(u_t\),网络只需在随机时间点回归这个速度。它不是在估计密度值,而是在学习“样本此刻应该往哪里移动”。

  3. Step 3

    \[ x_t=(1-t)x_0+t x_1,\quad u_t=x_1-x_0. \](FM-4)

    Rectified Flow 常用线性路径。

    本步使用 linear interpolation:若 \(x_t=(1-t)x_0+tx_1\),路径速度就是常量 \(x_1-x_0\)。这让监督目标非常简单,也解释了 rectified path 为什么追求更直、更少步可积分的轨迹。

  4. Step 4

    \[ \frac{dx_t}{dt}=v_\theta(x_t,t,c),\quad x_0\sim p_0,\quad t:0\to1. \](FM-5)

    采样时没有真实 \(x_1\),只能沿模型速度场积分。

    本步使用 ODE sampling:采样不是 Diffusion 那样的 learned reverse Markov chain,而是从 base distribution 的样本出发,沿 \(dx_t/dt=v_\theta(x_t,t,c)\) 积分到数据时间。

  5. Step 5

    \[ x_{t+\Delta t}=x_t+\Delta t\,v_\theta(x_t,t,c). \](FM-6)

    Euler 是最简单 ODE solver;步数减少会增大轨迹误差。

    本步使用 numerical integration:连续 ODE 必须离散化执行。Euler 每一步只看当前速度,简单但误差较大;Heun 或 Runge-Kutta 会多次评估速度,用计算量换更准确的轨迹。

conditional velocity 与 marginal velocity field

训练时可以用 endpoint \(x_0,x_1\) 构造 conditional path,并计算这条路径上的 conditional velocity \(u_t(x_t|x_0,x_1)\)。但采样时模型只看到当前位置 \(x_t\) 和时间 \(t\),并不知道真实终点 \(x_1\)。因此平方损失下的最优网络是条件速度的条件期望:

\[ v^*(x_t,t)=\mathbb{E}\left[u_t(x_t|x_0,x_1)\mid x_t,t\right]. \](FM-6A)

这解释了为什么训练时可以用 endpoint 构造监督,却能在采样时只依赖 \(x_t,t\) 运行 ODE:模型学的是 marginal velocity field,而不是记住某条具体配对路径。

velocity field 与 score 的关系

若 probability path 写成 \(x_t=a_tx_{\mathrm{data}}+\sigma_t\epsilon\),则 score \(s_t(x)=\nabla_x\log p_t(x)\) 已经包含“从当前中间分布往数据高密度区域移动”的信息。Flow Matching 的 marginal velocity 可写成:

\[ v_t(x)=\frac{\dot{a}_t}{a_t}x+ \left(\frac{\dot{a}_t}{a_t}\sigma_t^2-\dot{\sigma}_t\sigma_t\right)s_t(x). \](FM-7)

这个公式的含义是:velocity field 与 score 并不矛盾,它们都描述同一条 \(p_0\to p_1\) 概率路径;但 velocity 通常还含有 \(\frac{\dot{a}_t}{a_t}x\) 这样的已知线性漂移项。只有在特定路径和参数化下,去掉已知项后才会退化成 score 的时间尺度重标定。

MeanFlow 前沿说明:MeanFlow 试图从 instantaneous velocity 转向时间区间上的 average velocity,以减少 one-step / few-step generation 的误差。这个方向仍在快速演化,适合作为前沿补充,而不是已经完全稳定的基础统一框架。

4. 训练过程与采样过程

5. 可视化实验:Flow Velocity Lab

调节 t、路径形状和步数,区分 instantaneous velocity 与 MeanFlow average velocity。

Euler step shown.

6. 常见误解

  • Flow Matching 不是 Normalizing Flow。它通常不要求可逆网络和 exact likelihood,而是学习连续路径上的 velocity field。
  • 采样不是反向 Markov 链。Flow Matching 从 base distribution 沿 ODE 积分到 data distribution;若论文用 \(t=1\to0\) 的约定,本质只是时间命名不同。
  • velocity 不总是 score 的常数倍。在 Gaussian path 下它可以写成已知漂移项加 score 项;换成 rectified path、OT path 或其他路径时,系数和几何含义都会变化。
  • MeanFlow 的 average velocity 不是瞬时速度。它试图直接预测时间区间上的平均移动量,用来压缩 one-step/few-step 生成。

7. 特点、问题与诊断信号

核心特点

Flow Matching 用回归速度场替代反向去噪 transition,采样时解 ODE;路径越直,少步积分越容易。

适用场景

高分辨率 latent 生成、少步采样、rectified flow、图像/视频 transformer 生成和需要 deterministic sampler 的场景。

典型问题

路径选择会影响速度学习难度;ODE solver 步数少会累积误差;one-step 目标压缩过强时可能损失细节或条件一致性。

诊断信号

velocity loss、trajectory straightness、curvature、步数-质量曲线、solver 误差、MeanFlow one-step 与 multi-step 质量差距。

工程判断

当想在 diffusion 质量和低步数采样之间折中,Flow Matching 是核心路线;真正部署时要同时调路径、solver 和 latent 表示。

8. 读完本章你应该理解

  • continuity equation 的含义:\(\partial_t p_t+\nabla\cdot(p_tv_t)=0\) 描述样本沿速度场移动时,密度如何随时间守恒地变化。
  • 训练和采样的区别:训练时可以用 \(x_0,x_1\) 构造路径点和目标速度;采样时没有真实 \(x_1\),只能从 base 样本沿 \(v_\theta\) 积分。
  • ODE sampling 的核心:\(x_{t+\Delta t}=x_t+\Delta t v_\theta(x_t,t,c)\) 是 Euler 版本,更高阶 solver 用更多速度评估换更小误差。
  • score 与 velocity 的统一:在 Gaussian probability path 下,velocity 可以写成线性漂移项加 score 项;它与 diffusion 的 score 视角相容,但不能简单等同为 score 的常数倍。
  • instantaneous 与 average velocity:前者描述某一时刻的切向速度,后者描述一个时间区间的平均位移,MeanFlow 依赖后者减少步数。

Energy-Based Model:能量函数、归一化常数与 Langevin 采样

EBM 用未归一化能量定义密度,难点在 partition function 和采样。

前置知识
  • 未归一化密度:\(\exp(-E_\theta(x))\) 只给相对概率,还不是完整密度。
  • partition function:\(Z_\theta=\int\exp(-E_\theta(x))dx\),负责把相对概率归一化,但高维积分通常不可算。
  • energy:\(E_\theta(x)\) 越低,样本相对概率越高;训练希望真实样本低能量、负样本高能量。
  • score 连接:\(\nabla_x\log p_\theta(x)=-\nabla_xE_\theta(x)\),因为 \(Z_\theta\) 对样本 \(x\) 是常数。
  • negative sampling:EBM 训练常需要模型样本或对比负样本,采样质量会直接影响能量景观。

0. 一句话直觉

低能量区域对应高概率,但归一化常数通常不可计算。

直观解释:EBM 把“好样本”放在低能量谷底,把“不像数据的样本”推到高能量区域。
技术要点:对输入 \(x\) 求梯度时 \(Z_\theta\) 消失;但对参数 \(\theta\) 求梯度时 \(Z_\theta\) 不能忽略,必须处理模型样本期望。
常见误区:EBM 的难点不是写出能量函数,而是获得可靠负样本和可混合的采样链。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(E_\theta(x)\)能量函数。神经网络输出标量。
\(Z_\theta\)partition function。高维积分通常不可解。
\(\nabla_x\log p_\theta(x)\)EBM score。等于 \(-\nabla_xE_\theta(x)\)。

2. 训练目标从哪里来

目标:理解未归一化密度为什么自然连接 score 和 Langevin sampling。

3. 完整推导

  1. Step 1

    \[ p_\theta(x)=\frac{\exp(-E_\theta(x))}{Z_\theta},\quad Z_\theta=\int\exp(-E_\theta(x))dx. \](EBM-1)

    定义密度容易,归一化和采样困难。

    本步使用 Boltzmann form:能量越低,\(\exp(-E_\theta(x))\) 越大,样本概率越高。但要变成真正密度,必须除以所有 \(x\) 上的积分 \(Z_\theta\),高维场景下这个积分通常不可计算。

  2. Step 2

    \[ \nabla_x\log p_\theta(x)=-\nabla_xE_\theta(x). \](EBM-2)

    对样本求梯度时 \(Z_\theta\) 消失。

    本步利用归一化常数对样本 \(x\) 为常数:\(\nabla_x\log Z_\theta=0\)。因此 EBM 的 score 可以写成 \(-\nabla_xE_\theta(x)\),这也是它与 score matching 和 Langevin sampling 的连接点。

  3. Step 3

    \[ \nabla_\theta \log p_\theta(x)=-\nabla_\theta E_\theta(x)+\mathbb{E}_{x'\sim p_\theta}\left[\nabla_\theta E_\theta(x')\right]. \](EBM-3)

    对参数求梯度时,partition function 不能忽略。

    第一项降低真实样本能量,第二项提高模型样本能量。难点是第二项需要从当前模型 \(p_\theta\) 采样,而这个采样本身通常很慢、mixing 很难;因此 EBM 的瓶颈是可靠负样本,而不只是能量函数形式。

4. 训练过程与采样过程

训练伪代码

for each minibatch x_pos:
  x_neg = sample_negative_examples(E_theta)
  energy_pos = E_theta(x_pos)
  energy_neg = E_theta(x_neg)
  loss = mean(energy_pos) - mean(energy_neg)
       + regularization
  update theta

negative examples may come from:
  replay buffer / Langevin chain / contrastive noise

负样本质量决定模型在哪些区域抬高能量;采样混合差会导致能量景观局部正确。

Langevin 采样伪代码

x = initial_noise_or_replay_sample
for k = 0, ..., K - 1:
  xi ~ Normal(0, I)
  grad = -grad_x E_theta(x)
  x = x + eta * grad + sqrt(2 * eta) * xi
return x

EBM 写出相对密度容易,真正难点在 partition function 与可混合的采样链。

5. 可视化实验:Energy Landscape

能量越低概率越高,Langevin 轨迹沿低能量区域移动。

6. 常见误解

  • 写出 \(p_\theta(x)\) 不等于能训练 likelihood。EBM 的 \(Z_\theta\) 是全空间积分,高维下通常不可计算。
  • 负样本不是普通数据增强。负样本决定模型在哪里抬高能量,采样混合不好会让能量景观只在局部正确。
  • EBM 在这里是桥接章节。它帮助理解 score 和 Langevin,不需要把它误当成当前高分辨率生成主线。

7. 特点、问题与诊断信号

核心特点

EBM 用未归一化能量定义相对概率,形式非常通用,并且与 score \(-\nabla_xE\) 关系直接。

适用场景

能量景观建模、约束建模、score-based 方法理解、Langevin sampling 和某些需要打分而非显式 decoder 的任务。

典型问题

partition function 难算,negative sampling 昂贵,MCMC mixing 慢,训练容易受缓存样本和采样器质量影响。

诊断信号

正负样本能量间隔、Langevin 轨迹、mixing 速度、样本多样性、能量是否在数据附近形成合理低谷。

工程判断

EBM 适合作为通用建模语言和局部约束模块;若目标是稳定大规模生成,通常会采用 score/diffusion 这类更可训练的变体。

8. 读完本章你应该理解

  • EBM 密度形式:\(p_\theta(x)=\exp(-E_\theta(x))/Z_\theta\),低能量意味着相对高概率。
  • \(Z_\theta\) 为什么难:它需要对所有可能 \(x\) 积分,高维连续空间不可穷举,因此 likelihood 梯度和精确采样都困难。
  • 与 score 和 Langevin 的连接:对 \(x\) 求梯度时 \(Z_\theta\) 消失,得到 \(\nabla_x\log p_\theta(x)=-\nabla_xE_\theta(x)\),可用于 Langevin 更新。

后训练:从条件 MLE 到偏好优化

后训练在 reference model 附近移动条件分布,使输出符合示范、偏好、奖励或安全约束。

前置知识
  • policy:\(\pi_\theta(y|x)\) 是给定 prompt 或条件 \(x\) 时输出 \(y\) 的条件分布;LLM 与多模态生成器都可这样看。
  • reference model:\(\pi_{\mathrm{ref}}\) 是预训练或 SFT 后的基准模型,KL 约束会限制新策略不要漂移太远。
  • Bradley-Terry preference:\(P(y_w\succ y_l|x)=\sigma(r(x,y_w)-r(x,y_l))\),把成对偏好转成 reward 差。
  • policy gradient:\(\nabla_\theta\mathbb{E}_{y\sim\pi_\theta}R(y)=\mathbb{E}[R(y)\nabla_\theta\log\pi_\theta(y)]\),用于把 reward 传回采样动作。
  • advantage:\(A=R-\text{baseline}\) 衡量样本相对基线好多少;GRPO 用同 prompt 组内归一化构造 advantage。

0. 一句话直觉

预训练学习基础分布;后训练用示范、偏好或 reward 改变模型在同一条件下更倾向哪些输出。

直观解释:SFT 教模型模仿好答案,RLHF/PPO/GRPO 用 reward 推动更好的答案,DPO 类方法直接用偏好对调整回答相对概率。
技术要点:DPO 绕开显式 reward model 和在线 RL rollout,但 reference policy log-ratio 仍保留 KL-control 的结构。
常见误区:视觉生成后训练不能机械照搬 token-level DPO;图像/视频需要定义 trajectory credit、reward noise 和 KL control。

1. 数学设定与符号

符号含义来源 / 是否可计算
\(\pi_\theta(y|x)\)可训练 policy。LLM 或视觉生成器的条件分布。
\(\pi_{\mathrm{ref}}(y|x)\)reference policy。通常为 SFT 或预训练模型。
\(r_\phi(x,y)\)reward model。从偏好对训练。
\(A_i\)advantage。PPO/GRPO/DDPO 中的相对收益。

2. 训练目标从哪里来

目标:在提升 reward 或 preference win-rate 的同时约束模型不要远离 reference。

\[ \max_\pi\mathbb{E}_{y\sim\pi(\cdot|x)}\left[r(x,y)-\beta\log\frac{\pi(y|x)}{\pi_{\mathrm{ref}}(y|x)}\right]. \](PT-1)

后训练方法的三层结构

层次核心接口训练信号采样关系主要风险
SFT:conditional MLE / imitation示范回答 likelihood提高高质量示范 token 概率沿用基础自回归或视觉 sampler只会模仿示范,不表达回答优劣比较
RLHF / PPO / GRPO:online sampling + reward + KL controlreward / advantage从当前模型采样、打分、用 KL 限制远离 reference更新 policy 后再采样reward hacking、KL drift、diversity 下降
DPO / IPO / KTO:offline preference objective偏好对 + reference log-ratio用 chosen/rejected 构造分类式或对比式 loss不需要在线 rollout,但仍改变参数偏好数据偏置、误以为完全没有 KL
视觉生成后训练image/video reward、trajectory log-prob、sampler creditDDPO/DPOK、Diffusion-DPO、Flow-DPO/Flow-GRPO把奖励接到去噪轨迹或 ODE 轨迹上log-prob 定义、trajectory credit assignment、reward noise

3. 完整推导

  1. Step 1

    \[ \mathcal{J}_{SFT}=-\sum_t\log \pi_\theta(y_t^*|x,y_{\lt t}^*). \](PT-2)

    SFT 是条件最大似然 / imitation learning。

    本步使用 conditional MLE:示范回答 \(y^*\) 被视为给定 prompt \(x\) 时的目标样本,训练就是提高这些 token 在 \(\pi_\theta(\cdot|x)\) 下的条件概率。它能教格式和任务行为,但不直接表达两个回答哪个更好。

  2. Step 2

    \[ P(y_w\succ y_l|x)=\sigma(r_\phi(x,y_w)-r_\phi(x,y_l)). \](PT-3)

    Reward Model 用 Bradley-Terry 把 pairwise preference 转成标量 reward。

    本步使用 Bradley-Terry model:人类或模型偏好只告诉我们 \(y_w\) 胜过 \(y_l\),不是绝对分数。用两个 reward 的差经过 sigmoid 表示胜率,就能把 pairwise preference 转成可训练的概率模型。

  3. Step 3

    \[ \pi^*(y|x)=\frac{1}{Z(x)}\pi_{\mathrm{ref}}(y|x)\exp\left(\frac{1}{\beta}r(x,y)\right). \](DPO-1)

    KL-regularized RL 有闭式最优策略。

    本步使用带归一化约束的拉格朗日最优条件:最大化 reward 的同时惩罚偏离 \(\pi_{\mathrm{ref}}\),最优策略会等于 reference policy 乘上 reward 的指数加权,再由 \(Z(x)\) 归一化。

  4. Step 4

    \[ r(x,y)=\beta\log\frac{\pi^*(y|x)}{\pi_{\mathrm{ref}}(y|x)}+\beta\log Z(x). \](DPO-2)

    反解 reward;同一 prompt 的 chosen/rejected 比较中 \(\log Z(x)\) 抵消。

    本步使用 log-ratio reward parameterization:由最优策略形式反解 \(r(x,y)\),reward 可以写成 policy 相对 reference 的 log-ratio 加上 \(\log Z(x)\)。同一个 prompt 内比较 chosen/rejected 时,\(\log Z(x)\) 是同一个常数,会相互抵消。

  5. Step 5

    \[ \mathcal{J}_{DPO}=-\log\sigma\left(\beta\left[\log\frac{\pi_\theta(y_w|x)}{\pi_{\mathrm{ref}}(y_w|x)}-\log\frac{\pi_\theta(y_l|x)}{\pi_{\mathrm{ref}}(y_l|x)}\right]\right). \](DPO-3)

    DPO 不需要显式 reward model 和在线 rollout,但 KL 约束被吸收到 reference log-ratio。

    本步把 Bradley-Terry 偏好概率与最优策略替换结合:用 policy/reference 的 DPO log-ratio margin 直接预测 chosen 胜过 rejected 的概率。DPO 不是没有 KL,而是把 KL 正则化的结构吸收到 reference log-ratio 中。

  6. Step 6

    \[ A_i=\frac{R_i-\operatorname{mean}(R_1,\ldots,R_G)}{\operatorname{std}(R_1,\ldots,R_G)+\epsilon}. \](PT-4)

    GRPO 用同 prompt 组内样本做 baseline,减少 critic 依赖。

    本步使用 group-relative normalization:同一个 prompt 下生成一组候选,用组内均值和标准差把 reward 转成相对 advantage。这样每个样本的好坏由同组候选作参照,减少对额外 value critic 的依赖。

  7. Step 7

    \[ \nabla_\theta J\approx\mathbb{E}_\tau\left[R(c,x_0)\sum_t\nabla_\theta\log p_\theta(x_{t-1}|x_t,c)\right]. \](PT-5)

    DDPO/DPOK 把 diffusion 去噪轨迹当作 policy rollout。

    本步使用 trajectory policy gradient:图像或视频的最终 reward 只在完整样本上评估,但动作分布分布在多步去噪 transition 中。把整条轨迹的 log-prob 求和后乘以最终 reward,就能把终局信号回传到每一步采样决策。

4. 训练过程与采样过程

5. 可视化实验:Post-training Lab

调节 DPO margin、GRPO reward 组和 PPO KL drift,观察 reward gain 与 KL penalty。

DPO / GRPO / PPO 指标将由当前控件实时计算。

DPO 不是没有 KL;reference log-ratio 保留了 KL 正则化结构。

展开后训练与后处理边界

post-processing 发生在样本已经生成之后:筛选、重排、规则修补、best-of-N 或安全过滤都只改变当前输出,不更新模型参数,因此下一次从同一 prompt 采样时,基础 \(p_\theta(x|c)\) 没有被移动。post-training 会把示范、偏好或 reward 写进参数更新,使同一个条件下更高概率生成被偏好的输出;SFT、PPO、DPO、GRPO、DDPO 和 Flow-DPO 都属于这种条件分布移动。

6. 常见误解

  • DPO 不是完全没有 KL。它不显式训练 reward model、不做在线 PPO rollout,但 reference log-ratio 保留了 KL-regularized RL 的结构。
  • PPO clipping 不是后训练目标本身。真正目标是提高 reward 并限制偏离 reference;clipping 只是降低策略梯度更新过猛的一种估计器设计。
  • 视觉生成后训练不能机械照搬 token DPO。Diffusion 和 Flow 的 action 分布在多步轨迹中,最终 reward 如何分配到每一步存在 credit assignment 问题。
  • 后处理不能替代后训练。best-of-N 能提高当前批次样本质量,但不会让模型下次自然更倾向好样本。

7. 特点、问题与诊断信号

核心特点

后训练不重新定义生成任务,而是在 reference model 附近移动 \(\pi_\theta(y|x)\),让输出更符合示范、偏好、奖励或安全约束。

适用场景

LLM 指令遵循、安全对齐、数学/代码 verifier、视觉审美、图文一致性、视频运动质量和多模态偏好对齐。

典型问题

reward hacking、KL drift、偏好噪声、长度偏置、拒答率异常、能力回退,以及 diffusion/flow 轨迹 credit assignment。

诊断信号

win-rate、KL to reference、reward-human correlation、长度分布、拒答率、helpfulness/safety 分项、多模态一致性和 out-of-distribution 泛化。

工程判断

若只有示范数据,SFT 是第一步;若有偏好对,DPO/IPO/SimPO 类方法更直接;若 reward 来自在线 rollout 或最终视觉评分,PPO/GRPO/DDPO 更自然但审计成本更高。

8. 读完本章你应该理解

  • SFT/RM/PPO/DPO/GRPO 的关系:SFT 做条件 MLE,RM 把偏好转 reward,PPO 优化 KL 正则化 reward,DPO 把该目标改写成 reference log-ratio 偏好分类,GRPO 用组内相对 advantage 减少 critic 依赖。
  • DPO loss 的核心:chosen 与 rejected 的差异不是原始 log-prob,而是相对 reference 的 log-ratio margin;这就是 KL 正则化结构被吸收后的形式。
  • 后训练和后处理的边界:后训练更新参数并改变未来条件分布,后处理只对已生成样本做筛选或修补,不改变模型本身。
  • 视觉后训练为什么更难:最终 reward 往往只评价完整图像/视频,但模型决策分布在去噪或 ODE 轨迹中,需要解决多步 credit assignment。

等价、近似与错位:哪些结论是真的等价,哪些只是 surrogate?

生成模型里的“等价”经常依赖假设;工程实现常把严格目标改写成更稳定的 surrogate。

前置知识
  • 严格等价:在明确假设下目标函数最优点或数值完全一致。
  • 下界:优化一个可计算目标,只能保证推动真实目标的 lower bound。
  • surrogate:为稳定训练、降低方差或简化实现而采用的替代目标。
  • 实现错位:论文推导的理论对象与代码中真正优化的 loss、sampler、weighting 不完全一致。
常见说法更严谨的版本风险
MLE 等价于最小化 forward KL当 \(p_{\mathrm{data}}\) 固定且忽略与 \(\theta\) 无关的 entropy 项时成立;实际用 empirical expectation 近似。忘记 support、有限样本误差和模型族限制。
VAE 最大化 log likelihoodVAE 最大化的是 ELBO;下界与 log likelihood 存在 posterior KL gap。把下界当成真实 likelihood。
GAN 最小化 JS divergence原始 minimax GAN 在 optimal discriminator 下对应 JS;实际 non-saturating loss 是替代目标。把理论目标和实际 generator loss 混淆。
Diffusion noise MSE 就是 ELBOsimple loss 是 weighted ELBO / posterior KL 推导后的常用简化或重加权目标。忽略 variance、weighting、parameterization。
Score matching 学每个样本的噪声方向DSM 用 conditional score 构造监督,最优网络逼近 noisy marginal score。误解 score 的分布意义。
Flow Matching 学 endpoint 速度训练用 conditional velocity,模型最优解是 marginal velocity field。误以为采样时知道终点。
DPO 不需要 reward 和 KLDPO 绕开显式 reward model 和在线 RL,但推导仍来自 KL-regularized preference optimization。把 DPO 误写成普通二分类。
技术要点:读新论文时先问目标是 exact objective、lower bound、unbiased estimator 还是 biased surrogate;再看采样器是否沿用同一个连续/离散过程。

现代生成系统通常是接口组合,而不是单一模型

真实产品系统往往把 tokenizer、latent space、diffusion/flow、AR prior、guidance 与后训练组合起来。

系统组合方式解释
LLMAR pretraining + SFT + preference/RL post-training + decoding-time control预训练学语言分布,后训练移动条件分布,解码控制输出形式。
Stable Diffusion 类图像模型autoencoder latent space + diffusion/rectified flow + CFG + aesthetic/preference tuning先压缩到 latent,再在 latent 中做多步生成,最后用 guidance 和后训练控制偏好。
视频生成模型latent compression + diffusion/flow + temporal consistency objectives + preference/reward tuning既要单帧质量,也要时间一致性和可控性。
图像 tokenizer + AR priorVQ/VAE tokenizer + discrete AR model先把图像变成 tokens,再像语言模型一样建模 token 序列。

看到一个新模型时的五个问题

  • 它选择了什么可计算接口?likelihood、ELBO、density ratio、score、velocity、trajectory log-prob 还是 preference signal。
  • 它不能直接计算什么?真实数据密度、posterior、partition function、终局 reward credit,还是人类偏好分布。
  • 它的 loss 是严格目标、下界,还是 surrogate?这一点决定理论结论能否直接迁移到实现。
  • 训练时有什么信息,采样时失去了什么信息?例如 VAE 训练有 \(x\),diffusion 训练有噪声 \(\epsilon\),flow 训练有 endpoint,采样时都不可见。
  • 它最可能的失败模式来自哪个接口?mode collapse、posterior collapse、score error、ODE error、reward hacking 或 KL drift。

统一视角:生成模型的可计算接口比较

把 likelihood、adversarial、score、velocity 和 preference optimization 放回同一张地图。

前置知识
  • 可计算接口:读新方法时先判断它能计算 likelihood、ELBO、density ratio、score、velocity、trajectory log-prob 还是 preference loss。
  • 训练目标:目标函数来自可计算接口;不要先背方法名,再反推公式。
  • 采样机制:AR 逐 token,VAE/VQ decode latent,GAN 一次前向,Diffusion 反向去噪,Flow Matching 解 ODE,后训练沿用基础 sampler。
  • 失败模式:每类接口都有对应风险,例如 mode collapse、posterior collapse、score error、ODE error、reward hacking 和 KL drift。

0. 一句话直觉

生成模型的发展可以理解为不断寻找更适合数据形态的可计算接口。

1. 数学设定与符号

符号含义来源 / 是否可计算
显式密度能直接或近似计算 \(p_\theta(x)\)。AR、Normalizing Flow、VAE ELBO。
隐式密度能采样但不直接算密度。GAN、Diffusion、Flow Matching。
分布移动在已有模型附近优化偏好或 reward。SFT、PPO、DPO、GRPO、DDPO。

2. 训练目标从哪里来

所有方法都在处理同一对象:让模型分布、采样过程或 policy 更接近目标数据/偏好分布;差异来自使用 likelihood、ELBO、density ratio、score、velocity 或 preference signal 作为可计算训练接口。

3. 完整推导

  1. Step 1

    \[ \text{interface}\Rightarrow\text{objective}\Rightarrow\text{training algorithm}\Rightarrow\text{sampling rule}\Rightarrow\text{failure modes}. \](SUM-1)

    读任何新生成模型时,先定位它改变了哪一个接口。

    本步使用统一抽象:每个方法都可以被拆成可计算接口、目标函数、估计器、采样规则和失败模式。这样读新论文时不用先背名称,而是判断它在这条链上替换了哪一环。

4. 训练过程与采样过程

方法分析伪代码

for a new generative method:
  identify observable data:
    samples / tokens / latents / noisy pairs / paths / preferences
  identify computable interface:
    log_prob / bound / discriminator / score / velocity / reward
  derive objective from that interface
  identify estimator:
    exact sum / Monte Carlo / rollout / pairwise comparison
  choose diagnostics matched to the objective

不要先套方法名;先判断它到底改变了哪一个可计算接口。

采样规则定位伪代码

if autoregressive:
  sample token by token
elif latent autoencoder:
  sample latent or code then decode
elif diffusion:
  start from x_T and reverse denoise
elif flow matching:
  start from p_0 and integrate ODE
elif post-training:
  use the base sampler with updated parameters

compare speed, quality, diversity, alignment

训练接口决定模型学什么,采样规则决定生成如何发生;两者必须同时检查。

接口代表方法训练复杂度采样复杂度常见失败
likelihoodAR / Flow稳定AR 慢 / Flow 快perception mismatch
ELBOVAE / DDPM需要 surrogateVAE 快 / DDPM 慢posterior gap / 多步采样
adversarialGAN不稳定mode collapse
score / velocityDiffusion / Flow Matching稳定但重多步或 ODEscore 尺度 / ODE 轨迹误差
preferenceDPO / PPO / GRPO依赖数据和 reward沿用基础模型reward hacking / KL drift

5. 可视化实验:方法地图

从可计算接口看训练和采样的分工。

likelihood
or
score / velocity
then
preference alignment

6. 常见误解

  • 没有单一目标能无损支配所有生成模型。likelihood、ELBO、adversarial distance、score、velocity 和 reward 各自解决可计算性问题,也各自引入偏差。
  • 单指标不会自动代表真实质量。高 likelihood 不必然高感知质量,高 FID 不必然可控,高 reward 不必然真实对齐,高速度也可能牺牲多样性。
  • 新方法名通常不如接口重要。先看它学的是密度、latent、score、velocity、trajectory 还是 preference,再判断训练和采样。

7. 特点、问题与诊断信号

核心特点

统一视角不是把所有方法化成同一个公式,而是把它们放在“可计算接口 → 目标函数 → 估计器 → 采样器 → 失败模式”的链条中比较。

适用场景

阅读新论文、设计生成系统、排查质量问题或选择后训练策略时,都可以先定位接口和采样机制。

典型问题

若只看方法名,很容易混淆 Normalizing Flow 与 Flow Matching、DDPM 训练与 DDIM 采样、DPO 的离线偏好优化与 PPO 的在线 rollout。

诊断信号

density 路线看 NLL,latent 路线看重构/压缩,score/velocity 路线看轨迹误差与步数质量,preference 路线看 reward、KL 和人工相关性。

工程判断

模型选型应从约束反推:需要离散序列用 AR,需要 exact density 用 Flow,需要高保真连续生成用 Diffusion/Flow Matching,需要偏好移动用后训练。

8. 读完本章你应该理解

  • 如何归类新方法:先找它的可计算对象;若是 likelihood 属于显式密度,若是 score/velocity 属于连续生成轨迹,若是 preference/reward 属于后训练分布移动。
  • 如何从目标推断采样:AR 的目标给出逐 token sampler,Diffusion 的噪声目标给出反向去噪,Flow Matching 的速度目标给出 ODE integration;从 score 视角看,噪声预测是 score 的尺度重标定,velocity 是概率路径上的漂移加 score 项。
  • 如何选择诊断指标:失败模式决定指标;mode collapse 看 coverage,posterior collapse 看 KL/active units,schedule 问题看分时间步误差,reward hacking 看 reward-human correlation 和 KL drift。

参考与延伸阅读

以下列出正文涉及方法的代表性一手来源或经典论文,便于继续深入。

方向代表来源阅读重点
Autoregressive / TransformerAttention Is All You NeedTransformer 如何实现条件序列建模。
Normalizing FlowReal NVPGlow可逆变换、Jacobian determinant、exact likelihood。
VAEAuto-Encoding Variational BayesELBO、amortized inference、reparameterization trick。
VQ-VAE / VQGANNeural Discrete Representation LearningTaming Transformers for High-Resolution Image Synthesis离散 codebook、commitment loss、perceptual/adversarial tokenizer。
GANGenerative Adversarial Netsminimax objective、optimal discriminator、JS divergence。
Score MatchingScore MatchingDenoising Score Matching未归一化密度、conditional score、noisy marginal score。
Diffusion / Score SDEDenoising Diffusion Probabilistic ModelsScore-Based Generative Modeling through SDEsforward noising、ELBO、noise prediction、SDE/ODE 统一。
Flow Matching / Rectified Flow / MeanFlowFlow Matching for Generative ModelingFlow Straight and FastMean Flows for One-step Generative Modelingprobability path、marginal velocity field、ODE sampling、average velocity。
RLHF / PPO / DPO / GRPOProximal Policy Optimization AlgorithmsInstructGPTDirect Preference OptimizationDeepSeekMath / GRPOKL-regularized reward maximization、preference loss、group-relative advantage。
视觉生成后训练DDPODPOKdiffusion trajectory policy gradient、reward feedback、credit assignment。