LLM2022· CLASSIC

Classifier-Free Diffusion Guidance

Ho & Salimans (Google)

训练时随机丢掉 condition,推理时把 conditional 和 unconditional 噪声预测做外推——免分类器的强 conditioning。

arXiv:2207.12598
#diffusion#generative#conditioning

核心贡献

  • 01训练:以概率 p=10-20% 把 condition 换成空 (∅)
  • 02推理:ε̃ = (1+w)·ε(x,c) − w·ε(x,∅),w 即 guidance scale
  • 03替代 classifier guidance(不需要训额外分类器)
  • 04几乎所有 text-to-image diffusion 默认开启 CFG(w=7-10)

Classifier Guidance 需要训一个 noise-aware 分类器算 ∇log p(c|x_t),工程麻烦。CFG 巧妙地用同一个 diffusion model 同时学 conditional 和 unconditional:训练时随机丢 condition;推理时把两路 prediction 外推(向 conditional 方向夸大),就等价于"用更强的 prior 拉向 condition"。

面试视角

guidance scale w 怎么调? w=0 等于无 guidance;w 越大越贴合 prompt 但样本多样性下降、易出 artifact。SD 默认 7.5。CFG 为什么会破坏多样性? 把分布从 p(x|c) 推到 p(x|c)^(1+w)/p(x)^w,相当于把众数放大、长尾压扁。有什么改进? Dynamic guidance(推理早期高 w、后期低 w)、APG(自适应缩放避免 over-saturation)、Eluclidean Guidance。FLUX 为啥不用 CFG? FLUX-Schnell 蒸馏后不需要;FLUX-dev 用 distilled CFG。SD3 怎么处理? Rectified Flow + CFG,但 logit-normal time schedule 让 CFG 更稳。

相关论文