Classifier-Free Guidance
无分类器指导(Classifier-Free Guidance,CFG)是一种用于生成模型(如扩散模型、生成对抗网络等)中的采样技巧,常用于提升生成样本的质量和对条件(如文本、标签)的一致性。其核心思想是在不依赖外部分类器的情况下,通过调整条件和无条件生成之间的融合,来引导生成模型输出更符合目标条件的样本。
原理
以条件扩散模型为例,假设我们的扩散模型可以根据条件 \(c\)(如文本描述、类别标签)生成样本。我们有两个模型输出:
- $ \epsilon_\theta(x_t, c) $:有条件的噪声预测(带条件)
- $ \epsilon_\theta(x_t, \varnothing) $:无条件的噪声预测(不带条件)
其中,\(x_t\) 是扩散过程中的中间状态。
Classifier-Free Guidance 的关键步骤如下:
-
训练方式
模型训练时,以一定概率随机将条件 \(c\) 替换为“空”条件(如空字符串或特殊 token),让模型学会有条件和无条件两种输出。
-
采样方式
在采样(生成)时,模型分别计算带条件和无条件的噪声预测,然后将两者按如下公式线性混合:\[\epsilon_{\text{guidance}} = (1 + w) \cdot \epsilon_\theta(x_t, c) - w \cdot \epsilon_\theta(x_t, \varnothing) \]其中,\(w\) 为 guidance scale,是一个超参数,常取值大于 0(如7.5),控制条件信息的强化程度。
直观理解
- 当 \(w = 0\) 时,完全使用有条件模型,等价于普通的条件扩散采样。
- 当 \(w > 0\) 时,模型会更强调条件信息,生成结果更符合条件,但过大可能导致样本质量下降或出现失真。
优点
- 不需要单独训练或引入外部判别器/分类器(如传统的 Classifier Guidance 方法)。
- 仅需对训练数据做简单的“条件 dropout”即可实现。
- 控制灵活,通过 guidance scale 可以动态调整生成的多样性和条件一致性。
参考文献:
- Ho, J., & Salimans, T. (2022). Classifier-Free Diffusion Guidance. arXiv:2207.12598

浙公网安备 33010602011771号