想象你正在陪孩子写一篇作文:孩子身边有两个“参谋”——一个是从没见过题目的普通朋友,只能按一般套路写出一篇还算通顺但模糊的作文;另一个是刚看过题目的家教,能紧扣主题给出个性化建议。只信普通朋友,文章会泛泛而谈;只信家教,文章又容易生硬、跑偏。真正聪明的做法,是把两份草稿放在一起,再拧一个“信任旋钮”:旋钮调得越高,家教的声音越响。这个“信任旋钮”,就是今天要讲的无分类器引导(Classifier-Free Guidance,简称 CFG)。它不需要额外请一个“阅卷老师”来打分,而是让同一个模型同时扮演普通朋友和家教,靠两者之间的差距来调整生成的保真度。它像一颗音量旋钮:调大了,画面对提示更听话;调得太大,画面又会过曝、失真。理解了这颗旋钮,你就理解了文生图、文生视频背后“可调保真度”的核心秘密。

岗位关联

对 AI 从业者而言,CFG 是控制生成质量、创意自由度和推理成本的关键工具,学会它就能在实际项目中精准调节模型输出,而不是盲目照搬别人的采样参数。

目录
  1. 可视化演示
  2. 核心原理
  3. 训练机制
  4. 推理组合
  5. 保真度旋钮
  6. 视频应用
  7. 性能优化
  8. 问题诊断
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

核心原理

孩子写作文时,如果完全没有看过题目,只能靠长期积累的常识写出一篇“万金油”作文;如果看过题目,就能围绕题眼组织素材。这两种状态,恰好对应扩散模型里的“无条件生成”和“条件生成”。无条件生成只依赖模型对自然图像的一般理解,条件生成则额外参考文本、类别甚至视频首帧等提示信息。CFG 最奇妙的地方,是它让同一个模型同时掌握这两种状态,而不必真的去训练两个不同的模型。

要理解这个概念,可以先看看传统的“分类器引导”。它相当于额外请一位阅卷老师,专门判断“这张图像不像某个类别”,然后把这个判断的梯度加到去噪过程中。麻烦在于,这位阅卷老师需要单独训练、单独维护,而且梯度过大时还会把画面推向失真。CFG 的想法更省事:让模型自己既当普通朋友,又当看过题目的家教,然后在推理时比较两者给出的答案。

习惯上,我们用噪声预测模型 \(\epsilon_\theta\) 来表达去噪过程,但背后的分数函数可以写成下面的贝叶斯分解:

所以,CFG 并不是什么全新的生成模型,而是给现有扩散模型增加了一个“同一家教的两个答题状态”。孩子在考场里不再需要一个外部阅卷老师,只要让家教先蒙上题目写一份草稿,再看着题目写一份草稿,两份草稿之间的差距,就是这次提示带来的方向感。

∇xtlog⁡p(xt∣c)=∇xtlog⁡p(xt)+∇xtlog⁡p(c∣xt)\displaystyle \nabla_{x_t} \log p(x_t \mid c) = \nabla_{x_t} \log p(x_t) + \nabla_{x_t} \log p(c \mid x_t)
  1. 条件对数概率\(\log p(x_t \mid c)\) 表示在给定条件 \(c\) 时,当前带噪样本 \(x_t\) 出现的对数概率值;它是我们最终要逼近的目标。
    log⁡p(xt∣c)\displaystyle \log p(x_t \mid c)
  2. 无条件对数概率\(\log p(x_t)\) 相当于完全不看条件时样本出现的对数概率,代表模型对“普通图像长什么样”的常识。
    log⁡p(xt)\displaystyle \log p(x_t)
  3. 分类器概率项\(\log p(c \mid x_t)\) 是“看到图像后猜条件”的概率对数,传统分类器引导正是通过梯度 \(\nabla_{x_t} \log p(c \mid x_t)\) 来拖动生成结果。
    ∇xtlog⁡p(c∣xt)\displaystyle \nabla_{x_t} \log p(c \mid x_t)
  4. 整体等式条件分数等于无条件分数加上分类器梯度,这条等式说明为什么过去非要一个分类器;而 CFG 用条件模型与无条件模型的差值代替这个梯度,因此叫“无分类器”。
    ∇xtlog⁡p(xt∣c)=∇xtlog⁡p(xt)+∇xtlog⁡p(c∣xt)\displaystyle \nabla_{x_t} \log p(x_t \mid c) = \nabla_{x_t} \log p(x_t) + \nabla_{x_t} \log p(c \mid x_t)

