目前基于diffusion的生成模型已经逐渐从CV迁移到其他领域,并均展现出不错的效果。正好最近研究项目是生成式的任务,就想应该学习一下diffusion,说不定可以有不错的效果。打算分两篇文章对这个领域的基础知识进行记录,本篇先讲解最基础的diffusion
model (Sohl-Dickstein et al.,
2015),再学习denoising diffusion probabilistic model (Ho et al. 2020,
DDPM)及对其的优化 (Nichol
& Dhariwal, 2021)。下一篇讲解抽象程度更高的denoising diffusion
implicit model (Song et al.,
2020, DDIM)和分析逆向过程最优方差的论文 (Bao et al., 2022,
Analytic-DPM)。
一、Diffusion Model
1. 概述
Diffusion的思想是通过一个前向的扩散过程将复杂的真实数据分布转换为一个简单、易处理的分布(例如正态分布),之后通过有限步的逆过程还原真实数据的分布。如图1,真实数据经过总过步加服从正态分布的噪音的过程得到,服从标准正态分布。而模型学习逆向的转移概率,从标准正态分布中采样的开始,逐步生成真实数据。训练目标则是生成的数据分布和真实数据分布尽可能相似。整个生成过程因为存在随机性,所以即使初始的是一样的,在采样的过程中分歧会越来越大,最后得到完全不一样的结果。

2. 前向过程
前向过程的目标是通过不断加噪音将复杂的真实数据分布转换为简单易处理的分布(例如标准正态分布)。其中加入噪音服从的分布种类决定了最后转换成的分布种类,这里以正态分布为例,原论文也讨论了二项分布的情形。给定从真实分布中抽样出的数据点,我们在总共步的迭代中逐步加入高斯噪音,每步高斯噪音的方差由序列决定。显然每步加入噪音后的结果都是服从正态分布的,我们令这些正态分布满足以下公式:
我们认为整个过程是Markov过程,即第步的分布只与第步的分布有关,则整个前向过程的概率为:
事实上我们可以从推导出任意一步结果的分布,我们令,,则:
注意两个正态分布,之和为
由于,因此可以想象当前向加噪音的步骤时,,所以的分布趋向于标准正态分布,这就相当于将复杂的真实数据分布通过加噪音转换为了简单易处理的分布。
需要注意的是方差序列在Sohl-Dickstein et al.,
2015文中是通过训练得到的,但Ho et al. 2020
(DDPM)提出直接使用预定义的常数效果更好。
3. 逆向过程
逆向过程的目标是通过学习逆向的Markov链的转移概率来将转换成的简单分布转换回真实的数据分布。是无法直接解的,因为需要遍历所有的可能路径才能知道给定时其上一步是的概率。但我们知道的是当足够小时,也为正态分布。因此我们需要训练模型来拟合这个逆向的转移概率。
而训练的目标是通过模型生成的数据分布与真实数据分布尽可能相近,即最小化这两个分布的交叉熵(或者说最大化negative
log-likelihood)。所以接下来的目标是推导这个损失函数的计算方式。首先我们可以得到模型预测下每种逆向diffusion路径()的分布以及预测的数据分布: 其中模型预测的数据分布可以理解为通过所有可能的逆向路径得到的概率和(如果是离散变量就是,更好理解一点)。由于原始的损失函数是难以计算的,我们可以用jensen不等式推导交叉熵的upper
bound(类似VAE的优化思想,在VAE中目标函数是variational lower bound):
值得注意的是如果将路径看作是隐变量的话,这一形式取负后与variational
lower bound的形式是一致的(),因此其实也可以通过variational
lower bound的过程推出,这种思路可以参考这个博客,我们这里就不再推了。进一步地,这一upper
bound又可以进一步拆成若干KL散度和熵的和: 我们以作为熵的记号,首先看与相关的两项,并将它们合并为: 由于来源于预定义的方差序列,而是服从标准正态分布的噪音,因此此项为定值,不需要进行优化(如果想要训练得到方差序列,则此项不为0)。对于一项,Sohl-Dickstein et al.,
2015文中表示,为了避免边缘效应,此项设置为前向概率的后验概率: 因此其期望项只与的分布有关,为一常数(同样,如果需要训练得到方差序列,则此项不为常数):
而对于最前面的求和的部分,其中的每一项均可以转换为KL散度:
则最后我们的优化目标就变成,且第一项和最后一项在方差序列提前确定的情况下均为常数,在需要训练得到方差序列时也可以较容易地计算,而中间的项中,KL散度均为两个正态分布的KL散度,因此是可以有关于这两个正态分布的均值和方差的解析表达式的:
的均值和方差均为模型预测的结果,的均值和方差是可以解析计算的(如果没有的条件分布则是无法计算的,这也是为什么要在前面的变形中引入的条件)。我们之前有推导过:
所以借助正态分布的概率密度函数表达式,我们可以得到: 其中是与无关的项,没有展开写,为的维数。通过以上推导可以看到: 也就是说,给定和,我们就可以计算出所服从的正态分布的均值和方差以及模型预测的的均值和方差,从而算出KL散度,进而计算损失函数进行梯度下降。训练时与均通过抽样得到。
二、Denoising
Diffusion Probabilistic Model (DDPM)
Ho et al. 2020
(DDPM)对最基础的diffusion
model进行了简化和调整,简化了损失函数并提升了生成质量:
- 确定方差序列作为超参,而不用训练得到
- 简化逆向分布,认为每维之间相互独立,并指定方差值:
- 原始diffusion model:
- DDPM:,实验中验证了的两种取法(
/ ),结果相近。
- 更好的参数化方法
- 对于,使用单独的decoder进行预测,不是简单使用的后验概率
接下来详细解释这些简化带来的好处。
1. 目标函数简化
首先因为提前确定了,因此与都为常数,不需考虑,而由于对逆向的分布的协方差进行了简化,认为每维之间相互独立了,所以中所涉及的KL散度也可以继续简化: 由于与均为超参生成的常数,因此显然KL散度中只有均值差的平方一项是可变的,即时变为: 其中为常数,可以舍去,我们令,则去掉所有常数项后新的目标函数为: 这就比之前完整的KL散度的形式简洁明了多了。
2. 新的参数化方法
从上面的目标函数可以看出,最基本的参数化方法是设计模型以和为输入,拟合的值,但之前我们有推导过,可以写成与高斯噪音的加和形式:,因此我们可以进一步推导需要拟合的函数形式: 其中即模型,以和为输入,输出得到的高斯噪音。此时从中采样只需计算,这个过程中的就非常像Langevin
dynamics中的下降梯度了。
Langevin dynamics是分子动力学中的概念,从概率分布中经过梯度下降获得稳定的系统状态,更新的方式为,但是这个过程中的是用来缓解陷入局部最优的问题的
如果我们可以进一步将此公式代入可以得到非常像denoising
score matching的损失函数:
score matching的生成模型模拟Langevin
dynamics的过程,而每步下降梯度是由神经网络进行预测
根据以上推导,我们可以直接让网络预测,也可以预测噪音。虽然两者在数学上是等价的,但实际实验中通常使用后者训练出的网络效果更好。除此之外,原本的训练目标需要遍历所有,Ho et al. 2020
(DDPM)发现如果将也改成抽样,并去除权重,训练效果会更好,即新的训练目标简化为:
其训练和采样生成的过程也变得非常简洁,如下面的伪代码:

