2021 年 9 月 19 日更新:强烈推荐杨松(参考文献中几篇重要论文的作者)撰写的关于基于分数的生成建模的博客文章。


更新于 2022-08-27:添加了无分类器指导、GLIDE、unCLIP 和 Imagen。


更新于 2022-08-31:添加了潜在扩散模型。


2024 年 4 月 13 日更新:添加了渐进蒸馏、一致性模型和模型架构部分。


到目前为止,我已经写了关于三种生成模型的文章,分别是 GAN、VAE 和基于流的模型。它们在生成高质量样本方面取得了巨大成功,但每种模型都有自己的局限性。GAN 模型以潜在不稳定的训练和生成中较少的多样性而闻名,这是由于其对抗性训练的特性。VAE 依赖于替代损失。流模型必须使用专门的架构来构建可逆变换。


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


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


扩散模型是什么?


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


前向扩散过程


给定从真实数据分布中抽样的数据点 x0q(x) ,让我们定义一个前向扩散过程,在其中我们在 T 步中向样本添加少量高斯噪声,产生一系列带噪声的样本 x1,,xT 。步长由方差调度 {βt(0,1)}t=1T 控制。

q(xt|xt1)=N(xt;1βtxt1,βtI)q(x1:T|x0)=t=1Tq(xt|xt1)


数据样本 x0 随着步骤 t 的增大逐渐失去其可区分特征。最终当 T 时, xT 等同于各向同性高斯分布。


图 2. 通过缓慢添加(移除)噪声生成样本的前向(反向)扩散过程的马尔可夫链。(图片来源:何等人 2020 年,附有少量额外注释)


上述过程的一个很好的特性是,我们可以使用重新参数化技巧在任意时间步 t 中以封闭形式对 xt 进行采样。让 αt=1βtα¯t=i=1tαi

xt=αtxt1+1αtϵt1 ;where ϵt1,ϵt2,N(0,I)=αtαt1xt2+1αtαt1ϵ¯t2 ;where ϵ¯t2 merges two Gaussians (*).==α¯tx0+1α¯tϵq(xt|x0)=N(xt;α¯tx0,(1α¯t)I)


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


通常,当样本变得更嘈杂时,我们可以承担更大的更新步骤,因此 β1<β2<<βT 和因此 α¯1>>α¯T


随机梯度 Langevin 动力学的连接


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

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


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


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


反向扩散过程


如果我们可以反转上述过程并从 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))

图 3. 训练扩散模型来建模 2D 瑞士卷数据的示例。(图片来源:Sohl-Dickstein 等人,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)]Let LVLB=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 等人 2015 年附录 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++L0where LT=DKL(q(xT|x0)pθ(xT))Lt=DKL(q(xt|xt+1,x0)pθ(xt|xt+1)) for 1tT1L0=logpθ(x0|x1)


LVLB 中的每个 KL 术语(除了 L0 )都比较两个高斯分布,因此它们可以以闭合形式计算。 LT 是常数,在训练过程中可以忽略,因为 q 没有可学习参数, xT 是高斯噪声。Ho 等人 2020 年使用从 N(x0;μθ(x1,1),Σθ(x1,1)) 派生的单独离散解码器对 L0 进行建模。


Lt 的参数化用于训练损失


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

μθ(xt,t)=1αt(xt1αt1α¯tϵθ(xt,t))Thus xt1=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]

 简化


根据经验,何等人(2020 年)发现,训练扩散模型时,使用一个忽略加权项的简化目标效果更好:

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


最终简单目标是:

Lsimple=Ltsimple+C


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


图 4. DDPM 中的训练和采样算法(图片来源:Ho 等人 2020 年)


与噪声条件评分网络(NCSN)的连接


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


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


回想一下,朗之万动力学可以使用迭代过程中的得分 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


βt 的参数化


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


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

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


小偏移 s 是为了在接近 t=0 时防止 βt 过小。


图 5. 在训练过程中,线性调度和余弦调度 β_t 的比较。(图片来源:Nichol&Dhariwal,2021)


反向过程方差的参数化 Σθ


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


尼科尔和达里瓦尔(2021 年)建议通过模型预测混合向量 v 来学习 Σθ(xt,t) 作为 βtβ~t 之间的插值:

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


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


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

 条件生成


