3 most important points

  1. Diffusion Models 将扩散过程和逆扩散过程都建模为马尔科夫链,但经过推导,能够从初始跳跃至马尔科夫链上的任意时间步,无需逐步扩散,从而显著简化训练和采样计算
  2. Diffusion Models 的模型是噪声预测器,DDPM 采用了一个 U-Net 结构的 Autoencoder
  3. 通过重参数(引入一个随机变量)实现从高斯分布中采样这一步骤的梯度传播

5 thoughts

  1. 超参数 作为方差控制不同时间步的噪声强度,递增使得扩散初期图像保留主要语义结构,后期逐步向标准高斯收敛,保证整个分布平稳过渡
  2. 均值受方差约束确定,是因为将图视为高维度信号,需要保证过程中能量守恒,信号不会被放大或缩小
  3. 预测噪声而非均值能保持不同时间步上输出范围固定、梯度尺度一致,训练更稳定、收敛更快,且存在明确物理意义
  4. 逆扩散过程中的方差由超参数直接定义,是因为方差只影响采样的多样性,对训练目标影响极小;如果预测方差,会增加梯度计算复杂度,且效果没有明显提升
  5. 采样时添加噪声是为了保持生成过程随机性与多样性,否则只能生成单一样本

Notes

核心思想

不同生成模型对比

  • Diffusion models 和其他模型最大的区别是它的 latent code () 和原图是同尺寸大小的
  • 设定:
    • 图像空间:所有图像组成概率分布
    • 训练集:从 中一个分布 中取出的随机样本
    • 模型:在 中与 最接近的分布
  • 原理:
    • 扩散(前向过程):
      • 每个时间步,在 上添加随机噪声,得到接近纯噪声的 ,使样本分布从 逐渐逼近标准高斯分布
      • 该过程是一个马尔科夫链,由条件分布 定义,表示基于前一状态的现状态的概率
      • 使用一系列的超参数 随着 增大而增大)来进一步定义条件分布,用以控制马尔科夫链上每一步的大小,它们表示高斯分布的方差
      • 最终:
    • 逆扩散(逆向过程):
      • 每个时间步,在从噪声分布 中采样的 上减去噪声生成 ,逐步逼近真实数据分布
      • 该过程也是一个马尔科夫链,由后验分布 定义,该概率分布未知,因此使用模型 近似
      • 未知情况下,使用 近似均值, 近似方差
      • 最终:

为什么选择方差为超参数而不是均值?均值如何由方差取得?

  • 直接定义方差 控制加噪强度
  • 图像可看作高维信号, 控制“保留多少旧能量”, 控制“加入多少新噪声能量”;
  • 上述定义可以保证整个过程每一步的总能量是恒定的,这样信号不会被放大或缩小,只是噪声比例在逐渐上升。

为什么 是递增的?

  • 如果 恒定,早期图像可能被过快破坏,模型难以学习;后期噪声太弱则去噪训练信号不足。
  • 所以 通常递增(如线性或余弦调度),实现“先慢后快”的平滑加噪。
  • 递增且较小(如线性增长到 0.02 左右),最终方差稳定收敛到 1,不会发散或塌缩

技巧

Info

这个板块讲解如何简化原理中复杂、难以实现的部分

  • 在马尔科夫链中跳步
    • 问题:
      • 在扩散过程中,逐步计算耗时耗算力
    • 解法:
      • ,并且 ,利用独立高斯随机变量的和的性质尺度变换性质,展开 可以得到:\begin{align}x_t &= \sqrt{\alpha_t}x_{t-1} + \sqrt{1 - \alpha_t}\epsilon_{t-1} \quad \text{where } \epsilon_{t-1}, \epsilon_{t-2}, \cdots \sim \mathcal{N}(0, \mathbf{I})\\[6pt] &= \sqrt{\alpha_t\alpha_{t-1}}x_{t-2} + \sqrt{1 - \alpha_t\alpha_{t-1}}\bar{\epsilon}_{t-2} \quad \text{where } \bar{\epsilon}_{t-2} \text{ merges two Gaussians}\\[6pt] &= \cdots \\[6pt] &= \sqrt{\bar{\alpha}_t}x_0 + \sqrt{1 - \bar{\alpha}_t}\boldsymbol{\epsilon}\end{align}
      • 因此任意时刻的 满足:
  • 重参数(reparameterization trick)
    • 问题:
      • 从某个分布中随机采样一个样本的过程无法反向传播梯度,而在逆扩散过程中,需要从高斯分布 中采样
    • 解法:
      • 用独立随机变量 引导随机性,采样可以写成:
      • 因为 从模型中得到( 由超参数 给定),所以整个采样过程仍然梯度可导

为什么逆扩散过程中的方差可以直接定义?

理论上 是可学习的(比如 DDIM、Improved DDPM 都尝试学习它),因为真实的后验 的方差确实依赖于数据分布。

