扩散模型(二)| IDDPM
学习笔记
论文:https://arxiv.org/pdf/2102.09672.pdf
代码:https://github.com/openai/improved-diffusion
参考:
生成模型的评价指标
FID(Fréchet Inception Distance)
把真实的图像和生成的图像分别送入分类器中,可以得到两个不同的特征分布。假设这两种分布都是高斯分布,利用Fréchet距离可以求出两个分布的距离。FID距离越小代表生成的分布和真实分布越接近,生成效果越好。
设真实图片和生成图片的特征均值:
FID分数和人类的视觉判断是比较一致的,并且计算复杂度不高;缺点是高斯分布的假设过于简化。

IS(Inception Score)
从清晰度和多样性两方面考虑。
- 清晰度:从单一图片考虑,此图片可以被分类器精准的划分到某个具体的类别中,即该图片数据某一类的概率大,属于其他类别的概率都很小,因此希望
的熵很小(熵代表混乱度和不确定性;类别概率分布越集中,熵越小;越分散,熵越大),即最小化 。 - 多样性:从所有图片考虑,希望生成的图片具有多样性,即每个类别的数目差不多。即希望
的熵很大,即最大化 。
综上,希望最大化
为了便于计算,添加指数项,
其中,
缺点:当生成模型过拟合时,生成器只记住了训练集的样本,泛化能力差,但IS无法检测到这个问题。IS只考虑模型生成图像的分布而忽略了训练数据集的分布。
NLL(Negative Log-Likelihood)
评估概率模型的拟合程度,它等于训练集样本在
NLL指标越小,表示模型对数据集的拟合程度越好。
CLIP-Score
CLIP Score用于评价text-to-image任务中生成的图像和文本对之间的关联程度。其将自然语言和图像分别转换为相应特征向量,之后计算它们的余弦相似度。CLIP分数越高(接近于1),图像文本对之间关联度更高,更匹配。
动机
DDPM的FID指标和IS指标结果优越,能生成高质量样本;然而,DDPM不能完成和其他模型相比有竞争力的NLL指标。
NLL指标是一个在生成模型中广泛使用的指标,优化对数似然使生成模型更好地拟合数据分布。最近的工作展示在对数似然指标上得到小的提升可以对样本质量和学习到的特征分布有极大的影响。
因此,本文探索为什么DDPM在对数似然指标上表现较差,提出对DDPM的三点改进,使得DDPM完成更优越的对数似然结果,同时维持高的样本生成质量。
概览
- DDPM中方差项固定,不可学习;IDDPM引入了方差项的学习,损失项加上了惩罚项
。学习方差的好处:
- 可以提高NLL指标
- 允许逆向过程的采样步数减少一个数量级,样本质量几乎不变。DDPM需要上百步来产生好的样本,IDDPM仅仅需要50步,极大的加速了采样过程。(后面和DDIM进行了对比)
- DDPM的方差是linear schedule;IDDPM改进schedule,采用cosine schedule。
- DDPM中是均匀采样;IDDPM提出重要性采样。当使用重要性采样时,单纯优化
的NLL指标比优化 的效果更好。
DDPM回顾
前向传播过程初始定义:

如果T足够大,最终

可以写出它的变分下届(VLB,variational lower bound):

【注意:这里的
式子(4)中

式子(11)还可以被写成:

DDPM中,网络可以通过预测

可以发现
IDDPM
学习方差
首先探究为什么方差设置为

然而,对于极大似然来说,如下图所示,diffusion过程中步数较小时对变分下界的优化最重要。因此,我们可以通过设计一个更好的方差学习方案来优化对数似然。

因为方差
设计新的损失函数:
为防止
实际实现时,直接使用一个网络同时预测均值和方差系数,输出一半用来预测噪音,一半用来预测方差系数v。
代码:https://github.com/openai/improved-diffusion/blob/main/improved_diffusion/gaussian_diffusion.py#L642
Cosine schedule
Linear schedule更适用于高分辨率图像,不太适合低分辨率图像,它的前向过程添加噪声太快了:

如下图所示,可以看出一个使用linear schedule的模型当删掉20%的逆向过程时,还可以取得高的FID得分(证明很多步骤比较冗余):

为了解决这个问题,让扩散模型学习更多的细节,IDDPM提出cosine schedule:

cosine schedule的alpha值随着时间步缓慢改变,防止突变:

重要性采样
IDDPM期望直接通过优化
作者假设

通过importance sampling,直接优化

实验

加快采样速度
可以使用任意的具有t个值的序列S来采样。给定

实践中,DDPM和IDDPM使用1和T之间的K个等距实数得到具有K个时间步值的序列。评估结果如下图所示,可以看出对于IDDPM来说,t=100就可以得到不错的FID分数。对于DDIM,发现DDIM可以在采样步数小于50时得到更好的结果,但是当使用更多的步数,DDIM效果不如IDDPM。
