当前位置: 首页 > news >正文

(2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散

Classifier-Free Diffusion Guidance

公z号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料)

目录

0. 摘要

1. 简介

2. 扩散模型

3. 引导

3.1 分类器引导

3.2 无分类器引导

4. 实验

4.1 改变无分类器引导强度

4.2 改变无条件训练概率

4.3 改变采样步数

5. 讨论

6. 结论

S. 总结

S.1 主要贡献

S.2 无分类器引导


0. 摘要

分类器引导是一种最近引入的方法,用于在条件扩散模型训练后权衡模式覆盖(mode coverage,数据分布的模式被建模为尽可能与其似然(likelihood)接近)和样本保真度,与其他类型的生成模型中的低温采样或截断的精神相同。分类器引导结合了扩散模型的分数估计和图像分类器的梯度,因此需要训练一个与扩散模型分开的图像分类器。这也引发了一个问题,即是否可以在没有分类器的情况下执行引导。我们展示了确实可以通过纯生成模型执行引导,在我们称之为无分类器引导(classifier-free guidance)的情况下,我们联合训练条件和无条件扩散模型,并结合得到的条件和无条件分数估计以获得类似于使用分类器引导时的样本质量和多样性之间的权衡。

1. 简介

扩散模型最近成为一种富有表现力和灵活性的生成模型家族,对图像和音频合成任务提供了具有竞争力的样本质量和似然分数(Sohl-Dickstein等,2015; Song&Ermon,2019; Ho等,2020; Song等,2021b; Kingma等,2021; Song等,2021a)。这些模型在音频合成性能上表现出色,与自回归模型相比,推断步骤明显减少(Chen等,2021; Kong等,2021),并且它们在 ImageNet 生成结果方面胜过 BigGAN-deep(Brock等,2019)和 VQ-VAE-2(Razavi等,2019),以 FID 和分类准确度的形式(Ho等,2021; Dhariwal&Nichol,2021)。

Dhariwal&Nichol(2021)提出了分类器引导(classifier guidance),这是一种利用额外训练的分类器提高扩散模型样本质量的技术。在分类器引导之前,人们不知道如何从扩散模型生成类似于截断的 BigGAN(Brock等,2019)或低温 Glow(Kingma&Dhariwal,2018)产生的 “低温” 样本:朴素的尝试,比如缩放模型得分向量或在扩散采样过程中减少添加的高斯噪声量,都是无效的(Dhariwal&Nichol,2021)。与此相反,分类器引导将扩散模型的得分估计与分类器的对数概率的输入梯度混合在一起。通过调整分类器梯度的强度,Dhariwal&Nichol 可以在某种程度上权衡Inception score(Salimans等,2016)和 FID 分数(Heusel等,2017)(或 precision and recall),类似于调整 BigGAN 的截断参数。

我们对是否可以在没有分类器的情况下执行分类器引导感兴趣。分类器引导使扩散模型训练流程变得复杂,因为它需要训练一个额外的分类器,而且这个分类器必须在有噪的数据上进行训练,因此通常不可能插入一个预训练的分类器。此外,由于分类器引导在采样过程中混合了得分估计和分类器梯度,分类器引导的扩散采样可以解释为试图通过基于梯度的对抗攻击来混淆图像分类器。这引发了一个问题,即:仅靠对抗分类器,分类器引导是否成功地提升了基于分类器的指标,如 FID 和 Inception score(IS)。沿着分类器梯度的步进也与 GAN 训练有些相似,特别是在非参数生成器方面;这也引发了一个问题,即分类器引导的扩散模型在基于分类器的指标上是否表现良好,因为它们开始类似于已知在这些指标上表现良好的 GAN。

为了解决这些问题,我们提出了无分类器引导,这是我们的引导方法,完全避免了任何分类器。不同于沿着图像分类器的梯度方向进行采样,无分类器引导混合了条件扩散模型和共同训练的无条件扩散模型的得分估计。通过在混合权重上进行遍历,我们实现了与分类器引导类似的 FID/IS 权衡。我们的无分类器引导结果表明,纯生成扩散模型能够合成与其他类型的生成模型可能相同的极高保真度的样本。

2. 扩散模型

3. 引导

