2020年的Denoising Diffusion Probabilistic Models论文

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM

阅读本篇文章你可以学习到


文章目录

  • 阅读本篇文章你可以学习到
  • 1 图像生成到扩散模型的思维转变
  • 1.1 VAE和GAN
  • 1.2 扩散模型
  • 2 扩散模型的两个过程
  • 2.1 前向加噪过程
  • 2.2 反向去噪过程
  • 2 DDPM训练算法和采样算法
  • 2.1 训练算法流程
  • 2.2 去噪采样过程
  • 3 总结
  • 参考资料


1 图像生成到扩散模型的思维转变

1.1 VAE和GAN

在认识扩散模型之前,我们先退一步,看看一般的神经网络模型是怎么生成图像的。显然,为了生成丰富的图像,一个图像生成程序要根据随机数来生成图像。通常,这种随机数是一个满足标准正态分布的随机向量。这样,每次要生成新图像时,只需要从标准正态分布里随机生成一个向量并输入给程序就行了。

而在AI绘画程序中,负责生成图像的是一个神经网络模型。神经网络需要从数据中学习。对于图像生成任务,神经网络的训练数据一般是一些同类型的图片。比如一个绘制人脸的神经网络会用人脸照片来训练。也就是说,神经网络会学习如何把一个向量映射成一张图片,并确保这个图片和训练集的图片是一类图片。

可是,相比其他AI任务,图像生成任务对神经网络来说更加困难一点——图像生成任务缺乏有效的指导。在其他AI任务中,训练集本身会给出一个「标准答案」,指导AI的输出向标准答案靠拢。比如对于图像分类任务,训练集会给出每一幅图像的类别;对于人脸验证任务,训练集会给出两张人脸照片是不是同一个人;对于目标检测任务,训练集会给出目标的具体位置。然而,图像生成任务是没有标准答案的。图像生成数据集里只有一些同类型图片,却没有指导AI如何画得更好的信息。

为了解决这一问题,人们专门设计了一些用于生成图像的神经网络架构。这些架构中比较出名的有生成对抗模型(GAN)和变分自编码器(VAE)。

GAN的想法是,既然不知道一幅图片好不好,就干脆再训练一个神经网络,用于辨别某图片是不是和训练集里的图片长得一样。生成图像的神经网络叫做生成器,鉴定图像的神经网络叫做判别器。两个网络互相对抗,共同进步。

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_02


VAE则使用了逆向思维:学习向量生成图像很困难,那就再同时学习怎么用图像生成向量。这样,把某图像变成向量,再用该向量生成图像,就应该得到一幅和原图像一模一样的图像。每一个向量的绘画结果有了一个标准答案,可以用一般的优化方法来指导网络的训练了。VAE中,把图像变成向量的网络叫做编码器,把向量转换回图像的网络叫做解码器。其中,解码器就是负责生成图像的模型。对VAE的更深入理解感兴趣可以阅读:《VQ-VAE》:Stable Diffusion设计的架构源泉

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_03


一直以来,GAN的生成效果较好,但训练起来比VAE麻烦很多。有没有和GAN一样强大,训练起来又方便的生成网络架构呢?扩散模型正是满足这些要求的生成网络架构。

1.2 扩散模型

扩散模型是一种特殊的VAE,其灵感来自于热力学:一个分布可以通过不断地添加噪声变成另一个分布。放到图像生成任务里,就是来自训练集的图像可以通过不断添加噪声变成符合标准正态分布的图像。 从这个角度出发,我们可以对VAE做以下修改:

  • 1)不再训练一个可学习的编码器,而是把编码过程固定成不断添加噪声的过程;
  • 2)不再把图像压缩成更短的向量,而是自始至终都对一个等大的图像做操作。解码器依然是一个可学习的神经网络,它的目的也同样是实现编码的逆操作。不过,既然现在编码过程变成了加噪,那么解码器就应该负责去噪。而对于神经网络来说,去噪任务学习起来会更加有效。

因此,扩散模型既不会涉及GAN中复杂的对抗训练,又比VAE更强大一点。

