在这篇笔记中,我们介绍提出了扩散模型的统一框架的两篇文章之一,NVIDIA的Elucidating the Design Space of Diffusion-Based Generative Models关于扩散模型与其衍生出的流模型的解释
通常对给定的某个感兴趣的分布中采样的部分样本,人类需要从中学习未知分布的信息并尝试从未知分布中采样新的样本,生成式模型被设计以解决这一类问题,这类方法在语言,图像,影像,音频等领域得到大量的发展与应用。变分自编码器,对抗生成网络,扩散模型及其变体都属于这一类别。
这类模型均涉及通过逐渐增强的噪声对训练数据进行成序破坏,随后学习逆转这种破坏过程,进而构建数据的生成模型。早期两类有影响力的发表工作分别是:基于朗之万动力学的得分匹配Score Matching with Langevin Dynamics, SMLD会在每个噪声尺度下估计得分(即对数概率密度相对于数据的梯度),之后在生成阶段利用朗之万动力学,从噪声尺度逐渐降低的序列中进行采样;以及去噪扩散概率建模Denoising Diffusion Probabilistic Modeling,DDPM则训练一系列概率模型来逆转噪声破坏的每一步,并借助反向分布的函数形式相关知识,使训练过程具备可处理性。在连续状态空间中,DDPM 的训练目标会隐式地计算每个噪声尺度下的得分。因此,这两类模型可以统称为基于得分的生成模型。
扩散模型的原型最早在2015年的Deep Unsupervised Learning using Nonequilibrium Thermodynamics中提出,2020年在Denoising Diffusion Probabilistic Models将扩散模型应用于图像生成领域,并取得了在当时看来相当可观的成功,扩散模型逐渐成为图像生成方向的主流方法。
由DDPM作为起点,扩散模型发展出了针对不同性能优化的各种变体,其中比较具有影响力的是同年提出的Denoising Diffusion Implicit Models以及2021年提出的Improved Denoising Diffusion Probabilistic Models ,分别给出了在更短时间下生成更高质量图像的确定性采样方法、可优化的方差参数和改进的schedule设计。
另一方面,在条件生成方向,有Diffusion Model Beats GAN on Image Synthesis,Classifier-free Diffusion Guidance两篇工作,分别提出了以额外的训练器指导条件生成过程中的梯度,以及基于条件分数与无条件分数的联系设计无需分类器梯度引导的条件生成方法。
然而,这些众多关于扩散模型的工作,尽管不同的方法分别改进了图像质量,生成速度,训练成本在内的各种性能,但这些工作通常以一个整体的结构形式被发表,而单一组件如何被改进以及其造成的影响却没有得到充分的讨论。扩散模型的统一框架在Score-Based Generative Modeling Through Stochastic Differential Equations这篇文章中才被提出,Elucidating the Design Space of Diffusion-Based Generative Models采用近似但略有不同的角度阐释了整个过程的机理,并提出了扩散模型设计空间的选择和一些高效的设计选择。两篇文章提出了涵盖其他有影响力的变体的统一框架,并给出了确定性采样方法概率流模型的推导。
我们这篇note将会逐一解释EDM的理论部分,对设计空间感兴趣的同学可以自己去阅读原文章。
我们用 pdata(x)表示数据的分布,其具有σdata的标准差。
我们考虑在数据分布上添加水平为σ的独立高斯噪声得到的含噪分布,平滑分布族p(x,σ)满足
p(x,σ)=(pdata∗N(0,σ2I))(x)
对于σmax≥σdata,高斯噪声水平远大于数据标准差的情形,p(x,σ)与纯高斯噪声是基本上相同的。
当我们需要从一个未知分布中采样,却只有采样自这个未知分布的若干样本x1,x2,⋯,xn时,该怎么设计一个算法满足采样的需求?
事实上,如果直接去优化生成样本到这些采样数据的距离,通过变分可以发现最优解只是这些样本的加权均值,而不一定在需要的数据分布之中
θ∗=θargmini=1∑nci∣∣f(θ)−xi∣∣2
f(θ∗)=i=1∑n∑j=1ncjcixi
为了从有限的采样样本中学习分布的信息,我们必须从分布的角度出发。扩散模型的基本思想是,设计一个随时间演化的过程At,使得在t1时刻服从p(x,σt1)分布的变量经过演化,在t2时刻恰好服从p(x,σt2)分布。
x∼p(x,σt1)⟹At1→t2(x)∼p(x,σt2)
扩散模型的过程相当于逐步从含噪分布中降低噪音水平,当输入从x0∼N(0,σmax2I)中随机采样一个噪声图像,然后将其依次去噪得到σmax>σ1>⋯>σN=0噪声水平的图像,使得在每个噪声水平下xi∼p(x,σi)。因此,这个过程的终点的分布与数据分布一致,而初始的采样在σtmax充分大时可以替换为高斯噪声的采样。
为了研究分布在微分方程下的演化,我们需要引入统计物理的工具Fokker-Planck方程,在微观和介观的实际物理系统中,粒子的运动往往存在大量的随机因素和复杂的相互作用,难以对每个粒子的运动进行详细描述,更实际有效的方法是研究粒子的速度和位置服从的分布,从微观粒子的行为出发推导出宏观系统的性质。
Fokker-Planck方程描述了系统状态的概率分布随时间的演化,对一般的N维SDE
dx=f(x,t)dt+g(x,t)dwt
其解服从的分布的概率密度r(x,t)随时间的演化服从以下方程
∂t∂r(x,t)=−i=1∑N∂xi∂[fi(x,t)r(x,t)]+i=1∑Nj=1∑N∂xi∂xj∂2[Dij(x,t)r(x,t)]
其中
Dij(x,t)=21k=1∑Ngik(x,t)gjk(x,t).
我们只需要g(x,t):=g(t)I情况下这个方程的简化形式
∂t∂r(x,t)=−∇x⋅(f(x,t)r(x,t))+21g2(t)Δr(x,t)
为了完成从未知分布中采样的任务,我们现在只需要设计一个随机微分方程,它的Fokker-planck形式满足含噪分布的演化性质,为此我们必须先探究p(x,σ)满足的性质,记q(x,t)=p(x,σ(t)),回到前面的定义,我们有
q(x,t)=(pdata∗N(0,σ2(t)I))(x)
它的演化由扩散方程描述
∂t∂q(x,t)=κ(t)Δxq(x,t)
考虑q(x,t)在空间维度上的傅里叶变换q^(v,t),由傅里叶变换的性质:
∂t∂q(v,t)=−κ(t)∣v∣2Δvq(v,t)
q^(v,t)=p^data(v)exp(−21∣v∣2σ2(t))
对等式左右侧关于t微分
∂t∂q^(ν,t)=−σ˙(t)σ(t)∣ν∣2p^data(ν)exp(−21∣ν∣2σ(t)2)=−σ(t)˙σ(t)∣ν∣2q^(ν,t)
知
∂t∂q(x,t)=σ˙(t)σ(t)Δxq(x,t)
结合以上两个子单元,只需要设计一个SDE,它的Fokker-Planck方程形式满足3.2节推导的形式,也就是
−∇x⋅(f(x,t)q(x,t))+21g2(t)Δq(x,t)=σ˙(t)σ(t)Δxq(x,t)
∇x⋅(f(x,t)q(x,t))=[21g2(t)−σ˙(t)σ(t)]Δxq(x,t)
实际上,只需要取f(x,t)使得
f(x,t)q(x,t)=[21g2(t)−σ˙(t)σ(t)]∇xq(x,t)
为此可以导出
f(x,t)=[21g2(t)−σ˙(t)σ(t)]∇xlogq(x,t)
我们称出现在等式右端的这项 似然函数的梯度 为分数(score function),由此我们得到一族随机微分方程满足作为生成式模型的条件
dx=[21g2(t)−σ˙(t)σ(t)]∇xlogp(x,σ(t))dt+g(t)dwt
输入高斯噪声,通过这个随机微分方程在tmax→tmin=0上的演化,输出的样本将服从分布p(x,σ(tmin)),从而完成在未知分布中采样的任务。
在3.3节的讨论中,通过理论推导了满足平滑分布族p(x,σ(t))演化条件的随机微分方程族,注意到当g(t)=0时,整个随机微分方程退化为一个常微分方程
dx=[−σ˙(t)σ(t)]∇xlogp(x,σ(t))dt
其轨迹与随机微分方程具有相同的边际概率密度,同样能够应用在生成任务中,同时因为其确定性采样的性质,能够被应用在许多扩散模型的进一步应用算法中。
相对于随机微分方程的“去噪”作用,概率流ODE模型的演化同样使得样本分布的含噪水平逐步下降,但需要指出这两种方法的去噪作用都是针对分布的含噪水平的,而非单个样本上固定噪声水平的下降,概率流ODE模型可以被理解为SDE的一条“综合的轨迹”,具有与SDE相同的边际分布。
基于第三单元的讨论,我们已经推导出了满足生成性质的微分方程形式,现在唯一的问题是如何对任意的二元组(x,σ(t))计算分数∇xlogp(x,σ(t))。对给定的噪声水平σ(t),这个向量场作为似然函数的梯度,自然的指向数据密度更高的区域。
实际上,对由独立高斯噪声和数据分布加和得到的求噪分布,score function有更一般的形式,我们对数据分布的简单形式给出推导,对更一般的连续分布形式,将以下推导中的求和改为全空间上对数据密度的积分,结论与推导过程依然成立。
假设数据集由有限个样本 x1,x2,⋯,xn组成,数据分布有以下形式
pdata(x)=n1i=1∑nδ(x−xi)
根据 p(x,σ)=pdata∗N(0,σ2I),将 pdata的表达式代入可得:
p(x,σ)=pdata∗N(0,σ2I)=∫Rdpdata(x0)N(x;x0,σ2I)dx0=∫Rd[n1i=1∑nδ(x0−xi)]N(x;x0,σ2I)dx0=∫Rd[n1i=1∑nδ(x0−xi)]N(x;x0,σ2I)dx0=∫Rd[n1i=1∑nδ(x0−xi)]N(x;x0,σ2I)dx0=n1i=1∑n∫RdN(x;x0,σ2I)δ(x0−xi)dx0=n1i=1∑nN(x;xi,σ2I)
其中N(x;y,σ2I)为以y为均质σ2I为协方差的高斯分布在x处的密度
基于这一形式,进一步展开分数函数
∇xlogp(x,σ)=p(x,σ)∇xp(x,σ)=∑i=1nN(x;x_i,σ2I)∑i=1n∇xN(x;xi,σ2I)
∇xN(x;xi,σ2I)=∇x[(2πσ)−d/2exp−2σ2∣∣x−xi∣∣2]=(2πσ)−d/2exp−2σ2∣∣x−xi∣∣2(x−xi)/(−σ2)=N(x;xi,σ2I))(xi−x)/σ2
可以得到分数函数更直观的形式,x处的分数向量场正是由这一点指向原始数据分布的方向,下式的最后形式在经验贝叶斯估计中也被称为Tweedie's formula,它指出对给定的x计算E[x0∣x]和计算分数函数是相等价的。
∇xlogp(x,σ)=∑i=1nN(x;xi,σ2I)∑i=1n∇xN(x;xi,σ2I)=σ21[∑i=1nN(x;xi,σ2I)∑i=1nN(x;xi,σ2I)xi−x]=σ2Ex∼N(x0,σ2I);x0∼p∗data[x0∣x]−x
上一节推出的分数函数的解析形式,是数据集样本关于权重N(x;y,σ2I),以样本y为均值σ2I为协方差的高斯分布在自变量x处密度的加权均值,为了高效且准确的计算这个函数,自然的想法是设计一个损失函数和训练模式,使得损失函数的最优解恰为score function,困难在于如何构造这个基于高斯分布密度形式的系数。
实际上score function的训练只需要训练一个去噪器,考虑一个具有图像输入和噪声水平输入的神经网络Dθ(x,σ),去噪器的训练模式是在数据分布中采样数据y,在y上添加独立的水平为σ的高斯噪声n,并最小化
∣∣D_θ(y+n,σ)−y∣∣2
展开这个训练的损失函数
L(D;σ)=Ey∼pdataEn∼N(0,σ2I)∣∣D(y+n,σ)−y∣∣22=Ey∼pdataEx∼N(y,σ2I)∣∣D(x,σ)−y∣∣22=Ey∼pdata∫RdN(x;y,σ2I)∣∣D(x,σ)−y∣∣22dx=n1i=1∑n∫RdN(x;yi,σ2I)∣∣D(x,σ)−yi∣∣22dx
为了找到使L(D;σ)最小的D(x,σ),只需要考虑对每个给定的x独立最小化上式 ,考虑变分令其关于D(x,σ)的梯度为零:
D(x,σ)=argmin∇D(x,σ)L(D;σ)
0=∇D(x,σ)n1i=1∑nN(x;yi,σ2I)∣∣D(x,σ)−yi∣∣22=i=1∑nN(x;yi,σ2I)∇D(x,σ)∣∣D(x,σ)−yi∣∣22=i=1∑nN(x;yi,σ2I)2(D(x,σ)−yi)
得到去噪器的理想解析解。
D(x,σ)=∑i=1nN(x;yi,σ2I)∑i=1nN(x;yi,σ2I)yi
对连续分布的形式,我们也可以重写上式
L(D;σ)=Ey∼pdataEn∼N(0,σ2I)∣∣D(y+n,σ)−y∣∣22=Ey∼pdataEx∼N(y,σ2I)∣∣D(x,σ)−y∣∣22=∫Rd∫Rdpdata(y)N(x;y,σ2I)∣∣D(x,σ)−y∣∣22dxdy
0=∇D(x,σ)∫Rdpdata(y)N(x;y,σ2I)∣∣D(x,σ)−y∣∣22dy=∫Rdpdata(y)N(x;y,σ2I)∇D(x,σ)∣∣D(x,σ)−y∣∣22dy=∫Rdpdata(y)N(x;y,σ2I)2(D(x,σ)−y)dy
D(x,σ)=∫Rdpdata(y)N(x;y,σ2I)dy∫Rdpdata(y)N(x;y,σ2I)ydy
恰与前一节推导的分数函数的解析形式相同
到4.2节为止的讨论已经基本解释了扩散模型的机制,但注意到我们只讨论了t时刻的分布为p(x,σt)的情景,这一过程是方差随t无限增长的,但扩散模型存在种种变体,其中存在一些具有稳定方差的形式。更一般的形式是
xt=s(t)x^t
其中x^t是我们前面讨论的分布族的随机过程,xt对应的一般形式的概率流ODE模型是
dx=[s(t)s˙(t)x−s(t)2σ˙(t)σ(t)∇xlogp(s(t)x;σ(t))]dt
