生成对抗网络(GAN)是一种主要的生成模型系列,其特点是采用对抗性训练机制;而扩散模型则提供了一种不同且日益强大的方法。这些模型近期才被提出,但已迅速取得了当前最好的效果,尤其在图像合成方面,常能生成高保真且非常多样化的样本。与GAN有时不稳定的最小-最大博弈不同,扩散模型一般提供更稳定的训练过程,但通常会以较慢的采样速度为代价。
扩散模型背后的核心思路涉及两个过程:一个固定的正向过程和一个学到的逆向过程。
正向过程:逐步添加噪声
设想有一个干净的数据样本,比如一张从真实数据分布pdata(x)中取出的图像x0。正向过程通过在T个时间步中逐步添加少量高斯噪声来让这个样本逐渐失真。这形成了一个马尔可夫链,其中时间步t的状态(记作xt)只依赖于前一个时间步xt−1的状态:
q(xt∣xt−1)=N(xt;1−βtxt−1,βtI)
这里,βt表示一个小的正数常量,它决定了在时间步t添加的噪声的方差。序列β1,β2,...,βT被称为方差调度,一般是预先设定的(例如,线性或二次方增长)。
此过程的一个有用属性是,我们可以直接根据原始数据x0来采样xt,而无需迭代所有中间步骤。假如我们定义αt=1−βt和αˉt=∏i=1tαi,则分布q(xt∣x0)也是高斯分布:
q(xt∣x0)=N(xt;αˉtx0,(1−αˉt)I)
随着t接近T,累积的噪声添加作用使得αˉt趋近于零。结果,xT几乎失去了关于原始x0的所有信息,并且实际上与纯高斯噪声xT≈N(0,I)变得无法区分。正向过程是固定的,它无需训练。
此图说明了固定的正向过程,其中数据x0按照转移概率q在T个步骤中逐步添加噪声,直到它类似于纯噪声xT。
逆向过程:学习去噪
核心生成任务在于逆向过程。我们希望从随机噪声xT∼N(0,I)开始,反转加噪步骤,逐步对其进行去噪,最终得到一个看起来像是来自原始数据分布pdata的样本x0。这包括学习t=T,T−1,...,1的转移概率pθ(xt−1∣xt)。
假如正向过程中的噪声步长βt足够小,那么真实的逆向转移q(xt−1∣xt,x0)也可以被证明近似为高斯分布。但是,计算这个真实的逆向转移需要知道原始数据x0,而这正是我们想要生成的。
所以,我们使用由θ参数化的神经网络来近似这些真实的逆向转移。这个网络以含噪样本xt和当前时间步t作为输入,并学习预测分布pθ(xt−1∣xt)的参数(一般是均值和方差):
pθ(xt−1∣xt)=N(xt−1;μθ(xt,t),Σθ(xt,t))
与其直接预测均值μθ(xt,t),一种常用且实用的参数化方式是训练网络(通常记作ϵθ(xt,t))来预测从xt−1到xt所添加的噪声 ϵ(或者更精确地说,是基于x0对应于xt的噪声分量)。有了预测的噪声ϵθ(xt,t),我们就可以计算出pθ(xt−1∣xt)的参数。
训练与生成
逆向过程网络的参数θ通过最大化训练数据的似然进行优化。这一般涉及优化对数似然的变分下界(ELBO)。对于扩散模型,这个目标函数往往可以被简化为更易于处理的形式。一个常见的简化目标是最小化正向过程中添加的实际噪声ϵ(根据x0可以方便地采样)与网络ϵθ预测的噪声之间的均方误差:
Lsimple(θ)=Et∼[1,T],x0∼pdata,ϵ∼N(0,I)[∣∣ϵ−ϵθ(xt,t)∣∣2]
xt=αˉtx0+1−αˉtϵ是使用直接正向采样公式生成的。训练涉及重复采样数据点x0、时间步t、采样噪声ϵ、构建对应的xt,并在这个损失上执行梯度下降步骤。
当模型ϵθ(xt,t)训练完成后,生成(采样)过程如下:
- 采样初始噪声xT∼N(0,I)。
- 从t=T开始,向后迭代至t=1:
- 使用网络ϵθ(xt,t)预测噪声分量。
- 使用此预测计算分布pθ(xt−1∣xt)的参数(均值μθ(xt,t)和方差Σθ(xt,t))。
- 采样xt−1∼pθ(xt−1∣xt)。
- 最终输出x0是生成的样本。
此图比较了固定的正向加噪过程q与学习的逆向去噪过程pθ。逆向过程从噪声xT开始,并运用一个训练过的模型ϵθ(通过训练目标Lsimple优化),以迭代方式采样噪声较少的状态,最终生成样本x0。
这种迭代式的加噪-去噪框架是扩散模型的基础。尽管直接明了,方差调度、网络结构(常是U-Net)和训练目标的不同选择会形成不同的模型变体,例如去噪扩散概率模型(DDPM)和基于分数模型,我们将在第四章详细说明这些内容。掌握这一核心机制对于实现和优化这些高级生成技术非常必要。