在对带有条件信息的图像进行生成模型训练时,例如 ImageNet 数据集,通常会生成受类别标签或一段描述性文本条件的样本。


分类器引导扩散


为了明确将类别信息纳入扩散过程中,Dhariwal & Nichol (2021) 在嘈杂图像上训练了一个分类器 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)取得更好的结果。


图 7. 这些算法利用分类器的指导来运行带有 DDPM 和 DDIM 的条件生成。(图片来源:Dhariwal & Nichol, 2021)


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

 无分类器指导


没有独立的分类器 fϕ ,仍然可以通过将条件扩散步骤中的分数与条件和无条件扩散模型(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 等,2022 年)探索了两种引导策略,即 CLIP 引导和无分类器引导,并发现后者更受青睐。他们假设这是因为 CLIP 引导利用对抗示例朝向 CLIP 模型优化模型,而不是优化更匹配的图像生成。


加快扩散模型


从反向扩散过程的马尔可夫链中生成 DDPM 样本非常缓慢,因为 T 可能需要一千步甚至更多。来自宋等人(2020 年)的一组数据:“例如,从 DDPM 中采样大小为 32×32 的 50k 图像大约需要 20 小时,但从 Nvidia 2080 Ti GPU 上的 GAN 中采样则不到一分钟。”


更少的采样步骤和蒸馏


一种简单的方法是通过运行一个分步采样计划(Nichol&Dhariwal,2021),每隔 T/S 步进行一次采样更新,将过程从 T 减少到 S 步。 生成的新采样计划为 {τ1,,τS} ,其中 τ1<τ2<<τS[1,T]S<T


对于另一种方法,让我们将 qσ(xt1|xt,x0) 重写为根据所需标准差 σt 参数化,根据以下良好属性:

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


模型 ϵθ(t)(.)xt 预测 ϵt


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

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


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


在生成过程中,我们不必遵循整个链 t=1,,T ,而是一部分步骤。让我们将 s<t 表示为在这个加速轨迹中的两个步骤。DDIM 更新步骤是:

qσ,s<t(xs|xt,x0)=N(xs;α¯s(xt1α¯tϵθ(t)(xt)α¯t)+1α¯sσt2ϵθ(t)(xt),σt2I)


在实验中,所有模型都是经过 T=1000 扩散步骤训练的,他们观察到当 S 较小时,DDIM( η=0 )能够产生最高质量的样本,而 DDPM( η=1 )在小 S 上表现得更差。当我们能够运行完整的逆向马尔可夫扩散步骤( S=T=1000 )时,DDPM 的表现会更好。使用 DDIM,可以训练扩散模型达到任意数量的正向步骤,但只能从生成过程的步骤子集中进行采样。


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


与 DDPM 相比,DDIM 能够:


  1. 使用更少的步骤生成更高质量的样本。

  2. 生成过程是确定性的,具有“一致性”属性,这意味着在相同潜变量条件下生成的多个样本应具有类似的高级特征。

  3. 由于一致性,DDIM 可以在潜变量中进行语义上有意义的插值。

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


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


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


(图片来源:Salimans&Ho,2022)


一致性模型(Song 等人 2023 年)学习将扩散采样轨迹上的任何中间嘈杂数据点 xt,t>0 直接映射回其原点 x0 。它被命名为一致性模型,因为其具有自一致性属性,即同一轨迹上的任何数据点都被映射到相同的原点。


