Classifier-Free Guidance:让扩散模型更听话
它解决什么问题?
扩散模型从噪声逐步生成图像。仅靠无条件采样时,画面可能比较自由;加入文本条件后,我们希望它更遵循提示词,这就是 guidance 要解决的问题。
核心思路
训练时,模型有时接收文本条件,有时把条件置空。采样时同时得到两次预测:
- 无条件预测:
ε_uncond - 有条件预测:
ε_cond
再用下面的公式把两者拉开:
ε = ε_uncond + s · (ε_cond - ε_uncond)
其中 s 是 guidance scale。它越大,结果通常越贴合提示词;但过大也可能导致画面过饱和、细节僵硬或失真。
怎么理解?
可以把无条件预测看成“模型本来想怎么画”,把有条件预测看成“看了提示词后想怎么画”。CFG 用两者的差值强化提示词方向。
一句话总结
CFG = 不使用额外分类器,通过“有条件预测 − 无条件预测”来增强文本控制力。实际使用时,guidance scale 需要在服从提示词和画面自然之间取平衡。