具体来说,扩散模型由正向过程和反向过程这两部分组成,对应VAE中的编码和解码。

  • 1)在正向过程中,输入《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_04会不断混入高斯噪声。经过《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_05次加噪声操作后,图像《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_06会变成一幅符合标准正态分布的纯噪声图像。
  • 2)而在反向过程中,我们希望训练出一个神经网络,该网络能够学会《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_05个去噪声操作,把《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_06还原回《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_04。网络的学习目标是让《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_05个去噪声操作正好能抵消掉对应的加噪声操作。
  • 3)训练完毕后,只需要从标准正态分布里随机采样出一个噪声,再利用反向过程里的神经网络把该噪声恢复成一幅图像,就能够生成一幅图片了。

高斯噪声,就是每个像素值是从高斯分布中取样得来的。如果高斯分布的均值 μ 设为 128,标准差 σ 设为 25,那么大部分像素值会集中在 128 附近(可能在 100 到 156 之间),而远离 128 的像素值则会较少出现。即高斯噪声的像素值的分布呈现高斯分布钟形曲线。

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_11

2 扩散模型的两个过程

2.1 前向加噪过程

在前向过程中,来自训练集的图像《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_12会被添加《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13次噪声,使得《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_14为符合标准正态分布。准确来说,「加噪声」并不是给上一时刻的图像加上噪声值,而是从一个均值与上一时刻图像相关的正态分布里采样出一幅新图像。如下面的公式所示,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_15是上一时刻的图像,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_16是这一时刻生成的图像,该图像是从一个均值与《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_15有关的正态分布里采样出来的。

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_18

前向过程也是一个马尔可夫过程。马尔可夫过程的意思就是当前时刻的状态只由上一时刻的状态决定,而不由更早的状态决定。上面的公式表明,计算《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19,只需要用到,而不需要用到《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_15,这符合马尔可夫过程的定义。

绝大多数扩散模型会把这个正态分布设置成这个形式:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_21

这个正态分布公式乍看起来很奇怪:《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_22是哪里冒出来的?为什么会有这种奇怪的系数?别急,我们先来看另一个问题:假如给定《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_12,也就是从训练集里采样出一幅图片,该怎么计算任意一个时刻《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_24的噪声图像《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19呢?

我们不妨按照公式,从《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19开始倒推。其实可以通过一个标准正态分布的样本《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_27算出来

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_21
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_29
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_30

再往前推几步:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_31

由正态分布的性质可知,均值相同的正态分布「加」在一起后,方差也会加到一起。也就是《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_32《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_33合起来会得到《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_34。根据这一性质,上面的公式可以化简为:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_35

再往前推一步的话,结果是:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_36

我们已经能够猜出规律来了,可以一直把公式推到《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_12。令《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_38

则:
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_39

有了这个公式,我们就可以讨论加噪声公式为什么是《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_21了。这个公式里的《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_41是一个小于1的常数。在DDPM论文中,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_41《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_43《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_44线性增长。这样,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_41变大,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_46就越小,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_47趋于0的速度越来越快。最后,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_47几乎为0,代入《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_39《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_14就满足标准正态分布了,符合我们对扩散模型的要求。

上述推断可以简单描述为:加噪声公式能够从慢到快地改变原图像,让图像最终均值为0,方差为《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_51

2.2 反向去噪过程

在正向过程中,我们人为设置了《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13步加噪声过程。而在反向过程中,我们希望能够倒过来取消每一步加噪声操作,让一幅纯噪声图像变回数据集里的图像。这样,利用这个去噪声过程,我们就可以把任意一个从标准正态分布里采样出来的噪声图像变成一幅和训练数据长得差不多的图像,从而起到图像生成的目的。

现在问题来了:去噪声操作的数学形式是怎么样的?怎么让神经网络来学习它呢?数学原理表明,当《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_41足够小时,每一步加噪声的逆操作也满足正态分布。《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_54
其中,当前时刻加噪声逆操作的均值《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_55和方差《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_56由当前的时刻《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_24、当前的图像《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19决定。因此,为了描述所有去噪声操作,神经网络应该输入《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_59《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_60,拟合当前的均值《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_61和方差《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_62

现在问题来了:加噪声逆操作的均值和方差是什么?论文作者经过一系列严谨的数学原理推导得知,均值等于:
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_63

其中,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_64是用公式算《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19时从标准正态分布采样出的样本,它来自公式
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_66

