Formal derivation notes

生成模型数学推导

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

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

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

前置知识

需要理解随机变量、概率密度、经验样本和条件分布。

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 estimate。

  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)

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

    使用:分布匹配视角。

4. 训练过程与采样过程

训练

collect samples x ~ p_data
choose computable interface
define objective
optimize theta
diagnose mismatch

采样 / 推断

sample simple source: prefix / z / x_T / x_0
apply model sampling rule
compare output statistics with p_data

快速直觉路线

读每章 0、5、8 小节,先建立模型机制。

数学推导路线

读每章 1–4 小节,追踪目标函数来源。

研究/工程路线

重点看算法、交互实验、误解和诊断信号。

模型族显式密度可计算对象训练目标采样入口主要代价
AR链式条件概率NLL / cross entropyprompt prefix长序列采样慢
Normalizing FlowJacobian determinantexact likelihoodbase latent z可逆架构受限
VAE下界ELBOreconstruction + KLprior z样本偏平滑
VQ-VAE/VQGAN压缩接口codebook tokenquantization + perceptualcode indicesdead codes / 伪细节
GAN判别密度比adversarial / WGANnoise z训练不稳定
Score/Diffusion隐式score / denoising transitionDSM / noise predictionx_T noise多步采样
Flow Matching隐式velocity fieldvelocity regressionbase x_0ODE 误差
Post-trainingpolicypreference / rewardKL-regularized objectivetrained policyreward hacking

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

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

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

6. 常见误解

  • 不同模型不是不同任务;它们都在做分布匹配。
  • post-processing 不改变模型分布;post-training 改变参数和条件分布。

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

核心特点

统一分布匹配问题,模型差异来自可计算接口。

诊断信号

看 likelihood、FID/LPIPS、reward、KL drift、采样速度和失败模式。

8. 读完本章你应该理解

  • 能说明为什么生成模型都在逼近 \(p_{\mathrm{data}}\)。
  • 能区分可计算密度、隐式密度、score、velocity 和 reward 接口。
  • 能说明训练目标与采样入口的对应关系。

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

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

前置知识

需要理解概率密度、经验平均和负对数似然。

0. 一句话直觉

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

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。

    使用:熵与 KL 的定义。

  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 非负性与非对称性。

  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 方向。

4. 训练过程与采样过程

训练

estimate empirical NLL on data samples
choose divergence surrogate if likelihood unavailable
optimize theta with minibatch gradients

采样 / 推断

sample model distribution
compare support coverage, sharpness, and mismatch diagnostics

5. 可视化实验:KL Lab

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

metric = 0

forward KL 会惩罚漏掉真实 mode。

展开 forward KL 与 cross entropy 的完整关系
\[ H(p,q)=-\mathbb{E}_{p}\log q(x)=H(p)+D_{KL}(p\Vert q). \](KL-5)

其中 \(H(p)\) 与 \(q\) 无关,优化 \(q=p_\theta\) 时可以视为常数。

6. 常见误解

  • KL 是非对称的,不能把两个方向混用。
  • GAN、Diffusion、Flow Matching 形式不同,但仍是在做分布匹配。

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

核心特点

提供 likelihood-based 训练的基础解释。

适用场景

语言模型 NLL、分类 cross entropy、显式密度模型评估。

典型问题

likelihood 高不一定感知质量高,KL 方向会改变覆盖行为。

诊断信号

NLL、support coverage、mode dropping、样本质量之间的矛盾。

8. 读完本章你应该理解

  • 能推导 NLL、cross entropy 与 forward KL 的关系。
  • 能解释 forward KL 和 reverse KL 的行为差异。
  • 能说明为什么隐式模型需要 surrogate objective。

Autoregressive / Transformer:链式分解与 next-token MLE

自回归模型用链式法则把联合分布拆成可计算的 next-token 条件分布。

前置知识

建议先读 MLE/KL。

0. 一句话直觉

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

1. 数学设定与符号

