1.简介
基于分数的生成模型(SGM)的核心是Stein分数(或分数函数)。给定一个概率密度函数p(x),其分数函数定义为对数概率密度的梯度Vxlogp(x)。生成模型通过学习并建模输入数据的分布,从而采集生成新的样木,该模型广泛运用于图片视频生成、文本生成和药物分子生成。扩散模型是一类概率生成模型,扩散模型通过向数据中逐步加入噪声来破坏数据的结构,然后学习一个相对应的逆向过程来进行去噪,从而学习原始数据的分布,扩散模型可以生成与真实样本分布高度致的高质量新样本。
原始图片在加噪过程中逐渐失去了所有信息,最终变成了无法辨识的白噪声。反过程是从噪声开始,模型逐渐对数据进行去噪,可辨识的信息越来越多,直到所有噪声全部被去掉,并生成了新的图片。展示了去噪过程中最重要的概念--分数函数,即当前数据对数似然的梯度,直观上它指向拥有更大似然(更少噪声)的数据分布。逆向过程中去噪的每一步都需要计算当前数据的分数函数,然后根据分数函数对数据进行去噪。一般的生成模型可以分为两类:一类可以直接对数据分布进行建模,比如自回归模型和能量模型;还有是基于潜在变量的模型,它们先假设了潜在变量的分布,然后通过学习一个随机或者非随机的变换将潜在变量进行转换,使转换后的分布逼近真实数据的分布。第二类的生成模型包括变分自编码器(VariationalAuto-Encoder,VAE)、生成对抗网络(Generative Adversarial Network,GAN)、归一化流(Normalizing Flow)。与变分自编码器、生成对抗网络、归一化流等基于潜在变量的生成模型类似,扩散模型也是对潜在变量进行变换,使变换后的数据分布逼近真实数据的分布。但是变分自编码器不仅需要学习从潜在变量到数据的“生成器”q(xIZ),还需要学习用后验分布q(z|x)来近似真实后验分布q(zIx)以训练生成器。
而如何选择后验分布是变分自缘码器的难点,如果选得比较简单,那么很可能没办法近似真实后验分布,从而导致型效果不好;而如果选得比较复杂,那么其计算又会很复杂。虽然生成对抗网络和化流都不涉及计算后验分布,但它们也有各自的缺点。生成对抗网络的训练需要外的判别器,这导致其训练难、不稳定;归一化流则要求潜在变量到数据的映射是可映射,这大大限制了其表达能力,并且不能直接使用SOTA(state-ofthe-art)的神经网络框架。
而扩散模型则综合了上述模型的优点并且避免了上述模型的缺点,只需要训练生成器即可。损失函数的形式简单且容易训练,不需要如判别器等其他的辅助网络表达能力强。当前对扩散模型的研究大多基于3个主要框架:去噪扩散概率模型、基于分数的生成模型、随机微分方程。
2.去噪扩散概率模型
去噪扩散概率模型(DDPM),定义了一个马尔可夫链(MarkovChain)(马尔科夫链是一种随机过程,它描述了一个系统在不同状态之间转换的概率模型。在马尔科夫链中,系统的未来状态只依赖于当前状态,而与过去的状态无关。这种性质称为无记忆性或马尔科夫性质)并缓慢地向数据添加随机噪声,然后学习逆向扩散过程,从噪声中构建所需的数据样本。一个DDPM由两个马尔可夫链组成,一个正向马尔可夫链(以下简称“正向链”)将数据转化为噪声;一个逆向马尔可夫链(以下简称“逆向链”)将噪声转化为数据。正向链通常是预先设计的,其目标是逐步将数据分布转化为简单的先验分布如标准高斯分布。而逆向链的每一步的转移核(转移核通常指的是转移概率分布,它描述了马尔科夫链中从一种状态转移到另一种状态的概率)是由深度神经网络学习得到的,其目标是逆向链转正向链从而生成数据。新数据的生成需要先从先验分布中抽取随机向量,然后将此随机向量输入逆向链并使用祖先采样法(祖先采样法它通过构建一个马尔科夫链来近似目标分布,然后通过这个链进行采样)生成新数据。
超参数是指在学习过程开始之前设置的参数,而不是通过训练数据直接估计的参数。这些参数通常用于控制学习过程中的行为,比如算法的复杂度、学习率、迭代次数等。
3.随机微分方程
DDPM 和SGM 可以进一步推广到无限时间步长或噪声强度的情况,其中扰动过程和去噪过程是随机微分方程(SDE)的解。我们称这个形式为“Score SDE”,因为它利用SDE进行噪声扰动和样本生成,去过程需要估计噪声数据分布的分数函数。
扩散模型的加噪过程可以视作“特定SDE的解”,而去噪过程可以视作“基于分数匹配学习到的逆向SDE的解”。扩散模型在计算机视觉、自然语言处理、多模态学习等领域中都有出色的表现,这意味着扩散模型可以处理各种类型的数据,如连续型数据、离散型数据,或是存在于特定区域的数据。理论分析表明,只要分数估计足够精确,并且前向扩散的时间足够长(使得最终加噪后的分布趋于先验分布),那么扩散模型就可以以多项式复杂度逼近任何(满足较弱条件的)连续型分布,而对于有紧支集的分布(如存在于流形上的分布)只需要进行“早期停止”(earlystop),扩散模型就仍然具有多项式的收敛复杂度。
4.扩散模型的架构
扩散模型需要训练一个神经网络来学习加噪数据的分数函数▽xlogqt(x),或者学习加在数据上的噪声。由于分数函数是对输入数据的似然的导数,所以其维度和输入数据的维度相同;同样地,由于我们对输入数据的每一个维度都加入了独立的标准高斯噪声,所以神经网络预测的噪声维度与输入数据相同。将扩散模型用在图像生成上,U-Net是一个常用的选择,因为它满足输出和输入的分辨率相同的条件。U-Net是一种典型的编码-解码结构,主要由3部分组成:下采样、上采和跳连。编码器利用卷积层和池化层进行逐级下采样。下采样过程中因为进行池化,所以数据的空间分辨率变小。但数据的通道数因为卷积的作用逐渐变大,从而可以学习图片的高级语义信息。解码器利用反卷积进行逐级上采样,空间分辨率变大,数据维度变小。输入原始图像中的空间信息与图像中的边缘信息会被逐渐恢复。由此低分辨率的特征图最终会被映射为与原数据维度相同的像素级结果图。因为下采样和上采样过程形成了一个U形结构,所以被称为“U-Net”。而为了进一步弥补编码阶段下采样丢失的信息,在网络的编码器与解码器之间,U-Net 算法利用跳连来融合两个过程中对应位置上的特征图,使得解码器在进行上采样时能够融合不同层次的特征信息,进而恢复、完善原始图像中的细节信息。这是一个用于扩散模型的 U-Net 架构图,该结构在第步去噪过程中,接收去噪对象x和时间嵌入(timeembedding)temb,输出去噪结果。值得注意的是,由于去噪过程是依赖于时间t的,所以 U-Net 中的残差模块也进行了相应的修改,在抽取特征时,将temb考虑进来。
目前U-Net是扩散模型的主流架构,但是研究人员发现使用其他架构也能实现转好的效果,比如使用Transformer 架构。近年 Transformer 被广泛地应用在深度学习的各个领域中。其在架构中抛弃了传统的CNN和RNN,整个网络结构完全由Attentio机制组成,拥有并行能力和可扩展性。更准确地讲,Transformer仅由自注意力机(Self-Attention Mechanism)和前馈神经网络(Feed Forward Neural Network)组成在自注意力机制中,输入序列中的每个元素都会与其他元素进行相互作用,从而生一个新的特征向量。这种机制允许模型对输入序列进行非常灵活的处理,能够捕捉入序列中的长程依赖关系。除了自注意力机制,Transformer中的前馈神经网络模块发挥着重要作用。该模块由几层全连接层组成,使用激活函数ReLU对中间层进行活。前馈神经网络模块可以帮助模型捕捉输入序列中的非线性关系,从而更好地进数据建模。Transfrmer的自注意力机制是Transformer 最核心的内容,自注意力机能够对一个序列中的每个元素计算权重,表示该元素与其他元素之间的相关性。
然后,通过加权求和的方式将所有元素聚合起来得到一个新的表示。下面主要讲解Transfommer的编码阶段,因为在扩散模型中我们只需要提取图像特征从而学习分数函数,或者逆向转移核的参数。为了使用Transformer架构处理图像数据,需要先通过patch操作将图像的空间表示转化为一系列token,并加入位置嵌入。对于一个token序列,首先通过可学习的线性映射计算出序列中的每个向量(ti)对应的Query向量(Qi),Key 向量(Ki)和 Value 向量(Vi),然后为每一个向量计算它和其他向量的评分:<Qi,Kj>/√dk,其中dk是K的维度。对评分进行sofmax 计算得到注意力系数aij,最终得到输出结果zi=∑jaijvj。之后z就会被输入前馈神经网络做进一步处理。举一个简单的例子,当顾客在某电商平台搜索某件商品(如有深度学习代码的参考书)时,顾客在搜索引擎中输入的内容便是Query,然后搜索引擎根据Query 为顾客匹配Key(如“深度学习”“代码”“参考书”),然后根据 Query和Key的相似度得到匹配的内容(Value)。这里的<Qi,Kj>可以视为向量i和向量j的相关程度,sij就是向量i对向量j的注意力大小。为了防止学习退化,Self-Attention中使用了残差链接。一个向量可以拥有多个(Q,K,V),对每个(Q,K,V)都进行上述计算,最终的输出结果就是所有并行Head中Self-Attention输出结果的拼接,这种方式被称为“Multi-Head Attention”(多头注意力)。一个基于Transformer 的可训练的神经网络可以通过堆叠Transformer 的形式进行搭建。在扩散模型中,可以使用Transformer 架构对每一步的加噪数据进行编码然后使用编码结果来预测下一步转移核的期望和方差,从而代替U-Net 架构。
Peebles等人在“ Scalable Diffusion Models with Transformers”中使用Transfmmer替换 U-Ne,不仅速度更快(更高的Gops),而且在条件生成任务上,效果更好。该研究提出的DiT框架,DiT基于“Latent DiiusioIranstonmer”进行了了种改进,将每一步中的temb和label等条件信息作为引导信息加入Transfommer结构中,加入的方式分为3种:(1)自适应的层标准化,将Transforme模块中常用的层标准化(Layer Normalization,LN)换成了自适应的层标准化(AdaptivLayer Nommalization,AdaLN),即用引导信息去自适应地生成相应的缩放和漂移参数(2)交叉注意力,将引导信息直接和输入的中间特征进行混合;(3上下文条件(In-Context Conditioning)。将引导信息作为额外的输入拼接在输入端其中,AdaLN的效果更好,速度更快。在ageNet上的生成实验表明了基Transformer的扩散模型架构的优越性。
DiT 还做了一项验证实验,如增加 DiT 中“tansformer”的深度/宽度,或者增加输入的“token”数量(减少图像“patch”的大小)都能够提高生成图像的效果。