浅谈stable diffusion (一又二分之一)
前言
首先说一下以前常见的生成模型GAN,VAE和Flow-based 模型。
它们在生成高质量样本方面取得了巨大成功,但各自也存在一些局限性。GAN模型因其对抗性训练的本质可能导致训练不稳定以及生成多样性不足,VAE依赖于替代损失,Flow模型必须使用专门的架构来构建可逆变换。
扩散模型受非平衡热力学的启发。它们定义了一个扩散步骤的马尔可夫链,逐渐向数据添加随机噪声,然后学习逆转扩散过程,从噪声中构造期望的数据样本。与变分自编码器或流模型不同,扩散模型使用固定的过程进行学习,并且潜在变量具有高维度(与原始数据相同)。

Overview of different types of generative models
所以什么是扩散模型呢?
几份重要的工作:
扩散概率模型 diffusion -----------()
噪声条件评分网络 NCSN ---------()
去噪扩散概率模型 DDPM---------()
扩散模型的前向过程
给定真实图片,diffusion前向过程通过 T 次累计对其添加高斯噪声,得到
,如下图的q过程。这里需要给定一系列的高斯分布方差的超参数
。前向过程由于每个时刻 T只与t-1时刻有关,所以也可以看做马尔科夫过程:
这个过程中,随着 t 的增大,越来越接近纯噪声。当
,
是完全的高斯噪声 (下 面会证明,且与均值系数
的选择有关) 。且实际中
随着增大是递增的,即
。在GLIDE的code中,
是由 0.0001 到0.02线性插值 (以 T=1000 为基准, T 增加,
对应降低)。

The Markov chain of forward (reverse) diffusion process of generating a sample by slowly adding (removing) noise. (Image source: with a few additional annotations)
上述过程的很好的特性是我们可以采样 在任何任意时间步长 t 以封闭形式使用重新参数化技巧。假设
:
和 ,新的分布是
。这里的合并后的标准差为
由此当样本变得更嘈杂时,我们可以承受更大的更新步长,所以 且
。
扩散模型的反向过程
如果我们能逆转上述过程并从中采样 ,我们将能够从高斯噪声输入中重新创建真实样本,
。请注意,如果
足够小,
也将是高斯分布的。不幸的是,我们无法轻易估计
因为它需要使用整个数据集,因此我们需要学习一个模型
近似这些条件概率,以便运行反向扩散过程。

An example of training a diffusion model for modeling a 2D swiss roll data. (Image source: )
虽然我们无法得到逆转后的分布 ,但是如果知道
,是可以通过贝叶斯公式得到
为:
过程:
遵循标准高斯密度函数,均值和方差可以参数化如下:
根据前向过程的特性,我们可以得到 并将其代入上述等式并获得:
其中高斯分布为深度模型所预测的噪声 (用于去噪) ,可看做为
,即得到:
这样的设置和VAE非常相似,因此我们可以使用变分下限来优化负对数似然。
通过使用詹森不等式获得相同的结果也很简单。
为了将方程中的每个项转换为可解析计算的项,可以进一步将目标重写熵与多个KL散度的累加
或者写为

但是根据后来的实验结果显示,使用忽略加权项的简化目标训练扩散模型效果更好:
最终简化为:
加速扩散模型采样
通过遵循反向扩散过程的马尔可夫链从DDPM生成样品非常慢,因为 T 需要几千步才能获得高质量的结果。
DDIM中则提出了一种牺牲多样性来换取更快推理的手段。
本文就省略其数学推断过程,直接给出结论。
与DDPM相比,DDIM能够:
使用更少的步骤生成更高质量的样本。
具有“一致性”属性,因为生成过程是确定性的,这意味着以同一潜在变量为条件的多个样本应该具有类似的高级特征。
由于一致性,DDIM 可以在潜在变量中执行语义上有意义的插值。
LDM则将扩散过程放在潜在空间(隐空间)而不是像素空间中进行扩散过程,进一步降低了训练成本,提高了推理速度。具体过程可见于前篇。
DPM-Solver则是DDIM的高阶形式,基于DPM-Solver扩散模型的采样速度直接翻倍。

本篇为1.5篇,提前放出,亟待修改