图 11. 一致性模型学习将轨迹上的任何数据点映射回其原点。(图片来源:宋等人,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

  2. 一致性训练(CT):另一种选择是独立训练一致性模型。请注意,在 CD 中,使用一个预训练的评分模型 sϕ(x,t) 来近似地估计真实评分 logpt(x) ,但在 CT 中,我们需要一种方法来估计这个评分函数,结果表明存在一个无偏估计器 logpt(x) 存在,如 xtxt2 。CT 损失定义如下:

LCTN(θ,θ;ϕ)=E[λ(tn)d(fθ(x+tn+1z,tn+1),fθ(x+tnz,tn)] where zN(0,I)


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


  • Heun ODE 求解器比 Euler 的一阶求解器效果更好,因为更高阶的 ODE 求解器具有相同 N 的较小估计误差。

  • 在不同选项的距离度量函数 d(.) 中,LPIPS 度量比 12 距离更有效。

  • 较小的 N 导致更快的收敛,但样本质量较差,而较大的 N 导致收敛较慢,但在收敛时样本质量更好。

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

 潜变量空间


潜在扩散模型(LDM;Rombach&Blattmann 等,2022 年)在潜在空间而非像素空间中运行扩散过程,使训练成本更低,推断速度更快。它受到这样的观察启发:图像的大多数位对感知细节有贡献,即使在进行激进压缩后,语义和概念组合仍然存在。LDM 通过首先使用自动编码器削减像素级冗余,然后在学习的潜在空间上通过扩散过程操纵/生成语义概念,松散地分解了感知压缩和语义压缩。


图 13. 表示压缩率和失真之间的权衡的图,展示了两阶段压缩 - 感知和语义压缩。 (图片来源:Rombach & Blattmann 等人,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)Vwhere Q=WQ(i)φi(zi),K=WK(i)τθ(y),V=WV(i)τθ(y)and WQ(i)Rd×dϵi,WK(i),WV(i)Rd×dτ,φi(zi)RN×dϵi,τθ(y)RM×dτ

图 14. 潜在扩散模型(LDM)的架构。 (图片来源:Rombach&Blattmann 等人,2022 年)


扩大生成分辨率和质量


为了在高分辨率下生成高质量图像,Ho 等人(2021 年)建议使用一系列不断增加分辨率的多个扩散模型的流水线。在流水线模型之间进行噪声调节增强对最终图像质量至关重要,即对每个超分辨率模型的调节输入 z 应用强大的数据增强。调节噪声有助于减少流水线设置中的复合误差。U-net 是扩散建模高分辨率图像生成中常见的模型架构选择。


图 15. 一系列级联的多个扩散模型,分辨率逐渐增加。【图片来源:何等人 2021】


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


  • 截断条件增强在低分辨率时在步骤 t>0 提前停止扩散过程。

  • 非截断条件增强运行完整的低分辨率反向过程直到步骤 0,然后通过 ztq(xt|x0) 对其进行破坏,然后将受损的 zt 输入到超分辨率模型中。


两阶段扩散模型 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 生成图像 x ,并可选择性地使用原始文本 y


这两个模型可以实现有条件的生成

P(x|y)=P(x,ci|y)ci is deterministic given x=P(x|ci,y)P(ci|y)

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


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


  1. 给定一个文本 y ,首先使用 CLIP 模型生成文本嵌入 ct(y) 。使用 CLIP 潜空间可以通过文本进行零镜头图像操作。

  2. 一个扩散或自回归先验 P(ci|y) 处理这个 CLIP 文本嵌入,以构建图像先验,然后扩散解码器 P(x|ci,[y]) 生成一幅图像,条件是先验。这个解码器还可以生成基于图像输入的图像变化,保留其风格和语义。


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


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


  • 静态阈值:将 x 预测剪切到 [1,1]

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


Imagen 对 U-net 进行了几项设计修改,使其更高效。


  • 通过为较低分辨率添加更多残差块,将模型参数从高分辨率块转移到低分辨率

  • 通过 1/2 来缩放跳跃连接

  • 为了提高前向传播的速度,将下采样的顺序(将其移至卷积之前)和上采样操作(将其移至卷积之后)颠倒。


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

 模型架构


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


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


  • 下采样:每个步骤由两个 3x3 卷积(无填充卷积)的重复应用组成,每个卷积后跟一个 ReLU 和一个 2x2 步幅为 2 的最大池化。在每个下采样步骤中,特征通道的数量翻倍。

  • 上采样:每个步骤包括对特征图的上采样,然后是 2x2 卷积,每次减半特征通道的数量。

  • 快捷方式:快捷连接导致与下采样堆栈的相应层级连接,并为上采样过程提供必要的高分辨率特征。

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


为了使图像生成能够根据额外的图像进行条件生成,用于合成信息,如 Canny 边缘、Hough 线、用户涂鸦、人体姿势骨架、分割地图、深度和法线,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)))

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


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


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

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

  3. 然后,这一系列的标记通过 Transformer 块。他们正在探索三种不同的设计,以便根据上下文信息(如时间步 t 或类标签 c )进行生成。在三种设计中,adaLN(自适应层归一化)-Zero 效果最好,比上下文条件和交叉注意力块更好。缩放和移位参数 γβ 是从 tc 的嵌入向量之和回归得到的。维度缩放参数 α 也被回归并立即应用于 DiT 块内的任何残差连接之前。

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