某些生成模型(如 GAN 和基于流的模型)的一个有趣特性是能够通过在采样时减少噪声输入的方差或范围来执行截断或低温采样。预期效果是在减少样本多样性的同时提高每个个体样本的质量。例如,BigGAN(Brock等人,2019)中的截断会产生 FID 分数和 Inception score 之间的权衡曲线,分别对应低和高截断量。在 Glow(Kingma&Dhariwal,2018)中进行低温采样具有类似的效果。

然而,直接在扩散模型中实现截断或低温采样的尝试是无效的。例如,在反向过程中缩放模型分数或减小高斯噪声的方差会导致扩散模型生成模糊、低质量的样本(Dhariwal&Nichol,2021)。

3.1 分类器引导

为了在扩散模型中获得类似截断的效果,Dhariwal&Nichol(2021)引入了分类器引导(classifier guidance),其中扩散分数

被修改,包含辅助分类器模型的对数似然梯度 p_θ(c | z_λ),如下所示: 

其中,w 是一个参数,控制分类器引导的强度。在从扩散模型中进行采样时,用修改后的分数 ~ϵ_θ(z_λ,c) 替代 ϵ_θ(z_λ,c) ,从而得到来自如下分布的近似样本。

其效果是加大分类器 p_θ(c | z_λ) 分配正确标签高似然性的数据的概率权重:能够良好分类的数据在感知质量的 Inception score(Salimans等,2016)上得分较高,这是由设计来奖励生成模型。因此,Dhariwal&Nichol 发现通过设置 w>0,他们可以提高扩散模型的 Inception score,但以减少样本多样性为代价。

图 2 说明了在三个类别的二维玩具示例上,通过数值求解引导

的效果,其中每个类别的条件分布是各向同性的高斯。应用引导后,每个条件的形式明显不是高斯分布。随着引导强度的增加,每个条件将概率质量放置在离其他类别更远的地方,并朝着逻辑回归给出的高置信度方向移动,大部分概率质量集中在更小的区域。这种行为可以看作是在 ImageNet模型中增加分类器引导强度时发生的 Inception score 数提升和样本多样性减少的简化体现。

理论上,对无条件模型应用权重  w+1 的分类器引导将导致与对有条件模型应用权重 w 的分类器引导相同的结果,因为

或者从分数的角度来看,

但有趣的是,Dhariwal&Nichol 在将分类器引导应用于已经有类别条件的模型时获得了最佳结果,而不是将引导应用于无条件模型。因此,我们将继续使用引导已经有条件的模型的设置。

3.2 无分类器引导

虽然分类器引导成功地在期望的截断或低温采样中权衡了 Inception score 和 FID,但它仍然依赖于图像分类器的梯度,我们希望出于第 1 节中所述的原因移除分类器。在这里,我们描述了无分类器引导(classifier-free guidance),它可以在没有这些梯度的情况下实现相同的效果。无分类器引导是修改 ϵ_θ(z_λ,c) 以达到与分类器引导相同效果的替代方法,但没有分类器。算法 1 和 2详细描述了使用无分类器引导进行训练和采样的过程。

我们选择训练一个由评分估计器 ϵ_θ(z) 参数化的无条件去噪扩散模型 p_θ(z) ,以及由 ϵ(z_λ,c) 参数化的条件模型 p_θ(z_λ∣c) 。我们使用一个神经网络来参数化这两个模型,其中对于无条件模型,当预测分数时我们可以简单地输入一个空标记符号 Ø 作为类别标识符 c,即 ϵ_θ(z_λ) = ϵ_θ(z_λ,c = Ø)。我们通过随机以一些概率 p_uncond​ 将 c 设置为无条件类别标识符 Ø 来联合训练无条件和有条件模型,这个概率是作为一个超参数进行设置的。(当然,可以选择单独训练而不是联合训练它们,但我们选择联合训练是因为它非常简单实现,不会使训练流程变得复杂,也不会增加总参数数量)然后,我们使用以下条件和无条件分数估计的线性组合进行采样: 

方程(6)中不存在分类器梯度,因此沿着  ~ϵ_θ 方向的步骤不能被解释为基于梯度的对图像分类器的对抗攻击。此外,~ϵ_θ 是从未经约束的神经网络的得分估计构建的非保守场向量域,因此通常不存在标量势函数(scalar potential),例如分类器对数似然,其中 ~ϵ_θ 是分类器引导得分。

