M6-052M6: Multimodal & Generative ModelsGuidance & Fast Sampling (CFG / DDIM)Easy
Mastery:
Guidance & Fast Sampling (CFG / DDIM): 解释 Classifier-Free Guidance 的公式与作用。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 用'条件预测'与'无条件预测'的差放大条件影响:ε̂=ε(∅)+s(ε(c)−ε(∅));s>1 增强条件遵循、降低多样性。
📌 Key Takeaways
- •同时算'有条件'与'无条件'预测,用差作为'条件方向'
- •s 是引导强度:s=1 无引导、s>1 增强条件、s=0 无条件
- •s 越大越贴合 prompt,但多样性下降、可能过饱和
📐 Mathematical Derivations
数学机理:<strong>CFG(Classifier-Free Guidance,Ho & Salimans 2022)</strong>——(1) <strong>两次预测</strong>——同一次前向中(或用 batch 并行)计算 (a) <strong>条件预测</strong> ε_θ(x_t,c)(c 为文本 prompt);(b) <strong>无条件预测</strong> ε_θ(x_t,∅)(条件置空)。(2) <strong>组合</strong>——ε̂=ε_θ(x_t,∅)+s·(ε_θ(x_t,c)−ε_θ(x_t,∅)),其中 s 是<strong>引导强度</strong>。(3) <strong>采样</strong>——用 ε̂ 代替 ε_θ 做去噪步。<strong>为什么'差'是条件方向</strong>——从 score 视角:ε 与 score 成正比(∇log p=−ε/√(1−ᾱ_t)),故'条件预测 − 无条件预测'正比于'∇log p(x|c)−∇log p(x)'——即<strong>条件对分布的'影响方向'</strong>('要让图像更像 c 应该往哪走')。<strong>故 CFG 等价于</strong>:∇log p̂=∇log p(x)+s·(∇log p(x|c)−∇log p(x))=(1−s)∇log p(x)+s·∇log p(x|c)——即<strong>把'无条件'与'有条件'的 score 做线性组合</strong>(当 s>1 时,条件 score 被放大、无条件被'负向'计入)。(4) <strong>s 的效应</strong>——(a) <strong>s=1</strong> → 退化为'纯条件预测'(无引导);(b) <strong>s>1</strong> → <strong>增强条件遵循</strong>(更贴合 prompt)但<strong>多样性下降</strong>、可能'过饱和'(色彩过艳、结构僵硬);(c) <strong>s=0</strong> → 无条件生成(忽略 prompt);(d) 常用 s=7~12(Stable Diffusion 默认 7.5)。(5) <strong>训练方式</strong>——训练时<strong>随机丢弃条件</strong>(如 10% 概率把 c 置空)并让模型同时学'有条件'与'无条件'预测;这样推理时才有 ε_θ(x_t,∅) 可用(这是 CFG 的关键训练技巧)。<strong>为什么有效(直觉)</strong>——(a) 无条件预测提供'基础分布'(通用的、符合数据的图像);(b) 条件预测提供'朝 prompt 的方向';(c) 放大这个方向(s>1)使结果更强地满足 prompt——<strong>代价是偏离数据分布</strong>(过度放大导致不自然)。<strong>与 classifier guidance 的对比</strong>——classifier guidance 需额外训练一个分类器并对 score 求梯度(见下一题);CFG 不需要额外模型(用同一个模型的条件/无条件预测)。
🏭 Production Trade-offs
深度剖析与工程权衡:① <strong>'随机丢弃条件训练'是 CFG 的前提</strong>——若不这样做,模型没有'无条件预测'的能力,CFG 无法使用;这是实现中最易漏的细节。② <strong>'score 线性组合'是 CFG 的理论解释</strong>——它把 CFG 从'经验技巧'提升为'有理论依据的方法';面试中能给出这一解释是深度理解的标志。③ <strong>'s>1 的代价'</strong>——过度引导会 (a) 降低多样性(不同种子给出相似结果)、(b) 产生'过饱和/过锐'的伪影(因为放大了'超出数据分布的方向')、(c) 损害'提示之外的合理性'(如生成不合物理的物体)。④ <strong>'CFG 的成本 ×2'</strong>——每步需两次前向;这是扩散推理的主要成本之一(见后续题)。⑤ <strong>'CFG 在 DiT 中的实现'</strong>——DiT 用 adaLN 注入条件,故'无条件'即把条件设为 null/零;实现上常用'batch 拼接'(条件与无条件合成一个 batch)一次前向完成(见 DiT 的 CFG 题)。⑥ <strong>'与负向提示的关系'</strong>——CFG 可推广为'多条件'(如正向 + 负向);负向提示即'用负向文本作为'无条件'的位置'(见负向提示题)。⑦ <strong>面试要点</strong>——被问'CFG 是什么',应写出<strong>组合公式 + score 线性组合的解释 + s 的效应 + 训练时随机丢条件</strong>;能指出'CFG 的成本 ×2'与'过度引导的伪影'是深度理解的标志。
⚠️ Common Interview Pitfalls
- ✕训练时不随机丢条件(推理无 ε(∅) 可用)
- ✕把 s 调得过大(过饱和、多样性崩塌)
🎯 Interviewer Follow-ups
- ?为什么'差'能代表条件方向?
- ?CFG 与 classifier guidance 的关系?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.