去噪扩散模型基本理论:DDPM与DDIM

DDPM

Denoising Diffusion Probabilistic Models(DDPM)去噪扩散概率模型原理

DDPM原论文:Ho J, Jain A, Abbeel P. Denoising diffusion probabilistic models[J]. Advances in neural information processing systems, 2020, 33: 6840-6851.

DDPM论文推导

思路梳理:如何从变分法的优化目标逐步推导成为拟合噪声的简单过程?

主要步骤如下:

  1. 【变分下界确定优化目标】将对数似然最大化作为优化目标,用类似VAE的方式写出变分下界,作为优化目标

  2. 【目标转化为逆向条件分布的KL散度】将优化目标中正向的和反向的统一修改成反向(即从 ),由于扩散过程中,正向过程可以对上一步采样结果映射到高斯均值的方式计算出下一步的分布,但是反向过程不能直接算,因此再修改正向过程的反向条件概率的过程中,对于加入了的初始条件,得到 参与计算。有了的参与,这个分布(其实是分布的均值和方差)就可以直接计算出来了。这样修改后,上述优化目标 就可以被拆分成三个部分,其中没有参数,所以不用处理;重点解决,即从1到T的过程(这也是最终的算法流程中timestep采样从1到T的原因);

  3. 【高斯分布KL散度转为均值拟合】针对,即,其中由于 是一个已知的分布,即均值和方差都可以直接解析地写出来,那么这个KL散度就是用参数去拟合这个的条件分布的均值和方差(度量两个高斯分布的KL散度就可以直接用两者均值方差解析地进行计算,这里又一次看到高斯分布的便捷之处)。由于方差与都无关,因此只需要拟合均值,这时我们的目标函数就变成了拟合均值。优化目标变成了:

  4. 【均值拟合转为标准正态误差 拟合】由于可以写成和一个标准正态的误差项的函数,因此将上式中的替换为的函数,这时我们发现,由于拟合函数的输入就是和时间,因此真正未知的项是,只要拟合出这个值,真正的就可以解析计算出来。最终的结论就是,通过输入和timestemp ,网络对从加噪的那个噪声项本身(不考虑幅度值的调整)进行预测,最终的优化目标为: 这个拟合目标用可以实现的语义表述就是:先对训练集中抽取的一个样本利用线性高斯的方式加入一个噪声,这里的线性系数由选择的某个时间步决定,得到的结果一起作为输入,送入一个approximator ,这个approximator 用于将刚刚的那个预测出来(直接通过L2拟合的方式)。这就是diffusion model的训练过程了。

论文中提供的训练和采样算法流程如下:

DDPM训练和采样流程

采样过程的公式来源于上面对均值的预测,由于预测的是均值,所以不是直接计算,而是再此均值和对应方差的分布上进行采样(当然这里也是用了重参数化trick),然后逐步得到最终的即最终生成结果。

DDIM

DENOISING DIFFUSION IMPLICIT MODELS(DDIM)去噪扩散隐式模型

原论文:Song J, Meng C, Ermon S. Denoising diffusion implicit models[J]. arXiv preprint arXiv:2010.02502, 2020.

DDIM的核心思路

取消了DDPM的马尔可夫性限制,重写了的形式,引入新的方差变量​作为控制变量,用于调节采样过程的随机性,最终实现加速采样,同时可以复用DDPM的训练过程。

DDIM对于DDPM过程的一个核心的observation在于:DDPM的目标函数只和边缘分布(marginal distribution)有关,而与联合概率分布(joint distribution),即​无关。我们只需要保证边缘分布与DDPM一致,可以更换其他不同的联合分布。

详细来说, 按照前向过程来说,应该是通过逐步线性高斯加噪得到的,但是由于有了作为已知项,这个过程可以直接简化等价为一步线性高斯得到(当然这里的线性系数与前面的有关,但是它们都是预定义好的,没有随机性)。换个角度来看,那就是从逐步生成得到一个联合概率即以后,再对进行积分(从联合概率得到边缘概率的方式),从而消除过程的影响,直接获得最终的结果。再通俗点说,就是既然要将这个过程的因素去掉也不影响DDPM的优化目标,那么这个部分的形式就可以修改,只要保证 不变即可。

下面就是如何更换联合分布,考虑到DDPM的联合概率分布可以写成given 的条件概率连乘的形式,即: 可以考虑将每个连乘的条件概率替换为新的形式,即: 这里引入了一个新的参数,这个参数用来平衡采样过程的随机性,可以想到,如果,那么如果已知了,那么​就是可以直接计算出来的(没有方差,直接就等于均值)。可以证明的是,这个修改符合前面需要保证不变的要求。另外,如果,那么前向过程就会退化为马尔可夫的,从而就变成了DDPM。这说明DDIM可以看做是对于DDPM的一个推广。

在采样的过程中,我们需要先预测出一个,然后带入进去计算反向的分布,从而进行去噪。这里,仍然利用DDPM的模型(即预测标准高斯误差项),可以将用预测误差来表示。于是即可得到带有可变参数的反向采样过程(结合网络的预测结果,从生成)如下: 这里的三项分别可以看做:预测出来的(直接利用从的加噪过程定义);指向的方向(对照原始的新形式,这一项可以看做是一个向量的差值);最后是一个随机噪声(这里还是用了重参数化方法,把分布的均值方差直接变成解析表达式,直接计算出采样结果)。

那么,DDIM是如何加速采样呢?相比于DDPM扩散步就要反向步,DDIM再中采样一个子集,这样就可以减少反向次数,从而达到加速的目的。

加速采样的过程