Classifier Guidance vs. Classifier-Free Guidance 对比总结

核心思想

  • Classifier Guidance (CG): 利用一个预训练的外部分类器 qϕ(yxt)q_\phi(\boldsymbol y|\boldsymbol x_t) 的梯度来引导预训练的无条件扩散模型的采样过程,使其生成符合条件 y\boldsymbol y 的样本。
  • Classifier-Free Guidance (CFG): 让扩散模型自身同时学习条件分布 p(xty)p(\boldsymbol x_t|\boldsymbol y) 和无条件分布 p(xt)p(\boldsymbol x_t),在采样时利用这两者之间的差异进行自我指导。

所需模型

  • CG:
    1. 预训练的无条件扩散模型 ϵθ(xt,t)\boldsymbol\epsilon_\theta(\boldsymbol x_t, t)
    2. 预训练的分类器 qϕ(yxt,t)q_\phi(\boldsymbol y|\boldsymbol x_t, t) (需要在带噪图像上训练)
  • CFG:
    1. 一个统一的条件扩散模型 ϵθ(xt,t,y)\boldsymbol\epsilon_\theta(\boldsymbol x_t, t, \boldsymbol y),通过在训练时随机丢弃条件 y\boldsymbol y (用 \emptyset 替代) 来同时学习条件和无条件预测。

训练过程

  • CG: 扩散模型和分类器通常是独立训练的。分类器需要在不同噪声水平的 xt\boldsymbol x_t 上进行训练,以准确提供梯度。
  • CFG: 扩散模型在训练时,以一定概率 (如10-20%) 将真实的条件 y\boldsymbol y 替换为一个特殊的空条件 \emptyset,从而使模型学会根据 y\boldsymbol y\emptyset 进行预测。共享一套模型参数 θ\theta

指导机制

  • CG: 在采样步骤 tt,通过修改逆向过程高斯分布的均值 μθ\boldsymbol\mu_\theta 来实现指导:
    μ^=μθ+sσt2xtlogqϕ(yxt,t)\hat{\boldsymbol\mu} = \boldsymbol\mu_\theta + s \cdot \sigma_t^2 \nabla_{\boldsymbol x_t} \log q_\phi(\boldsymbol y|\boldsymbol x_t, t)
  • CFG: 在采样步骤 tt,通过调整预测的噪声 ϵ\boldsymbol\epsilon 来实现指导:
    ϵ^θ=ϵθ(xt,t,)+s(ϵθ(xt,t,y)ϵθ(xt,t,))\hat{\boldsymbol\epsilon}_\theta = \boldsymbol\epsilon_\theta(\boldsymbol x_t, t, \emptyset) + s \cdot (\boldsymbol\epsilon_\theta(\boldsymbol x_t, t, \boldsymbol y) - \boldsymbol\epsilon_\theta(\boldsymbol x_t, t, \emptyset))

对齐性

  • CG: 可能存在分类器与扩散模型之间的不匹配问题。例如,分类器的训练数据、噪声分布可能与DDPM不完全一致,或者分类器本身性能瓶颈会限制指导效果。
  • CFG: 对齐性更好,因为指导信号来源于扩散模型自身。条件信息和生成过程通常能更好地融合。

实现复杂度

  • CG: 需要额外训练、维护和加载一个分类器模型。采样时需要分类器模型进行前向和反向传播(计算梯度)。
  • CFG: 训练策略略有调整,但采样时仅需对同一个模型进行两次前向传播(一次带条件,一次不带条件),然后进行简单的算术组合。整体流程更简洁

指导强度控制

  • CG: 通过超参数 ss (guidance scale) 控制。
  • CFG: 通过超参数 ss (guidance scale) 控制。当 s>1s > 1 时,实际上是对条件预测的“外插”,可以更强地强调条件。

