无分类器引导(Classifier-Free Guidance,简称 CFG)是扩散模型(Diffusion Model)生成图片时控制"听话程度"的一个开关,也就是文生图界面里那个叫「引导强度」或「CFG Scale」的滑块。
它到底在算什么
想象你在雾里照着一张图纸雕一尊像。每敲一锤之前,你先问自己两个问题:"如果完全没有图纸,我这一锤会往哪儿敲?"和"如果严格照着图纸,我这一锤会往哪儿敲?"两个方向一相减,就得到"图纸带来的偏移量"。把这个偏移量放大几倍再落锤,雕像就会更贴合图纸。
CFG 走的就是这个思路。扩散模型每一步都要预测一次噪声,现在同一份输入跑两遍:一遍带上你的提示词(有条件预测,conditional),一遍把提示词清空(无条件预测,unconditional)。然后把两者的差值放大:
最终预测 = 无条件预测 + s ×(有条件预测 − 无条件预测)
s 就是那个滑块上的数值。s 取 1 时,"无条件 + 差值"正好还原成有条件预测,等于没用引导;s 越大,就越把"提示词指的方向"往外推。
为什么调太高会过曝、变僵、崩构图
因为模型每一步只做一次线性外推,放大的是统计意义上的平均差异。推得太远,采样轨迹就跑到训练数据分布之外——模型没见过的区域。表现出来就是:颜色饱和度溢出(过曝)、对比度失控、人脸和手开始变形、几个物体黏成一团、整体构图塌掉。同时每一步都被拽向同一个方向,出图的多样性也明显下降,同一个提示词怎么抽都长得差不多。
和「分类器引导」有什么区别
早期做法叫分类器引导(Classifier Guidance),需要额外训练一个分类器,再用它的梯度去纠正生成过程,麻烦且依赖标注数据。无分类器引导把这个分类器去掉了:训练时随机丢掉一部分提示词,让同一个模型同时学会"有条件"和"无条件"两种预测,推理时自己给自己当参照物。
| 引导强度 | 表现 | 大致用途 |
|---|---|---|
| 接近 1 | 提示词影响力弱,画面自由、多样 | 探索风格、少步数采样 |
| 中间区间 | 指令遵循与画面自然度的平衡点 | 日常出图 |
| 很高 | 高饱和、高对比、结构易崩 | 通常是失效区 |
各工具的默认值不一样,以官方页面为准。
对从业者和普通人的意义
对普通人:这个滑块不是"质量"滑块,而是"听话程度"滑块。画面不像你要的东西,先别急着堆提示词,可以先确认它是不是调得太低;画面已经油腻、过曝、构图怪异,就往回调,而不是继续加。
对从业者:CFG 是一个实打实的成本项。它要求每一步都跑两次前向计算,开启引导时生成耗时和显存开销大致翻倍。这正是做少步采样、模型蒸馏时,常见做法是把引导强度设为 1(相当于关掉引导)来换速度的原因。理解了它本质是一次外推,也就明白为什么"把强度拉满"从来不是提高画面质量的办法。