然而原始 DDPM 发现:即使把方差固定为常数(比如直接用 ),训练效果几乎不变。这是因为:

  • 逆扩散的“随机性”主要由 决定;
  • 方差只影响采样的多样性,对训练目标影响极小;
  • 如果也去预测方差,梯度传播会更复杂,而且效果提升不明显。
  • 均值的解析解
    • 问题:
      • 逆扩散过程中,均值 如何从模型中得到?
    • 解法:
      • 在知道 的情况下,考虑后验分布构成的
      • 根据乘法定理贝叶斯公式展开:\begin{align*}q(x_{t-1}|x_t, x_0) &= \frac{q(x_t, x_0, x_{t-1})}{q(x_t, x_0)} \\[6pt] &= \frac{q(x_0)q(x_{t-1}|x_0)q(x_t|x_{t-1}, x_0)}{q(x_0)q(x_t|x_0)} \\[6pt]&= q(x_t | x_{t-1}, x_0) \cdot \frac{q(x_{t-1} | x_0)}{q(x_t | x_0)}\end{align*}
      • 由于 无关,所以都是已知的,根据高斯分布的概率密度函数展开,合并指数部分:
      • 整理为与 相关的:
      • 同时,后验分布可以直接写成:\begin{align} q (x_{t-1}|x_t, x_0) = \mathcal{N}(x_{t-1}; \tilde{\mu}(x_t, x_0), \tilde{\beta}_t \mathbf{I}) &\propto \exp\left( -\frac{(x - \tilde{\mu})^2}{2\tilde{\beta}_t^2} \right)\\ &=\exp\left( -\frac{1}{2} \left( \frac{1}{\tilde{\beta}_t^2} x^2 - \frac{2\tilde{\mu}}{\tilde{\beta}_t^2} x + \frac{\tilde{\mu}^2}{\tilde{\beta}_t^2} \right) \right)\end{align}
      • 解方程组,把 都用 表示,代入得:
      • 这样,就可以用模型 预测当前步噪声 ,再代入公式得到

为什么不直接预测均值?

如果直接预测 ,不同 的梯度尺度会严重不均:

  • 早期( 小)时 仍接近 ,误差小
  • 后期( 大)时 几乎是纯噪声,预测难度高,梯度极不稳定

预测噪声 后:

  • 所有时间步都来自相同分布
  • 模型输出范围固定,梯度尺度一致
  • 可统一训练目标为简单的 L2 loss

同时:

  • 预测有明确的物理意义(“识别图片中的噪声”),符合直觉
  • 使模型能自然处理不同噪声强度(不同 )的输入,泛化更强

训练

Warning

由于完整的损失函数推导过于复杂,这里略过大部分过程

  • 优化目标
    • 使用极大似然估计求模型参数,即最大化模型预测分布的对数似然
    • 从 Loss 下降的角度就是最小化负对数似然
    • VAE 类似,使用变分下界(VLB)也就是证据下界(ELBO)来优化负对数似然

关于 VLB

变分下界(Variational Lower Bound, VLB),也称为证据下界(ELBO),是用于近似优化难以直接计算的对数似然(如生成模型中的边缘似然 )的一种方法。通过引入一个可学习的近似后验分布 ,VLB 将负对数似然分解为一个可计算的下界和一个非负的 KL 散度项

最大化 VLB 等价于最小化负对数似然的上界,从而间接提升模型对数据的拟合能力

其中的 KL 散度项衡量两个分布之间的距离,为 0 的时候两个分布一致;所以这里是在拉近模型分布和后验分布的距离

  • 模型
    • 不是直接预测 ,而是用模型 预测当前步噪声 ,再代入公式得到
    • DDPM 采用了一个 U-Net 结构的 Autoencoder 作为
  • 算法
    1. 采样
      • 在训练集中采样
      • 在常数 中采样一个
      • 在高斯分布 中采样一个与图像大小相同的噪声
    2. 梯度下降,训练
    • 直觉理解:将真实图片 和噪声 以一定比例混合在一起输入,同时输入混合比例 ,训练噪声预测器使得它的输出接近从高斯分布中采样出的 (能够认出混合在图片中的噪音)

采样

  1. 在高斯分布 中采样一个与图像大小相同的噪声
    • 在高斯分布 中采样一个与图像大小相同的噪声 ;在 时取
    • 计算下一循环输入
  2. 返回
  • 直觉理解:就是先识别 中的噪声,将它不断以一个比例从 中去除,乘一个常数,再加上一个噪声

采样过程为何又加噪声?

  • 加上随机噪声 是为了保持采样多样性
  • 逆扩散的每一步是随机采样而不是确定性去噪;如果不加 ,生成过程会退化为单一样本,不再具有“生成模型”性质

扩展

Todo

以下是很久以前的笔记,需要更新

Stable Diffusion

  1. Text Encoder
    • 把文字描述转化为矩阵
  2. Generation Model
    • 一般用 diffusion model,左侧那个矩阵应该是给定噪声
  3. Decoder
    • 类 AE 的 decoder

VQ-Diffusion

论文名称:Vector Quantized Diffusion Model for Text-to-Image Synthesis 发表时间:2022.3.3 论文链接:https://arxiv.org/abs/2111.14822 论文代码:https://github.com/microsoft/VQ-Diffusion

  • 动机:
    • 分辨率过高的图像不利于 transformer 建模
  • 结构:
    1. 使用 VQ-VAE 将图像压缩到离散的 codebook 空间
    2. 在 codebook 中 diffusion:引入 mask & replace
      • 加噪声:随机 mask 一个 code 或者 replace 成另外一个 code,这样就能把原 code 变成一个随机噪声向量
      • 形成概率转移矩阵 ,有
        • :code 保持原样的概率
        • :replace 的概率
        • :mask 的概率
    3. 利用 transformer 网络把 code 噪声和文本信息 decode 成原本的 code
    4. 经由 decoder 恢复到原本的空间中
  • 指标:
    1. FID:把真实图像和生成图像输入到训练好的 CNN 分类器中,如果两组的 representation 越接近,效果就越好;假设 representation 都是高斯分布,得到他们之间的 FID 也就是 frechet distance。这个指标越小越好。但是需要采样大量样本(例如 10K)来进行评估。(真实性评估)
    2. CLIP:Contrastive Language-Image Pre-Training,由 text encoder 和 image encoder 组成。训练好这个模型,把图像和与其对应的文字输入进去,编码出来的向量越近越好。(文本相近性评估)

Reference