训练机制

想让同一个模型既能“普通朋友式答题”,又能“家教式答题”,关键在于平时训练时就要给它做“遮题训练”。具体做法是:在每一步训练中,以一定的概率把文本、类别或视频条件替换成一个空条件 \(\varnothing\)。这样一来,模型有时候看不到题目,只能凭常识去噪;有时候又能看到题目,学会利用条件信息。

这个随机丢弃条件的操作,让模型没有真正学会“无视条件”,而是学会了“条件缺失时如何兜底”。正如孩子练作文时,偶尔要练习“拿到题目却只能凭常识答题”的应变能力,真正考试时才不会因题目陌生而彻底慌神。条件丢弃率通常取 10% 到 20%,太低会让模型不太会做无条件预测,太高又会让条件预测变弱。

对应到扩散模型的训练目标,我们可以写成如下噪声预测误差:

这种训练方式没有增加新的网络,也没有引入额外的分类器,只是让“同一个模型”学会了两种状态。到了推理时,孩子只需要分别问家教“没题目怎么写”和“有题目怎么写”,就能得到两份关键草稿。

Lθ=Et,x0,ϵ,c[wt∥ϵ−ϵθ(xt,t,c~)∥2],c~={c,u>p∅∅,u≤p∅\displaystyle \mathcal{L}_\theta = \mathbb{E}_{t, x_0, \epsilon, c}\left[ w_t \left\| \epsilon - \epsilon_\theta(x_t, t, \tilde{c}) \right\|^2 \right], \quad \tilde{c} = \begin{cases} c, & u > p_{\varnothing} \\ \varnothing, & u \leq p_{\varnothing} \end{cases}
  1. 期望采样\(\mathbb{E}_{t, x_0, \epsilon, c}\) 表示每次从训练集中随机取一张干净图像、一个时间步、一个真实噪声和一个条件,然后计算平均损失。
    Et,x0,ϵ,c\displaystyle \mathbb{E}_{t, x_0, \epsilon, c}
  2. 条件随机丢弃\(\tilde{c}\) 利用均匀随机数 \(u\) 决定本次用真实条件 \(c\) 还是空条件 \(\varnothing\);当随机数 \(u\) 小于丢弃概率 \(p_{\varnothing}\) 时,模型就看不到条件。
    c~={c,u>p∅∅,u≤p∅\displaystyle \tilde{c} = \begin{cases} c, & u > p_{\varnothing} \\ \varnothing, & u \leq p_{\varnothing} \end{cases}
  3. 噪声差平方\(\left\| \epsilon - \epsilon_\theta(x_t, t, \tilde{c}) \right\|^2\) 度量模型预测出的噪声与真实添加噪声之间的差距。
    ∥ϵ−ϵθ(xt,t,c~)∥2\displaystyle \left\| \epsilon - \epsilon_\theta(x_t, t, \tilde{c}) \right\|^2
  4. 损失权重\(w_t\) 是不同时间步的损失权重,让模型在加噪多、加噪少的阶段都学得足够稳。
    wt\displaystyle w_t

推理组合

推理阶段是 CFG 真正发挥魔法的地方。假设普通朋友交出的草稿是“无条件预测” \(\epsilon_\theta(x_t, \varnothing)\),家教交出的草稿是“条件预测” \(\epsilon_\theta(x_t, c)\),那么两份草稿的差值,就是“题目带来的修改意见”。CFG 会把这个修改意见放大或缩小,再叠加回无条件草稿上,因此只需要一个 \(\gamma\) 参数就能调节最终图像的保真度。

这在写作训练里特别直观:孩子先按常识写了一版,又按题目写了一版;真正交卷时,可以把两版对比,找出“因为看了题目而改动的那些句子”,然后选择有多信任这些改动。如果完全不信改动,就还是常识版;如果非常信任改动,就把这份改动反复加重,直到文章处处紧扣题目。

数学上,CFG 的合成噪声预测公式为:

正是因为 \(\gamma\) 可以直接调节“看重题目”的程度,CFG 才会被形容成可调保真度旋钮。实际工程中,Stable Diffusion 等模型常用的默认值是 7 左右,但这只是一个经验起点,不同提示词、不同题材需要根据画面效果微调。

ϵ~θ(xt,c;γ)=ϵθ(xt,∅)+γ(ϵθ(xt,c)−ϵθ(xt,∅))\displaystyle \tilde{\epsilon}_\theta(x_t, c; \gamma) = \epsilon_\theta(x_t, \varnothing) + \gamma \left( \epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing) \right)
  1. 无条件预测\(\epsilon_\theta(x_t, \varnothing)\) 是模型在空条件 \(\varnothing\) 下预测的噪声,代表“不看题目的常识答案”。
    ϵθ(xt,∅)\displaystyle \epsilon_\theta(x_t, \varnothing)
  2. 条件预测\(\epsilon_\theta(x_t, c)\) 是模型在真实条件 \(c\) 下预测的噪声,代表“看过题目的针对性答案”。
    ϵθ(xt,c)\displaystyle \epsilon_\theta(x_t, c)
  3. 引导差值\(\epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing)\) 是条件带来的修正方向,相当于“题目让答案发生的偏移”。
    ϵθ(xt,c)−ϵθ(xt,∅)\displaystyle \epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing)
  4. 引导尺度\(\gamma\) 是这个修正方向的放大倍数,\(\gamma=1\) 时就是普通条件预测,\(\gamma>1\) 时会大幅强调题目信息。
    γ(ϵθ(xt,c)−ϵθ(xt,∅))\displaystyle \gamma \left( \epsilon_\theta(x_t, c) - \epsilon_\theta(x_t, \varnothing) \right)

