无分类器引导 (Classifier-free guidance) 和分类器引导 (Classifier guidance) 是两种用于引导生成模型(如扩散模型)输出达到期望属性(例如,生成特定类别的图像)的技术。它们之间的关键区别在于如何在生成过程中整合条件信息。分类器引导依赖于外部分类器来影响采样,而无分类器引导则直接将条件性构建到模型中,从而无需单独的分类器。
分类器引导的工作原理是将生成模型的输出与预训练分类器的梯度结合起来。例如,如果生成一张“猫”的图像,分类器在去噪过程中评估中间的噪声样本有多像“猫”。然后,模型利用分类器的梯度调整其输出,以放大“猫”的特征。这种方法需要对噪声数据(与扩散过程的时间步长匹配)进行分类器训练,这增加了复杂性。它也可能很脆弱:如果分类器对噪声不鲁棒或与生成模型不一致,引导可能会失败。例如,在 CIFAR-10 上训练的 ResNet 分类器可能难以对高噪声样本提供可靠的梯度,从而导致伪影。
无分类器引导通过训练生成模型来处理条件生成和无条件生成,从而避免了这些问题。在训练过程中,模型在某些批次中随机忽略类别标签(或文本提示),迫使其学习无条件生成以及特定类别的输出。在推理时,模型会融合这些模式:例如,像 Stable Diffusion 这样的文本到图像模型使用引导权重 (guidance scale) 在其无条件预测(忽略提示)和条件预测(遵循提示)之间进行插值。这消除了对单独分类器的需求,简化了部署。然而,它需要仔细调整引导权重——过高的值可能会过度强调条件,产生过度饱和或不真实的输出。
总而言之,分类器引导使用外部模型来指导生成,这增加了复杂性,但允许训练后进行控制。无分类器引导将条件性集成到生成模型本身,以更高的训练成本换取更简单、更稳定的推理。开发人员可能会为文本到图像生成等任务选择无分类器引导(训练数据丰富),但在需要通过外部模型进行细粒度控制时,则可能选择分类器引导。