什么是扩散模型(深度学习)

扩散模型的灵感来自非平衡热力学。它们定义了一个马尔可夫链扩散步骤,以缓慢地向数据添加随机噪声,然后学习逆转扩散过程以从噪声中构建所需的数据样本。与VAE或流模型不同,扩散模型是通过固定程序学习的,并且潜在变量具有高维度(与原始数据相同)。

什么是扩散模型?

已经提出了几种基于扩散的生成模型,其基本思想类似,包括扩散概率模型(Sohl-Dickstein等,2015)、噪声条件得分网络(NCSN;Yang & Ermon2019)和去噪扩散概率模型(DDPM;Ho等,2020)。

正向扩散过程

给定从真实数据分布中采样的数据点,让我们来定义一个前向扩散过程,在这个扩散过程中,我们向样本中添加少量的高斯噪声,产生一系列嘈杂的样本。步长由方差表来控制

数据样本随着步伐的加快,其特征逐渐消失,变得更大。最终,当相当于各向同性的高斯分布。

上述过程的一个优点是我们可以采样在任何时间步使用重置参数化以封闭形式呈现。让

回想一下,当我们合并两个不同方差的高斯时,,新的分布是。此处合并的标准差为。通常,当样本噪声较大时,我们可以承受更大的更新步长,因此,并且

Langevin dynamics是物理学中的一个概念,用于对分子系统进行统计建模。结合了随机梯度下降,随机梯度Langevin dynamics(SGLD)(Welling & Teh 2011)可以从概率密度中产生样本在马尔科夫链中仅使用渐变

在这里是步长。当等于真实概率密度。与标准的SGD相比,随机梯度Langevin dynamics将高斯噪声注入参数更新中,以避免陷入局部最小值。

逆向扩散过程

如果我们可以逆向上述过程并从,我们将能从高斯噪声输入中重建真实样本。注意,如果足够小,也将是高斯分布。不幸的是,我们无法估计。因为它需要使用整个数据集,所以我们需要学习一个模型近似这些条件概率以运行你想扩散过程。

值得注意的是,当满足以下条件时,逆向条件概率是可处理的():

利用贝叶斯规则,我们可以得到:

在这里先省略这部分的细节。按照标准的高斯密度函数,均值和方差可以参数化,如下:

我们将代入以上公式:

这种设置与VAE非常相似,因此我们可以使用变分下界来优化负对数似然。

使用 Jensen 不等式也可以直接得到相同的结果。假设我们想要最小化交叉熵作为学习目标:

为了将方程中的每个项转换为可分析计算的,可以进一步将目标重写为几个KL散度和熵项的组合:

让我们分别标记变分下限损失中的每个元素:

是恒定的,在训练期间可以忽略,是高斯噪声。使用单独的离散解码器
参数化L_t训练损失

我们需要学习一个神经网络来近似逆向扩散过程中的条件概率分布,,希望通过预测,因为在训练时可以作为输入,我们可以重新参数化高斯噪声项,预测从输入,在时间步

损失项参数化,从而最小化

从实证研究来看,Ho等人, 2020发现,采用忽略加权项的简化方法来训练扩散模型效果会更好:

最终的结果是:

在这里是常数,不依赖于

噪声条件分数网络(NCSN)

Song & Ermon,2019)提出了一种基于分数的生成建模方法,其中样本通过随机梯度Langevin dynamics生成,使用通过分数匹配估计的数据分布梯度。每个样本的分数的密度概率定义为其梯度。评分网络经过训练可以估算它,。为了使其能够在深度学习环境中扩展到高维数据,他们建议使用去噪分数匹配(Vincent,2011)或切片分数匹配(Song等人,2019)。去噪分数匹配会向数据添加预先指定的小噪声与分数匹配。回想一下,随机梯度Langevin dynamics可以仅使用分数从概率密度分布中采样数据点在一个迭代过程中。然而,根据流形假设,即使观察到的数据看起来只是任意高维的,大多数数据预计会集中在低维流形中。这会给分数估计带来负面影响,因为数据点无法覆盖整个空间。在数据密度较低的区域,分数估计的可靠性较低。在添加一个小的高斯噪声后,扰动的数据分布会覆盖整个空间,得分估计网络的训练变得更加稳定。Song & Ermon,2019通过用不同级别的噪声扰动数据对其进行了改进,并训练了一个噪声条件下的得分网络来联合估计不同噪声水平下所有扰动数据的得分。噪声水平增加的时间表类似于正向扩散过程。如果我们使用扩散过程注释,得分近似于。给定高斯分布,我们可以将其密度函数对数的导数写为,在这里,。则:

参数化\beta_t