保真度旋钮

如果把 \(\gamma\) 拧到 0,就相当于完全不看题目,生成结果只凭模型想象,图像往往丰富多样,却常常和提示词对不上。如果把 \(\gamma\) 逐步从 1 调到 7,画面会越来越“贴题”:颜色更强调提示词里的概念、物体更符合描述、风格更接近预期。但继续调到 20、30,画面反而会出现过饱和、边缘烧焦、物体变形等奇怪伪影,就像把音响音量开到最大,声音不但没更清楚,反而撕哑了。

可以这样理解:引导尺度本质上是在“基础常识”和“提示词匹配”之间做加权。写作时反复强调“要扣题”,一开始会让文章更切题;但如果每句话都拼命塞进题目关键词,文章就会变得重复、做作、失去自然感。生成模型同样如此,过高 \(\gamma\) 会让生成分布偏离真实图像分布。

用分类器引导的视角看,这等价于对每个样本施加一个与条件置信度有关的指数权重:

所以,调参不是越大越好,而是要找“自然感”与“契合度”之间的甜点区。实践时可以先固定其他采样参数,只改变 \(\gamma\),观察一组同种子图片,快速找到合适的旋钮位置。

pγ(xt∣c)∝p(xt)⋅p(c∣xt)γ\displaystyle p_\gamma(x_t \mid c) \propto p(x_t) \cdot p(c \mid x_t)^{\gamma}
  1. 生成分布\(p_\gamma(x_t \mid c)\) 表示在引导尺度 \(\gamma\) 下,模型最终诱导出的条件分布。
    pγ(xt∣c)\displaystyle p_\gamma(x_t \mid c)
  2. 常识先验\(p(x_t)\) 是图像自身出现的概率,也就是无条件分布,它负责让画面看起来自然。
    p(xt)\displaystyle p(x_t)
  3. 条件概率指数\(p(c \mid x_t)^{\gamma}\) 把“这张图有多像条件 c”的概率取 \(\gamma\) 次方,\(\gamma\) 越大,越偏向高置信度的条件特征。
    p(c∣xt)γ\displaystyle p(c \mid x_t)^{\gamma}
  4. 正比关系\(\propto\) 表示忽略归一化常数后,最终分布正比于这两项的乘积;它揭示了保真度与多样性之间的拉扯。
    pγ(xt∣c)∝p(xt)⋅p(c∣xt)γ\displaystyle p_\gamma(x_t \mid c) \propto p(x_t) \cdot p(c \mid x_t)^{\gamma}