尽管通常可能不存在一个分类器使得方程(6)成为分类器引导得分,但实际上它受到了隐式分类器梯度的启发,即

如果我们能够访问准确的得分 ϵ*(z_λ,c) 和 ϵ*(z_λ)(分别是 p(z_λ∣c) 和 p(z_λ) 的得分),那么这个隐式分类器的梯度将是

并且使用这个隐式分类器的分类器引导将会将得分估计修改为

注意与方程(6)的相似之处,但也请注意,

本质上是不同的。前者是从缩放的分类器梯度 ϵ*(z_λ,c) − ϵ*(z_λ) 构建的,而后者是从估计 ϵ_θ(z_λ,c) − ϵ_θ(z_λ) 构建的,并且这个表达式通常不是任何分类器的(缩放的)梯度,这也是因为得分估计是未经约束的神经网络的输出。

先验(通过贝叶斯规则反演生成模型)是否能获得提供有用引导信号的良好分类器,仍然不清楚。例如,Grandvalet&Bengio(2004)发现,判别式模型通常优于从生成模型导出的隐式分类器,即使这些人工定制的生成模型完全匹配数据分布。在我们这样的情况下,我们期望模型被错误规定,通过贝叶斯规则导出的分类器可能是不一致的(Gr¨unwald&Langford,2007),我们失去了对其性能的所有保证。然而,在第 4 节中,我们通过实验证明,无分类器引导能够以与分类器引导相同的方式权衡 FID 和 IS。在第 5 节中,我们讨论了与分类器引导相关的无分类器引导的影响。

4. 实验

我们在面向区域降采样的类别条件 ImageNet(Russakovsky等,2015)上进行了无分类器引导的扩散模型训练,这是研究 FID 和 Inception scores 之间权衡的标准设置,始于 BigGAN 论文(Brock等,2019)。

我们实验的目的是作为概念验证,证明无分类器引导能够达到与分类器引导相似的 FID/IS 权衡,并理解无分类器引导的行为,不一定要将样本质量指标推到这些基准测试的最先进水平。为此,我们使用与 Dhariwal&Nichol(2021)引导扩散模型相同的模型架构和超参数(除了如第 2 节规定的连续时间训练);这些超参数设置是为分类器引导调整的,因此对于无分类器引导可能不是最优的。此外,由于我们将有条件和无条件模型分摊到相同的架构中,没有额外的分类器,实际上我们使用的模型容量比先前的工作更少。尽管如此,我们的无分类器引导模型仍然产生具有竞争力的样本质量指标,有时甚至胜过先前的工作,如下节所示。

4.1 改变无分类器引导强度

在这里,我们通过实验证明了本文的主要论点:无分类器引导能够以一种类似于分类器引导或GAN 截断的方式权衡 IS 和 FID。我们将我们提出的无分类器引导应用于 64x64 和 128x128 类别条件的 ImageNet 生成。在表 1 和图 4 中,我们展示了在我们的 64x64 ImageNet 模型上通过改变引导强度 w 对样本质量的影响;表 2 和图 5 展示了对我们的 128x128 模型的相同影响。我们考虑w ∈ {0, 0.1, 0.2,  ..., 4},并根据 Heusel 等人(2017)和 Salimans 等人(2016)的程序,对每个值使用 50000 个样本计算 FID 和 Inception scores。所有模型使用对数 SNR 端点 λmin = -20 和 λmax = 20。64x64 模型使用采样器噪声插值系数 v = 0.3,训练了 40 万步;128x128 模型使用 v = 0.2,并训练了 270 万步。

我们得到了最佳的 FID 结果是在有少量引导的情况下(w = 0.1 或 w = 0.3,具体取决于数据集),而最佳的 IS 结果是在强引导的情况下(w ≥ 4)。在这两个极端之间,我们看到了这两个感知质量指标之间的明显权衡,随着 w 的增加,FID 单调递减,而 IS 单调递增。我们的结果与Dhariwal&Nichol(2021)和 Ho 等人(2021)相比表现出色,事实上,我们的 128x128 结果是文献中最先进的。在 w = 0.3 时,我们模型在 128x128 ImageNet 上的 FID 得分优于分类器引导的ADM-G,并且在 w = 4.0 时,在 BigGAN-deep 评估其最佳 IS 截断水平时,我们的模型在 FID 和 IS 上均优于 BigGAN-deep。

