Guiding a Diffusion Model with a Bad Version of Itself
- Abstract
- 1. Introduction
- 2. Background
- 3. Why does CFG improve image quality?
- Score matching leads to outliers.
- CFG 消除异常值
- Discussion
- 4 Our method
Abstract
在图像生成扩散模型中,主要关注的轴心是图像质量、结果的变化量以及结果与给定条件(例如类别标签或文本提示)的对齐程度。流行的无分类器指导方法使用无条件模型来指导条件模型,从而在提高提示对齐和图像质量的同时,减少了变化量。这些效果似乎本质上是纠缠在一起的,因此难以控制。我们惊讶地发现,通过使用较小、训练较少的模型本身而不是无条件模型来指导生成,可以在不牺牲变化量的情况下获得对图像质量的独立控制。这在 ImageNet 生成中带来了显著的改进,使用公开可用的网络在 64×64 和 512×512 尺寸上分别创下了 1.01 和 1.25 的记录 FID。此外,该方法也适用于无条件扩散模型,大大提高了它们的质量。
1. Introduction
扩散去噪模型 [12, 37, 38, 39, 40] 通过逆转随机污染过程来生成合成图像。本质上,图像是通过逐步去噪从纯噪声中显现出来的。实现去噪器(等同于 [44] 的得分函数 [15])的神经网络是设计的核心元素,并提出了各种架构(例如,[1, 5, 7, 14, 16, 19, 30])。同样重要的是对应于求解常微分方程 [27, 38] 或随机微分方程 [40] 的多步去噪过程的细节,为此已经评估了许多不同的参数化、求解器和步骤计划 [17, 18, 22, 35, 46]。为了控制输出图像,去噪器通常依赖于类别标签、文本提示的嵌入或其他形式的条件输入。
扩散模型的训练目标是覆盖整个(条件)数据分布。这在低概率区域引发问题:模型因为无法表示这些区域而受到重罚,但它没有足够的数据来学习生成与这些区域对应的良好图像。无分类器指导【Classifier-free guidance】(CFG)[13] 已成为“降低采样温度”的标准方法,即将生成集中在学习良好的高概率区域。通过训练去噪网络在条件和无条件设置下操作,采样过程可以偏离无条件结果——实际上,无条件生成任务指定了一个要避免的结果。这导致更好的提示对齐和改进的图像质量,其中前者是由于 CFG 隐式地将条件部分的概率密度提高到大于一的幂 [8]。
然而,CFG 作为一种通用的低温采样方法,其缺点限制了其使用。首先,它仅适用于条件生成,因为指导信号基于条件和无条件去噪结果之间的差异。其次,由于无条件和条件去噪器被训练来解决不同的任务,采样轨迹可能会超出预期的条件分布,导致图像构图偏斜且常常过于简化 [21]。最后,提示对齐和质量改进的效果无法分开控制,并且它们之间的确切关系尚不清楚。
在本文中,我们提供了关于为何 CFG 提高图像质量的新见解,并展示了如何将这一效果分离为一种新方法,我们称之为自动指导(autoguidance)。我们的方法不会遇到任务不一致问题,因为我们使用了主要模型本身的一个较差版本作为指导模型,且保持条件不变。这个指导模型可以通过简单地限制模型容量和/或训练时间来获得。我们在各种合成测试用例以及在类别条件和文本条件设置下的实际图像合成中验证了自动指导的有效性。此外,我们的方法能够为无条件合成提供指导。在定量测试中,使用 FID [10] 和 FDDINOv2 [42] 指标衡量时,生成的图像分布显著改善,并在 ImageNet-512 和 ImageNet-64 生成中创下新纪录。
2. Background
去噪扩散。 去噪扩散通过迭代地对纯白噪声样本进行去噪,从而生成来自数据分布 p d a t a ( x ) p_{data}(x) pdata(x) 的样本,使得无噪声的随机数据样本逐渐显现出来 [12]。其思想是考虑 p d a t a ( x ) p_{data}(x) pdata(x) 的热扩散(heat diffusion),形成一系列逐渐平滑的密度 p ( x ; σ ) = p d a t a ( x ) ∗ N ( x ; 0 , σ 2 I ) p(x; \sigma) = p_{data}(x) \ast N(x; 0, \sigma^2I) p(x;σ)=pdata(x)∗N(x;0,σ2I)。对于足够大的 σ m a x \sigma_{max} σmax,我们有 p ( x ; σ m a x ) ≈ N ( x ; 0 , σ m a x 2 I ) p(x; \sigma_{max}) \approx N(x; 0, \sigma^2_{max}I) p(x;σmax)≈N(x;0,σmax2I),可以简单地通过生成正态分布的白噪声进行采样。然后将生成的样本通过概率流常微分方程(ODE)向低噪声水平演变 [18, 38, 40]:
d x σ = − σ ∇ x σ log p ( x σ ; σ ) d σ (1) dx_\sigma = -\sigma \nabla_{x_\sigma} \log p(x_\sigma; \sigma) d\sigma \tag{1} dxσ=−σ∇xσlogp(xσ;σ)dσ(1)
该方程保证对于每个 σ ∈ [ 0 , σ m a x ] \sigma \in [0, \sigma_{max}] σ∈[0,σmax], x σ ∼ p ( x σ ; σ ) x_\sigma \sim p(x_\sigma; \sigma) xσ∼p(xσ;σ)。当 σ = 0 \sigma = 0 σ=0 时,我们得到 x 0 ∼ p ( x 0 ; 0 ) = p d a t a ( x 0 ) x_0 \sim p(x_0; 0) = p_{data}(x_0) x0∼p(x0;0)=pdata(x0) ,正是我们所期望的。
在实际操作中,ODE 通过沿着方程 (1) 定义的轨迹进行数值求解。这需要在每一步对给定样本 x x x 和噪声水平 σ \sigma σ 计算所谓的得分函数 [15] ∇ x log p ( x ; σ ) \nabla_x \log p(x; \sigma) ∇xlogp(x;σ)。令人惊讶的是,我们可以用一个神经网络 D θ ( x ; σ ) D_\theta(x; \sigma) Dθ(x;σ) 来近似这个向量,该网络通过如下去噪任务进行参数化权重 θ \theta θ 的训练:
θ = arg min θ E y ∼ p d a t a , σ ∼ p t r a i n , n ∼ N ( 0 , σ 2 I ) ∥ D θ ( y + n ; σ ) − y ∥ 2 2 (2) \theta = \arg \min_\theta \mathbb{E}_{y \sim p_{data}, \sigma \sim p_{train}, n \sim N(0, \sigma^2I)} \| D_\theta(y + n; \sigma) - y \|_2^2 \tag{2} θ=argθminEy∼pdata,σ∼ptrain,n∼N(0,σ2I)∥Dθ(y+n;σ)−y∥22(2)
其中 p t r a i n p_{train} ptrain 控制训练期间的噪声水平分布。给定 D θ D_\theta Dθ,我们可以估计
∇ x log p ( x ; σ ) ≈ D θ ( x ; σ ) − x σ 2 \nabla_x \log p(x; \sigma) \approx \frac{D_\theta(x; \sigma) - x}{\sigma^2} ∇xlogp(x;σ)≈σ2Dθ(x;σ)−x
近似误差取决于有限的容量或训练时间 [18, 44]。因此,我们可以将网络解释为预测去噪样本或得分向量,以便于当前分析。许多重新参数化和实际 ODE 求解器是可能的,正如 Karras 等人所列举的 [18]。我们遵循他们的建议,包括使用 σ ( t ) = t \sigma(t) = t σ(t)=t 的时间计划,这使我们可以通过噪声水平 σ \sigma σ 而不是单独的时间变量 t t t 来直接参数化 ODE。
在大多数应用中,每个数据样本 x x x 都与一个标签 c c c 相关联,例如表示类别索引或文本提示。在生成时,我们通过选择一个标签 c c c 并寻找条件分布 p ( x ∣ c ; σ ) p(x|c; \sigma) p(x∣c;σ) 的样本来控制结果,当 σ = 0 \sigma = 0 σ=0 时实现这一目标。在实际操作中,这是通过训练一个接受 c c c 作为附加条件输入的去噪网络 D θ ( x ; σ , c ) D_\theta(x; \sigma, c) Dθ(x;σ,c) 来实现的。
无分类器引导(Classifier-Free Guidance, CFG)
对于复杂的视觉数据集,生成的图像往往无法再现训练图像的清晰度,这是由于有限容量的网络产生的逼近误差。一个广泛使用的技巧叫做无分类器引导(CFG)[13],它将样本推向类标签的更高似然性,牺牲了多样性,以生成“更标准”的图像,这些图像网络似乎更能处理。
在一般情况下,扩散模型中的引导作用涉及两个去噪网络 D 0 ( x ; σ , c ) D_0(x; \sigma, c) D0(x;σ,c) 和 D 1 ( x ; σ , c ) D_1(x; \sigma, c) D1(x;σ,c)。引导效果是通过在两个去噪结果之间进行外推来实现的,外推系数为 w w w:
D w ( x ; σ , c ) = w D 1 ( x ; σ , c ) + ( 1 − w ) D 0 ( x ; σ , c ) (3) D_w(x; \sigma, c) = wD_1(x; \sigma, c) + (1 - w)D_0(x; \sigma, c) \tag{3} Dw(x;σ,c)=wD1(x;σ,c)+(1−w)D0(x;σ,c)(3)
显然,设置 w = 0 w = 0 w=0 或 w = 1 w = 1 w=1 会分别恢复 D 0 D_0 D0 和 D 1 D_1 D1 的输出,而选择 w > 1 w > 1 w>1 会过度强调 D 1 D_1 D1 的输出。回想一下去噪器和得分函数的等价性 [44],我们可以写出:
D w ( x ; σ , c ) ≈ x + σ 2 ∇ x log ( p 0 ( x ∣ c ; σ ) p 1 ( x ∣ c ; σ ) ) w ∝ p w ( x ∣ c ; σ ) (4) D_w(x; \sigma, c) \approx x + \sigma^2 \nabla_x \log \left( \frac{p_0(x|c; \sigma)}{p_1(x|c; \sigma)} \right) w \quad \propto p_w(x|c; \sigma) \tag{4} Dw(x;σ,c)≈x+σ2∇xlog(p1(x∣c;σ)p0(x∣c;σ))w∝pw(x∣c;σ)(4)
因此,引导使我们能够访问在括号内表示的密度 p w ( x ∣ c ; σ ) p_w(x|c; \sigma) pw(x∣c;σ) 的得分。这一得分可以进一步写成:
∇ x log p w ( x ∣ c ; σ ) = ∇ x log p 1 ( x ∣ c ; σ ) + ( w − 1 ) ∇ x log p 1 ( x ∣ c ; σ ) p 0 ( x ∣ c ; σ ) (5) \nabla_x \log p_w(x|c; \sigma) = \nabla_x \log p_1(x|c; \sigma) + (w - 1) \nabla_x \log \frac{p_1(x|c; \sigma)}{p_0(x|c; \sigma)}\tag{5} ∇xlogpw(x∣c;σ)=∇xlogp1(x∣c;σ)+(w−1)∇xlogp0(x∣c;σ)p1(x∣c;σ)(5)
将这个表达式代入方程 (1) 中的ODE中,得到从 p 1 p_1 p1 生成图像的标准演化,并且有一个扰动(当 w > 1 w > 1 w>1 时)增加了在样本点评估时 p 1 p_1 p1 和 p 0 p_0 p0 的比值。后者可以解释为增加一个假设的分类器将该样本归属于 p 1 p_1 p1 而不是 p 0 p_0 p0 的可能性。
在CFG中,我们训练一个辅助的无条件去噪器 D θ ( x ; σ ) D_\theta(x; \sigma) Dθ(x;σ),用于去噪分布 p ( x ; σ ) p(x; \sigma) p(x;σ),并使用它作为 D 0 D_0 D0。在实际操作中,这通常是通过使用相同的网络 D θ D_\theta Dθ 来实现的,该网络没有条件标签,设置为 D 0 : = D θ ( x ; σ , ∅ ) D_0 := D_\theta(x; \sigma, \emptyset) D0:=Dθ(x;σ,∅) 和 D 1 : = D θ ( x ; σ , c ) D_1 := D_\theta(x; \sigma, c) D1:=Dθ(x;σ,c)。
根据贝叶斯定理,外推后的得分向量变为:
∇ x log p ( x ∣ c ; σ ) + ( w − 1 ) ∇ x log p ( c ∣ x ; σ ) \nabla_x \log p(x|c; \sigma) + (w - 1) \nabla_x \log p(c|x; \sigma) ∇xlogp(x∣c;σ)+(w−1)∇xlogp(c∣x;σ)
在采样过程中,这引导图像更强烈地与指定的类别 c c c 对齐。
人们可能会认为,使用方程 (5) 中的得分函数来解决扩散ODE会生成来自 p w ( x ∣ c ; 0 ) p_w(x|c; 0) pw(x∣c;0) 指定的数据分布的样本。然而,事实并非如此,因为 p w ( x ∣ c ; σ ) p_w(x|c; \sigma) pw(x∣c;σ) 并不表示有效的 p w ( x ∣ c ; 0 ) p_w(x|c; 0) pw(x∣c;0) 热扩散过程。因此,解ODE实际上并没有遵循这个密度。相反,样本在每个噪声水平下都会盲目地被推向隐含密度的更高值。这会导致采样轨迹的失真,极度夸大的截断和模式丢失[21],以及颜色的过度饱和[36]。尽管如此,图像质量的提升往往是显著的,并且尽管存在这些缺点,通常还是会使用较高的引导值。
3. Why does CFG improve image quality?
我们首先确定了分类器无关引导(CFG)如何改善图像质量,而不仅仅是影响提示对齐。为了说明为什么未引导的扩散模型通常生成不令人满意的图像,以及CFG如何解决这个问题,我们研究了一个二维的玩具示例,其中一个小规模的去噪网络被训练用于在一个合成数据集上执行条件扩散(图1)。该数据集设计为具有低局部维度(即高度各向异性和窄支持),并且在去噪过程中逐步显现出局部细节的层次化特征。这些特性在实际图像的流形中也可以预期到[4, 32]。关于设置的详细信息,见附录C。
图1:一个类似分形的二维分布,灰色和橙色区域表示两个类别。大约99%的概率质量位于显示的轮廓内。(a) 从橙色类别分布直接绘制的真实样本。(b) 使用一个小型去噪扩散模型进行条件采样,产生了离群点。© 使用分类器无关引导(w = 4)消除了离群点,但通过过度强调类别,减少了多样性。(d) 通过延长得分向量进行的简单截断。(e) 我们的方法将样本集中在高概率区域,而不会减少多样性。
Score matching leads to outliers.
与直接从底层分布中采样(图1a)相比,未引导的扩散(图1b)生成了大量极不可能的样本,这些样本位于分布的边缘。在图像生成的情况下,这些样本将对应于不现实的和破碎的图像。
我们认为,异常值来源于得分网络的有限能力与得分匹配目标的结合。众所周知,最大似然(ML)估计会导致数据分布的“保守”拟合[2],即模型会尽力覆盖所有训练样本。这是因为底层的Kullback–Leibler散度(KL散度)对任何训练样本的似然低估会产生极高的惩罚。虽然得分匹配通常不等同于最大似然估计,但它们是密切相关的[12, 24, 40],并表现出类似的行为。例如,已知对于多元高斯模型,最优的得分匹配拟合与最大似然估计相吻合[15]。
图2a和2b展示了在我们的玩具示例中,两个不同容量模型在中等噪声水平下学习到的得分场和隐含的密度。更强大的模型将数据紧密包围,而较弱的模型的密度则更加分散。
从图像生成的角度来看,模型过度覆盖整个训练数据分布变成了一个问题:模型最终会从数据分布的极端区域生成奇怪且不太可能的图像,这些图像并没有被准确学习,而是为了避免高损失惩罚而被包括进来。此外,在训练过程中,网络仅仅见过真实的噪声图像作为输入,而在采样时,它可能没有准备好处理从高噪声水平传递下来的不太可能的样本。
图2:图1c中高亮区域的放大图。(a) 在中间噪声水平 σ m i d σ_{mid} σmid下,学习得到的条件密度 p 1 ( x ∣ c ; σ m i d ) p_1(x|c; σ_{mid}) p1(x∣c;σmid)(绿色)及其得分向量(对数梯度),在代表性样本点处绘制。学习到的密度近似于底层真实的条件密度 p 1 ( x ∣ c ; σ m i d ) p_1(x|c; σ_{mid}) p1(x∣c;σmid)(橙色),但未能复现更细致的特征。(b) 较弱的无条件模型学习到了一个更为分散的密度 p 0 ( x ∣ c ; σ m i d ) p_0(x|c; σ_{mid}) p0(x∣c;σmid)(红色),拟合数据的效果较松散。(c ) 引导根据两个学习到的密度的(对数)比率的梯度(蓝色)移动样本点。由于较高质量的模型在数据上更为集中,因此该梯度场指向数据分布的核心。对应的梯度只是(a)和(b)中各自梯度的差异,在选定的点处进行示意。(d) 标准无引导扩散模型的采样轨迹,沿着学习得到的得分 ∇ x l o g p 1 ( x ∣ c ; σ ) ∇_x log p_1(x|c; σ) ∇xlogp1(x∣c;σ)从噪声水平 σ m i d σ_{mid} σmid到0进行采样。等高线(橙色)表示底层真实的无噪声密度。(e) 引导引入了额外的力,如(c )所示,导致采样过程中样本点集中在数据密度的核心区域。
CFG 消除异常值
在生成过程中应用 无分类器引导(classifier-free guidance, CFG) 的效果如图 1c 所示。正如预期的那样,样本避免了类边界(即,灰色区域附近没有样本),整个分布的某些分支被丢弃。我们还观察到第二种现象,即样本被拉向数据流形的核心区域,远离低概率的中间区域。看到这一点,我们认为这就是图像质量提升的原因。然而,单纯地增强类的似然性并不能完全解释这种集中的现象。
我们认为,这一现象源于条件去噪器(denoiser)和无条件去噪器之间的质量差异。无条件去噪器 D 0 D_0 D0 面临比条件去噪器 D 1 D_1 D1 更难的任务:它必须同时生成来自所有类别的样本,而 条件去噪器 D 1 D_1 D1 只需要针对某一特定类别生成样本。由于任务更为复杂,并且通常只有较少的训练资源, D 0 D_0 D0 网络的拟合效果较差。这个精度差异可以通过图 2a 和 2b 中学习到的密度分布来看出。
从我们在第 2 节的解释来看,CFG 不是仅仅增强了样本来自类别 c 的似然性,还增强了样本来自更高质量的隐含分布的可能性。回顾一下,CFG 的引导效果最终可以看作是一个附加的力(方程 5),它将样本拉向 l o g [ p 1 ( x ∣ c ; σ ) / p 0 ( x ∣ c ; σ ) ] log [p_1(x|c; σ)/p_0(x|c; σ)] log[p1(x∣c;σ)/p0(x∣c;σ)] 的更高值。在图 2c 中,我们绘制了我们玩具示例中的这个比率,同时也展示了引导对 ODE 向量场贡献的梯度。我们可以看到,这个比率随着距离流形的远离而下降,因为分母 p0 表示一个更分散的分布,因此衰减得比分子 p1 更慢。因此,梯度指向流形的内部。每个密度比率的等高线对应于一个假设分类器会给样本分配的特定似然值,表示该样本来自 p1 而非 p0。由于这些等高线大致跟随数据流形的局部方向和分支,推送样本向“良好侧”集中,使得样本聚集在流形的核心区域。
Discussion
我们可以预期,这两个模型会在拟合相似区域时表现出不同程度的不足。去噪器的预测在这些区域会更有差异。因此,CFG 可以看作是一种自适应截断,它能识别出某个样本可能被低估的情况,并将其推向更好的样本方向。图 2d 和 2e 展示了这种效果在生成过程中的变化:这种截断会“超调”修正,从而生成的分布比真实数据分布更窄,但实际上这并没有对图像质量产生不利影响。
相比之下,一种简单的尝试——例如,借鉴 GANs 中的截断技巧或生成语言模型中的温度降低——会通过均匀地将得分向量延长一个系数 w > 1 来实现截断。图 1d 中展示了这一点:样本确实集中在高概率区域,但这种集中是各向同性的,导致外部分支区域为空。在实际应用中,这种方式生成的图像往往会表现出较少的变异、过于简化的细节和单调的纹理。
总结:
CFG 不仅提高了样本的类别似然性,还增加了来自更高质量分布的样本的概率,使得生成的样本更加集中、真实。
无条件去噪器( D 0 D_0 D0)与条件去噪器( D 1 D_1 D1)之间的差异是导致质量提升的原因,CFG 通过引导样本更集中在数据流形的核心区域,而非流形的边缘。
这种引导相当于一种自适应的截断,可以有效避免生成异常值,提升图像的质量。
4 Our method
我们提出通过直接使用一个低质量模型 D 0 D_0 D0 来指导高质量模型 D 1 D_1 D1,从而隔离图像质量提升的效果。 D 0 D_0 D0 和 D 1 D_1 D1 在相同的任务、条件和数据分布上进行训练,但 D 0 D_0 D0 由于容量不足和/或训练不足而遭遇某些额外的退化问题。我们称这种方法为 自引导(autoguidance),即用自身的劣化版本来指导模型。
在我们的 2D 玩具示例中,这个方法表现得出奇的好。图 1e 展示了使用一个较小的 D 0 D_0 D0(训练次数较少的模型)时的效果。如预期所示,样本被拉近了数据分布,但没有系统地丢弃任何部分。
为什么这个方法有效?
回顾一下,在有限的模型容量下,得分匹配(score matching) 倾向于过度强调数据分布中的低概率(即不太可能且未充分训练)区域。问题的出现具体位置和形式取决于许多因素,比如网络架构、数据集、训练细节等,因此我们无法预先确定并描述这些具体问题。然而,我们可以预期,同一个模型的较弱版本会在相同的区域做出类似的错误,只是更明显。自引导 的目的是通过测量强模型与弱模型预测的差异,识别并减少强模型的错误,并增强它。当两个模型的预测一致时,扰动微不足道;但当它们预测不一致时,差异会指示出更好的样本方向。
因此,我们可以预期,如果两个模型遭遇的退化问题是相互兼容的,自引导 会有效。由于任何 D 1 D_1 D1 模型都可能在某种程度上遇到容量不足和训练不足等问题,因此选择 D 0 D_0 D0 时应进一步加剧这些问题。
在实践中,分别训练或训练迭代次数不同的模型不仅在拟合精度上有所不同,还会在随机初始化、训练数据的洗牌等方面有所不同。为了使引导成功,质量差距应足够大,以至于系统性地扩展密度比这些随机效应更为显著。
Study on synthetic degradations.
为了验证我们的假设,即两个模型必须遭遇相同类型的退化问题,我们进行了一项受控实验,使用合成的退化作用于一个训练良好的现实世界图像扩散模型。我们通过对基础模型应用不同程度的合成退化来创建主网络和引导网络 D 1 D_1 D1 和 D 0 D_0 D0。这种构造使得我们可以使用未受影响的基础模型作为基准,衡量各种退化组合在 D 1 D_1 D1 和 D 0 D_0 D0 上的 FID 效果。我们发现,只要退化问题是兼容的,自引导大大消除了退化带来的损害:
- 基础模型:作为基础模型,我们使用未应用 dropout 的在 ImageNet-512 上训练的 EDM2-S 模型(FID = 2.56)。
- Dropout:我们通过对基础模型应用 5% 的 dropout 来构造 D 1 D_1 D1(FID = 4.98),并通过应用 10% 的 dropout 来构造 D 0 D_0 D0(FID = 15.00)。应用自引导后,我们达到了最佳结果(FID = 2.55),与基础模型的 FID 相匹配,且此时 w = 2.25。
- 输入噪声:我们通过修改基础模型,向输入图像添加噪声,使其噪声水平增加 10%(FID = 3.96)。根据噪声水平的增加,相应地调整了去噪网络的 σ 条件输入。引导模型 D 0 D_0 D0 类似地构造,但其噪声水平增加了 20%(FID = 9.73)。应用自引导后,我们再次达到了最佳结果(FID = 2.56),此时 w = 2.00,再次与基础模型的 FID 相匹配。
- 退化不匹配:如果我们将 D 1 D_1 D1 通过 dropout 进行退化,而将 D 0 D_0 D0 通过输入噪声进行退化,或者反之,则引导并未改善结果;在这种情况下,最佳 FID 是通过设置 w = 1 来获得的,即禁用引导,单独使用退化较小的 D 1 D_1 D1。
虽然这个实验验证了我们的主要假设,但我们并不建议在实际应用中使用这些合成退化进行引导。现实中的扩散模型不会遭遇这些特定的退化问题,因此通过引入这些问题来创建引导模型不会产生一致的向数据流形的截断。