视频应用

CFG 并不只适用于“写一篇文章”,它更像一种通用的训练与推理策略。到了视频生成和视频理解任务中,条件不再只有一段文字,而是文本、首帧图像、运动描述、类别标签等多个信息源。例如生成一段“雪天骑行”的视频,条件可以是文字“雪天骑行”、第一帧画面,以及“镜头跟随骑手”的运动描述;这些条件组合起来,引导模型生成在时间上连贯、内容上符合类别要求的视频。

在视频分类与表示学习中,CFG 也能派上大用场:由于生成样本可以有意识地放大类别特征,我们可以用它合成“困难样本”和“类间边界样本”,用来增强视频分类器的训练集。比如视频分类模型缺少“雨夜行人闯红灯”的样本,就可以用高引导尺度的视频扩散模型生成一批接近真实分布的样本,让分类器看到更多更难的类别变化。

多条件视频 CFG 的公式可以看成单个条件公式的自然扩展:

在视频分类任务中,CFG 的价值不只是让生成视频“更贴提示词”,更重要的是为下游模型提供更鲜明的类别代表性样本。如果把视频分类器比作阅卷老师,CFG 就是一位懂得按考点“出模拟题”的命题人,让阅卷老师在真正考试前就先见过各种难题。

ϵ~=ϵθ(zt,∅)+γv(ϵθ(zt,ctxt,cimg,cmov)−ϵθ(zt,∅))\displaystyle \tilde{\epsilon} = \epsilon_\theta(z_t, \varnothing) + \gamma_v \left( \epsilon_\theta(z_t, c_{\mathrm{txt}}, c_{\mathrm{img}}, c_{\mathrm{mov}}) - \epsilon_\theta(z_t, \varnothing) \right)
  1. 视频潜在表示\(z_t\) 是当前时间步的视频潜在特征,可能包含多帧画面的压缩信息。
    zt\displaystyle z_t
  2. 多条件预测\(\epsilon_\theta(z_t, c_{\mathrm{txt}}, c_{\mathrm{img}}, c_{\mathrm{mov}})\) 是同时参考文本、图像、运动信息后的噪声预测。
    ϵθ(zt,ctxt,cimg,cmov)\displaystyle \epsilon_\theta(z_t, c_{\mathrm{txt}}, c_{\mathrm{img}}, c_{\mathrm{mov}})
  3. 视频引导尺度\(\gamma_v\) 控制视频条件整体被放大的程度,\(\gamma_v\) 太大也会导致画面闪烁或运动失真。
    γv\displaystyle \gamma_v
  4. 合成方向括号内外相减再相加,本质上仍是在“多条件答案”和“无条件答案”之间取差距。
    ϵθ(zt,ctxt,cimg,cmov)−ϵθ(zt,∅)\displaystyle \epsilon_\theta(z_t, c_{\mathrm{txt}}, c_{\mathrm{img}}, c_{\mathrm{mov}}) - \epsilon_\theta(z_t, \varnothing)

