第1章 扩散模型简介
1.1 扩散模型的原理
扩散模型是一类生成模型,运用物理热力学中的扩散思想,主要包括前向扩散和反向扩散。
生成模型:给定一批训练数据 <math xmlns="http://www.w3.org/1998/Math/MathML"> X X </math>X,假设其服从某种复杂的真实分布 <math xmlns="http://www.w3.org/1998/Math/MathML"> p ( x ) p(x) </math>p(x),则给定的训练数据可视为从该分布中采样的观测样本 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x,其作用就是估计训练数据的真实分布。(如果能从观测样本中估计出训练数据的真实分布,就可以从该分布中源源不断的采样出新的样本)
扩散的思想:来自于物理学中的非平衡热力学分支,例如墨水在水中扩散的实验,非平衡热力学可以描述这滴墨水随时间推移的扩散过程中每一个"时间步"状态的概率分布。
DDPM(Denoising Diffusion Probabilistic Model)的扩散过程:
- 前向过程(数据噪声化):在每个时间步 <math xmlns="http://www.w3.org/1998/Math/MathML"> t t </math>t,给上一个时间步 <math xmlns="http://www.w3.org/1998/Math/MathML"> t − 1 t-1 </math>t−1的数据 <math xmlns="http://www.w3.org/1998/Math/MathML"> x t − 1 x_{t-1} </math>xt−1添加高斯噪声,生成带有噪声的数据 <math xmlns="http://www.w3.org/1998/Math/MathML"> x t x_t </math>xt,噪声的方差由 <math xmlns="http://www.w3.org/1998/Math/MathML"> β t \beta_t </math>βt确定,均值由 <math xmlns="http://www.w3.org/1998/Math/MathML"> β t \beta_t </math>βt和当前时刻"带噪"的数据分布确定。加噪过程:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( x t ∣ x t − 1 ) = N ( x t ; 1 − β t x t − 1 , β t I ) q(x_t | x_{t-1}) = \mathcal{N} (x_t ; \sqrt{1 - \beta_t} x_{t - 1}, \beta_t I) </math>q(xt∣xt−1)=N(xt;1−βt xt−1,βtI)
最终噪声分布的公式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( x 1 : T ∣ x 0 ) = ∏ t = 1 T q ( x t ∣ x t − 1 ) q(x_{1:T} | x_0) = \prod_{t = 1}^T q(x_t | x_{t - 1}) </math>q(x1:T∣x0)=t=1∏Tq(xt∣xt−1)
-
反向过程(数据去噪化):从采样自高斯噪声 <math xmlns="http://www.w3.org/1998/Math/MathML"> x ∼ N ( 0 , I ) x \sim \mathcal{N}(0, I) </math>x∼N(0,I)的随机噪声中恢复出原始数据 <math xmlns="http://www.w3.org/1998/Math/MathML"> x 0 x_0 </math>x0,通过由一系列用神经网络参数化的高斯分布组成的马尔可夫链进行数据去噪。
从时间步 <math xmlns="http://www.w3.org/1998/Math/MathML"> t t </math>t到时间步 <math xmlns="http://www.w3.org/1998/Math/MathML"> t − 1 t - 1 </math>t−1的单步反向"去噪"过程:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> q ( x t − 1 ∣ x t , x 0 ) = N ( x t − 1 ; μ ~ ( x t , x 0 ) , β t ~ I ) q(x_{t - 1} | x_t, x_0) = \mathcal{N} (x_{t - 1}; \tilde{\mu}(x_t, x_0), \tilde{\beta_t} I) </math>q(xt−1∣xt,x0)=N(xt−1;μ~(xt,x0),βt~I)
其中,均值为
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> β t ~ = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t \tilde{\beta_t} = \frac{ 1 - \bar{\alpha}_{t - 1}}{ 1 - \bar{\alpha}_t} \cdot \beta_t </math>βt~=1−αˉt1−αˉt−1⋅βt
方差为
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> μ ~ ( x t , x 0 ) = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t x 0 \tilde{\mu}(x_t, x_0) = \frac{\sqrt{\alpha_t} (1 - \bar{\alpha}_{t - 1})}{1 - \bar{\alpha}t} x_t + \frac{ \sqrt{ \bar{\alpha}{t - 1} } \beta_t }{1 - \bar{\alpha}_t} x_0 </math>μ~(xt,x0)=1−αˉtαt (1−αˉt−1)xt+1−αˉtαˉt−1 βtx0
-
优化目标:要求反向过程中预测的噪声分布与前向过程中施加的噪声分布之间的"距离"最小。
优化目标公式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> L t − 1 simple = E x 0 , ϵ ∼ N ( 0 , I ) [ ∥ ϵ − ϵ θ ( α ˉ t x 0 + 1 − α ˉ t ϵ , t ) ∥ 2 ] L_{t - 1}^{\text{simple}} = \mathbb{E}{x_0, \epsilon \sim \mathcal{N}(0, I)} \left[ \| \epsilon - \epsilon{\theta} \left( \sqrt{\bar{\alpha}_t} x_0 + \sqrt{1 - \bar{\alpha}_t} \epsilon, t \right) \|^2 \right] </math>Lt−1simple=Ex0,ϵ∼N(0,I)[∥ϵ−ϵθ(αˉt x0+1−αˉt ϵ,t)∥2]
1.2 扩散模型的发展
- 基础扩散模型的提出与改进:最早提出的扩散模型是DDPM,将去噪扩散概率模型应用到图像生成任务中。
- 采样器:通过离散化求解随机微分方程,降低采样步数。
- 基于相似分类器引导的扩散模型:OpenAI的《Diffusion Models Beat GANs on Image Synthesis》论文介绍了在扩散过程中如何显式分类器引导。
- 基于CLIP的多模态图像生成:将同一语义的文字和图片转换到同一个隐空间中。
- 大模型的"再学习"方法:DreamBooth实现现有模型再学习到指定主体图像的功能,通过少量训练将主体绑定到唯一的文本标识符后,通过输入prompt控制主体生成不同的图像。LoRA可以指定数据集风格或人物,并将其融入现有的图像生成中。ControlNet学习多模态的信息,利用分割图、边缘图更精细地控制图像生成。
- AI作画:Midjoryney、DreamStudio、Adobe Firefly,以及百度的文心一格AI创作平台,阿里的通义文生图大模型。
1.3 扩散模型的应用
- 计算机视觉:
- 图像分割与目标检测 (我们利用原始图像作为条件,从随机噪声生成多个分割图,然后对它们进行集成以获得最终结果:github.com/WuJunde/Med...
- 图像超分辨率(CDM,通过串联多个扩散模型的方式,分级式的逐步放大分辨率)
- 图像修复
- 图像翻译
- 图像编辑。
- 时序数据预测:(也是个生成任务,基于历史数据的基本条件来生成未来数据)
- TimeGrad模型,使用RNN处理历史数据并保存到隐空间,对数据添加噪声实现扩散过程,处理数千维度的多元数据完成预测(进行了交通流预测任务)。
- 自然语言:使用Diffusion-LM可以应用在语句生成、语言翻译、问答对话、搜索补全、情感分析、文章续写等任务中。
- 基于文本的多模态:文本生成图像(DALLE-2、Imagen、Stable Diffusion)、文本生成视频(Make-A-Video、ControlNet Video)、文本生成3D(DiffRF)
- AI基础科学:SMCDiff(支架蛋白质生成)、CDVAE(扩散晶体变分自编码器模型)