Classifier-Free Diffusion Guidance论文阅读

Classifier-Free Diffusion Guidance介绍

论文:Classifier-Free Diffusion Guidance Jonathan Ho & Tim Salimans

在上一篇论文阅读中我们提到,条件控制生成的方式分两种:事后修改(Classifier-Guidance)和事前训练(Classifier-Free)。在算力充足的条件下,我们可以采用往扩散模型的训练过程中就加入条件信号的方法,来达到更好的生成效果,这就是事前训练的Classifier-Free方案。

对于Classifier-Guidance的方案,这篇论文中提出了一个质疑:引入分类器来提高IS等指标,这样的思路非常类似于生成对抗网络GAN,沿着分类器梯度的方向前进也与GAN训练有一些相似之处,因此我们有理由思考,分类器引导的扩散模型是否在基于分类器的指标上表现良好,是因为它们开始类似GAN,而GAN在这些指标上表现良好呢?如果不引入分类器,纯生成扩散模型能否可以与其他类型的生成模型合成极高保真的样本呢?

背景回顾

这篇论文首先对DDPM及其相关工作进行了一个回顾和整理。但是它采用了另一套和以往论文不太一样的符号进行推导和表述,在这里我们用这篇论文所采用的符号进行重新推导,以加深理解。

假设我们要训练一个连续时间的扩散模型(这是在Score-Based Generative Modeling through Stochastic Differential Equations那篇文章中提出的概念)。现在假设初始值是超参数。前向过程是方差确定的马尔可夫过程: 这里值得一提的是,在前向过程中,与之前论文里的不同,是一个逐渐减小的值。那么究竟是什么含义呢?我们注意到,,因此可以理解为的对数信噪比。前向扩散过程中,随着噪声的不断加入,对数信噪比肯定是越来越小的,因此是一个不断减小到值。

接下来我们再研究反向过程。在已知初始数据的条件下,我们可以利用贝叶斯公式写出反向过程的表达式: 其中, 我们知道,反向过程是从一个标准高斯分布中开始逐步生成数据的,我们把反向过程用如下式子表示: 在反向过程,是逐渐增大的,即,对应步时间。这里跟之前扩散模型的定义是有区别的,这里的时刻代表最初的时刻,即时,生成正确的初始数据分布

反向过程的方差就是IDDPM那篇论文中提出的的插值。但与之不同的是,插值用的这个参数,在IDDPM是一个学习得到的参数,而在这里直接选用一个超参数,效果并没有什么改变,因为的情况下(即时间连续的情况下)是几乎相等的,因此只有在使用非无穷小的时间步长进行采样时才有影响。

反向过程的均值是怎么得到的呢?这个有点类似于DDIM那篇论文的推导的思路,把预测得到的初始数据的分布直接带入到里面去。我们可以把对的预测转化为对噪声的预测,即,这样我们可以得到目标函数: 其中是从中采样得到。这对应于DDPM那篇文章中,是从均匀分布中采样一样。

此外,文章还回顾了Classifier-Guided那篇论文里的相关概念,详见上一篇文档,在此不做展开回顾。

无分类器的条件指导生成

在本篇论文中,作者并不去训练一个分类器,而是联合训练一个无条件扩散模型和有条件扩散模型,无条件模型记作,对应的分数(噪声)预测器为;有条件模型记作,对应的分数(噪声)预测器为。我们只用一个神经网络去参数化这两个模型,方法就是当条件为空的时候,有条件模型就变成了无条件模型,即。训练的时候,我们随机的把设置为条件或(这里可以定义一个概率作为超参数)。其实这两个模型也可以单独进行训练,之所以联合训练就是为了简化训练流程,可以用一个神经网络直接训练出来为什么要用两个呢?

我们使用以下条件和无条件分数估计的线性组合进行抽样: 目标函数和DDPM一样,都是:

训练和采样算法

训练算法

image-20230107204735466

采样算法

image-20230107204803157

结论

使用无分类器指导方法最实际的优点是它非常简单:在训练过程中只需要让条件随机失活,在抽样期间混合条件和无条件的分数估计。相比之下,分类器指导使训练流程复杂化,因为它需要训练一个额外的分类器。这个分类器必须在有噪声的数据上进行训练,因此不可能插入一个标准的预训练分类器。

无分类器引导采样器遵循步骤方向并不像分类器梯度,因此不能解释为基于梯度的对抗性分类器,因此实验结果可以表明,提高基于分类器和FID指标可以完成纯生成模型采样过程不是对抗图像分类器使用分类器梯度。

但是,无分类器引导的一个潜在缺点是采样速度。一般来说,分类器可以比生成模型更小、更快,因此分类器引导的采样可能比无分类器引导更快,因为后者需要运行扩散模型的两次向前传递,一个是条件分数,另一个是无条件分数。