性能优化

CFG 虽然效果好,却有一个明显代价:推理时每个采样步都要把同一个模型跑两遍,一遍无条件、一遍有条件。这就像每写一版作文都要让家教把“蒙题版”和“看题版”各写一遍,才能算出修改方向,时间成本直接翻倍。对于视频生成这种本来就慢的任务,双路前传会让人难以接受。

常见的优化思路有两类。第一类是工程缓存:因为视频样本相邻两步高度相似,可以复用部分中间特征,或者只在部分采样步开启 CFG,其他步用普通条件生成。第二类是算法蒸馏:训练一个学生模型,让它直接学会“输出 CFG 最终合成结果”,这样推理时只需一次前传,就同时包含了条件和常识信息。

CFG 蒸馏的损失函数可以写成:

经过蒸馏,推理时不再需要分别计算普通朋友和家教的两个答案,而是让一个“更成熟的替身”直接给出最终建议。这就像请家教久了,学生已经学会把常识和题目信息融合在一起,不用每次临时翻两份草稿。

Ldistill=Ezt,c,t∥ϵ^θ(zt,c)−ϵ~teacher(zt,c;γ)∥2\displaystyle \mathcal{L}_{\mathrm{distill}} = \mathbb{E}_{z_t, c, t} \left\| \hat{\epsilon}_\theta(z_t, c) - \tilde{\epsilon}_{\mathrm{teacher}}(z_t, c; \gamma) \right\|^2
  1. 学生模型预测\(\hat{\epsilon}_\theta(z_t, c)\) 是待训练的学生模型输出,它接收原始条件和加噪样本,直接输出最终合成噪声。
    ϵ^θ(zt,c)\displaystyle \hat{\epsilon}_\theta(z_t, c)
  2. 教师目标\(\tilde{\epsilon}_{\mathrm{teacher}}(z_t, c; \gamma)\) 是用完整 CFG 双路前传计算出的教师输出,也就是我们要模仿的目标。
    ϵ~teacher(zt,c;γ)\displaystyle \tilde{\epsilon}_{\mathrm{teacher}}(z_t, c; \gamma)
  3. 均方误差两者相减并取平方,促使学生模型逐步逼近教师模型的丰富行为。
    ∥ϵ^θ(zt,c)−ϵ~teacher(zt,c;γ)∥2\displaystyle \left\| \hat{\epsilon}_\theta(z_t, c) - \tilde{\epsilon}_{\mathrm{teacher}}(z_t, c; \gamma) \right\|^2

问题诊断

使用 CFG 时,最常见的翻车现场是“过曝”和“伪影”。有些新手以为引导尺度越大,画面越高级,结果把 \(\gamma\) 调到 20,生成出像过度修图一样油亮失真、边缘发光的画面。这时候,生成分布已经明显偏离真实图像分布,如同让复读机反复放大一句话,最后只剩刺耳的电流声。

另一种常见问题是“语义漂移”:当 \(\gamma\) 过高,模型会把某个局部特征无限放大,忽略整体结构。比如输入“一只戴帽子的柯基”,结果模型画出夸张的帽子,柯基的体型和五官却变得不像狗。这说明模型被条件中的强信号“带偏”了,我们需要用评估指标来量化这种偏航。

我们可以把生成分布与真实分布之间的偏离写成 KL 散度:

实际工程中,我们会同时看“贴题程度”和“自然程度”两种指标:比如 CLIP Score 用来衡量生成结果与提示词的对齐度,FID 用来衡量整体分布是否自然。两个指标往往会互相拉扯,因此不是找最高 \(\gamma\),而是找“CLIP 提升不多但 FID 明显恶化”之前的临界点。