图 1 显示了我们模型在不同引导水平下生成的随机样本:在这里,我们清楚地看到,增加无分类器引导强度的效果是减少样本变化,增加个体样本保真度。

4.2 改变无条件训练概率

在训练时,无条件生成模型的主要超参数是 p_uncond,即在条件和无条件扩散模型联合训练期间进行无条件生成训练的概率。在这里,我们研究了在 64x64 的 ImageNet 上改变 puncond 对样本质量的影响。

表格 1 和图 4 展示了 p_uncond 对样本质量的影响。我们使用 p_uncond 为 0.1、0.2、0.5 的模型进行训练,每个模型训练 40 万步,并在不同引导强度下评估样本质量。我们发现 p_uncond = 0.5 的性能始终不如 p_uncond 为 0.1 和 0.2 的性能好;p_uncond 为 0.1 和 0.2 的性能相当。根据这些发现,我们得出结论,扩散模型的模型容量只需要相对较小的部分专用于无条件生成任务,就能产生对样本质量有效的无分类器引导得分。有趣的是,在分类器引导方面,Dhariwal 和 Nichol 报告相对较小容量的分类器足以有效引导采样,与我们发现的无分类器引导模型的现象相一致。

4.3 改变采样步数

由于采样步数 T 已知对扩散模型的样本质量有很大影响,我们在 128x128 的 ImageNet 模型上研究了改变 T 对样本质量的影响。表格 2 和图 5 展示了在一系列引导强度下改变 T 为 128、256、1024 的效果。正如预期的那样,当增加 T 时,样本质量会提高,对于这个模型,T = 256 可以在样本质量和采样速度之间取得良好的平衡。 需要注意的是,T = 256 大致是 ADM-G(Dhariwal 和 Nichol,2021)所使用的采样步数,但我们的模型胜过了 ADM-G。然而,重要的是要注意,我们方法的每个采样步骤需要评估去噪模型两次,一次是条件 ϵ_θ(z_λ,c),一次是无条件 ϵ_θ(z_λ)。由于我们使用了与 ADM-G 相同的模型架构,以采样速度为标准进行公平比较的话,我们的 T = 128 设置会与 ADM-G 的 FID 分数相比表现较差。 

5. 讨论

我们的无分类器引导方法最实际的优势在于其极端简单性:在训练期间只需改变一行代码——随机丢弃条件——在采样期间混合条件和无条件得分估计。相比之下,分类器引导会使训练流程变得更加复杂,因为它需要额外训练一个分类器。这个分类器必须在带有噪声的 z_λ 上进行训练,因此无法使用标准的预训练分类器。

由于无分类器引导能够在不需要额外训练分类器的情况下权衡 IS 和 FID,我们已经证明可以使用纯生成模型执行引导。此外,我们的扩散模型由无约束的神经网络参数化,因此它们的得分估计不一定形成保守的矢量场,不像分类器梯度(Salimans & Ho, 2021)。因此,我们的无分类器引导采样器遵循与分类器梯度完全不同的步骤方向,因此不能被解释为对分类器的基于梯度的对抗攻击。因此,我们的结果表明,可以通过纯生成模型提升基于分类器的 IS 和 FID 指标,而采样过程不对使用分类器梯度进行基于梯度的对抗攻击。

我们还对引导的工作原理提出了直观的解释:它降低了样本的无条件可能性,同时增加了有条件可能性。无分类器引导通过使用负分数项降低了无条件可能性来实现这一点,据我们所知,这种方法尚未被探索,并且可能在其他应用中找到用途。

这里介绍的无分类器引导方法依赖于训练一个无条件模型,但在某些情况下可以避免这样做。如果类别分布已知且只有少数类别,我们可以利用

来从条件分数中获取无条件分数,而无需显式训练无条件分数。当然,这将需要与 c 的可能值一样多的前向传播,并且对于高维条件来说效率较低。

无分类器引导的一个潜在缺点是采样速度。通常,分类器可以比生成模型更小更快,因此分类器引导采样可能比无分类器引导更快,因为后者需要运行扩散模型的两个前向传播,一个用于条件分数,另一个用于无条件分数。通过改变架构在网络中后期注入条件,可能可以减轻运行扩散模型的多次传播的必要性,但这需要在将来的工作中进一步探讨。