而分布的方差为:
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_67

注意,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_41是加噪声的方差,是一个常量。那么,加噪声逆操作的方差《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_56也是一个常量,不与输入《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_12相关。这下就省事了,训练去噪网络时,神经网络只用拟合个均值就行,不用再拟合方差了。

知道了均值和方差的真值,训练神经网络只差最后的问题了:该怎么设置训练的损失函数?加噪声逆操作和去噪声操作都是正态分布,网络的训练目标应该是让每对正态分布更加接近。那怎么用损失函数描述两个分布尽可能接近呢?最直观的想法,肯定是让两个正态分布的均值尽可能接近,方差尽可能接近。根据上文的分析,方差是常量,只用让均值尽可能接近就可以了。

那怎么用数学公式表达让均值更接近呢?再观察一下目标均值的公式:
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_63

神经网络拟合均值时,《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19是已知的(别忘了,图像是一步一步倒着去噪的)。式子里唯一不确定的只有《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_64。既然如此,神经网络干脆也别预测均值了,直接预测一个噪声《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_74(其中《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_75为可学习参数),让它和生成《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_60的噪声《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_77的均方误差最小就行了。 对于一轮训练,最终的误差函数可以写成

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_78

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_79


这样,我们就认识了反向过程的所有内容。总结一下,反向过程中,神经网络应该让《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13个去噪声操作拟合对应的《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13个加噪声逆操作。每步加噪声逆操作符合正态分布,且在给定某个输入时,该正态分布的均值和方差是可以用解析式表达出来的。因此,神经网络的学习目标就是让其输出的去噪声分布和理论计算的加噪声逆操作分布一致。经过数学计算上的一些化简,问题被转换成了拟合生成《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19时用到的随机噪声《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_64

2 DDPM训练算法和采样算法

2.1 训练算法流程

理解了前向过程和反向过程后,训练神经网络的算法和采样图片(生成图片)的算法就呼之欲出了。以下是DDPM论文中的训练算法:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_84

让我们来逐行理解一下这个算法。第二行是指从训练集里取一个数据《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_12。第三行是指随机从《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_86里取一个时刻用来训练。我们虽然要求神经网络拟合《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13个正态分布,但实际训练时,不用一轮预测《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13个结果,只需要随机预测个时刻中某一个时刻的结果就行。第四行指随机生成一个噪声《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_89,该噪声是用于执行前向过程生成《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_90的。之后,我们把《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_19《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_24传给神经网络《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_74,让神经网络预测随机噪声。训练的损失函数是预测噪声和实际噪声之间的均方误差,对此损失函数采用梯度下降即可优化网络。

DDPM并没有规定神经网络的结构。根据任务的难易程度,我们可以自己定义简单或复杂的网络结构。这里只需要把《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_74当成一个普通的映射即可。

2.2 去噪采样过程

训练好了网络后,我们可以执行反向过程,对任意一幅噪声图像去噪,以实现图像生成。这个算法如下:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_95


第一行的《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_14就是从标准正态分布里随机采样的输入噪声。要生成不同的图像,只需要更换这个噪声。后面的过程就是扩散模型的反向过程。令时刻《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_13《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_AI作画_98到,计算这一时刻去噪声操作的均值和方差,并采样出《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_15。均值是用之前提到的公式计算的:

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_100

而方差《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_101的公式有两种选择,两个公式都能产生差不多的结果。实验表明,当是特定的某个数据时,用上一节推导出来的方差最好。
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_102

而当时《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_神经网络_103,只需要令方差和加噪声时的方差一样即可。
《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_104

循环执行去噪声操作。最后生成的《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_DDPM_12就是生成出来的图像。

3 总结

-1)从实际DDPM的公式推导中不难发现,Comfyui中常见的scheduler就是为了生成《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_stable diffusion_106

《DDPM》论文精读:开创了Stable Diffusion扩散AI绘画新时代_扩散模型_107

  • 2)采样器的类型除了DDPM之外,还有其它的采样器,如图所示

参考资料

https://mp.weixin.qq.com/s/_OqE5N3sQaOp8V2SKRpfKw https://lilianweng.github.io/posts/2021-07-11-diffusion-models/ https://arxiv.org/abs/2208.11970