Classifier-Free Diffusion Guidance

Jonathan Ho, Tim Salimans · Google Research · arXiv:2207.12598

先建立正确层级

CFG 不是扩散训练目标,也不是采样器。它是条件采样时修改模型输出的方法:一个网络同时学会“有条件”和“无条件”去噪,推理时将两种预测沿差分方向外推。DDPM/DDIM 决定怎么走,CFG 决定条件把轨迹往哪里拉。

§1 一句话:用“条件差分”代替外部分类器梯度

核心主张

训练时以小概率把条件 $c$ 替换为空条件 $\varnothing$;推理时同一个去噪器分别计算 $\epsilon_\theta(x_t,c)$ 与 $\epsilon_\theta(x_t,\varnothing)$,再放大二者之差,从而提升条件一致性。

展开原文 · Abstract

“We jointly train a conditional and an unconditional diffusion model.”

— Abstract, p.1
CFG guidance strength sample grid
Fig 1 · p.1 从左到右增大 CFG 强度。引导不是免费提升质量,而是在条件忠实度与分布覆盖之间移动工作点。

§2 为什么要去掉分类器

Classifier guidance 将扩散 score 与 $\nabla_{x_t}\log p(c|x_t)$ 相加。问题是这个分类器必须能处理所有噪声级别的 $x_t$,不能直接拿一个只见过干净图像的分类器即插即用;还会增加训练管线,并可能利用分类器指标的漏洞。

CLASSIFIER GUIDANCE
扩散模型 + 噪声分类器
需要额外模型和带噪分类训练,采样使用分类器输入梯度。
CLASSIFIER-FREE
一个扩散模型,两种条件模式
无需外部分类器;条件差分由生成模型自身提供。

2.2 条件 dropout:同一组参数学两项任务

CFG 训练与采样

1. 正常构造带噪样本

抽 $t$ 和 $\epsilon$,得到 $x_t$,监督目标仍是噪声预测;CFG 不改变 DDPM 式 loss。

2. 随机丢弃条件

以 $p_{\text{uncond}}$ 将类别、文本或其他条件替换为 $\varnothing$。论文实验常用 0.1 或 0.2。

3. 一个网络同时学两种 score

有条件 batch 学 $\epsilon_\theta(x_t,c)$;空条件 batch 学 $\epsilon_\theta(x_t,\varnothing)$。

4. 推理做两次前向并外推

二者差值近似“条件把 score 推向哪里”,乘引导强度后加回无条件预测。

理解检查
CFG 训练时随机 dropout 的是什么?

§3 核心公式:沿条件差分方向外推

$$\tilde\epsilon_\theta(x_t,c)=(1+w)\epsilon_\theta(x_t,c)-w\epsilon_\theta(x_t,\varnothing)$$Eq. 6 · p.4 · 论文记法
把公式改写成更直观的样子
$\epsilon_c$
带条件预测:同时包含“当前噪声应如何去掉”和“满足条件应往哪里走”。
$\epsilon_u$
无条件预测:只描述数据分布本身,不要求满足特定条件。
$\epsilon_c-\epsilon_u$
条件带来的方向差;放大它,相当于更强地追逐条件。
$w$
论文的额外引导权重;$w=0$ 已经得到条件预测,而不是无条件预测。
$$\tilde\epsilon=\epsilon_u+s(\epsilon_c-\epsilon_u)$$现代实现常见记法 · $s=1+w$
把 guidance 看成一条可调方向
$\epsilon_u$
无条件基线,描述“像数据”的一般去噪方向。
$\epsilon_c-\epsilon_u$
条件带来的增量方向:在保持像真实样本的基础上,哪一部分变化会让结果更符合文本、类别或动作条件。
$s$
条件增量的放大倍数;$s=0$ 得到无条件结果,$s=1$ 等于普通条件预测,$s>1$ 才是通常所说的加强 guidance。
$\tilde\epsilon$
最终送入采样器的噪声预测。增大 $s$ 往往提高条件一致性,但可能牺牲多样性并产生过饱和或轨迹不稳定。

3.2 最常见实现坑:scale 差 1

对照代码前先看公式

论文 $w=0$ 等于纯条件预测;常见代码 $s=0$ 等于无条件预测、$s=1$ 等于纯条件预测。因此别人说“guidance scale 7.5”时,通常指 $s$,不一定指论文里的 $w$。

3.3 采样开销:每一步通常两次网络前向

PASS 1
空条件 $\varnothing$
得到 $\epsilon_u$,代表不指定任务时的数据方向。
PASS 2
真实条件 $c$
得到 $\epsilon_c$,再与无条件分支线性组合。

工程上常把有/无条件样本拼进 batch,一次批处理前向计算两组输出;FLOPs 和显存压力仍近似翻倍。CFG 可以与 DDPM、DDIM、ODE/flow sampler 组合,因为它修改的是每步模型预测。

§4 引导强度不是“质量旋钮”,而是分布重加权

CFG 对高斯混合分布的作用
Fig 2 · p.2 三高斯玩具例子。CFG 不只是“把图变清楚”,而是在数学上改变采样分布的形状。
CFG FID IS tradeoff
Fig 4 · p.7 不同 $p_{\text{uncond}}$ 下的 IS/FID 曲线。小幅引导先改善 FID;继续增大引导时 IS 上升而 FID 变差,说明忠实度提升伴随分布覆盖损失。
SMALL $w$
最佳 FID 区域
论文在不同设置中用 $w=0.1$ 或 $0.3$ 获得最佳 FID。
LARGE $w$
IS 继续提升
类别更典型,但 FID 单调恶化,样本颜色也可能过饱和。
$p_{uncond}$
0.1 / 0.2 更合适
只需一小部分容量学习无条件任务;0.5 会明显挤占条件训练。
COMPUTE
约 2× 去噪前向
无需分类器,但不代表推理没有额外成本。

§5 局限与风险

强 CFG 的四个副作用

多样性下降:罕见模式与条件边界样本更难出现。
过饱和/伪影:外推超出模型训练分布。
算力翻倍:每个采样步需要有/无条件输出。
偏差放大:训练分布里被低估的模式会被引导进一步压低。

论文还提醒:条件与无条件网络给出的向量场是学习结果,其差值未必严格等于某个真实分类器的保守梯度。把它称为“隐式分类器”有直觉价值,但不要过度按精确概率公式解释。

§6 对 World Action Model / VLA 的意义

条件从类别扩展到控制

在 WAM 中,$c$ 可以是语言指令、过去观测、机器人本体状态、目标图像或动作。CFG 让模型在推理时调节“服从条件”与“保持自然世界先验”的力度,但前提是训练时真的见过空条件分支。

语言到视频
增强指令可见性
更强引导会让生成未来明显反映语言,但可能牺牲物理多样性。
动作条件世界模型
动作效果更突出
可放大“执行该动作”与自然演化之间的差分。
策略生成
任务条件 vs 行为先验
强引导更追目标,弱引导更像数据中的自然动作分布。
闭环风险
看起来听话 ≠ 可执行
视觉条件一致性不能代替动力学可行性和真实机器人成功率评测。

§7 一页记住

四句话

训练:以小概率把条件置空,一个网络学两种预测。
推理:放大 $\epsilon_c-\epsilon_u$。
收益:无需带噪分类器,可连续调条件忠实度。
代价:约两倍网络前向,并以多样性和分布覆盖换取更典型样本。

扩散原理组完成

DDPM 给训练地基,DDIM 给快速采样,CFG 给条件控制。下一组按路线图进入 VAE → Latent Diffusion:解释为什么大分辨率视频/WAM 几乎都不愿直接在像素空间扩散。