去噪扩散概率模型 DDPM

相关:变分下界ELBO笔记(ELBO 的一般推导) | 变分自编码器VAE笔记(单步潜变量模型与重参数化)

参考:DDPM 专栏

1. DDPM 在做什么

DDPM(Denoising Diffusion Probabilistic Model,去噪扩散概率模型)把生成过程拆成 个很小的步骤:

  1. 正向过程:从真实样本 出发,逐步加入高斯噪声,最后得到近似标准正态的 ;
  2. 反向过程:从纯噪声 出发,逐步去除噪声,最终得到生成样本 。

它的核心不是直接学习复杂的 ,而是学习一串简单的高斯转移分布。和 变分自编码器VAE笔记 类似,DDPM 也是一个带潜变量的生成模型;区别是它使用 这一长串潜变量,而不是一个低维 。

2. 正向加噪过程

2.1 一步转移

给定真实数据 ,定义固定的马尔可夫链 :

其中

是第 步加入的噪声强度,通常由一个预先设定的 schedule 给出; 没有可学习参数。

用重参数化写成采样形式:

这和 VAE 中的

形式相同,都是把随机采样改写成“确定性变换加标准高斯噪声”,但 DDPM 的正向过程本身不需要反向传播来学习。

2.2 多步转移

由于正向过程是马尔可夫链:

定义累计乘积

反复代入一步转移,并利用独立高斯之和仍为高斯,可得任意时刻的闭式边缘分布。

先展开两步:

最后两项是相互独立的零均值高斯噪声,因此它们之和仍是零均值高斯噪声,方差为

继续递推到 ,并记

就得到信号系数为 ,噪声方差为

因此可以不必真的执行 次加噪,直接采样:

这里使用了独立高斯变量相加时均值相加、方差相加的性质:

当 增大时, 逐渐趋近于 ,于是

也就是说,正向过程把数据分布逐渐抹平成简单的标准高斯分布。

3. 反向生成过程

3.1 反向过程的建模

如果知道真实数据分布,反向条件分布为 ;但它通常无法直接计算,所以用神经网络参数化:

其中

并令每一步反向转移为高斯分布:

神经网络接收带噪样本 和时间步 ,输出反向高斯分布的参数。训练完成后,从 开始,按照 的顺序逐步采样。

3.2 为什么需要

单独的 一般难以解析得到,但带上已知的初始样本后,后验

可以由贝叶斯公式写成

由于正向过程的马尔可夫性质,,而前面已经求出了 与 ,所以该后验仍然是高斯分布。

3.3 反向后验的闭式形式

令 ,将三个高斯分布代入上式,有

其中分母中的常数来自

把指数中的二次型关于 展开:

二次项系数为

因此对二次型配方后,后验仍然是高斯分布:

其中后验方差为

后验均值由“方差乘以一次项系数”得到:

即

所以只要给定 ,反向一步的真实均值和方差都可以解析计算。

但生成时只有 ,没有 ,因此需要神经网络根据 预测出与 或噪声等价的信息。

4. 从 ELBO 推导 DDPM 损失

4.1 把 DDPM 看成潜变量模型

在 DDPM 中,观测变量是 ,潜变量是 。真实的正向过程 充当变分分布,反向模型 是要学习的生成模型。

这与 KL 散度分解 完全同一条思路:对边缘似然插入一个容易采样的分布 。

最后一步是 Jensen 不等式。定义 DDPM 的负 ELBO 损失:

因此,DDPM 并不是脱离 ELBO 的另一套目标,而是把 ELBO 应用到了一个有 个潜变量的层次模型上。

4.2 ELBO 的详细推导

负 ELBO 就是正向链与反向链两个联合分布的对数之比(见 4.1 把 DDPM 看成潜变量模型):

把分子分母按各自的马尔可夫链展开成乘积:

把求和中的 项单独分离出来,因为它是唯一出现 的项:

正向过程是马尔可夫链,所以对 有 。把它代入求和中的分子,为下一步用贝叶斯公式做准备:

对 使用贝叶斯公式(并再次利用马尔可夫性质 ):

两边取对数:

代入求和后, 是望远镜和,只剩首尾 ,恰好与单独的 项中的 相消:

最后一步把期望按各自依赖的变量拆分(不依赖的变量先边缘化掉)。中间项的内层期望正是 KL 散度——对固定的 ,按后验 平均对数之比:

三部分分别是终点先验 KL、中间反向转移 KL 和最终数据项。

