扩散模型(Diffusion Model)
在以前的文章图像生成模型中已经大概介绍了目前SOTA的图像生成模型的共同点,并初步了解了Diffusion Model,在这篇文章中将详细讲解扩散模型的数学原理等。
基本概念
首先回顾一下扩散模型的基本概念和生成过程,可以大概分为两步:
-
Forward Process:对训练集中的图片不断加入与图片shape相同的、从某随机分布中sample出的噪声,直至图片可以被认为是从该随机分布中sample出的矩阵。
Forward Process又叫做Diffusion Process,在这一步中产生的噪声-加入噪声的图像对可以用来训练Noise Predictor,即从有噪声的图像中预测出其中的噪声,再从输入中减去噪声得到降噪后的图片。
图像生成的原理这一步的目的也同样在之前的文章图像生成模型中提到过:由于根据文字prompt期待生成的图像并不是固定的,可以认为生成的图片在目标域(Target Domain)符合某种分布。因此目前的SOTA模型除了将文字prompt作为输入,还从某随机分布中sample出图片shape的随机向量(矩阵)作为输入 ,期待模型根据prompt将源域(Source Domain)输入的随机向量映射到目标域的分布,生成对应的图片。
-
Reverse Process:使用Diffusion Process训练的Noise Predictor,根据文字Prompt对从随机分布中sample出的图片大小的噪声图片进行降噪,得到原图。
值得注意的是,变分自编码器(Variational Auto-Encoder, abbr. VAE)与Diffusion Model非常相似:VAE对训练集中的原始图像使用Encoder将其变换为某种Latent Representation,这种Latent Representation的分布也是符合某种随机分布的,VAE再通过Decoder将期待生成的目标域图像还原出来。
在下面的文章中我们也会学习一下VAE的数学原理,从VAE到Diffusion Model的具体数学推导,可以参考胡老师推荐的论文Understanding Diffusion Models: A Unified Perspective。
下面我们以DDPM论文中的原图来分析DDPM的训练与推理过程。