DKL(qγ(x) ∥ preal(x))=Eqγ(x)[log⁡qγ(x)−log⁡preal(x)]\displaystyle D_{\mathrm{KL}}\left( q_\gamma(x) \,\|\, p_{\mathrm{real}}(x) \right) = \mathbb{E}_{q_\gamma(x)}\left[ \log q_\gamma(x) - \log p_{\mathrm{real}}(x) \right]
  1. 生成分布\(q_\gamma(x)\) 表示在引导尺度 \(\gamma\) 下模型实际生成的图像分布。
    qγ(x)\displaystyle q_\gamma(x)
  2. 真实分布\(p_{\mathrm{real}}(x)\) 是真实图像或真实视频数据所在的目标分布。
    preal(x)\displaystyle p_{\mathrm{real}}(x)
  3. 对数差\(\log q_\gamma(x) - \log p_{\mathrm{real}}(x)\) 比较同一个样本在生成分布与真实分布下的合理性差异。
    log⁡qγ(x)−log⁡preal(x)\displaystyle \log q_\gamma(x) - \log p_{\mathrm{real}}(x)
  4. 期望计算\(\mathbb{E}_{q_\gamma(x)}[\cdot]\) 表示对所有生成样本求平均,结果越小,说明生成分布越接近真实分布,伪影越少。
    Eqγ(x)[log⁡qγ(x)−log⁡preal(x)]\displaystyle \mathbb{E}_{q_\gamma(x)}\left[ \log q_\gamma(x) - \log p_{\mathrm{real}}(x) \right]

AI 应用场景

电商海报的一稿多控

阶段:模型推理与参数调优

解决的问题:传统文生图工具只能生成“看起来对”的图片,无法让设计团队快速控制美学与贴题程度。使用 CFG 后,设计师可以对同一提示词设置 \(\gamma=5\) 得到自然装饰风,\(\gamma=9\) 得到强视觉冲击风,在同一底稿上快速横向比较。

具体案例:某电商平台生成“户外登山鞋”海报时,设计师将引导尺度从 7 调到 10,发现鞋底纹理被过多强调,画面出现过曝;回退到 8 并配合负向提示词,最终得到既贴近商品又能保留场景氛围的素材。

视频分类样本增强

阶段:数据增强与模型训练

解决的问题:真实视频数据中,罕见类别和困难样本数量不足,分类器容易把稀有场景学成简单背景。用高引导尺度的 CFG 生成带类别标签的视频片段,可以定向补充难样本。

具体案例:某安防团队需要“夜间雨天电动车逆行”的监控视频样本,真实数据只有 50 条。他们用视频扩散模型配合首帧和运动提示,以 CFG 尺度 8 生成 500 条高保真样本,并用弱标签筛选后加入训练集,分类器对这类难例的召回率明显提升。

影视分镜一致性校验

阶段:内容生成与质量评估

解决的问题:影视预演阶段,需要让多个分镜保持人物、场景和风格一致。CFG 可以把“分镜描述”和“上一帧关键画面”同时作为条件,通过调整引导尺度控制模型对分镜脚本的忠实程度。

具体案例:动画工作室使用文生视频模型制作概念预告片时,对每个镜头设置不同的 \(\gamma\):远景镜头用 6 保持自然,特写镜头用 9 强调角色特征;然后统一检查人物面部是否漂移,快速定位需要重拍的镜头。

Python 演示

