Skip to content

什么是扩散模型:综述

扩散模型的灵感来自非平衡热力学。它定义了一个扩散步骤的马尔可夫链,逐步向数据添加随机噪声,然后学习逆转该过程,从而从噪声中构建所需的数据样本。与 VAE 或流模型不同,扩散模型通过固定过程学习,且潜在变量与原始数据同维。

图 1. 不同类型生成模型的概述。

1. 什么是扩散模型?

已经提出了几种基于扩散的生成模型,这些模型具有相似的思想,包括扩散概率模型(Sohl-Dickstein 等人,2015 年)、噪声条件分数网络(NCSN;Yang 和 Ermon,2019 年)和去噪扩散概率模型(DDPM;Ho 等人,2020 年)。

1.1 前向扩散过程

给定一个从真实分布中采样的数据 x0q(x),前向扩散过程以 T 步逐渐向样本中添加少量高斯噪声,产生噪声样本序列 x1,,xT,噪声强度由方差表 {βt(0,1)}t=1T 控制。

q(xtxt1)=N(xt;1βtxt1,βtI),q(x1:Tx0)=t=1Tq(xtxt1).

t 逐渐增大,xt 逐渐失去可辨识特征;最终当 t 时,xT 近似于一个各向同性高斯分布。

图 2. 通过逐步添加(移除)噪声生成样本的前向(反向)扩散过程的马尔可夫链。(图片来源:[Ho et al.2020](https://arxiv.org/abs/2006.11239),带有一些附加注释)

上述过程的一个很好的特性是,利用重参数化技巧可以在任意时间步 t 以封闭形式采样 xt。令 αt=1βtα¯t=i=1tαi,则:

\begin{aligned} \mathbf{x}_t &= \sqrt{\alpha_t}\mathbf{x}_{t-1} + \sqrt{1 - \alpha_t}\boldsymbol{\epsilon}_{t-1} & \text{ , \quad \text{where}} \boldsymbol{\epsilon}_{t-1}, \boldsymbol{\epsilon}_{t-2}, \dots \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \\ &= \sqrt{\alpha_t \alpha_{t-1}} \mathbf{x}_{t-2} + \sqrt{1 - \alpha_t \alpha_{t-1}} \bar{\boldsymbol{\epsilon}}_{t-2} & \text{ , \quad \text{where}} \bar{\boldsymbol{\epsilon}}_{t-2} \text{ merges two Gaussians (*).} \\ &= \dots \\ &= \sqrt{\bar{\alpha}_t}\mathbf{x}_0 + \sqrt{1 - \bar{\alpha}_t}\boldsymbol{\epsilon} \\ q(\mathbf{x}_t \vert \mathbf{x}_0) &= \mathcal{N}(\mathbf{x}_t; \sqrt{\bar{\alpha}_t} \mathbf{x}_0, (1 - \bar{\alpha}_t)\mathbf{I}) \end{aligned}

() 回想一下,当我们合并两个具有不同方差的高斯分布,N(0,σ12I)N(0,σ22I)时, 得到的新的分布是N(0,(σ12+σ22)I)。这里的合并标准差是(1αt)+αt(1αt1)=1αtαt1

通常,当样本噪声更大时,可以承受更大的更新步长,所以 β1<β2<<βT因此α¯1>>α¯T

1.1.1 与随机梯度朗之万动力学的联系

朗之万动力学(Langevin dynamics )是物理学的一个概念,用于统计建模分子系统。结合随机梯度下降,随机梯度 Langevin 动力学( Welling & Teh 2011 ) 可以在一系列更新的马尔可夫链中仅使用 xlogp(x)的梯度从概率密度p(x)中产生样本:

xt=xt1+δ2xlogq(xt1)+δϵt,whereϵtN(0,I)

其中 δ是步长。当T,ϵ0时,xt等于真实概率密度p(x)

与标准随机梯度下降 SGD 相比,随机梯度 Langevin 动力学将高斯噪声注入参数更新,以避免陷入局部最小值。

1.2 反向扩散过程

如果说前向过程(forward)是加噪的过程,那么逆向过程(reverse)就是扩散模型的去噪过程,也称为生成过程。

如果我们可以反转上述过程并从 q(xt1|xt)中采样,我们将能够从高斯噪声输入xTN(0,I)重建真实样本。注意,如果βt足够小,q(xt1|xt)也将是高斯分布。不幸的是,我们无法轻易估计q(xt1|xt), 因为它需要用到整个数据集,因此我们需要学习一个模型pθ近似这些条件概率以运行反向扩散过程。

pθ(x0:T)=p(xT)t=1Tpθ(xt1|xt)pθ(xt1|xt)=N(xt1;μθ(xt,t),Σθ(xt,t))
img

Fig. 3. An example of training a diffusion model for modeling a 2D swiss roll data. (Image source: Sohl-Dickstein et al., 2015)

值得注意的是,以 x0为条件的反向条件概率是可行的:

q(xt1|xt,x0)=N(xt1;μ~(xt,x0),β~tI)

使用贝叶斯法则,我们有:

q(xt1|xt,x0)=q(xt|xt1,x0)q(xt1|x0)q(xt|x0)exp(12((xtαtxt1)2βt+(xt1α¯t1x0)21α¯t1(xtα¯tx0)21α¯t))=exp(12(xt22αtxtxt1+αtxt12βt+xt122α¯t1x0xt1+α¯t1x021α¯t1(xtα¯tx0)21α¯t))=exp(12((αtβt+11α¯t1)xt12(2αtβtxt+2α¯t11α¯t1x0)xt1+C(xt,x0)))

其中 C(xt,x0)是不涉及xt1的某些函数并且省略了细节。按照标准高斯密度函数,均值和方差可以进行如下参数化(其中αt=1βtα¯t=i=1tαi)

β~t=1/(αtβt+11α¯t1)=1/(αtα¯t+βtβt(1α¯t1))=1α¯t11α¯tβtμ~t(xt,x0)=(αtβtxt+α¯t11α¯t1x0)/(αtβt+11α¯t1)=(αtβtxt+α¯t11α¯t1x0)1α¯t11α¯tβt=αt(1α¯t1)1α¯txt+α¯t1βt1α¯tx0

由于这个良好的属性,我们可以表示 x0=1α¯t(xt1α¯tϵt)并将其代入上述等式,得到:

μ~t=αt(1α¯t1)1α¯txt+α¯t1βt1α¯t1α¯t(xt1α¯tϵt)=1αt(xt1αt1α¯tϵt)

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

logpθ(x0)logpθ(x0)+DKL(q(x1:T|x0)pθ(x1:T|x0))=logpθ(x0)+Ex1:Tq(x1:T|x0)[logq(x1:T|x0)pθ(x0:T)/pθ(x0)]=logpθ(x0)+Eq[logq(x1:T|x0)pθ(x0:T)+logpθ(x0)]=Eq[logq(x1:T|x0)pθ(x0:T)]LetLVLB=Eq(x0:T)[logq(x1:T|x0)pθ(x0:T)]Eq(x0)logpθ(x0)

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

LCE=Eq(x0)logpθ(x0)=Eq(x0)log(pθ(x0:T)dx1:T)=Eq(x0)log(q(x1:T|x0)pθ(x0:T)q(x1:T|x0)dx1:T)=Eq(x0)log(Eq(x1:T|x0)pθ(x0:T)q(x1:T|x0))Eq(x0:T)logpθ(x0:T)q(x1:T|x0)=Eq(x0:T)[logq(x1:T|x0)pθ(x0:T)]=LVLB

为了将方程中的每一项转换为可分析计算的,目标可以进一步重写为几个 KL 散度和熵项的组合(参见Sohl-Dickstein 等人的附录 B 中详细的推导过程)

LVLB=Eq(x0:T)[logq(x1:T|x0)pθ(x0:T)]=Eq[logt=1Tq(xt|xt1)pθ(xT)t=1Tpθ(xt1|xt)]=Eq[logpθ(xT)+t=1Tlogq(xt|xt1)pθ(xt1|xt)]=Eq[logpθ(xT)+t=2Tlogq(xt|xt1)pθ(xt1|xt)+logq(x1|x0)pθ(x0|x1)]=Eq[logpθ(xT)+t=2Tlog(q(xt1|xt,x0)pθ(xt1|xt)q(xt|x0)q(xt1|x0))+logq(x1|x0)pθ(x0|x1)]=Eq[logpθ(xT)+t=2Tlogq(xt1|xt,x0)pθ(xt1|xt)+t=2Tlogq(xt|x0)q(xt1|x0)+logq(x1|x0)pθ(x0|x1)]=Eq[logpθ(xT)+t=2Tlogq(xt1|xt,x0)pθ(xt1|xt)+logq(xT|x0)q(x1|x0)+logq(x1|x0)pθ(x0|x1)]=Eq[logq(xT|x0)pθ(xT)+t=2Tlogq(xt1|xt,x0)pθ(xt1|xt)logpθ(x0|x1)]=Eq[DKL(q(xT|x0)pθ(xT))LT+t=2TDKL(q(xt1|xt,x0)pθ(xt1|xt))Lt1logpθ(x0|x1)L0]

我们分别标记变分下界损失中的每个组件:

LVLB=LT+LT1++L0whereLT=DKL(q(xT|x0)pθ(xT))Lt=DKL(q(xt|xt+1,x0)pθ(xt|xt+1)) for1tT1L0=logpθ(x0|x1)

LVLB中的每个 KL 项(除了L0) 比较了两个高斯分布,因此可以用封闭形式计算它们。LT是常数,在训练期间可以忽略,因为q没有可学习的参数并且xt是高斯噪声。Ho et al. 2020 使用从N(x0;μθ(x1,1),Σθ(x1,1)) 派生的单独的离散解码器建模了L0

1.3 对于训练损失参数化 Lt

回想一下,我们需要学习一个神经网络来逼近反向扩散过程中的条件概率分布,pθ(xt1|xt)=N(xt1;μθ(xt,t),Σθ(xt,t))。我们想训练μθ来预测μ~t=1αt(xt1αt1α¯tϵt)。因为xt在训练时可用作输入,在时间步t,我们可以重新参数化高斯噪声项,而不是从输入xt来预测ϵt:

μθ(xt,t)=1αt(xt1αt1α¯tϵθ(xt,t))Thusxt1=N(xt1;1αt(xt1αt1α¯tϵθ(xt,t)),Σθ(xt,t))

损失项 Lt被参数化以最小化与μ~的差异:

Lt=Ex0,ϵ[12Σθ(xt,t)22μ~t(xt,x0)μθ(xt,t)2]=Ex0,ϵ[12Σθ221αt(xt1αt1α¯tϵt)1αt(xt1αt1α¯tϵθ(xt,t))2]=Ex0,ϵ[(1αt)22αt(1α¯t)Σθ22ϵtϵθ(xt,t)2]=Ex0,ϵ[(1αt)22αt(1α¯t)Σθ22ϵtϵθ(α¯tx0+1α¯tϵt,t)2]

1.4 简化

Ho et al. (2020) 实证发现,使用一个简化的目标函数,忽略权重项,可以更好地训练扩散模型:

Ltsimple=Et[1,T],x0,ϵt[ϵtϵθ(xt,t)2]=Et[1,T],x0,ϵt[ϵtϵθ(α¯tx0+1α¯tϵt,t)2]

最终的简化目标是:

Ltsimple=Et[1,T],x0,ϵt[ϵtϵθ(xt,t)2]=Et[1,T],x0,ϵt[ϵtϵθ(α¯tx0+1α¯tϵt,t)2]

其中 C是一个常数,不依赖于θ

img

图 4. DDPM 中的训练和采样算法(图片来源:Ho et al. 2020

1.5 与噪声条件分数网络(NCSN)的联系

Song & Ermon (2019)提出了一种基于分数的生成建模方法,其中样本是使用分数匹配估计的数据分布梯度,通过Langevin 动力学 产生的。每个样本 x的概率密度分数定义为其梯度xlogq(x)。分数网络sθ:RDRD被训练来估计它:sθ(x)xlogq(x)

为了使其在深度学习中扩展到高维数据,他们建议使用去噪分数匹配( Vincent, 2011 ) 或切片分数匹配(使用随机投影;Song 等人,2019)。去噪分数匹配向数据 q(x~|x)添加预先指定的少量噪声,并使用分数匹配估计q(x~)

回想一下, Langevin 动力学可以在迭代过程中仅使用分数 xlogq(x)从概率密度分布中采样数据。

然而,根据流形假设,大多数数据预计会集中在低维流形中,即使观察到的数据可能看起来是任意高维。由于数据点无法覆盖整个空间,因此会对分数估计产生负面影响。在数据密度低的区域,分数估计不太可靠。加入小的高斯噪声后,使得扰动后的数据分布覆盖全空间 RD,分数估计网络的训练变得更加稳定。Song & Ermon (2019)通过用不同级别的噪声扰动数据,并训练了一个噪声条件分数网络来联合估计所有扰动数据在不同噪声级别下的分数,从而对它进行改进。

增加噪声水平的时间表类似于前向扩散过程。如果我们使用扩散过程注释,分数近似于 sθ(xt,t)xtlogq(xt)。给定高斯分布xN(μ,σ2I),我们可以将密度函数对数的导数写为xlogp(x)=x(12σ2(xμ)2)=xμσ2=ϵσ。其中ϵN(0,I)。回想一下q(xt|x0)N(α¯tx0,(1α¯t)I)因此,

sθ(xt,t)xtlogq(xt)=Eq(x0)[xtq(xt|x0)]=Eq(x0)[ϵθ(xt,t)1α¯t]=ϵθ(xt,t)1α¯t

1.6 βt的参数化

在 Ho 等人(2020) 的工作中, 前向方差被设置为一系列线性增加的常数, 从 β1=104βT=0.02。与归一化的图像像素值[1,1]相比,它们相对较小。 在他们的实验中,扩散模型显示了高质量的样本,但仍然无法像其他生成模型那样达到有竞争力的模型对数似然。

Nichol & Dhariwal (2021)提出了几种改进技术来帮助扩散模型获得更低的 NLL。其中一项改进是使用基于余弦的方差表。调度函数的选择可以是任意的,只要它在训练过程中提供近乎线性下降, 并在 t=0 和t=T处有细微变化即可。

βt=clip(1α¯tα¯t1,0.999)α¯t=f(t)f(0)wheref(t)=cos(t/T+s1+sπ2)

其中小偏移量 s是为了防止当t=0时,βt过小。

img

Fig. 5. Comparison of linear and cosine-based scheduling of β_tduring training. (Image source: Nichol & Dhariwal, 2021)

1.7 逆过程方差的参数化 Σθ

Ho et al. (2020)βt固定为常量而不是可学习的参数, 并设置Σθ(xt,t)=σt2I,其中σt不是学习的,而是设置为βt或者β~t=1α¯t11α¯tβt, 因为他们发现学习对角方差Σθ会导致训练不稳定和较差的样本质量。

Nichol & Dhariwal (2021)建议通过模型预测混合向量 v来学习Σθ(xt,t)作为βtβ~t之间的插值:

Σθ(xt,t)=exp(vlogβt+(1v)logβ~t)

然而,简单的目标 Lsimple不依赖于Σθ。为了增加依赖性,他们构建了一个混合目标Lhybrid=Lsimple+λLVLB, 其中λ=0.001 很小, 并且在LVLB项中的μθ上停止梯度, 使得LVLB只指导Σθ的学习。根据经验,他们观察到LVLB可能由于嘈杂的梯度而难以优化,因此他们建议使用具有重要性抽样的LVLB的时间平滑版本。

img

图 6. 改进的 DDPM 与其他基于似然的生成模型的负对数似然比较。NLL 以 bits/dim 为单位报告。(图片来源:Nichol & Dhariwal,2021 年)

2. 条件生成

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

2.1 分类器引导扩散

为了明确地将类信息纳入扩散过程,Dhariwal & Nichol (2021) 在噪声图像 xt上训练了一个分类器fϕ(y|xt,t),并使用梯度xlogfϕ(y|xt)通过改变噪声预测来引导扩散采样过程朝向条件信息y(例如目标类标签)。回想一下xtlogq(xt)=11α¯tϵθ(xt,t)并且我们可以将联合分布q(xt,y)的分数函数写为:

xtlogq(xt,y)=xtlogq(xt)+xtlogq(y|xt)11α¯tϵθ(xt,t)+xtlogfϕ(y|xt)=11α¯t(ϵθ(xt,t)1α¯txtlogfϕ(y|xt))

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

ϵ¯θ(xt,t)=ϵθ(xt,t)1α¯txtlogfϕ(y|xt)

为了控制分类器引导的强度,我们可以向增量部分添加一个权重 w

ϵ¯θ(xt,t)=ϵθ(xt,t)1α¯twxtlogfϕ(y|xt)

结果,去除扩散模型(ADM)和带有额外分类器引导的模型(ADM-G)能够比 SOTA 生成模型(例如 BigGAN)取得更好的结果。

img

图 7. 使用分类器引导在 DDPM 和 DDIM 中进行条件生成的算法。(图片来源:,Dhariwal & Nichol (2021))

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

2.2 无分类器引导

没有独立的分类器 fϕ,仍然可以通过结合条件和非条件扩散模型的分数来执行条件扩散步骤 l (Ho & Salimans, 2021).。让非条件去噪扩散模型pθ(x)通过分数估计器ϵθ(xt,t)参数化,条件模型pθ(x|y)通过ϵθ(xt,t,y)参数化。这两个模型可以通过单个神经网络学习。准确地说,一个条件扩散模型pθ(x|y)在成对数据(x,y)上训练,其中条件信息y会随机丢弃,以便模型知道如何无条件地生成图像,即ϵθ(xt,t)=ϵθ(xt,t,y=)

隐式分类器的梯度可以用条件和非条件分数估计器表示。一旦插入到分类器引导的修改分数中,分数就不再依赖于单独的分类器。

xtlogp(y|xt)=xtlogp(xt|y)xtlogp(xt)=11α¯t(ϵθ(xt,t,y)ϵθ(xt,t))ϵ¯θ(xt,t,y)=ϵθ(xt,t,y)1α¯twxtlogp(y|xt)=ϵθ(xt,t,y)+w(ϵθ(xt,t,y)ϵθ(xt,t))=(w+1)ϵθ(xt,t,y)wϵθ(xt,t)

他们的实验表明,无分类器引导可以在 FID(区分合成和生成图像)和 IS(质量和多样性)之间取得良好的平衡。

引导扩散模型 GLIDE ( Nichol, Dhariwal & Ramesh, et al. 2022 ) 探索了两种引导策略,CLIP 引导和无分类器引导,并发现后者更受青睐。他们推测这是因为 CLIP 引导利用了对 CLIP 模型的对抗性示例,而不是优化更好的匹配图像生成。

3. 加速扩散模型

通过遵循反向扩散过程的马尔可夫链,从 DDPM 生成样本速度非常慢,因为 T可以高达几千步。来自 Song 等人,2020 的一个数据。“例如,在 Nvidia 2080 Ti GPU 上,从 DDPM 采样 50k 大小为 32 × 32 的图像需要大约 20 小时,但从 GAN 采样则不到一分钟。”

3.1 更少的采样步骤和蒸馏

一种简单的方法是运行跨步采样计划(Nichol & Dhariwal,2021),每隔 T/S运行一次采样,流程的步骤从T步减少到S步。新的抽样时间表{τ1,,τS}其中τ1<τ2<<τS[1,T]并且S<T

对于另一种方法,让我们根据所需的标准偏差进行参数化 σt,重写qσ(xt1|xt,x0)

xt1=α¯t1x0+1α¯t1ϵt1=α¯t1x0+1α¯t1σt2ϵt+σtϵ=α¯t1x0+1α¯t1σt2xtα¯tx01α¯t+σtϵqσ(xt1|xt,x0)=N(xt1;α¯t1x0+1α¯t1σt2xtα¯tx01α¯t,σt2I)

回想一下,q(xt1|xt,x0)=N(xt1;μ~(xt,x0),β~tI),因此我们有:

β~t=σt2=1α¯t11α¯tβt

σt2=ηβ~t, 这样我们就可以调整ηR+作为控制采样随机性的超参数。特殊情况η=0使采样过程具有确定性。这样的模型被称为去噪扩散隐式模型(DDIM;Song et al., 2020)。DDIM 具有相同的边缘噪声分布,但以确定性的方式将噪声映射回原始数据样本。

在生成过程中,我们不必遵循整个链 t=1,,T,而是可以遵循加速轨迹的子集S{τ1,,τS}, 推理过程变为:

qσ,τ(xτi1|xτt,x0)=N(xτi1;α¯t1x0+1α¯t1σt2xτiα¯tx01α¯t,σt2I)

虽然,在实验中,所有模型都经过 T=1000扩散步骤的训练, 他们观察到 DDIM (η=0) 可以在S很小的时候生产出质量最好的样本,而 DDPM (η=1) 在S很小的情况下表现要差的多。当我们能够运行完整的逆向马尔可夫扩散步骤(S=T=1000)时,DDPM 确实表现更好。使用 DDIM,可以将扩散模型训练到任意数量的前向步,但在生成过程中只从子集中采样。

img

图 8. 在 CIFAR10 和 CelebA 数据集上,不同设置的扩散模型的 FID 得分,包括 DDIM(η=0) 和 DDPM(σ^). (图片来源:Song et al., 2020

与 DDPM 相比,DDIM 能够:

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

图 9. 渐进蒸馏可以将每次迭代中的扩散采样步骤减少一半。 (图片来源:Salimans & Ho,2022

3.1.1 渐进式蒸馏

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

img

图 10. 算法 1(扩散模型训练)和算法 2(渐进式蒸馏)并排比较,其中渐进式蒸馏中的相对变化以绿色突出显示。

3.1.2 一致性模型

一致性模型(Song 等人,2023)学习将扩散采样轨迹上的任何中间噪声数据点 xt,t>0直接映射回其原始x0。由于其自我一致性属性,因此得名一致性模型,因为同一轨迹上的任何数据点都映射到同一起源。

img

图 11. 一致性模型学习将轨迹上的任何数据点映射回其起源。(图片来源:Song 等人,2023)

给定一个轨迹 {xt|t[ϵ,T]},一致性函数f定义为f:(xt,t)xϵ,并且方程f(xt,t)=f(xt,t)=xϵ对所有t,t[ϵ,T]都成立。当t=ϵ时,f是一个恒等函数。该模型可以如下参数化,其中cskip(t)cout(t)函数被设计成cskip(ϵ)=1,cout(ϵ)=0

fθ(x,t)=cskip(t)x+cout(t)Fθ(x,t)

一致性模型有可能在单步中生成样本,同时仍然保持在多步采样过程中为了更好的质量而进行计算交换的灵活性。

论文介绍了两种训练一致性模型的方法:

  1. 一致性蒸馏(CD):通过最小化相同轨迹生成的对生成的模型输出之间的差异,将扩散模型蒸馏到一致性模型。这使得采样评估成本更低。一致性蒸馏损失是:LCDN(θ,θ;ϕ)=E[λ(tn)d(fθ(xtn+1,tn+1),fθ(x^tnϕ,tn)]x^tnϕ=xtn+1(tntn+1)Φ(xtn+1,tn+1;ϕ)

其中:

  • Φ(.;ϕ)是一步 ODE 求解器的更新函数;
  • nU[1,N1],均匀分布在1,,N1
  • 网络参数 θθ的指数移动平均(EMA)版本,这极大地稳定了训练(就像在 DQN 或动量对比学习中一样);
  • d(.,.)是一个正的距离度量函数,满足x,y:d(x,y)0d(x,y)=0当且仅当x=y,例如21或 LPIPS(学习感知图像补丁相似性)距离;
  • λ(.)R+是一个正的权重函数,论文中设置λ(tn)=1
  1. 一致性训练(CT):另一种选择是独立训练一致性模型。注意到在 CD 中,使用预训练的分数模型 sϕ(x,t)来近似真实分数logpt(x)但在 CT 中我们需要一种方法来估计这个分数函数,并且存在一个无偏估计xtxt2。CT 损失定义如下:
LCTN(θ,θ;ϕ)=E[λ(tn)d(fθ(x+tn+1z;tn+1),fθ(x+tnz;tn))] wherezN(0,I)

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

  • Heun ODE 求解器比欧拉一阶求解器工作得更好,因为具有相同 N的高阶 ODE 求解器具有更小的估计误差。
  • 在不同的距离度量函数 d(.)选项中,LPIPS 度量比12距离工作得更好。
  • 更小的 N导致更快的收敛但更差的样本,而更大的N导致更慢的收敛但在收敛时更好的样本。
img

图 12. 在不同配置下的一致性模型性能比较。CD 的最佳配置是 LPIPS 距离度量、Heun ODE 求解器和 N=18。(图片来源:Song 等人,2023)

3.2 潜在变量空间

Latent diffusion model ( LDM ; Rombach & Blattmann, et al. 2022 ) 在隐空间而不是在像素空间中运行扩散过程,使训练成本更低,推理速度更快。这是基于这样的观察:大多数图像的比特贡献于感知细节,而在积极压缩后,语义和概念组合仍然保留。LDM 通过首先使用自动编码器减少像素级冗余,然后在学习到的潜在空间中使用扩散过程操作/生成语义概念,松散地分解了感知压缩和语义压缩。

img

Fig. 13. The plot for tradeoff between compression rate and distortion, illustrating two-stage compressions - perceptural and semantic comparession. (Image source: Rombach & Blattmann, et al. 2022)

感知压缩过程依赖于自动编码器模型。编码器 E用于压缩输入图像xRH×W×3到更小的 2D 隐变量z=E(x)Rh×w×c,其中下采样率f=H/h=W/w=2m,mN。然后是解码器D从隐变量重建图像,x~=D(z)。该论文探讨了自动编码器训练中的两种正则化,以避免隐空间中的任意高方差。

  • KL-reg:对学习到的潜在空间施加一个小的 KL 惩罚,使其趋向标准正态分布,类似于VAE
  • VQ-reg:在解码器内部使用一个向量量化层,如VQVAE,但量化层被解码器吸收。

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

Attention(Q,K,V)=softmax(QKd)VwhereQ=WQ(i)φi(zi),K=WK(i)τθ(y),V=WV(i)τθ(y)andWQ(i)Rd×dϵi,WK(i),WV(i)Rd×dτ,φi(zi)RN×dϵi,τθ(y)RM×dτ
img

Fig. 14. The architecture of latent diffusion model. (Image source: Rombach & Blattmann, et al. 2022)

4. 提高生成分辨率和质量

为了生成高分辨率的高质量图像,Ho 等人(2021)提出了使用逐步增加分辨率的多个扩散模型的 Pipeline。Pipeline 模型之间的噪声条件增强对最终图像质量至关重要,这是通过对每个超分辨率模型 pθ(x|z)的条件输入z应用强数据增强来实现的。条件噪声有助于减少 Pipeline 设置中的复合误差。U-Net 是高分辨率图像生成中扩散建模的常见选择。

img

图 15. 逐步增加分辨率的多个扩散模型的级联 Pipeline。(图片来源:Ho 等人,2021)

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

  • 截断条件增强在低分辨率时提前停止扩散过程,步骤 t>0
  • 非截断条件增强运行完整的低分辨率逆向过程,直到步骤 0,但随后通过 ztq(xt|x0)破坏它,然后将破坏的zt输入到超分辨率模型中。

4.1 unCLIP

两阶段扩散模型 unCLIP(Ramesh 等人,2022)大量利用 CLIP 文本编码器产生高质量的文本引导图像。给定一个预训练的 CLIP 模型 c和扩散模型的配对训练数据(x,y),其中x是图像,y是相应的标题,我们可以计算 CLIP 文本和图像嵌入ct(y)ci(x)。unCLIP 并行学习两个模型:

  • 一个先验模型 P(ci|y):给定文本y输出 CLIP 图像嵌入ci
  • 一个解码器 P(x|ci,[y]):给定 CLIP 图像嵌入ci和可选的原始文本y生成图像。

这两个模型支持条件生成,因为

P(x|y)=P(x,ci|y)=P(x|ci,y)P(ci|y)因为ci给定x是确定性的
img

图 16. unCLIP 的架构。(图片来源:Ramesh 等人,2022)

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

  1. 给定文本 y,首先使用 CLIP 模型生成文本嵌入ct(y)。使用 CLIP 潜在空间通过文本实现零样本图像操作。
  2. 一个扩散或自回归先验 P(ci|y)处理这个 CLIP 文本嵌入以构建图像先验,然后一个扩散解码器P(x|ci,[y])生成一个图像,该图像受先验条件限制。这个解码器也可以在图像输入的条件下生成图像变体,保留其风格和语义。

4.2 Imagen

Imagen(Saharia 等人,2022)不是使用 CLIP 模型,而是使用预训练的大型语言模型(LM)(即冻结的 T5-XXL 文本编码器)对文本进行编码以生成图像。有一个普遍趋势表明,更大的模型尺寸可以带来更好的图像质量和文本图像对齐。他们发现,在 MS-COCO 上,T5-XXL 和 CLIP 文本编码器的性能相似,但在 DrawBench(涵盖 11 个类别的提示集合)上,人类评估更喜欢 T5-XXL。

当应用无分类器引导时,增加 w可能会导致更好的图像文本对齐,但图像保真度更差。他们发现这是由于训练-测试不匹配,也就是说,因为训练数据x保持在[1,1]的范围内,测试数据也应该如此。他们介绍了两种阈值策略:

  • 静态阈值化:将 x预测限制在[1,1]
  • 动态阈值化:在每个采样步骤中,计算 s作为绝对像素值的某个百分位数值;如果s>1,则将预测限制在[s,s]并除以s

Imagen 修改了 U-Net 的几个设计,使其成为高效的 U-Net。

  • 通过为较低分辨率添加更多的残差锁,将模型参数从高分辨率块转移到低分辨率块;
  • 将跳跃连接缩放 1/2
  • 为了提高前向传递的速度,颠倒下采样(移到卷积之前)和上采样操作(移到卷积之后)的顺序。

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

5. 模型架构

扩散模型有两种常见的骨架架构选择:U-Net 和 Transformer。

5.1 U-Net

U-Net(Ronneberger 等人,2015)由一个下采样堆栈和一个上采样堆栈组成。

  • 下采样:每个步骤由两个 3x3 卷积(未填充的卷积)的重复应用组成,每个卷积后面跟着一个 ReLU 和一个步长为 2 的 2x2 最大池化。在每个下采样步骤中,特征通道的数量翻倍。
  • 上采样:每个步骤由特征图的上采样组成,后面跟着一个 2x2 卷积,每个步骤将特征通道的数量减半。
  • 快捷方式:快捷连接导致与下采样堆栈的相应层进行连接,并将必要的高分辨率特征提供给上采样过程。
img

图 17. U-Net 架构。每个蓝色方块是一个特征图,顶部标记了通道数,左侧底部标记了高度 x 宽度维度。灰色箭头标记了快捷连接。(图片来源:Ronneberger,2015)

为了使图像生成能够根据额外的图像进行条件组合信息(如 Canny 边缘、Hough 线、用户涂鸦、人类后骨架、分割图、深度和法线)。

5.2 ControlNet

ControlNet(Zhang 等人,2023)通过在 U-Net 的每个编码器层中添加一个“夹心”零卷积层的可训练副本,引入了架构变化。准确地说,给定一个神经网络块 Fθ(.),ControlNet 执行以下操作:

  1. 首先,冻结原始块的原始参数 θ
  2. 克隆它成为一个具有可训练参数 θc的副本和一个额外的条件向量c
  3. 使用两个零卷积层,表示为 Zθz1(.;.)Zθz2(.;.),这是 1x1 的卷积层,其权重和偏置初始化为零,将这两个块连接起来。零卷积通过消除初始训练步骤中的随机噪声作为梯度来保护这个背骨。
  4. 最终输出是:yc=Fθ(x)+Zθz2(Fθc(x+Zθz1(c)))
img

图 18. ControlNet 架构。(图片来源:Zhang 等人,2023)

5.3 Diffusion Transformer

Diffusion TransformerDiT; Peebles 和 Xie,2023)用于扩散建模,在潜在补丁上操作,使用与 LDM(潜在扩散模型)相同的设计空间。DiT 具有以下设置:

  1. 将输入 z的潜在表示作为 DiT 的输入。

  2. 将噪声潜在的大小 I×I×C“分块化”成大小为p的补丁,并将其转换为大小为(I/p)2的补丁序列。

  3. 然后这个补丁序列的令牌通过 Transformer 块。他们探索了三种不同的设计,用于根据上下文信息(如时间步 t或类标签c)进行生成的条件。在三种设计中,adaLN(自适应层归一化)-Zero 工作得最好,比 in-context 条件和 cross-attention 块更好。比例和偏移参数γβ是从tc的嵌入向量之和中回归出来的。维度-wise 缩放参数α也是回归出来的,并立即应用于 DiT 块内任何残差连接之前。

  4. 变压器解码器输出噪声预测和输出对角线协方差预测。

img

图 19. Diffusion Transformer(DiT)架构。(图片来源:Peebles 和 Xie,2023)

Transformer 架构可以轻松地扩展,它以其可扩展性而闻名。这是 DiT 的最大优势之一,因为其性能随着更多的计算和更大的 DiT 模型而扩展,根据实验,更大的 DiT 模型在计算上更有效率。

6. 快速总结

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

7. References

[1] Jascha Sohl-Dickstein et al. “Deep Unsupervised Learning using Nonequilibrium Thermodynamics.” ICML 2015.

[2] Max Welling & Yee Whye Teh. “Bayesian learning via stochastic gradient langevin dynamics.” ICML 2011.

[3] Yang Song & Stefano Ermon. “Generative modeling by estimating gradients of the data distribution.” NeurIPS 2019.

[4] Yang Song & Stefano Ermon. “Improved techniques for training score-based generative models.” NeuriPS 2020.

[5] Jonathan Ho et al. “Denoising diffusion probabilistic models.” arxiv Preprint arxiv:2006.11239 (2020). [code]

[6] Jiaming Song et al. “Denoising diffusion implicit models.” arxiv Preprint arxiv:2010.02502 (2020). [code]

[7] Alex Nichol & Prafulla Dhariwal. “Improved denoising diffusion probabilistic models” arxiv Preprint arxiv:2102.09672 (2021). [code]

[8] Prafula Dhariwal & Alex Nichol. “Diffusion Models Beat GANs on Image Synthesis.” arxiv Preprint arxiv:2105.05233 (2021). [code]

[9] Jonathan Ho & Tim Salimans. “Classifier-Free Diffusion Guidance.” NeurIPS 2021 Workshop on Deep Generative Models and Downstream Applications.

[10] Yang Song, et al. “Score-Based Generative Modeling through Stochastic Differential Equations.” ICLR 2021.

[11] Alex Nichol, Prafulla Dhariwal & Aditya Ramesh, et al. “GLIDE: Towards Photorealistic Image Generation and Editing with Text-Guided Diffusion Models.” ICML 2022.

[12] Jonathan Ho, et al. “Cascaded diffusion models for high fidelity image generation.” J. Mach. Learn. Res. 23 (2022): 47-1.

[13] Aditya Ramesh et al. “Hierarchical Text-Conditional Image Generation with CLIP Latents.” arxiv Preprint arxiv:2204.06125 (2022).

[14] Chitwan Saharia & William Chan, et al. “Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding.” arxiv Preprint arxiv:2205.11487 (2022).

[15] Rombach & Blattmann, et al. “High-Resolution Image Synthesis with Latent Diffusion Models.” CVPR 2022.code

[16] Song et al. “Consistency Models” arxiv Preprint arxiv:2303.01469 (2023)

[17] Salimans & Ho. “Progressive Distillation for Fast Sampling of Diffusion Models” ICLR 2022.

[18] Ronneberger, et al. “U-Net: Convolutional Networks for Biomedical Image Segmentation” MICCAI 2015.

[19] Peebles & Xie. “Scalable diffusion models with transformers.” ICCV 2023.

[20] Zhang et al. “Adding Conditional Control to Text-to-Image Diffusion Models.” arxiv Preprint arxiv:2302.05543 (2023)

Maintained by Robin