图 19. 扩散变压器(DiT)架构。


(图片来源:皮布尔斯和谢,2023 年)


Transformer 架构可以很容易地进行扩展,这是众所周知的。这是 DiT 的最大优势之一,因为随着更多计算资源的投入,其性能也会提升,根据实验结果,更大的 DiT 模型在计算效率上更高。

 快速总结


  • 优点:在生成建模中,可追溯性和灵活性是两个相互冲突的目标。可追溯的模型可以进行分析评估并廉价地拟合数据(例如通过高斯或拉普拉斯),但它们不能轻松描述丰富数据集中的结构。灵活的模型可以拟合数据中的任意结构,但通常评估、训练或从这些模型中抽样是昂贵的。扩散模型既具有分析可追溯性又具有灵活性。


  • 缺点:扩散模型依赖于一个长的马尔可夫链扩散步骤来生成样本,因此在时间和计算方面可能会非常昂贵。已经提出了新的方法来加快这一过程,但采样仍然比 GAN 慢。

 引用

 引用为:


翻译文本:翁,莉莲。 (2021 年 7 月)。 什么是扩散模型?Lil’Log。https://lilianweng.github.io/posts/2021-07-11-diffusion-models/.

Or

@article{weng2021diffusion,
  title   = "What are diffusion models?",
  author  = "Weng, Lilian",
  journal = "lilianweng.github.io",
  year    = "2021",
  month   = "Jul",
  url     = "https://lilianweng.github.io/posts/2021-07-11-diffusion-models/"
}

 参考资料


Jascha Sohl-Dickstein 等人。“使用非平衡热力学进行深度无监督学习。”ICML 2015。


Max Welling 和 Yee Whye Teh。“通过随机梯度 Langevin 动力学进行贝叶斯学习。”ICML 2011。


杨松和斯特凡诺·厄尔蒙。“通过估计数据分布的梯度进行生成建模。”NeurIPS 2019。


杨松和 Stefano Ermon。“用于训练基于分数的生成模型的改进技术。”NeuriPS 2020。


[5] Jonathan Ho 等人。“去噪扩散概率模型。”arxiv 预印本 arxiv:2006.11239(2020)。【代码】


[6] 宋佳明等人。“去噪扩散隐式模型。”arxiv 预印本 arxiv:2010.02502(2020 年)。【代码】


[7] Alex Nichol&Prafulla Dhariwal。“改进的去噪扩散概率模型”arxiv 预印本 arxiv:2102.09672(2021)。【代码】


[8] Prafula Dhariwal & Alex Nichol. “扩散模型在图像合成方面胜过 GANs。”arxiv 预印本 arxiv:2105.05233(2021 年)。[代码]


乔纳森·何和蒂姆·萨利曼斯。《无分类器扩散引导》。NeurIPS 2021 深度生成模型和下游应用研讨会。


杨松等人。“基于分数的随机微分方程生成建模。”ICLR 2021。


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


Jonathan Ho 等人。“级联扩散模型用于高保真图像生成。”J. Mach. Learn. Res. 23 (2022): 47-1.


[13] Aditya Ramesh 等人。“具有 CLIP 潜变量的分层文本条件图像生成。”arxiv 预印本 arxiv:2204.06125(2022)。


[14] Chitwan Saharia 和 William Chan 等人。“具有深度语言理解的照片逼真的文本到图像扩散模型。”arxiv 预印本 arxiv:2205.11487(2022)。


[15] Rombach&Blattmann 等人。“具有潜在扩散模型的高分辨率图像合成。”CVPR 2022. 代码


宋等人。“一致性模型”arxiv 预印本 arxiv:2303.01469(2023)


[17] Salimans & Ho. “渐进蒸馏用于快速采样扩散模型” ICLR 2022.


Ronneberger 等人。“U-Net: 用于生物医学图像分割的卷积网络” MICCAI 2015。


[19] Peebles&Xie。“具有变压器的可扩展扩散模型。”ICCV 2023。


张等人。“将条件控制添加到文本到图像扩散模型中。”arxiv 预印本 arxiv:2302.05543(2023)。