值得一提的是去除权重这一行为使得不同步的是平等的,这也是score
matching网络的做法。虽然从数学推导上来看会使目标函数的最终效果偏离令,但从优化的角度来看这么做是合理的。因为不同步实际使用的是不同的参数,相互之间没有依赖关系,而它们对应目标函数中的项相互之间只是加权求和的关系,所以令整体最小和使每一项分别最小最后的效果是一样的。
3. 的选取
DDPM原文中选取从线性增长到。的选取需要是相对于数据的分布是较小的,这样才能保证前向和逆向的过程的分布是类似的形式(图像生成数据归一化到)。
三、Improved DDPM
Nichol & Dhariwal
(Improved DDPM, 2021) 的文中提出了若干对DDPM模型的优化方法。
首先是提出基于cosine进行的变化: 其中是较小的偏置,防止在时过于小。其次,Nichol & Dhariwal (Improved
DDPM, 2021) 也提出用模型预测的向量对和进行混合来作为逆向过程的方差:
因为是与无关的,他们选择将原始的训练目标和DDPM中简化的训练目标进行加权作为新的训练目标:
除此之外他们提出通过strided
sampling的方式加速生成采样,具体而言,每隔步进行一次更新,这样将总共步的采样变为步,每步的方差可以如下计算:
后记
本篇到此就结束了,记录了基础的diffusion
model以及由其简化而来的denoising diffusion probabilistic model
(DDPM)。而DDPM文中也分析了其框架与Langevin dynamics以及score
matching方法的相似之处。除此之外,也记录了Improved
DDPM中提出的若干优化。整个过程涉及很多数学推导,需要慢慢看仔细思考才能理解,写完以后大脑cpu温度过高直接去打游戏了。下一篇将讲解抽象程度更高的denoising
diffusion implicit model (Song et al., 2020,
DDIM)和DDIM理论最优的取值(Bao et al., 2022,
Analytic-DPM)。
参考文献
[1] What
are diffusion models?
[2] Deep Unsupervised
Learning using Nonequilibrium Thermodynamics (ICML 2015)
[3] Denoising
Diffusion Probabilistic Models (NeurIPS 2020)
[4] Improved Denoising
Diffusion Probabilistic Models
v1.5.2