扩散模型是神经网络架构之一,处于生成式 AI 最前沿,最显著的代表是流行的文本转图像模型,包括 Stability AI 的 Stable Diffusion、OpenAI 的 DALL-E(从 DALL-E-2 开始)、Midjourney 和 Google 的 Imagen。它们改善了用于图像合成的其他机器学习架构的性能和稳定性,例如变分自动编码器 (VAE)、生成式对抗网络 (GAN) 和自回归模型(如 PixelCNN)。
扩散模型的灵感源自物理学,将像素视为一滴墨水的分子,随着时间的推移在一杯水中扩散。就像墨水分子的随机运动最终导致它们在玻璃杯中均匀分散一样,在图像中随机引入噪声最终产生看起来像电视静电的效果。通过对扩散过程进行建模,然后以某种方式学习反向操作扩散过程,人工智能模型就可以通过对随机噪声样本进行简单的“去噪”处理来生成新图像。
扩散模型与图像生成和其他图像处理任务(例如修复和超分辨率)最密切相关,但它们的应用可以扩展到其他领域,包括音频生成、药物设计和分子生成。为简单起见,本文将重点介绍图像生成。
要解释和理解扩散模型,首先必须注意,现在称为“扩散”的生成过程是通过两种不同的数学方法在两个不同的场合独立发现的。简而言之,扩散模型的概念非常简单,但数学原理却非常复杂,并且存在多种“工作”方式。
随后的发展借鉴这两种方法的思想,融合每种方法的优势,最终产生目前在图像生成领域占据主导地位的现代扩散模型。因此,对扩散模型的历史和理论的简要回顾不仅有助于理解扩散模型的工作原理,还有助于了解背后的原因。
Sohl-Dickstein 等人 在 2015 年的论文《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》中首次引入了灵感源自物理学的扩散模型。他们的算法应用了 Langevin 动力学(一种对分子系统运动进行建模的方法)来支撑扩散模型的基本前提:将数据转化为噪声,以便将噪声转化为数据。
与变分自编码器 (VAE) 等大多数生成式模型一样,Sohl-Dickstein 的算法可对概率密度进行建模:随机采样变量 x 落入特定值范围的相对似然。本质上,为训练数据集进行概率密度函数建模允许算法生成高度可能适合训练数据分布的样本。在生成新图像时,模型会根据从训练数据模式中学到的概率分布,假设像素值以这种特定方式分布的概率很高。
从逻辑上讲,概率密度函数要求所有可能性的似然总和为 1。换句话说,所有可能性的百分比概率总和必须正好为 100%。在实践中,这通常需要一个归一化常数:概率函数中包含的一个值,它可将总概率降至 1。
计算适用于所有可能变量值的归一化常数通常很困难:技术上可以求解,但需要无限的时间来计算。在这种情况下,基于似然的模型必须仅限于特定模型架构,或者开发巧妙的解决方法,以易于处理的方式近似归一化常数。
与 Sohl-Dickstein 的论文无关,Yang Song 和 Stefano Ermon 在他们 2019 年发表的论文《Generative Modeling by Estimating Gradients of the Data Distribution》中开发了一种基于能量的模型,而该模型被称为噪声条件分数网络。他们的算法对对数 (log) 概率密度函数 p(x) 的梯度 (∇x)进行了建模。 对数概率密度函数的梯度写为 ,该函数称为 Stein 分数或简称为“分数函数”。
与传统的概率密度函数不同,分数函数不需要归一化常数,因为它们不直接进行概率密度建模(因此不必将总概率归一化为 1)。相反,它们通过分数匹配进行训练:学习模型参数 θ,从而生成模型 pθ(x),其分数(换句话说,其梯度)与训练数据的数据分布 q(x) 相匹配。
这种基于分数的生成模型 (SGM) 的另一个优点是,与基于似然的模型不同,它们不会对 pθ(x) 的模型架构施加太多限制。
在探索提高模型性能的方法时,Song 和 Ermon 不约而同地采用了与 Sohl-Dickstein 等人相同的技术。他们的论文指出,“用随机高斯噪声扰动数据使得数据分布更适合基于分数的生成建模。”他们的模型使用U-Net 架构(最初为图像分割开发)构建而成,同样应用了朗之万动力学来生成样本。
2020 年,Ho 等人在他们的开创性论文《Denoising diffusion probabilistic models》(DDPM) 中提议利用 Sohl-Dickstein 的方法并通过使用变分推理来生成高质量图像。他们的论文表明,最大化证据下限 (ELBO)(一种将基于概率的优化问题重写为易于处理的方法)来训练扩散模型本质上等同于用于训练 SGM 的分数匹配目标的组合。
Ho 等人利用分数匹配实施 Sohl-Dickstein 的方法,证明了扩散概率模型可以获得与 GAN(当时最先进的模型)相媲美的图像质量。Song、Ermon、Sohl-Dickstein 等人(包括 VAE 的发明者 Diederik P. Kingma)在他们 2021 年论文《Score-Based Generative Modeling through Stochastic Differential Equations》中进一步探讨了这些联系。
同年晚些时候,Dhariwal 和 Nichol 利用前述论文中的洞察分析,发表了《Diffusion Models Beat GANs on Image Synthesis》一文,牢固地确立了扩散模型作为新的最先进技术的地位。
DDPM(而不是 SGM)通常仍然是扩散模型的主要模式,不过在随后的研究中有所改进。例如,2022 年颇具影响力的论文《High-Resolution Image Synthesis with Latent Diffusion Models》标志着效率和成本效益方面的重要进步。
在训练过程中,扩散模型利用随机噪声逐步扩散数据点,直到数据点被破坏,然后学习反向操作扩散过程,重建原始数据分布。
然后,经过训练的扩散模型可以仅通过对纯噪声的随机初始样本去噪,生成类似于训练数据的新数据点。从概念上讲,这类似于去噪自动编码器,其中噪声图像会充当潜在变量。
直接将随机噪声转换为相干图像极其困难和复杂,但是将噪声图像转换为噪声稍小的图像相对容易和直接。因此,扩散模型将反向扩散过程定义为从简单分布(如高斯噪声)到较复杂分布(如相干图像)的逐步渐进转换。
先训练然后部署扩散的过程可以分解为三个关键阶段:
前向扩散过程的目的是将训练数据集中的干净数据(例如图像或音频样本)转换为纯噪声。最常见的方法是迭代注入高斯噪声,直到整个数据分布都是高斯分布。
从数学上讲,这个逐步过程可以用马尔可夫链来表达:一种随机过程(遵循某些概率规则的随机过程),用于对连续时间序列数据进行建模。在马尔可夫链中,每个时间步长的结果仅受其前一个时间步长的影响。简而言之:xt,即马尔可夫链 x 在时间步长 t 的状态,仅受 xt-1 直接影响。定义从任何 xt 转移到 xt+1 的数学函数称为转移核。
在每个时间步长 t,向 xt-1 添加少量高斯噪声,然后重新缩放图像以保持恒定图像大小,但会不断注入随机像素。在此公式中,x0 是原始的干净数据点;x1 是第一个时间步长后的数据点,其中添加了少量高斯噪声;xT 是前向扩散过程的最终状态。如果 T 足够大,即经过足够多的步长后,xT 将变为纯高斯噪声。
我们将每个前向步长定义为 预测数据分布状态 q(xt),给定 q(xt-1)。在标准 DDPM 中,这个前向过程不涉及任何机器学习:马尔可夫链的最终结果始终是高斯分布,因此不需要优化。
在 DDPM 中,马尔可夫链中每个步长添加的高斯噪声既不是恒定的,也不是任意的。相反,噪声来自原始图像的结构,并且添加噪声的速率随着每个连续步长而稳步增加。
通过平衡两个相互竞争的优先级,改变噪声量既可以提高模型训练的稳定性,又可以增强整体性能。正如 Yang Song 在其关于基于分数的生成模型的博客中所述:
回想一下,任何高斯(正态)分布都有一个均值 和方差。另一个参数 β 是转移核中高斯噪声均值和方差的比例因子,它定义前向马尔科夫链的每个步长。在给定步长中改变 β 值会导致在该步长添加的高斯噪声发生变化。β1 是时间步长 1 的方差;βt 是时间步长 t 的方差,依此类推,直到 βT。
每个步骤的 β 的比率值反过来取决于方差时间表。
在每个步长 t 中,图像均与前一个步长中的迭代略有偏移(根据均值),且会将噪声添加到图像的这个偏移版本中(根据方差)。每次偏移和增加噪声的幅度都取决于 βt 值:由于 βt 会根据方差时间表增加,因此扩散速率能稳步增加。β 始终是介于 0 和 1 之间的值:因此,0 < β1 < β2 < … < βT < 1。
为 β 选择特定方差时间表是一个重要的考虑因素。它通常作为超参数进行手动设置,要么固定为常量值,要么根据某个公式进行,并预先确定 β 的起始值和终止值。在 DDPM 论文中,Ho 等人采用了具有 1,000 个步长的线性时间表,其中 β1 = 10 -4 且 βT = 0.02。后来的研究发现,使用余弦时间表等其他类型的时间表,[1] 或将时间表本身作为另一个学习参数,[2]可以提高性能和效率。
βt 值决定在步长 t 添加的高斯噪声的均值和方差。
总之,在每个步长 t 中,图像与前一个步长中的迭代略有偏移(根据均值),并且将噪声添加到图像的这个偏移版本中(根据方差)。每次偏移和增加噪声的幅度都取决于 βt 值:由于 βt 根据方差时间表增加,因此扩散速率稳步增加。
因为高斯噪声的添加是逐渐开始的,并且噪声本身始终来自前一个步长中原始图像的基本结构,所以在许多步长中都保留原始图像的基本特性。这使模型能够在反向扩散过程中有意义地学习原始数据分布的模式和结构。
这种逐步过程的一个缺点是它很麻烦并且计算成本高:对于可能包含数千或数百万张图像的训练数据集中的每一张图像,前向过程需要数十或数百个单独步长。
无需反复添加噪声,只需重新参数化表达式 作为新参数 ,即可巧妙地重写前向过程的公式。通过马尔可夫链的“良好特性”,这个新参数可以进一步扩展为一个附加参数 ,在马尔可夫链中 每个渐进步长直到该点,由迭代乘法计算得出。这个附加参数基本上反映 xt 的信噪比 (SNR):换句话说,在时间步长 t 保留多少原始图像。
例如,在 x1,一次添加了少量噪声。 值接近 1,这意味着图像仍保留大部分原始“信号”。在后续步长中,例如 x50,多次添加了噪声。因为 , 值始终小于 1。因为 , 值在第 50 个步长时将更接近 0,这意味着更多的原始图像已被噪声取代。在时间步长 T,xT 完全是噪声,且 值接近 0。
虽然该等式的复杂推导超出本文的范围,但有两个重要要点有助于理解此重新参数化技巧的重要性:
在扩散模型中,反向扩散过程才是真正的机器学习过程。在学习执行前向过程的噪声逐步的反向操作时,该模型本质上是学习将纯高斯噪声去噪为干净的图像。神经网络经过训练后,即可利用这种能力通过逐步反向扩散从高斯噪声中生成新图像。
从理论上讲,该模型的任务可以看作是前向扩散的简单逆转。前向过程从训练数据集的真实数据分布 q(x) 中采样的数据点 x0 开始,定义为 :即,给定 ,计算 。与之相反,反向扩散定义为 。但实际上,计算 很难。
相反,通过两种解决方法来制定训练任务:
再次回顾一下,在前向扩散中添加的高斯噪声的均值不是任意的:尽管该噪声确实是随机的,但其结构最初源自原始图像 x0的结构。因此,该模型能够学习通过反向扩散准确预测噪声,从而不仅能学会图像去噪,还能以隐式方式学习 x0 的结构。
用于扩散模型的特定训练目标与用于优化变分自编码器 (VAE) 的重建损失项密切相关。与 VAE 一样,扩散模型通过最大化多个损失项组合的变分下限 (VLB)(也称为证据下限 (ELBO))来进行优化。
最大化 VLB 用于变分推理,以近似难以处理的分数函数 :它并不直接最小化误差,而是将等式重新表述为最大化模型预测准确性的最小估计值(或下限)。
所用的损失项均反映前向扩散步长 q 的结果与 pθ 预测的反向步长之间的 Kullback-Leibler 散度(或“KL 散度”,通常表示为 DKL)。KL 散度用于衡量两个概率分布之间的差异,例如,一个图像中像素值分布与另一个图像中像素值分布之间的差异。
具体而言,扩散模型的损失函数结合三个损失项:LT、Lt 和 L0。
尽管复杂的数学推导超出了本文的范围,但 VLB 最终可以简化为均方误差 (MSE),即在模型 预测的噪声以及前向过程 中在每个时间步长添加的真实噪声。这就解释了为什么模型的输出是每个步长的噪声预测,而不是去噪图像本身。
通过计算损失函数在反向传播期间的损失函数梯度,然后调整模型权重以通过梯度下降来最小化损失函数,模型在整个训练数据集中的预测将变得更加准确。
扩散模型学会准确估算每一个步长要减去的噪声后,即可通过从随机噪声图像 xT 中采样来生成新图像,从其学习的数据分布中提取特征,并进行去噪 T 个步长。与 VAE 类似,在采样过程中引入少量随机性元素使扩散模型能够生成类似于训练数据的新图像,而不是直接复制训练图像。
与反向扩散训练过程不同,生成过程中的步长数不必与前向过程中使用的步长数相匹配。之所以能够做到这一点,是因为模型经过训练,能够预测每个图像步长的全部噪声,而不是该步长中要去除的特定噪声量。
步长数越少,速度越快,计算需求越低,但可能会在细节上有所权衡;步长数越多通常可以提高准确性,但代价是速度降低、计算成本增加。
虽然标准扩散模型可以随机生成高质量训练图像,但图像生成模型的大多数实际用途都需要对模型输出进行某种控制。引导型扩散模型允许用户在特定引导下调节生成的图像。
最常见的引导型扩散模型是文本转图像扩散模型,它允许用户使用文本提示调节输出,例如“a giraffe wearing a top hat”。这需要将扩散模型与单独的大型语言模型 (LLM) 配对来解读文本提示,该理论由 Google 在论文《Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding》中首次提出。
标准扩散模型旨在预测无条件评分函数 ∇xlogp(x):换句话说,模型 p 生成的图像 x 与训练数据 x 拟合的可能性的对数梯度。引导扩散模型引入了特定的视觉类别 y(例如,“长颈鹿”),并预测条件评分函数 ∇xlogp(x|y):换句话说,必须拟合类别 y 的图像 x 的可能性。
引导型扩散的方法可以分为两个类别:
尽管传统扩散模型具有生成高质量图像的最先进能力,但它们有两个值得注意的弊端:速度慢且计算成本高。从稳定扩散模型开始,潜在扩散模型的出现大大减少了这些弊端。
隐式扩散模型背后的前提非常简单,再次利用了与变分自编码器 (VAE) 的联系。该模型能够不在高维像素空间中应用扩散过程(即直接应用于输入图像),而是先将输入投影到低维隐式空间,然后在该空间中应用扩散过程。
从本质上讲,潜在扩散模型采用类似 VAE 的自动编码器架构来训练编码器输出输入数据 x 的潜在表示 z。然后将这些潜在表示用作标准扩散模型的输入,通常使用 U-Net 架构。由于扩散模型处理的是低维数据,因此会将输出输入解码器网络,对所需最终图像大小进行上采样。
了解 CEOs 如何在生成式 AI 所能创造的价值与其所需的投资和带来的风险之间取得平衡。
学习基本概念并通过亲手实验、课程、指导项目、试用等方式培养您的技能。
了解如何自信地将生成式 AI 和机器学习融入您的业务中。
想要从 AI 投资中获得更好的回报吗?了解如何通过帮助您最优秀的人才构建和提供创新的新解决方案,在关键领域扩展生成式人工智能来推动变革。
我们对 2,000 家组织进行了调查,旨在了解他们的 AI 计划,以发现哪些方法有效、哪些方法无效,以及如何才能取得领先。
IBM Granite 是我们开放式、性能优异、值得信赖的 AI 模型系列,专门为企业量身定制,并经过优化,可以帮助您扩展 AI 应用。深入了解语言、代码、时间序列和防护措施选项。
了解如何为您的用例选择最合适的 AI 基础模型。
深入了解强大 AI 战略的 3 个关键要素:创造竞争优势、在整个企业中扩展 AI 以及推进值得信赖的 AI。
注意:所有链接均为 ibm.com 外部链接。
[1]“Improved Denoising Diffusion Probabilistic Models”,arXiv,2021 年 2 月 18 日
[2]“Variational Diffusion Models”,arXiv,最后修订日期为 2023 年 4 月 14 日