Ho,2020中,前向方差被设置为线性增加的常数序列,来自。与标准化图像像素值相比,它们相对较小。扩散模型在实验中表现出了高质量的样本,但仍然无法像其他生成模型那样实现有竞争力的模型对数似然。Nichol & Dhariwal,2021提出了几种改进技术,以帮助扩散模型获得更低的NLL。其中一项改进是使用基于余弦的方差调度。调度函数的选择可以是任意的,只要它在训练过程的中间提供近乎线性的下降,并在周围提供细微的变化即可

其中小偏移是为了防止靠近时太小,

逆向过程方差的参数化\sum_{\theta}

Ho等人,2020选择修复作为常量,而不是让它们可学习和设置,在这里不是学习而是设置为或者因为发现学习对角方差导致训练不稳定,样本质量较差。Nichol & Dhariwal,2021提出学习作为之间的插值通过模型预测混合向量

然而,简单的目标不依赖于为了增加依赖性,他们构建了一个混合目标在这里很小,并且停止梯度在里面术语仅指导学习。他们通过实证研究观察到由于梯度噪声的存在,优化起来相当困难,因此他们建议使用时间平均平滑版本的具有重要性抽样。

条件生成

在使用条件信息的图像(例如ImageNet数据集)训练生成模型时,通常会生成以类标签或一段描述性文本为条件的样本。

分类器引导扩散

为了将类别信息明确地纳入传播过程,Dhariwal & Nichol,2021训练了一个分类器在嘈杂的图像上并使用渐变引导扩散采样过程朝向调节信息(例如目标类别标签)通过改变噪声预测来实现。 回想一下我们可以写出联合分布的得分函数如下:

因此,一个新的分类器引导预测器将采用以下形式:

为了控制分类器指导的强度,我们可以添加一个权重对于delta部分:

由此产生的消融扩散模型(ADM)和具有附加分类器指导的模型(ADM-G)能够取得比SOTA生成模型(例如BigGAN)更好的结果。

此外,Dhariwal & Nichol,2021U-Net架构进行了一些修改,其性能优于采用扩散模型的GAN。架构修改包括更大的模型深度/宽度、更多的注意力头、多分辨率注意力、用于上/下采样的BigGAN残差块、残差连接重新缩放和自适应组规范化(AdaGN)。

无分类器引导

没有独立的分类器,仍然可以通过合并条件和非条件扩散模型的分数来运行条件扩散步骤(Ho & Salimans, 2021)。让无条件去噪扩散模型通过分数估计器进行参数化和条件模型通过参数化。这两个模型可以通过单个神经网络进行学习。确切地说,条件扩散模型使用配对数据进行训练,其中条件信息定期随机丢弃,以便模型知道如何无条件地生成图像,即。隐式分类器的梯度可以用条件和非条件分数估计器来表示。一旦插入分类器引导的修改分数,该分数就不依赖于单独的分类器。

他们的实验表明,无分类器指导可以在FID(区分合成图像和生成图像)和IS(质量和多样性)之间实现良好的平衡。引导扩散模型GLIDENichol、Dhariwal 和 Ramesh等人,2022)探索了两种引导策略,即CLIP引导和无分类器引导,并发现后者更受欢迎。他们假设这是因为CLIP引导利用对抗性示例对CLIP模型进行攻击,而不是优化更匹配的图像生成。

加速扩散模型

通过遵循逆向扩散过程的马尔可夫链从DDPM生成样本非常慢,因为最多可以达到一到几千步。Song等人,2020:“例如,从DDPM中采样50k32 × 32大小的图像大约需要20个小时,但从Nvidia 2080 Ti GPU上的GAN中采样只需不到一分钟。”

减少采样步骤和蒸馏

一种简单的方法是运行跨步采样计划(Nichol & Dhariwal,2021),每隔一段时间进行一次采样更新减少流程的步骤步骤。新的采样计划是在这里。对于另一种方法,让我们重写通过所需的标准偏差进行参数化

回想一下,,因此我们有:

我们可以调整作为控制采样随机性的超参数。特殊情况是使采样过程具有确定性。这种模型被称为去噪扩散隐式模(DDIM;Song等人,2020)。DDIM具有相同的边际噪声分布,但确定性地将噪声映射回原始数据样本。在生成过程中,我们不必遵循整个链条,而是步骤的子集。我们表示为在该加速轨迹中分为两个步骤。DDIM更新步骤为:

虽然所有模型都经过训练在实验中的扩散步骤中,他们观察到DDIM)可以生产出最优质的样品时较小,而DDPM)在小规模上表现更差。当我们能够运行完整的逆向马尔可夫扩散步骤时,DDPM确实表现得更好()。使用DDIM,可以训练扩散模型进行任意数量的前向步骤,但只能从生成过程中的一部分步骤中进行采样。