python34 行
import numpy as np  def uncond_score(z):    # 无条件分数:把样本拉向原点,代表普通常识    return -z / 2.0  def cond_score(z, cond):    # 条件分数:把样本拉向类别中心,代表家教建议    mu = np.array([2.0, 2.0]) if cond else np.array([0.0, 0.0])    return -(z - mu) / 1.0  def cfg_score(z, cond, gamma=5.0):    # CFG 组合公式:无条件分数 + 引导尺度 * 条件差值    u = uncond_score(z)    c = cond_score(z, cond)    return u + gamma * (c - u)  def sample():    rng = np.random.default_rng(0)    z = np.array([3.0, -3.0])    dt = 0.05    for step in range(200):        s = cfg_score(z, True, gamma=5.0)        noise = np.sqrt(dt) * rng.normal(size=z.shape)        z = z + 0.5 * s * dt + noise    print("生成的样本点:", z)  if __name__ == "__main__":    sample()
目的:用二维高斯分布模拟扩散采样过程,直观展示 CFG 如何把无条件分数与条件分数组合后,让样本向条件中心移动。
  1. def uncond_score(z): return -z / 2.0普通朋友只看常识,总是把样本拉向原点。
  2. mu = np.array([2.0, 2.0]) if cond else np.array([0.0, 0.0])条件分支告诉模型“目标点在右上角”。
  3. return u + gamma * (c - u)这就是 CFG 核心公式:先用条件分数减无条件分数得到修正方向,再用 \(\gamma\) 放大。
  4. s = cfg_score(z, True, gamma=5.0)每步都同时使用两种分数,等价于推理时的双路前传。
  5. z = z + 0.5 * s * dt + noise沿分数方向更新样本,并加入少量随机噪声模拟随机采样。
  6. for step in range(200)迭代 200 次后,样本会明显偏向类别中心,而不是停在原点附近。

常见误区

误区“无分类器引导是不是要先训练一个图像分类器,不然它怎么知道图像像不像文本?”

正解CFG 并不训练分类器。它只是让同一个扩散模型在训练时偶尔看不到条件,推理时同时给出条件预测和无条件预测,用两者差值替代分类器梯度。这就像同一个家教先蒙题写草稿,再看题写草稿,并不需要另一个阅卷老师来打分。

为何常见:因为传统“分类器引导”确实需要额外分类器,CFG 这个名词容易让人误以为是在原有方法上去掉某个模块。

误区“CFG scale 调到 20,生成图一定更锐利、更符合提示词,质量肯定更好。”

正解引导尺度放大的是条件差值,而不是清晰度。过大时,画面会出现色彩过饱和、边缘烧焦、结构变形等现象。就像音量旋钮开到最大,只会收获更多噪音。

为何常见:许多新手第一次调参时发现高引导尺度下“颜色更浓”,误以为是质量提升,忽略了伪影和分布偏移。

误区“没有文本条件时,模型只会随便生成毫无意义的噪声。”

正解无条件预测仍来自同一个训练良好的扩散模型,它生成的是“没有条件约束下的平均合理图像”,可以是模糊但具有自然结构的草图,而不是纯随机噪声文档。

为何常见:“无条件”一词容易让人理解成“毫无信息”,实际含义是“不依赖此次给定的条件”。

误区“我只做视频分类和视频理解,CFG 这种文生图技巧跟我无关。”

正解CFG 适用于任意条件扩散模型,条件可以是文本、图像、运动、类别标签甚至下游任务要求。视频生成、视频分类样本增强、多模态表示学习都可以复用同一套“条件差值”逻辑。

为何常见:CFG 在文生图社区被讨论最多,导致人们忽略了它本质上是一种通用的条件采样策略。

误区“把文本条件随机丢掉,模型岂不是学不到全部信息?训练效果一定变差。”

正解条件丢弃会略微增加条件预测难度,但它换来了“可以计算引导方向”这一强大能力,综合收益远大于损失。适度的条件丢弃相当于故意安排“闭卷练习”,让模型既会看题,也会在没有题目时保持稳定。

为何常见:人们习惯认为“输入信息越多越好”,却忽略了条件缺失本身也是一种需要学习的分布。

面试题

Q1. CFG 的中文全称是什么?

单选题 · easy

  • A.分类器自由引导← 正确答案
  • B.分类器强制引导
  • C.条件自由生成
  • D.分类器联合训练

答案:A。CFG 全称是 Classifier-Free Guidance,直译即“无分类器引导”或“分类器自由引导”。它强调的是不需要额外分类器,而不是强制使用分类器。

Q2. 文生图中 CFG 的核心做法是什么?

