Classifier-Free Guidance

无分类器指导(Classifier-Free Guidance,CFG)是一种用于生成模型(如扩散模型、生成对抗网络等)中的采样技巧,常用于提升生成样本的质量和对条件(如文本、标签)的一致性。其核心思想是在不依赖外部分类器的情况下,通过调整条件和无条件生成之间的融合,来引导生成模型输出更符合目标条件的样本。

原理

以条件扩散模型为例,假设我们的扩散模型可以根据条件 \(c\)(如文本描述、类别标签)生成样本。我们有两个模型输出:

  • $ \epsilon_\theta(x_t, c) $:有条件的噪声预测(带条件)
  • $ \epsilon_\theta(x_t, \varnothing) $:无条件的噪声预测(不带条件)

其中,\(x_t\) 是扩散过程中的中间状态。

Classifier-Free Guidance 的关键步骤如下:

  1. 训练方式

    模型训练时,以一定概率随机将条件 \(c\) 替换为“空”条件(如空字符串或特殊 token),让模型学会有条件和无条件两种输出。

  2. 采样方式
    在采样(生成)时,模型分别计算带条件和无条件的噪声预测,然后将两者按如下公式线性混合:

    \[\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
posted @ 2025-06-10 16:32  Undefined443  阅读(236)  评论(0)    收藏  举报