DDPM相比,DDIM能够:

  • 使用更少的步骤生成更高质量的样本。
  • 由于生成过程是确定性的,因此具有“一致性”属性,这意味着以相同潜在变量为条件的多个样本应该具有相似的高级特征。
  • 由于一致性,DDIM可以在潜在变量中进行语义上有意义的插值。

渐进式蒸馏(Salimans & Ho,2022)是一种将训练好的确定性采样器蒸馏成采样步骤减半的新模型的方法。学生模型从教师模型初始化,并朝着一个学生DDIM步骤匹配2个步骤的目标进行去噪,而不是使用原始样本作为去噪目标。在每次渐进蒸馏迭代中,我们可以将采样步骤减半。

一致性模型(Song等人,2023)学习映射任何中间噪声数据点沿着扩散采样轨迹直接回到原点。由于它具有自一致性,因此被称为一致性模型,因为同一轨迹上的任何数据点都映射到同一原点。

给定轨迹,一致性函数定义为和方程适用于所有人。什么时候是一个识别函数。该模型可以参数化如下,其中函数的设计方式是

一致性模型可以一步生成样本,同时仍保持通过多步采样过程来交易计算以获得更好质量的灵活性。论文介绍了两种训练一致性模型的方法:

  • 一致性蒸馏(CD):通过最小化由相同轨迹生成的对之间的模型输出差异,将扩散模型蒸馏为一致性模型。这使得抽样评估的成本大大降低。一致性蒸馏损失为:

    在这里:

    • 是单步`ODE`求解器的更新函数;
    • ,具有均匀分布
    • 网络参数EMA版本的这极大地稳定了训练(就像在DQN或动量对比学习中一样);
    • 是一个正距离度量函数,满足当且仅当。例如或`LPIPS`(学习感知图像块相似性)距离;
    • 是一个正权重函数,论文中设置
  • 一致性训练(CT):另一种选择是独立训练一致性模型。请注意,在CD中,预先训练的评分模型用于近似真实得分但在CT中,我们需要一种方法来估计这个得分函数,结果是存在为CT损失定义如下:

    根据论文中的实验,他们发现:

  • Heun ODE求解器比欧拉一阶求解器效果更好,因为高阶 ODE 求解器在同样的条件下估计误差更小

  • 在距离度量函数的不同选项中LPIPS指标比距离。

  • 较小导致更快的收敛但样本更差,而更大的导致收敛速度较慢,但​​收敛时样本更好。

潜变量空间

潜在扩散模型(LDM;Rombach & Blattmann等人,2022)在潜变量空间而不是像素空间中运行扩散过程,从而降低训练成本并加快推理速度。它的动机是观察到图像的大多数位都对感知细节有贡献,并且语义和概念组成在经过大量压缩后仍然存在。LDM通过生成模型学习松散地分解感知压缩和语义压缩,首先使用自动编码器修剪像素级冗余,然后使用学习到的潜在扩散过程操纵/生成语义概念。

感知压缩过程依赖于自动编码器模型。编码器用于压缩输入图像转换为更小的二维潜在向量,其中下采样率。然后解码器根据潜在向量重建图像,。本文探讨了自动编码器训练中的两种正则化类型,以避免潜在空间中出现任意高的方差。

  • KL-reg:对学习到的潜在标准正态分布的小KL惩罚,类似于VAE
  • VQ-reg:在解码器内使用矢量量化层,类似VQVAE,但量化层被解码器吸收。

扩散和去噪过程发生在潜在向量上。去噪模型是一个时间条件化的U-Net,并增加了交叉注意机制,以处理用于图像生成的灵活条件信息(例如类标签、语义图、图像的模糊变体)。该设计相当于使用交叉注意机制将不同模态的表示融合到模型中。每种类型的条件信息都与特定于域的编码器配对投射条件输入可以映射到交叉注意组件的中间表示,

提高AI生成内容的分辨率和整体质量

为了生成高分辨率的高质量图像,Ho等人,2021提出使用多个扩散模型的管道来提高分辨率。管道模型之间的噪声条件增强对于最终的图像质量至关重要,即对条件输入应用强大的数据增强每个超分辨率模型。调节噪声有助于减少管道设置中的复合误差。U-net是用于高分辨率图像生成的扩散建模中模型架构的常见选择。

他们发现最有效的噪声是在低分辨率下应用高斯噪声,在高分辨率下应用高斯模糊。此外,他们还探索了两种需要对训练过程进行小幅修改的条件增强形式。请注意,条件噪声仅适用于训练,而不适用于推理。

  • 截断条件增强会在步骤早期停止扩散过程低分辨率。
  • 非截断条件增强会运行完整的低分辨率逆过程,直到步骤0,但随后会通过然后喂养s损坏的进入超分辨率模型。