效果与鲁棒性

  • CG: 效果高度依赖分类器的质量和泛化能力。当逆向过程的协方差 Σ\boldsymbol\Sigma (或 σt2\sigma_t^2) 很小时(如去噪后期),基于梯度的调整项 Σg\boldsymbol\Sigma \boldsymbol g 的作用可能减弱,限制指导效果。
  • CFG: 通常能产生更高质量、更符合条件的生成结果。直接作用于噪声预测 ϵ\boldsymbol\epsilon,避免了对 Σ\boldsymbol\Sigma 大小的依赖,指导在整个去噪过程中通常更稳定有效。

计算开销 (采样时)

  • CG: 每次采样步骤需要一次扩散模型前向传播和一次分类器前向+反向传播。
  • CFG: 每次采样步骤需要两次扩散模型前向传播。如果分类器模型远小于扩散模型,CG单步可能略快,但CFG省去了分类器梯度计算。

实践中的理解与新内容:

  1. 主导趋势

    • Classifier-Free Guidance 已成为主流。由于其简便性、高效性和通常更优的性能,CFG 已经广泛取代了 Classifier Guidance,成为大多数先进条件扩散模型(如 Stable Diffusion, Imagen 等)的标准配置。
  2. Classifier Guidance 的挑战

    • 分类器训练的复杂性:为 Classifier Guidance 训练一个在所有噪声水平 tt 上都表现良好的分类器 qϕ(yxt,t)q_\phi(\boldsymbol y|\boldsymbol x_t, t) 本身就是一个不小的挑战。分类器需要在与扩散模型加噪过程一致的噪声数据上训练,这可能需要大量数据和精细的调整。
    • 梯度质量:分类器梯度的质量直接影响生成效果。如果梯度噪声大或方向不准确,可能导致生成图像出现伪影或不符合预期的内容。
    • 模式覆盖与多样性:过强的分类器指导 (大的 ss) 可能会过度集中于分类器认为最典型的特征,从而牺牲生成样本的多样性,甚至导致模式坍塌 (mode collapse) 的问题,即生成的样本高度相似。
  3. Classifier-Free Guidance 的优势体现

    • “内部”一致性:CFG 的核心优势在于指导信号是“内源性”的。模型自己学习了从无条件到条件的“差异方向” (ϵθ(xt,t,y)ϵθ(xt,t,))(\boldsymbol\epsilon_\theta(\boldsymbol x_t, t, \boldsymbol y) - \boldsymbol\epsilon_\theta(\boldsymbol x_t, t, \emptyset))。这个方向是模型在训练过程中根据数据分布和条件信息自己学到的,因此通常比外部、独立训练的分类器提供的梯度更“懂”扩散模型本身。
    • 灵活性与强度:指导强度 ss 的调整非常直观。当 s=0s=0,得到无条件样本;s=1s=1,得到标准的条件样本(无额外强调);s>1s>1 时,则是在无条件预测的基础上,沿着“条件方向”进行外插,从而强化条件特征。这种外插能力是 CFG 效果突出的一个重要原因。
    • 效果上限:实践中,CFG 往往能够达到比 CG 更高的图像质量和条件一致性上限。尤其是在需要精细控制或生成复杂场景时,CFG 的表现通常更佳。
  4. 潜在问题与调优

    • CFG 的过饱和/过度锐化:虽然 CFG 效果好,但当指导强度 ss 设置得过高时,也可能导致生成图像颜色过饱和、对比度过高,或者细节出现不自然的锐化,有时甚至会产生一些“数字感”或“AI感”很强的图像。因此,选择合适的 ss 值仍然是一个需要根据具体任务和模型进行调整的超参数。
    • 计算成本权衡:CFG 在采样时需要对扩散模型进行两次前向传播。对于非常大的模型,这会带来一定的计算开销。然而,考虑到其带来的效果提升和免去分类器训练维护的成本,这通常是可以接受的。

总结来说,Classifier Guidance 是一个开创性的想法,展示了如何利用外部知识引导扩散模型。但 Classifier-Free Guidance 通过一种更内聚、更简洁的方式实现了更优的性能和易用性,使其成为当前条件生成领域的事实标准。它巧妙地让模型学会了“自我指导”,是扩散模型发展中的一个重要里程碑。