核心要点

  • CFG 在同一模型上训练有条件与无条件两种预测(训练时按概率丢弃条件),无需单独的分类器。

  • 采样时把两者的得分(噪声预测)做外推:ε̂ = ε_uncond + w·(ε_cond − ε_uncond),w 为引导系数(guidance scale)。

  • w 越大→越贴合提示词、保真度高但多样性低、易过饱和;w 越小→更多样但偏离条件。本质是 fidelity 与 diversity 的权衡。

标准回答

背景:早期 Classifier Guidance 需要额外训练一个噪声鲁棒的分类器,用其梯度引导扩散采样,工程复杂且依赖外部模型。无分类器引导(CFG) 去掉了这个分类器。

训练:同一个条件扩散模型,训练时以一定概率(如 10%~20%)把条件 c 置空(用空标签 ∅),于是模型同时学会了条件预测 ε_θ(x_t, c) 和无条件预测 ε_θ(x_t, ∅)。

采样(核心公式):把两个噪声/得分预测做线性外推
ε̂ = ε_θ(x_t, ∅) + w · ( ε_θ(x_t, c) − ε_θ(x_t, ∅) )
其中 w 是引导系数(guidance scale)。w=1 等价于普通条件采样;w>1 沿「条件 − 无条件」方向放大条件信号,相当于隐式地锐化条件后验。

效果与权衡

  • w↑:与提示词/条件对齐更强、样本保真度更高,但多样性下降,过大(如 >15)会出现过饱和、伪影。
  • w↓:更多样、更自然,但可能偏离条件。
  • 典型取值:Stable Diffusion 文生图常用 7~12。

CFG 已成为 DDPM/SD/DALL·E 等文生图模型的标配引导手段,详见 Diffusion 原理文本到图像生成

常见误区

⚠️ 常见踩坑

CFG 并不需要任何分类器,也不计算分类器梯度——这正是它对 Classifier Guidance 的改进。另外引导系数不是越大越好:过大反而导致过饱和、细节伪影和多样性塌缩。

追问

追问 1CFG 相比 Classifier Guidance 的优势是什么?

Classifier Guidance 需额外训练一个能处理含噪输入的分类器,并用其梯度引导,工程成本高、受分类器质量制约且易引入对抗性伪影。CFG 把条件信号内化进同一个生成模型(训练时随机丢弃条件),采样时只用条件/无条件两次前向外推即可,无需外部模型,质量与可控性更好。

追问 2CFG 的主要代价是什么?

一是计算成本:每步采样要做条件和无条件两次前向,开销约翻倍。二是多样性-保真度权衡:引导系数偏大时多样性下降、可能过饱和。可用 dynamic/rescaled CFG、CFG distillation 等方法缓解。

追问 3引导系数 w 取值对生成有什么影响?该如何选?

w=1 为无引导的条件采样;w>1 放大条件、提升对齐与保真但牺牲多样性,过大会过饱和、出伪影。需按任务调:文生图常用 7~12,追求多样性时取小值,追求精确贴合提示时适当增大,建议做扫描对比挑最佳点。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。