符号含义来源 / 是否可计算
\(p_{\mathrm{data}}(x)\)真实数据分布。只通过样本观测,密度通常未知。
\(x_1,\ldots,x_T\)离散 token 序列。来自文本、图像 token、音频 token 或动作序列。
\(p_\theta(x_t|x_{\lt t},c)\)给定前缀的 next-token 分布。Transformer logits 经 softmax 得到。
\(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。

    使用:chain rule + MLE。

  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 重标定。

4. 训练过程与采样过程

5. 可视化实验:AR Decoding Lab

观察 temperature、top-k 和 top-p 如何改变 token 采样分布。

p_i(T)=softmax(l_i / T)

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

6. 常见误解

  • decoding 改变输出分布,但不改变模型参数。
  • 训练时前缀来自真实数据;推断时前缀来自模型自己生成,因此存在 exposure bias。

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

核心特点

精确 likelihood、训练稳定、可扩展到任意 token 序列。

适用场景

LLM、离散视觉 token、语音 token、动作序列。

典型问题

长序列逐 token 采样慢,错误会累积。

诊断信号

NLL/perplexity、重复率、长度偏置、事实性、条件遵循。

8. 读完本章你应该理解

  • 能写出链式分解。
  • 能解释 teacher forcing 与 sampling mismatch。
  • 能区分模型分布和 decoding 策略。

Normalizing Flow:变量替换与 exact likelihood

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

前置知识

建议先读 MLE/KL。

0. 一句话直觉

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

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)

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

    使用:change of variables。

  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 determinant 方向转换。

4. 训练过程与采样过程

训练

sample minibatch x
z = f_theta^{-1}(x)
compute log p_Z(z) and log |det J|
maximize exact log p_X(x)

采样 / 推断

z ~ p_Z
x = f_theta(z)
return x

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 的代价是结构必须可逆且 determinant 可计算。

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

核心特点

显式密度、exact likelihood、采样快。

适用场景

需要可逆映射和密度评估的生成建模。

典型问题

架构受 determinant 和 invertibility 限制。

诊断信号

NLL、Jacobian 数值稳定性、采样多样性。

8. 读完本章你应该理解

  • 能推导变量替换公式。
  • 能解释 determinant 是局部体积项。
  • 能区分 Normalizing Flow 与 Flow Matching。

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

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

前置知识

需要理解 MLE/KL 和 latent variable。

0. 一句话直觉

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

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 不等式。

  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 非负性。

  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。

  4. Step 4

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

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

    使用:reparameterization trick。

  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 与 rate-distortion。

4. 训练过程与采样过程

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

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

KL = 0

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

VAE 的价值与现代位置

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

6. 常见误解

  • ELBO 是下界,不等于真实 likelihood。
  • 生成过于平滑常来自 decoder likelihood 和重构目标对多解平均。
  • VAE 今天的重要性更多是构建 latent interface,而不是单独生成最锐利图像。

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

核心特点

概率化 autoencoder、amortized inference、连续 latent space。

适用场景

latent diffusion、latent flow、representation compression、controllable latent editing。

典型问题

posterior collapse、生成过于平滑、prior-posterior gap、rate-distortion trade-off。

诊断信号

blur、FID/LPIPS、KL vanishing、active units、reconstruction vs prior sampling gap。

8. 读完本章你应该理解

  • 能推导 ELBO 和 ELBO gap。
  • 能解释 decoder likelihood 如何决定 reconstruction loss。
  • 能说明 VAE 在现代 latent 生成系统中的位置。

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

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

前置知识

建议先读 VAE 和 AR。

0. 一句话直觉

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

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。

  2. Step 2

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

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

    使用:straight-through estimator。

  3. Step 3

    \[ \mathcal{J}_{VQ}=\|x-\hat{x}\|+\|\operatorname{sg}(z_e)-e\|_2^2+\beta\|z_e-\operatorname{sg}(e)\|_2^2. \](VQ-3)

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

    使用:stop-gradient。

  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。

  5. Step 5

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

    perplexity 反映 codebook 使用是否均衡。

    使用:entropy effective support。

4. 训练过程与采样过程

5. 可视化实验:VQ Codebook Lab

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

perplexity = 0

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

6. 常见误解

  • VQ-VAE 不是最终图像 prior;它通常先把图像变成 token。
  • VQGAN 的锐度可能来自 perceptual/adversarial 目标,也可能引入伪细节。

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

核心特点

离散 codebook 将连续表示转成 token。

适用场景

视觉 tokenizer、多模态 token、latent diffusion 压缩前端。

典型问题

dead codes、usage imbalance、perplexity 过低、伪细节。

