Skip to content

第 19 章 扩散模型

扩散模型是一类生成模型,常见代表是去噪扩散概率模型(Denoising Diffusion Probabilistic Model, DDPM)。训练阶段逐步向真实样本加入高斯噪声,并训练网络预测噪声;生成阶段从纯噪声出发,按时间步逐步去噪得到样本。

可以把它分成两个过程:

text
正向过程:真实图像 -> 逐步加噪 -> 纯噪声
反向过程:纯噪声 -> 逐步去噪 -> 生成图像

19.1 正向加噪过程

设真实样本为 x0。扩散模型在每个时间步加入少量高斯噪声:

q(xt|xt1)=N(1βtxt1,βtI)

其中 q(xt|xt1) 是正向过程的一步条件分布,N(μ,Σ) 表示均值为 μ、协方差矩阵为 Σ 的高斯分布,I 是单位矩阵,βt 控制第 t 步加入多少噪声。

随着 t 增大,xt 中原始数据结构越来越少,最后接近标准高斯噪声。

19.2 一步得到任意时间步噪声

实际训练时,不需要真的一步步加噪到 t。可以直接从 x0 得到 xt

xt=α¯tx0+1α¯tϵ

其中:

ϵN(0,I)

定义:

αt=1βt,α¯t=s=1tαs

其中 αt 是第 t 步保留的信号比例,α¯t 是前 t 步保留信号比例的累积,ϵ 是从标准正态分布采样的噪声。

这个公式说明:xt 是干净样本和噪声的加权组合。

19.3 训练目标

扩散模型常见训练目标是预测噪声。

训练时随机选择时间步 t,给 x0 加噪得到 xt,然后让神经网络预测加入的噪声 ϵ

ϵθ(xt,t)

损失函数为:

L=ϵϵθ(xt,t)2

也就是说,模型学的是:给定带噪图像和时间步,判断其中的噪声是什么。

19.4 反向去噪过程

生成时从随机噪声开始:

xTN(0,I)

其中 T 是扩散过程的总时间步数。

然后从 T 到 1 逐步去噪:

text
x_T -> x_{T-1} -> ... -> x_1 -> x_0

每一步都用神经网络预测噪声,再根据预测结果还原更干净的样本。

19.5 时间步嵌入

同一张图在不同时间步噪声强度不同。模型必须知道当前输入处于哪个时间步。

因此扩散模型会把时间步 t 编码成向量,再送入网络。

常见做法包括正弦余弦位置编码或可学习时间嵌入。

19.6 U-Net

图像扩散模型常用 U-Net 作为噪声预测网络。

U-Net 有编码器和解码器结构,并通过跳跃连接保留空间细节:

text
下采样提取语义 -> 上采样恢复分辨率

跳跃连接能把浅层空间细节传给解码部分,有利于生成清晰图像。

19.7 条件扩散模型

无条件扩散模型只学习生成数据。条件扩散模型会额外输入条件 c

pθ(x|c)

条件可以是:

条件任务
类别标签生成指定类别
文本文生图
低分辨率图像超分辨率
边缘图、深度图控制结构

文生图模型会先把文本编码成向量,再作为条件引导去噪过程。

19.8 扩散模型、GAN、VAE 对比

模型优点缺点
VAE训练稳定,潜空间规整样本可能偏模糊
GAN样本清晰,生成速度快训练不稳定,可能模式崩溃
扩散模型训练稳定,生成质量高采样步骤多,速度较慢

与 GAN 一步生成样本不同,扩散模型把生成过程拆成多个去噪步骤,因此训练较稳定,但采样速度较慢。

Powered by VitePress