论文:Dnoising Diffusion Probabilistic Models
1. DDPM的训练过程
训练即重复下面的过程直至收敛:
- #2:取一张干净图片作为样本
- #3:从1到T之间sample出
- #4:生成噪声(shape和相同)
- #5:将噪声叠加到,让noise predictor尽量准确地估计噪声。
红色框内将和做带权的叠加得到一个带噪声的图片,权重是事先定义的(由指定);是noise predictor,它以混入噪声的latent和为输入,估计当前图片中的噪声(噪声的ground truth即前一步生成的噪声)。
注意,实际在DDPM方法的训练过程中,噪声并不是一步一步加入的,而是一次性加入的。
2. DDPM的推理过程
- #1:生成一个纯噪声的图
- #2~#4:重复步去噪过程,(有一些预先定义的仅和相关的系数),当前的图片减去预测的噪声再加上这一步的随机噪声,得到新的图片。
上述过程的合理性见李宏毅老师的数学推导(分集2、3)和猜测(分集4)。
部分数学推导
给模型一个随机噪声,我们希望能输出一个尽量真实的图像。生成的图像的分布应该尽量接近真实图像的分布。如下图,我们通过极大似然估计(Maximum Likelihood Estimation)来达到这个目的,表示生成图片的分布,表示真实图片的分布。
从中sample数据其实就是收集真实的图片。
我们计算真实图片为生成图片的概率,我们的目标是得到让真实图片被认为是生成图片的概率最大的模型。
第2个=,取log不影响argmax
第4个=,m足够大,期望的定义
不断取真实图像,计算的期望-
第5个=,关于X的随机变量期望的计算(取的概率乘上做积分)。后一项是真实分布的期望,与无关,不影响argmax,减去它是为了凑KL散度。
极大似然估计的结果等价于最小化KL散度。所以,优化目标直接设置为极大似然,就相当于让生成数据的分布尽量接近真实数据了。 -
VAE对的计算
对于某个图片,它被生成出来的概率是。是容易算的,可以是从高斯分布sample出来的。但若定义为“当且仅当输入恰好让生成了则为1,否则为0”,那可能算出来的几乎都是0。所以VAE做了一个假设: