扩散模型

扩散模型先把真实数据一步步”毁掉”成纯噪声,再训练一个模型学会把噪声一步步”还原”成真实数据。

扩散模型的灵感来源于非平衡热力学

在热力学里,一个有结构、有秩序的系统,往往会随着时间演化变得更混乱。例如:

一滴墨水滴进水里,刚开始墨水集中在一个小区域;随着时间推移,墨水逐渐扩散,最后变成均匀的混合状态。

这个过程是: 有结构 → 逐渐混乱 → 接近随机/均匀

扩散模型借用了这个思想: 真实图片/真实数据 → 逐步加入噪声 → 纯噪声 比如一张猫的图片,经过很多步加噪后,会变成一张完全看不出内容的雪花噪声图。

它们定义了一个马尔可夫链, 通过逐步向数据中添加随机噪声, 这是扩散模型的前向过程,也叫 diffusion process

它的作用是:把复杂的数据分布逐步变成一个简单分布,比如标准正态分布。


然后学习逆向扩散过程,从噪声中构建所需的数据样本, 也就是:

xT→xT−1→xT−2→⋯→x0x_T \rightarrow x_{T-1} \rightarrow x_{T-2} \rightarrow \cdots \rightarrow x_0

模型要学会在每一步回答一个问题:

当前这个带噪数据,应该去掉哪一部分噪声,才能更接近真实数据?

所以扩散模型不是”一步生成图片”,而是多步去噪生成图片。这也是为什么早期扩散模型生成速度慢:它可能需要几十步、几百步甚至上千步去噪。

但现在主流图像模型大多不直接在像素空间扩散,而是在 latent space 里扩散。比如 Imagen 3 被描述为 latent diffusion model,Stable Diffusion 系列也是典型的 latent diffusion 路线

原图→ VAE编码器 →压缩后的latent → 在latent中扩散/去噪 → 生成latent → VAE解码器 → 输出图片