单选题 · easy

  • A.训练额外分类器来修正噪声
  • B.同时使用条件和无条件预测← 正确答案
  • C.无条件预测完全替代条件预测
  • D.删除文本编码器只留视觉编码器

答案:B。CFG 让同一模型同时输出条件噪声预测和无条件噪声预测,再用引导尺度放大两者的差值。它不是训练分类器,更不是删除文本编码器。

Q3. 训练扩散模型时随机丢弃文本条件的目的是什么?

单选题 · mid

  • A.让模型彻底不认识文本
  • B.让模型在推理时也能做无条件预测← 正确答案
  • C.减少训练数据量
  • D.提升图像分类器的精度

答案:B。随机丢弃条件让模型学会“条件缺失时如何生成”,这样推理时才能得到可靠的无条件预测,进而计算出 CFG 需要的条件差值。

Q4. 增大引导尺度 \(\gamma\) 通常会产生什么效果?

单选题 · mid

  • A.图像更贴近提示但多样性下降← 正确答案
  • B.图像更随机但细节更丰富
  • C.FID 指标一定持续下降
  • D.采样推理速度自动变快

答案:A。\(\gamma\) 放大条件差值,会让图像更贴题,但也会压缩生成分布、降低多样性。引导过大还会引发伪影,FID 不会一直下降。

Q5. 下列哪些是 CFG 的实际特征?

多选题 · mid

  • A.提示词对齐能力更强← 正确答案
  • B.不需要额外训练分类器← 正确答案
  • C.一定无限提高真实感
  • D.引导过大时可能出现伪影← 正确答案

答案:ABD。CFG 通过条件差值增强贴题能力,且不需要分类器;但它不会无限提高真实感,过高引导反而会带来过曝、变形等伪影。

Q6. 为什么 CFG 推理通常比普通条件采样更慢?

单选题 · hard

  • A.每步需要两次网络前向计算← 正确答案
  • B.采样步数自动翻倍
  • C.需要额外运行分类器梯度
  • D.模型参数量变大

答案:A。CFG 每步要分别得到条件和无条件两个噪声预测,所以网络前向次数翻倍,而不是采样步数翻倍。它也不需要分类器或增大模型规模。

Q7. 下列哪些方法可以缓解 CFG 带来的速度开销?

多选题 · hard

  • A.使用引导条件蒸馏← 正确答案
  • B.采用自适应引导尺度← 正确答案
  • C.删除全部文本编码器
  • D.无条件分支替换成噪声

答案:AB。CFG 蒸馏把双路行为压缩到单模型中,自适应引导尺度只在部分采样步开启 CFG,都能减少计算量。删除文本编码器或乱替换无条件分支会破坏技术本身。

Q8. CFG 中“无分类器”最准确的理解是什么?

单选题 · hard

  • A.不需要训练图像分类器← 正确答案
  • B.不需要文本编码器
  • C.不需要扩散模型
  • D.不需要任何条件信息

答案:A。“无分类器”指的是省去传统 classifier guidance 中额外训练的图像分类器,而扩散模型和条件信息仍然必需。

Q9. 在视频生成中应用 CFG,哪些条件可以被组合使用?

多选题 · hard

  • A.文本提示← 正确答案
  • B.首帧图像← 正确答案
  • C.运动描述← 正确答案
  • D.任意随机数

答案:ABC。与文生图不同,视频 CFG 可以同时组合文本、首帧、运动等语义条件;随机数只是采样噪声来源,不属于条件。

Q10. 下列关于 CFG 帮助视频分类与表示学习的说法,正确的是哪些?

多选题 · extreme

  • A.高引导强度对任意任务都最优
  • B.合成难例可用于数据增强← 正确答案
  • C.条件增强可提升类别特征← 正确答案
  • D.自监督任务完全用不到它

答案:BC。CFG 可以生成高保真类别样本,为分类器补充难例并增强类别代表性特征,因此可用于数据增强和表示学习;但引导强度不是越大越好,也不是与自监督任务毫无关系。