训练
collect samples x ~ p_data
choose computable interface
define objective
optimize theta
diagnose mismatchFormal derivation notes
从数据分布的概率建模出发,推导典型生成模型如何训练、如何采样,以及偏好后训练如何改变模型分布。
生成模型的共同目标是用可训练、可采样的模型分布逼近未知数据分布。
需要理解随机变量、概率密度、经验样本和条件分布。
训练集给出的是样本,不是密度;生成模型要选择一个可计算接口,把样本变成目标函数,再把简单随机源变成新样本。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(p_{\mathrm{data}}(x)\) | 真实数据分布。 | 只通过样本观测,密度通常未知。 |
| \(p_\theta(x|c)\) | 条件生成模型。 | 由神经网络参数 \(\theta\) 定义或隐式采样。 |
| \(c\) | 条件变量,例如文本提示、类别、音频、视频上下文。 | 训练数据提供或推断时由用户给定。 |
| \(z, x_T, x_0\) | 不同模型的采样入口:latent、纯噪声或干净样本。 | 由模型族决定。 |
目标:把未知的 \(p_{\mathrm{data}}\) 与可训练的 \(p_\theta\) 对齐。若模型可以计算 likelihood,就可以从 forward KL 推出最大似然。
常数 \(C\) 不含 \(\theta\),所以最小化 forward KL 等价于最大化数据样本的 log-likelihood。
Step 1
用训练集均值近似真实期望。无条件生成时去掉 \(c_i\)。
使用:Monte Carlo estimate。
Step 2
不同模型族的差异来自可计算接口,而不是任务目标不同。
使用:分布匹配视角。
collect samples x ~ p_data
choose computable interface
define objective
optimize theta
diagnose mismatchsample simple source: prefix / z / x_T / x_0
apply model sampling rule
compare output statistics with p_data读每章 0、5、8 小节,先建立模型机制。
读每章 1–4 小节,追踪目标函数来源。
重点看算法、交互实验、误解和诊断信号。
样本、可计算接口、目标函数和采样入口构成同一条分布匹配管线。
统一分布匹配问题,模型差异来自可计算接口。
看 likelihood、FID/LPIPS、reward、KL drift、采样速度和失败模式。
生成建模的第一条主线是把数据样本变成 likelihood 或 divergence。
需要理解概率密度、经验平均和负对数似然。
最大似然不是孤立技巧;它等价于最小化 \(KL(p_{\mathrm{data}}\Vert p_\theta)\),而 cross entropy 是 NLL 的期望形式。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(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 方向决定优化行为。 |
目标:说明经验 NLL 为什么对应 forward KL,并解释 KL 方向如何影响 mode-covering 与 mode-seeking。
Step 1
数据熵不依赖模型参数,因此最小化 cross entropy 等价于最小化 forward KL。
使用:熵与 KL 的定义。
Step 2
若数据处有质量而模型给出低概率,forward KL 会强惩罚,因此偏 mode-covering。
使用:KL 非负性与非对称性。
Step 3
reverse KL 更惩罚模型落在数据低密度区域,常表现为 mode-seeking。
使用:交换 KL 方向。
estimate empirical NLL on data samples
choose divergence surrogate if likelihood unavailable
optimize theta with minibatch gradientssample model distribution
compare support coverage, sharpness, and mismatch diagnostics调节模型分布 \(q\) 的均值、方差和 mixture 权重,比较 KL/JS/Wasserstein 的方向差异。
metric = 0
forward KL 会惩罚漏掉真实 mode。
其中 \(H(p)\) 与 \(q\) 无关,优化 \(q=p_\theta\) 时可以视为常数。
提供 likelihood-based 训练的基础解释。
语言模型 NLL、分类 cross entropy、显式密度模型评估。
likelihood 高不一定感知质量高,KL 方向会改变覆盖行为。
NLL、support coverage、mode dropping、样本质量之间的矛盾。
自回归模型用链式法则把联合分布拆成可计算的 next-token 条件分布。
建议先读 MLE/KL。
如果能预测下一个 token,就能按顺序生成整个序列。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(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 参数。 | 推断时改变采样策略,不改变参数。 |
目标:把序列 likelihood 精确分解成每个位置的条件 likelihood。
Step 1
训练时真实前缀作为输入,这就是 teacher forcing。
使用:chain rule + MLE。
Step 2
推断时 temperature 改变 logits 的 sharpness;top-k/top-p 截断候选集。
使用:softmax 重标定。
观察 temperature、top-k 和 top-p 如何改变 token 采样分布。
p_i(T)=softmax(l_i / T)
低 temperature 让分布更尖,高 temperature 让分布更平。
精确 likelihood、训练稳定、可扩展到任意 token 序列。
LLM、离散视觉 token、语音 token、动作序列。
长序列逐 token 采样慢,错误会累积。
NLL/perplexity、重复率、长度偏置、事实性、条件遵循。
Normalizing Flow 用可逆变换把 base density 映射到数据空间,并用 Jacobian determinant 修正密度。
建议先读 MLE/KL。
可逆映射会拉伸或压缩体积;密度必须用体积缩放项校正。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(z\sim p_Z(z)\) | 简单 base 分布。 | 通常为标准高斯。 |
| \(x=f_\theta(z)\) | 可逆变换。 | 要求能计算 \(f_\theta^{-1}\)。 |
| \(J_f\) | Jacobian 矩阵。 | determinant 表示局部体积缩放。 |
目标:通过变量替换精确计算 \(p_X(x)\),从而直接最大化 likelihood。
Step 1
密度随体积变化反向缩放。
使用:change of variables。
Step 2
训练目标可以精确写成 log likelihood。
使用:Jacobian determinant 方向转换。
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调节尺度项,观察可逆网格形变与 log determinant 如何改变密度。
log |det J| = 0.20
Normalizing Flow 的 flow 是可逆显式密度变换,不是 Flow Matching 的 velocity field。
显式密度、exact likelihood、采样快。
需要可逆映射和密度评估的生成建模。
架构受 determinant 和 invertibility 限制。
NLL、Jacobian 数值稳定性、采样多样性。
VAE 用可学习后验近似不可解真实后验,把边缘似然优化变成 ELBO 优化。
需要理解 MLE/KL 和 latent variable。
VAE 是概率化 autoencoder:encoder 推断 latent,decoder 定义生成分布,KL 让训练 posterior 与采样 prior 对齐。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(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。 |
目标:把不可计算的 \(\log p_\theta(x)=\log\int p(z)p_\theta(x|z)\,dz\) 转成可优化下界。
Step 1
在积分中乘除 \(q_\phi\),用 Jensen 得到 ELBO。
使用:Jensen 不等式。
Step 2
ELBO gap 是近似后验与真实后验的 KL。
使用:Bayes rule + KL 非负性。
Step 3
对 diagonal Gaussian posterior,KL 有闭式。
使用:Gaussian KL identity。
Step 4
随机性移到外部噪声,允许对 encoder 参数反向传播。
使用:reparameterization trick。
Step 5
Gaussian decoder 对应 L2/MSE,Bernoulli decoder 对应 BCE;\(\beta\) 控制信息率。
使用:decoder likelihood 与 rate-distortion。
调节 \(\mu,\sigma,\beta\),观察 KL、重构压力和 posterior collapse 风险。
KL = 0
beta 增大时 posterior 更靠近 prior,但重构细节可能损失。
vanilla VAE 很少作为最高保真图像生成器,但它系统化了概率编码、可微后验推断和连续 latent space。Latent Diffusion、latent Flow Matching、SD3/rectified flow 常先用 autoencoder 压缩像素,再在 latent space 中做主要分布生成。
概率化 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。
VQ 系列把连续 encoder 输出量化到 codebook,使图像、音频、视频可进入 token 建模。
建议先读 VAE 和 AR。
VQ-VAE 是视觉 tokenizer;VQGAN 在 tokenizer 上加感知和对抗目标,让重构更锐利。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(z_e(x)\) | encoder 连续输出。 | 由输入样本计算。 |
| \(e_k\) | codebook 第 k 个向量。 | 可梯度或 EMA 更新。 |
| \(k^*\) | 最近 code index。 | nearest neighbor assignment。 |
| \(\hat p_k\) | code usage 频率。 | 用于 perplexity 和 dead code 诊断。 |
目标:学习离散 latent bottleneck,使 decoder 可从 code index 重构数据,并让上游 token prior 更容易建模。
Step 1
forward 使用最近 code 替换连续 latent。
使用:nearest neighbor quantization。
Step 2
forward 等于 code,backward 梯度近似传给 encoder。
使用:straight-through estimator。
Step 3
codebook loss 移动 code,commitment loss 防止 encoder 漂移。
使用:stop-gradient。
Step 4
EMA 更新类似 online k-means,可稳定 codebook。
使用:moving average。
Step 5
perplexity 反映 codebook 使用是否均衡。
使用:entropy effective support。
拖动 encoder point,观察最近 code、usage histogram、perplexity 和 dead code 标记。
dead codes 长期不用,即使 EMA 更新也可能需要重启策略。
离散 codebook 将连续表示转成 token。
视觉 tokenizer、多模态 token、latent diffusion 压缩前端。
dead codes、usage imbalance、perplexity 过低、伪细节。
code usage histogram、perplexity、reconstruction error、下游 token prior NLL。
GAN 用判别器估计真实分布与生成分布的密度比,训练隐式生成器。
建议先读 KL 与显式/隐式密度区别。
生成器不会显式写密度;判别器告诉它样本像不像真实数据。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(G_\theta(z)\) | 生成器。 | 把噪声映射成样本。 |
| \(D_\psi(x)\) | 判别器概率。 | 估计样本来自真实分布的概率。 |
| \(p_g\) | 生成器诱导分布。 | 隐式可采样,通常不可算密度。 |
| \(f_\psi\) | WGAN critic。 | 输出不是概率。 |
目标:用二分类器提供分布差异信号,训练只能采样、不能算 likelihood 的生成器。
Step 1
固定生成器时,对每个 \(x\) 单独求最优判别器。
使用:一阶最优条件。
Step 2
原始 GAN 理论上最小化 JS divergence。
使用:代回 optimal discriminator。
Step 3
non-saturating loss 在判别器很强时给生成器更有效梯度。
使用:目标重参数化。
Step 4
WGAN-GP 用 gradient penalty 近似 1-Lipschitz 约束,critic 不是概率。
使用:Kantorovich-Rubinstein duality 的工程近似。
切换 original、non-saturating、WGAN,观察 toy 判别边界和生成器梯度方向。
non-saturating gives stronger gradient when D is confident.
这是 toy simulation,不是完整 GAN 训练。
隐式分布、感知质量高、采样快。
图像生成、风格迁移、adversarial perceptual objective。
训练不稳定、mode collapse、判别器过强或过弱。
mode coverage、FID、precision/recall、critic gradient norm。
Score 是 log-density 对样本的梯度;它给出样本应向高概率区域移动的方向。
建议先读 KL 和 GAN,再进入 Diffusion。
score 不是样本本身,而是 \(\nabla_x\log p(x)\):指向 log-density 上升最快方向。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(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\) 相关。 |
目标:学习不依赖归一化常数的 log-density 梯度,并连接到 diffusion 的噪声预测。
Step 1
归一化常数 \(Z\) 与 \(x\) 无关,求梯度后消失。
使用:对样本变量求梯度。
Step 2
条件高斯加噪的 score 有闭式。
使用:Gaussian score identity。
Step 3
denoising score matching 用可构造噪声提供监督信号。
使用:DSM surrogate。
Step 4
Langevin dynamics 沿 score 上升方向并注入噪声采样。
使用:stochastic dynamics。
sample x ~ p_data, epsilon ~ N(0,I), sigma
construct x_tilde = x + sigma * epsilon
fit s_theta(x_tilde, sigma) to -epsilon/sigmainitialize x from noise
repeat Langevin or reverse-time updates
move using learned score field切换 Gaussian/Laplace/Mixture,调节噪声平滑 sigma,点击点可观察沿 score 的 toy 轨迹。
Gaussian score points linearly to the mean.
绕开密度归一化常数,直接学习 log-density 梯度。
Diffusion、EBM、Langevin sampling、denoising。
多噪声等级权重、score 数值尺度和采样稳定性。
向量场方向、denoising error、采样轨迹是否回到高密度区域。
Diffusion 固定前向加噪链,再学习从噪声回到数据的反向 transition。
建议先读 VAE 和 Score Matching。
训练时随机破坏数据并学习噪声;采样时从纯噪声逐步去噪。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(x_0\) | 干净数据。 | 来自训练集。 |
| \(x_t\) | 第 t 个噪声状态。 | 由 forward noising 构造。 |
| \(\beta_t,\alpha_t,\bar\alpha_t\) | 噪声日程。 | 人为设定。 |
| \(\epsilon_\theta(x_t,t,c)\) | 噪声预测网络。 | 训练得到。 |
目标:让 \(p_\theta(x_{t-1}|x_t,c)\) 逼近固定前向过程可解析得到的真实 posterior。
Step 1
前向链是高斯马尔可夫链,因此任意 t 可闭式采样。
使用:Gaussian composition。
Step 2
训练无需逐步运行前向链。
使用:reparameterization。
Step 3
前向过程固定,所以 posterior 可解析。
使用:Gaussian posterior identity。
Step 4
反向模型学习逼近这个 posterior 的 mean/variance。
使用:Gaussian conditioning。
Step 5
DDPM ELBO 的核心项是每一步 posterior matching。
使用:variational bound。
Step 6
实践中常用噪声预测简化目标。
使用:fixed variance Gaussian KL 到 MSE。
Step 7
epsilon、x0、score 是同一反向信息的不同参数化。
使用:DDPM parameterization。
Step 8
v-parameterization 改善不同噪声等级的数值平衡。
使用:signal/noise rotation。
调节 t 和 schedule,观察 signal coefficient、noise coefficient、SNR 与 DDPM/DDIM toy path。
SNR = 0
t 增大时 signal 衰减,noise 增强。
核心项是每个时间步的 posterior KL;在固定方差与噪声参数化下可化简为加权噪声 MSE。
强感知质量、可条件控制、训练稳定。
图像、视频、音频、3D、latent generation。
多步采样慢、schedule 和 guidance 敏感、视频 credit assignment。
噪声预测 MSE、SNR 曲线、采样步数质量曲线、CFG 过强伪影。
Flow Matching 学习从 base distribution 到 data distribution 的速度场,采样时解 ODE。
建议先读 Score Matching 和 Diffusion。
Diffusion 学反向去噪 transition;Flow Matching 学让样本沿路径移动的速度。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(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。 |
目标:不学习 score,也不学习 Markov transition,而是回归路径上的 velocity field。
Step 1
训练时用 endpoints 构造路径状态。
使用:conditional probability path。
Step 2
监督目标是速度回归。
使用:least-squares velocity matching。
Step 3
Rectified Flow 常用线性路径。
使用:linear interpolation。
Step 4
采样时没有真实 \(x_1\),只能沿模型速度场积分。
使用:ODE sampling。
Step 5
Euler 是最简单 ODE solver;步数减少会增大轨迹误差。
使用:numerical integration。
调节 t、路径形状和步数,区分 instantaneous velocity 与 MeanFlow average velocity。
Euler step shown.
速度场回归,采样为 ODE integration。
高分辨率 latent 生成、少步采样、rectified path。
路径选择影响训练难度,ODE solver 误差累积,one-step 压缩损失细节。
velocity loss、trajectory straightness、步数-质量曲线。
EBM 用未归一化能量定义密度,难点在 partition function 和采样。
建议先读 Score Matching。
低能量区域对应高概率,但归一化常数通常不可计算。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(E_\theta(x)\) | 能量函数。 | 神经网络输出标量。 |
| \(Z_\theta\) | partition function。 | 高维积分通常不可解。 |
| \(\nabla_x\log p_\theta(x)\) | EBM score。 | 等于 \(-\nabla_xE_\theta(x)\)。 |
目标:理解未归一化密度为什么自然连接 score 和 Langevin sampling。
Step 1
定义密度容易,归一化和采样困难。
使用:Boltzmann form。
Step 2
对样本求梯度时 \(Z_\theta\) 消失。
使用:归一化常数对 (x) 为常数。
fit energy contrastively or with score objective
estimate positive and negative samples
update energy landscapeinitialize x from noise
run Langevin updates using -grad E
collect low energy samples能量越低概率越高,Langevin 轨迹沿低能量区域移动。
未归一化密度、能量景观、score 关系清晰。
partition function、负样本采样、mixing 慢。
后训练在 reference model 附近移动条件分布,使输出符合示范、偏好、奖励或安全约束。
需要理解条件生成分布和 KL。
预训练学习基础分布;后训练用示范、偏好或 reward 改变模型在同一条件下更倾向哪些输出。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| \(\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 中的相对收益。 |
目标:在提升 reward 或 preference win-rate 的同时约束模型不要远离 reference。
Step 1
SFT 是条件最大似然 / imitation learning。
使用:conditional MLE。
Step 2
Reward Model 用 Bradley-Terry 把 pairwise preference 转成标量 reward。
使用:Bradley-Terry model。
Step 3
KL-regularized RL 有闭式最优策略。
使用:拉格朗日最优条件。
Step 4
反解 reward;同一 prompt 的 chosen/rejected 比较中 \(\log Z(x)\) 抵消。
使用:log-ratio reward parameterization。
Step 5
DPO 不需要显式 reward model 和在线 rollout,但 KL 约束被吸收到 reference log-ratio。
使用:Bradley-Terry + optimal policy substitution。
Step 6
GRPO 用同 prompt 组内样本做 baseline,减少 critic 依赖。
使用:group-relative normalization。
Step 7
DDPO/DPOK 把 diffusion 去噪轨迹当作 policy rollout。
使用:policy gradient on trajectory。
调节 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 是后训练。
在 reference 附近移动条件分布。
指令遵循、安全对齐、推理 reward、视觉审美和文本一致性。
reward hacking、KL drift、偏好噪声、长度偏置、trajectory credit assignment。
win-rate、KL、reward-human correlation、拒答率、生成长度、视频/图像泛化。
把 likelihood、adversarial、score、velocity 和 preference optimization 放回同一张地图。
建议读完整篇推导后回到本章。
生成模型的发展可以理解为不断寻找更适合数据形态的可计算接口。
| 符号 | 含义 | 来源 / 是否可计算 |
|---|---|---|
| 显式密度 | 能直接或近似计算 \(p_\theta(x)\)。 | AR、Normalizing Flow、VAE ELBO。 |
| 隐式密度 | 能采样但不直接算密度。 | GAN、Diffusion、Flow Matching。 |
| 分布移动 | 在已有模型附近优化偏好或 reward。 | SFT、PPO、DPO、GRPO、DDPO。 |
所有方法都在处理同一对象:让模型分布、采样过程或 policy 更接近目标数据/偏好分布;差异来自使用 likelihood、ELBO、density ratio、score、velocity 或 preference signal 作为可计算训练接口。
Step 1
读任何新生成模型时,先定位它改变了哪一个接口。
使用:统一抽象。
identify computable interface
write objective and assumptions
derive loss and estimator
define diagnosticschoose sampling source
follow sampler or policy
measure quality, diversity, speed, alignment| 接口 | 代表方法 | 训练复杂度 | 采样复杂度 | 常见失败 |
|---|---|---|---|---|
| likelihood | AR / Flow | 稳定 | AR 慢 / Flow 快 | perception mismatch |
| ELBO | VAE / DDPM | 需要 surrogate | VAE 快 / DDPM 慢 | posterior gap / 多步采样 |
| adversarial | GAN | 不稳定 | 快 | mode collapse |
| score / velocity | Diffusion / Flow Matching | 稳定但重 | 多步或 ODE | step-quality trade-off |
| preference | DPO / PPO / GRPO | 依赖数据和 reward | 沿用基础模型 | reward hacking / KL drift |
从可计算接口看训练和采样的分工。
用可计算接口组织所有生成模型。
先问 density、trajectory、reward 哪个对象可用。