两阶段扩散模型unCLIP(Ramesh等人,2022)年大量利用CLIP文本编码器来生成高质量的文本引导图像。给定一个预训练的CLIP模型以及扩散模型的配对训练数据,,在这里是一张图片,是相应的标题,我们可以计算CLIP文本和图像嵌入,unCLIP并行学习两个模型:

  • 先前模型:输出CLIP图像嵌入鉴于文本
  • 解码器:生成图像给定CLIP图像嵌入以及可选的原始文本

这两个模型可以实现条件生成,因为:

unCLIP遵循两阶段图像生成过程:

  • 给定文本首先使用CLIP模型生成文本嵌入。使用CLIP潜在空间可以通过文本进行零样本图像处理。
  • 扩散或自回归先验处理此CLIP文本嵌入以构建图像先验,然后构建扩散解码器根据先前条件生成图像。该解码器还可以根据图像输入生成图像变化,同时保留其风格和语义。

Imagen(Saharia等人,2022)不使用CLIP模型,而是使用预先训练的LLM(即冻结的T5-XXL文本编码器)对文本进行编码以生成图像。普遍趋势是,更大的模型尺寸可以带来更好的图像质量和文本-图像对齐。他们发现T5-XXLCLIP文本编码器在MS-COCO上实现了类似的性能,但人类评估更喜欢DrawBench(涵盖11个类别的提示集合)上的T5-XXL。当应用无分类器引导时,增加可能会导致更好的图像文本对齐,但更差的图像保真度。他们发现,这是由于训练测试不匹配造成的,也就是说,因为训练数据保持在范围内,测试数据也应该如此。引入两种阈值策略:

  • 静态阈值:剪辑预测
  • 动态阈值:在每个采样步骤中,计算作为某个百分位绝对像素值;如果,将预测剪辑到并除以

他们发现噪声条件增强、动态阈值和高效U-Net对于图像质量至关重要,但缩放文本编码器大小比U-Net大小更重要。

模型架构

扩散模型有两​​种常见的主干架构选择:U-NetTransformerU-Net(Ronneberger等人,2015)由下采样堆栈和上采样堆栈组成。

  • 下采样:每个步骤包括重复应用两个3x3卷积(无填充卷积),每个卷积后跟一个ReLU和一个步幅为22x2最大池化。在每个下采样步骤中,特征通道的数量都会加倍。
  • 上采样:每个步骤包括对特征图进行上采样,然后进行2x2卷积,并且每次将特征通道数量减半。
  • 快捷方式:快捷方式连接导致与下采样堆栈的相应层连接,并为上采样过程提供必要的高分辨率特性。

为了实现以附加图像为条件的图像生成,以获取Canny边缘、Hough线、用户涂鸦、人体骨骼、分割图、深度和法线等构图信息,ControlNet(Zhang等人,2023)通过在U-Net的每个编码器层中添加可训练的原始模型权重副本的“夹层”零卷积层来引入架构变化。确切地说,给定一个神经网络块ControlNet执行以下操作:

  • 首先冻结原始参数原始区块。
  • 将其克隆为具有可训练参数的副本以及附加条件向量
  • 使用两个零卷积层,表示为,它是1x1卷积层,权重和偏差都初始化为零,用于连接这两个块。零卷积通过在初始训练步骤中消除梯度作为随机噪声来保护这个主干。
  • 最终输出为:

用于扩散建模的扩散变换器(DiT;Peebles & Xie,2023)对潜在斑块进行操作,使用与LDM(潜在扩散模型)相同的设计空间。DiT具有以下设置:

  • 获取输入的潜在表示作为DiT的输入。
  • “修补”尺寸噪声潜伏期分成大小并将其转换为大小为
  • 然后,这个token序列会经过Transformer块。他们正在探索三种不同的设计,以根据时间步长等上下文信息进行生成或类别标签。在三种设计中,adaLN(自适应层范数)-Zero效果最好,优于上下文条件和交叉注意块。尺度和移位参数,,是从嵌入向量的总和回归而来的。维度缩放参数也会回归并立即应用于DiT块内的任何残差连接之前。
  • Transformer解码器输出噪声预测和输出对角协方差预测。

Transformer架构可以轻松扩展,这一点众所周知。这是DiT的最大优势之一,因为其性能会随着计算量的增加而提升,而且实验表明,更大的DiT模型具有更高的计算效率。

结论

  • 优点:可处理性和灵活性是生成模型中两个相互冲突的目标。可处理模型可以通过分析评估并廉价地拟合数据(例如通过高斯或拉普拉斯),但它们无法轻松描述丰富数据集中的结构。灵活的模型可以拟合数据中的任意结构,但评估、训练或从这些模型中采样通常成本高昂。扩散模型既具有分析可处理性,又具有灵活性。
  • 缺点:扩散模型依赖于较长的马尔可夫链扩散步骤来生成样本,因此在时间和计算方面可能非常昂贵。虽然已经提出了新方法来加快该过程,但采样速度仍然比GAN慢。