诊断信号

code usage histogram、perplexity、reconstruction error、下游 token prior NLL。

8. 读完本章你应该理解

  • 能写出 nearest neighbor quantization。
  • 能解释 straight-through 的 forward/backward 差异。
  • 能用 perplexity 诊断 codebook 使用。

GAN:从密度比估计到 adversarial divergence

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

前置知识

建议先读 KL 与显式/隐式密度区别。

0. 一句话直觉

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

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\) 单独求最优判别器。

    使用:一阶最优条件。

  2. Step 2

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

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

    使用:代回 optimal discriminator。

  3. Step 3

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

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

    使用:目标重参数化。

  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 的工程近似。

4. 训练过程与采样过程

5. 可视化实验:GAN Gradient Lab

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

non-saturating gives stronger gradient when D is confident.

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

6. 常见误解

  • critic 不是概率。
  • GAN 采样快不代表训练简单。
  • mode collapse 是分布覆盖失败,不只是视觉问题。

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

核心特点

隐式分布、感知质量高、采样快。

适用场景

图像生成、风格迁移、adversarial perceptual objective。

典型问题

训练不稳定、mode collapse、判别器过强或过弱。

诊断信号

mode coverage、FID、precision/recall、critic gradient norm。

8. 读完本章你应该理解

  • 能推导 optimal discriminator。
  • 能解释 JS divergence 和 non-saturating loss。
  • 能说明 WGAN-GP 的 Lipschitz 约束意义。

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

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

前置知识

建议先读 KL 和 GAN,再进入 Diffusion。

0. 一句话直觉

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

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\) 无关,求梯度后消失。

    使用:对样本变量求梯度。

  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。

  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。

  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。

4. 训练过程与采样过程

训练

sample x ~ p_data, epsilon ~ N(0,I), sigma
construct x_tilde = x + sigma * epsilon
fit s_theta(x_tilde, sigma) to -epsilon/sigma

采样 / 推断

initialize x from noise
repeat Langevin or reverse-time updates
move using learned score field

5. 可视化实验:Score Field Lab

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

Gaussian score points linearly to the mean.

6. 常见误解

  • score 是梯度方向,不是概率值。
  • 加噪后的 score 更平滑,通常比真实数据流形上的 score 更容易学习。

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

核心特点

绕开密度归一化常数,直接学习 log-density 梯度。

适用场景

Diffusion、EBM、Langevin sampling、denoising。

典型问题

多噪声等级权重、score 数值尺度和采样稳定性。

诊断信号

向量场方向、denoising error、采样轨迹是否回到高密度区域。

8. 读完本章你应该理解

  • 能定义 score。
  • 能推导高斯 DSM target。
  • 能解释 score 与 diffusion 噪声预测的关系。

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

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

前置知识

建议先读 VAE 和 Score Matching。

0. 一句话直觉

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

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。

  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。

  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。

  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。

  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。

  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)

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

    使用:fixed variance Gaussian KL 到 MSE。

  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 parameterization。

  8. Step 8

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

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

    使用:signal/noise rotation。

4. 训练过程与采样过程

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

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

SNR = 0

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\) 才是学习的生成过程。
  • DDIM 是去掉新噪声的确定性轨迹,不等于重新训练一个模型。

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

核心特点

强感知质量、可条件控制、训练稳定。

适用场景

图像、视频、音频、3D、latent generation。

典型问题

多步采样慢、schedule 和 guidance 敏感、视频 credit assignment。

诊断信号

噪声预测 MSE、SNR 曲线、采样步数质量曲线、CFG 过强伪影。

8. 读完本章你应该理解

  • 能写出 \(q(x_t|x_0)\) 闭式。
  • 能说明 posterior KL 如何导向噪声预测。
  • 能区分 epsilon/x0/v 参数化。

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

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

前置知识

建议先读 Score Matching 和 Diffusion。

0. 一句话直觉

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

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. 训练目标从哪里来

目标:不学习 score,也不学习 Markov transition,而是回归路径上的 velocity field。

