扩散模型
扩散模型先把真实数据一步步”毁掉”成纯噪声,再训练一个模型学会把噪声一步步”还原”成真实数据。
扩散模型的灵感来源于非平衡热力学
在热力学里,一个有结构、有秩序的系统,往往会随着时间演化变得更混乱。例如:
一滴墨水滴进水里,刚开始墨水集中在一个小区域;随着时间推移,墨水逐渐扩散,最后变成均匀的混合状态。这个过程是:
有结构 → 逐渐混乱 → 接近随机/均匀
扩散模型借用了这个思想:
真实图片/真实数据 → 逐步加入噪声 → 纯噪声
比如一张猫的图片,经过很多步加噪后,会变成一张完全看不出内容的雪花噪声图。
它们定义了一个马尔可夫链, 通过逐步向数据中添加随机噪声, 这是扩散模型的前向过程,也叫 diffusion process
它的作用是:把复杂的数据分布逐步变成一个简单分布,比如标准正态分布。
然后学习逆向扩散过程,从噪声中构建所需的数据样本, 也就是:
模型要学会在每一步回答一个问题:
当前这个带噪数据,应该去掉哪一部分噪声,才能更接近真实数据?所以扩散模型不是”一步生成图片”,而是多步去噪生成图片。这也是为什么早期扩散模型生成速度慢:它可能需要几十步、几百步甚至上千步去噪。
但现在主流图像模型大多不直接在像素空间扩散,而是在 latent space 里扩散。比如 Imagen 3 被描述为 latent diffusion model,Stable Diffusion 系列也是典型的 latent diffusion 路线
原图→ VAE编码器 →压缩后的latent → 在latent中扩散/去噪 → 生成latent → VAE解码器 → 输出图片