4.3 三项的含义与可忽略项

  • :终点先验 KL,正向过程最后的 要接近标准正态先验,通常接近常数;
  • :学习的反向一步 要逼近真实后验 ;
  • :最后一步负责把 还原成数据 ,是数据重构(似然)项。

可以忽略:图像像素被量化到 后, 与 只相差一步很小的噪声( 很小),此时 几乎不随参数变化,对总损失的贡献很小;DDPM 原论文据此把它与不含可学习参数的 一并当作常数处理,后续推导(5.2 KL 项化为均方误差)只保留中间的 项。

其中终点项可以直接算出闭式形式。对

使用高斯 KL 公式,得到

因为 和 都不依赖 ,所以 在训练反向网络时是常数;当 很小时, 已经非常接近 。

这和 VAE 的

结构相同,只是 DDPM 的中间潜变量很多,KL 项沿着整条反向链逐步展开。

5. 从预测均值到预测噪声

5.1 用噪声表示真实后验均值

忽略常数项 和重建项 (见 4.3 三项的含义与可忽略项)后,训练目标只剩中间的反向 KL 项 ,下面把它化为关于噪声的均方误差。

由正向闭式采样公式

可以反解出

将 代入后验均值,并把 与 的系数分别整理:

由于 , 的系数为

而 的系数为

因此得到只依赖 和真实噪声 的形式:

因此让网络预测噪声

即可定义反向均值:

网络不需要直接输出 或复杂的后验均值,只需判断当前 中混入了哪些噪声。

5.2 KL 项化为均方误差

若把反向方差固定为 ,可以从高斯 KL 的一般公式出发:

取

得到

其中前三项与网络参数无关,可以并入常数 ,于是依赖参数的部分是均值差的平方:

由两个均值的噪声表达式,均值差为

代入均值差的平方,可得

所以训练网络的核心就是噪声回归。DDPM 实际中常用去掉时间权重的简化目标:

它的训练含义很直接:随机选一个时间步,把干净样本加噪,再让网络从带噪样本中预测所加入的噪声。

6. 训练算法

对每个训练样本 ,训练步骤为:

  1. 随机采样时间步 ;
  2. 采样标准高斯噪声 ;
  3. 用闭式公式构造带噪样本
  4. 计算噪声预测误差
  5. 反向传播,更新 。

时间步 通常通过 sinusoidal positional embedding 编码后输入 U-Net,使同一个网络能够处理不同噪声强度。

7. 采样算法

训练完成后,先采样

对 :

  1. 预测噪声 ;
  2. 计算反向均值
  3. 采样 当 时通常令 ,避免在最终样本中再次加入噪声。

最后得到 。因此 DDPM 的生成速度较慢:一次生成需要执行 次网络推理,这正是后续快速采样方法要解决的问题。

8. DDPM 与 VAE、ELBO 的联动

8.1 统一视角

概念VAEDDPM
观测变量
潜变量一个低维 多个中间状态
变分分布,由编码器学习,正向加噪过程固定
生成模型
ELBO 中的逼近
训练目标重构损失加 KL 正则多个高斯 KL,化为噪声 MSE
生成方式一次从 解码从 逐步反向去噪

VAE 的编码器一次性把 压缩成 ,DDPM 的正向过程则把 分散到一长串噪声状态中;DDPM 以更长的链换取了更容易学习的局部高斯反向过程。

8.2 与 ELBO 笔记的公式对应

KL 散度分解 中的基本恒等式是

DDPM 只是在“潜变量”位置换成整个序列 :

最大化 ELBO 就是让反向链逼近真实的正向后验;当每个时间步的局部反向分布都学好时,整条链就能从高斯噪声逐步回到数据分布。

8.3 与 VAE 重参数化的对应

VAE 中重参数化解决的是“如何让随机隐变量采样对网络参数可导”;DDPM 中正向采样也可重参数化为

但训练时 的均值和方差都由 schedule 固定,网络只需要对噪声预测误差求梯度。因此 DDPM 不需要 VAE 那样的可学习编码器,却仍然保留了“噪声与确定性变换分离”的思想。

9. 一句话总结

DDPM 先用固定的正向马尔可夫链把数据变成高斯噪声,再用神经网络学习反向链;其理论目标是多步潜变量模型的 ELBO,其常用训练形式则是预测正向过程中加入的噪声:

所以,VAE、ELBO 与 DDPM 的主线可以概括为:引入潜变量降低建模难度,用变分下界替代难算的边缘似然,再通过神经网络学习潜变量对应的生成过程。