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τ 的中间表示中。