最后,任何以降低多样性为代价提高样本保真度的引导方法都必须面对一个问题,即减少的多样性是否可接受。在部署模型中可能会有负面影响,因为在某些数据部分在整体数据的背景下是被低估的情况下,样本的多样性是重要的。尝试在保持样本多样性的同时提高样本质量将是未来研究的有趣方向。 

6. 结论

我们提出了无分类器引导,一种在扩散模型中提高样本质量同时降低样本多样性的方法。无分类器引导可以被看作是在没有分类器的情况下进行分类器引导,我们的结果显示了无分类器引导的有效性,证明了纯生成扩散模型能够最大化基于分类器的样本质量指标,完全避免了分类器梯度。我们期待在更广泛的环境和数据模态中进一步探索无分类器引导的应用。

S. 总结

S.1 主要贡献

分类器引导的条件扩散模型结合了扩散模型的分数估计和图像分类器的梯度,因此需要训练一个与扩散模型分开的图像分类器,这使扩散模型训练流程变得复杂。可以通过纯生成模型执行引导:在无分类器引导(classifier-free guidance)的情况下,联合训练条件和无条件扩散模型,并结合得到的条件和无条件分数估计以获得类似于使用分类器引导时的样本质量和多样性之间的权衡。                

S.2 无分类器引导

  • 训练一个由评分估计器 ϵ_θ(z) 参数化的无条件去噪扩散模型 p_θ(z) ,以及由 ϵ(z_λ,c) 参数化的条件模型 p_θ(z_λ∣c) 。
  • 使用一个神经网络来参数化这两个模型,其中对于无条件模型,当预测分数时可以简单地输入一个空标记符号 Ø 作为类别标识符 c,即 ϵ_θ(z_λ) = ϵ_θ(z_λ,c = Ø)。
  • 通过随机以一些概率 p_uncond​ 将 c 设置为无条件类别标识符 Ø 来联合训练无条件和有条件模型,这个概率是作为一个超参数进行设置的。(当然,可以选择单独训练而不是联合训练它们,也可选择联合训练是因为它非常简单实现,不会使训练流程变得复杂,也不会增加总参数数量)
  • 然后,使用以下条件和无条件分数估计的线性组合进行采样: 

相关文章:

  • AI生成中Transformer模型
  • HTML5面试题
  • SiLM5350MDBCA-DG车规级隔离驱动芯片,我们能为汽车智能提供什么?
  • Vue中英文翻译小结
  • 【PHP】身份证正则验证、校验位验证
  • 如何让.NET应用使用更大的内存
  • 数据结构:图文详解 队列 | 循环队列 的各种操作(出队,入队,获取队列元素,判断队列状态)
  • 计算机网络2
  • Excel怎样统计一列中不同的数据分别有多少个?
  • 【影像组学入门百问】#29---#31
  • 云服务器初次连接宝塔,连接不上
  • 基于QTreeWidget实现多级组织结构
  • 设计模式详解---模板方法模式
  • Python爬虫之两种urlencode编码发起post请求方式
  • Qt-QTransform介绍与使用
  • “大数据应用场景”之隔壁老王(连载四)
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 0x05 Python数据分析,Anaconda八斩刀
  • Android框架之Volley
  • Hibernate【inverse和cascade属性】知识要点
  • python 装饰器(一)
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • SpiderData 2019年2月23日 DApp数据排行榜
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 闭包,sync使用细节
  • 前端面试之闭包
  • 山寨一个 Promise
  • 实现简单的正则表达式引擎
  • 微信小程序:实现悬浮返回和分享按钮
  • 我与Jetbrains的这些年
  • 一道面试题引发的“血案”
  • 译自由幺半群
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (12)Linux 常见的三种进程状态
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (转)可以带来幸福的一本书
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bat文件调用java类的main方法
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net core 6 redis操作类
  • .NET 服务 ServiceController
  • .NET 中的轻量级线程安全
  • .NET大文件上传知识整理
  • .net反混淆脱壳工具de4dot的使用
  • .net中的Queue和Stack
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @NestedConfigurationProperty 注解用法