Diffusion系列 - Classifier Free Guidance 和 蒸馏 公式推导(五)

【待完成】。。。

介绍

在条件生成的推理时引导方法中,主要分为分类器引导(CG)和无分类器引导(CFG)两大类。由于 CG 需要额外训练一个能在所有噪声等级上工作的分类器,且容易引入伪影,CFG 仅依靠生成模型自身即可实现引导,已成为现代扩散模型的主流配置。

原理

CFG 公式推导

要理解 CFG 的公式,我们需要从条件生成的第一性原理出发。

  1. 条件得分的贝叶斯分解
    在扩散模型中,我们希望在给定条件 \(y\)(如文本 Prompt)下生成数据。根据贝叶斯公式,条件概率可以分解为:

\[p(x_t|y) = \frac{p(y|x_t) p(x_t)}{p(y)} \]

对其取对数并对 \(x_t\) 求梯度(即“得分函数/Score”),由于 \(p(y)\)\(x_t\) 无关,其梯度为0,我们得到:

\[\nabla_{x_t} \log p(x_t|y) = \underbrace{\nabla_{x_t} \log p(x_t)}_{\text{无条件得分}} + \underbrace{\nabla_{x_t} \log p(y|x_t)}_{\text{纠偏项}} \]

这个公式揭示了条件生成的本质力量:

第一项(无条件得分):指引图像走向“更像自然图片”的高密度区域,保证真实感。
第二项(纠偏项):像一个牵引力,把轨迹拉向符合条件 \(y\) 的区域。

  1. 构造无分类器的“纠偏项”
    早期的方法(分类器引导 CG)试图训练一个额外的分类器来估算第二项,但这很困难且容易引入伪影。CFG 的核心 trick 在于:不需要分类器,我们直接把上面的公式移项:

\[\nabla_{x_t} \log p(y|x_t) = \underbrace{\nabla_{x_t} \log p(x_t|y)}_{\text{条件得分}} - \underbrace{\nabla_{x_t} \log p(x_t)}_{\text{无条件得分}} \]

这意味着,“纠偏项”恰好等于条件得分与无条件得分的差! 只要我们能得到这两个得分,就能算出纠偏项。
3. 引入引导强度
现在,我们把这个算出来的“纠偏项”乘以一个强度参数 \(w\),加回到无条件得分上,构造出一个新的“引导得分”:

\[\tilde{s}(x_t) = \nabla_{x_t} \log p(x_t) + w \cdot \underbrace{(\nabla_{x_t} \log p(x_t|y) - \nabla_{x_t} \log p(x_t))}_{\text{纠偏项}} \]

\(w > 1\) 时,我们就放大了条件的牵引力,逼迫模型更听话;当 \(w = 1\) 时,就是普通的条件生成;当 \(w = 0\) 时,退化为无条件生成。
4. 转换为预测噪声
在实践中,扩散模型更常预测的是噪声 \(\epsilon\) 而非得分,二者在数学上是等价的。将上述得分的推导替换为我们熟悉的噪声预测,就得到了最终常用的 CFG 公式:

\[\tilde{\epsilon}_\theta(x_t) = \epsilon_\theta(x_t, \emptyset) + w \cdot (\epsilon_\theta(x_t, y) - \epsilon_\theta(x_t, \emptyset)) \]

其中:

\(\epsilon_\theta(x_t, y)\) 是条件预测(模型看到了提示词)
\(\epsilon_\theta(x_t, \emptyset)\) 是无条件预测(模型没看到提示词,自由发挥)
\(w\) 是引导强度

一句话总结:CFG 的本质就是计算出“听话方向”与“自由方向”的差值,然后把差值放大并加回去,从而实现更强的条件引导。
CFG 的核心逻辑正是通过结合这两次预测的结果来增强条件信号的影响力。其常用公式为:
噪声预测 = 无条件预测 + 引导强度 × (条件预测 - 无条件预测)
其中,(条件预测 - 无条件预测) 代表了提示词让模型产生的“偏移量”,引导系数大于1时,就相当于把这个偏移量放大,逼迫模型更朝着符合提示词的方向生成。

C²FG

CFG 常见做法使用固定 $ \omega $,但它默认“条件/无条件差异在所有时间步同等重要”。C²FG 用分数差异分析提高条件生成中CFG的引导显示:这种差异在扩散时间上是动态变化的,因此固定 \(\omega\) 难以同时兼顾早期结构形成与后期精确对齐。

  • Theorem 1(VP-SDE Score MSE Bound):在VP-SDE前向扩散中,条件分布与无条件分布的score差异存在一个严格的上界。该上界随时间t增大呈指数衰减趋势:

\[|\nabla \log p(x,t) - \nabla \log p(x,t|y)| \leq \frac{e^{-t}}{1-e^{-2t}} C \]

  • 结论:前向扩散中条件与无条件分布逐渐“趋同”,score差异衰减;对应反向采样时,越接近数据(t→0)越需要更强的条件引导。

核心思想:将固定ω替换为时间依赖的指数衰减函数:

\[\omega(t) = \omega_0 e^{\lambda(1 - t/t_m)} \]

其中 \(\omega_0\) 为最大引导强度,\(\lambda\) 为衰减速率。
采样公式:

\[\hat{\epsilon}_c^\omega(x_t) = \hat{\epsilon}_\varnothing(x_t) + \omega(t)[\hat{\epsilon}_c(x_t) - \hat{\epsilon}_\varnothing(x_t)] \]

优势:

  • 与理论预测的指数趋势一致;
  • 连续可导,比分段/线性更平滑;
  • 仅需两个超参数(\(\omega_0, \lambda\));
  • training-free、plug-and-play,无需额外训练或分类器;
  • 可与区间引导interval guidance等方法正交叠加。

C²FG显著缓解纹理模糊与畸变,更清晰、更真实的生成结果。

局限与加速方案

因为每一步都需要计算两次,CFG 的主要代价就是高昂的计算成本和推理时间,这也使得整体推理速度几乎减半。
针对这一问题,目前有以下几种优化思路:

  • 自适应引导(如 Step AG):研究发现,在去噪过程的后期(信噪比较高时),条件预测和无条件预测的方向趋于一致,CFG的作用减弱。因此,Step AG 策略仅在去噪过程的前 30%~50% 步骤中应用两次前向传播的 CFG,后半程仅做单次条件预测,这样能在质量基本不降的情况下节省 20%~30% 的推理时间。
  • CFG 蒸馏:将使用了 CFG 的教师模型的结果直接蒸馏到一个新的学生模型中,并将引导强度作为嵌入输入新模型,这样在新模型推理时就不再需要两次前向传播,只需单次即可实现类似效果。

蒸馏

DMD 蒸馏全称为分布匹配蒸馏,是一种用于大幅加速扩散模型推理过程的技术。它的核心目标是将原本需要几十步甚至上百步迭代的扩散模型,转换成仅需单步或少步(如4步)即可生成高质量图像的快速生成器。
经过 DMD(分布匹配蒸馏)及其变体蒸馏后的模型,在推理时通常 不再需要CFG的两次前向传播 ,而是可以直接通过单次前向传播生成图像。
这主要得益于蒸馏过程将 CFG 的效果直接“烘焙”进了生成器中。

参考文章

《人人都懂扩散模型(12):CFG——让模型听话的艺术》
CVPR 2026 | C²FG:用分数差异分析提高条件生成中CFG的引导

posted @ 2026-05-18 15:34  gaobowen  阅读(68)  评论(0)    收藏  举报