\[ \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。

  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。

  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。

  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。

  5. Step 5

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

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

    使用:numerical integration。

4. 训练过程与采样过程

5. 可视化实验:Flow Velocity Lab

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

Euler step shown.

6. 常见误解

  • Flow Matching 的 flow 不是 Normalizing Flow 的可逆显式密度。
  • MeanFlow average velocity 是 few-step surrogate,不是逐步求瞬时速度。

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

核心特点

速度场回归,采样为 ODE integration。

适用场景

高分辨率 latent 生成、少步采样、rectified path。

典型问题

路径选择影响训练难度,ODE solver 误差累积,one-step 压缩损失细节。

诊断信号

velocity loss、trajectory straightness、步数-质量曲线。

8. 读完本章你应该理解

  • 能写出 continuity equation。
  • 能区分训练时 endpoints 和采样时 ODE。
  • 能解释 instantaneous velocity 与 average velocity。

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

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

前置知识

建议先读 Score Matching。

0. 一句话直觉

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

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。

  2. Step 2

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

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

    使用:归一化常数对 (x) 为常数。

4. 训练过程与采样过程

训练

fit energy contrastively or with score objective
estimate positive and negative samples
update energy landscape

采样 / 推断

initialize x from noise
run Langevin updates using -grad E
collect low energy samples

5. 可视化实验:Energy Landscape

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

6. 常见误解

  • EBM 定义概率形式不代表 likelihood 容易训练。
  • EBM 是理解 score-based model 的桥,不必让它抢主线。

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

核心特点

未归一化密度、能量景观、score 关系清晰。

典型问题

partition function、负样本采样、mixing 慢。

8. 读完本章你应该理解

  • 能写出 EBM 密度。
  • 能解释 \(Z\) 为什么采样和训练困难。
  • 能连接 EBM、score 和 Langevin。

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

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

前置知识

需要理解条件生成分布和 KL。

0. 一句话直觉

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

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)

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。

  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。

  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 有闭式最优策略。

    使用:拉格朗日最优条件。

  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。

  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 + optimal policy substitution。

  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。

  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。

    使用:policy gradient on trajectory。

4. 训练过程与采样过程

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

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

DPO loss = 0

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

展开后训练与后处理边界

后训练改变模型参数和 \(p_\theta(x|c)\);后处理只筛选、修复或重排已生成样本。best-of-N 是后处理;DPO/PPO/GRPO/DDPO 是后训练。

6. 常见误解

  • DPO 不是完全没有 KL。
  • PPO clipping 不是目标本身;目标是 KL-regularized reward maximization。
  • Diffusion/Flow 后训练不能机械套用 token-level log-prob ratio。

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

核心特点

在 reference 附近移动条件分布。

适用场景

指令遵循、安全对齐、推理 reward、视觉审美和文本一致性。

典型问题

reward hacking、KL drift、偏好噪声、长度偏置、trajectory credit assignment。

诊断信号

win-rate、KL、reward-human correlation、拒答率、生成长度、视频/图像泛化。

8. 读完本章你应该理解

  • 能解释 SFT/RM/PPO/DPO/GRPO 的关系。
  • 能推导 DPO log-ratio loss。
  • 能区分后训练和后处理。

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

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

前置知识

建议读完整篇推导后回到本章。

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. 训练过程与采样过程

训练

identify computable interface
write objective and assumptions
derive loss and estimator
define diagnostics

采样 / 推断

choose sampling source
follow sampler or policy
measure quality, diversity, speed, alignment
接口代表方法训练复杂度采样复杂度常见失败
likelihoodAR / Flow稳定AR 慢 / Flow 快perception mismatch
ELBOVAE / DDPM需要 surrogateVAE 快 / DDPM 慢posterior gap / 多步采样
adversarialGAN不稳定mode collapse
score / velocityDiffusion / Flow Matching稳定但重多步或 ODEstep-quality trade-off
preferenceDPO / PPO / GRPO依赖数据和 reward沿用基础模型reward hacking / KL drift

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

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

likelihood
or
score / velocity
then
preference alignment

6. 常见误解

  • 没有单一目标同时支配所有生成模型。
  • 高 likelihood 不必然高感知质量,高 reward 不必然真实对齐。

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

核心特点

用可计算接口组织所有生成模型。

实践建议

先问 density、trajectory、reward 哪个对象可用。

8. 读完本章你应该理解

  • 能把任一新方法归入可计算接口。
  • 能从训练目标推断采样机制。
  • 能从失败模式选择诊断指标。