ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

扩散模型发展史:从物理热力学到Stable Diffusion的生成式AI进化

2026/9/30 0:05:08 拓冰建站 浏览量
扩散模型发展史:从物理热力学到Stable Diffusion的生成式AI进化 扩散模型Diffusion Models这几年几乎成了生成式AI的顶流。翻论文的时候你会看到成百上千篇工作都在往“加噪-去噪”这个框架上靠用Stable Diffusion、Midjourney、DALL·E这些产品的时候背后真正干活的其实也是一套扩散模型。但很多人对它的印象是“突然火起来的”好像2022年一夜之间文生图就刷屏了。实际上这套思想在物理、统计和图像领域里已经潜伏了十几年是一步一步从冷门玩具长成工业标准的。这篇文章不做空泛梳理只做一件事把扩散模型的发展史从头到尾捋一遍——它从哪里来核心直觉是什么几篇里程碑论文分别在什么时候做了什么为什么最终成为今天的生成模型主流。我尽量把时间线、原理和实际观察揉在一起让刚接触的人也能顺着脉络走下来也让已经使用扩散模型的人能更清楚自己手里工具的能力边界。1. 扩散模型从哪里来物理直觉与早期生成模型1.1 热力学扩散把墨水滴进清水扩散模型这个名字本身就来自物理。想象一滴墨水滴进一杯清水墨水的粒子会逐渐散开最后整杯水都变成均匀的淡色。这个过程是不可逆的如果没有外力介入你不可能看到墨水粒子自动聚拢回一滴。物理上把它叫作熵增即系统总是从有序走向无序。扩散模型的“前向过程”就是在模仿这件事给一张清晰图片逐步加高斯噪声加得越来越多十几步、几百步之后图片完全变成一片纯噪声。这个过程是逐帧可拆解的每一步只做微小扰动计算上非常自然。更关键的是这个加噪过程并不是随随便便定的。它被设计成一条“马尔可夫链”意思是每一步只依赖上一步的状态就像翻扑克牌时只知道自己上一张牌不需要记住之前所有牌。这种链式结构让数学推导变得干净也让训练时能用非常简单的损失函数去拟合每一步的逆过程。1.2 早期生成模型为什么总是磕磕绊绊在扩散模型站稳脚跟之前生成模型的主力是GAN生成对抗网络和VAE变分自编码器再往前还有玻尔兹曼机和自回归模型。GAN的思路是让生成器跟判别器打对抗赛生成器负责造假图判别器负责分辨真假两人互相卷最后生成器能造出真假难辨的图。这个框架效果好但训练极其不稳定很容易出现模式坍缩——生成器只学了几种图翻来覆去就那几样。VAE的思路则完全不同它先把真实图片压缩到一个低维潜空间再从这个潜空间采样去重建图片。VAE训练稳定但生成的图片往往模糊因为它的损失函数倾向于平均化处理各种可能不敢把细节画明显。扩散模型绕开了这两个难点。它不直接让模型一步生成图片而是把生成拆成上千个极其微小的去噪步骤每一小步只负责“把图弄干净一点点”。这样每一步的预测都足够简单从纯噪声到清晰图片的路径也被拉得很长模型有充足的空间学出一条稳定路径。所以回头看扩散模型不是凭空出现的魔法而是前人在GAN和VAE上踩够了坑之后换了一条更笨但更稳的路。2. 从“毁掉信息”到“重建信息”扩散模型的核心思路2.1 前向过程一个可控的“毁图”流程扩散模型的前向过程是一只天平上的砝码必须设计得恰到好处。假设你有一张干净图片x0在第t步模型得到的是x_t。前向过程通常写成x_t sqrt(alpha_t) * x0 sqrt(1 - alpha_t) * eps其中eps是从标准正态分布里采样的噪声alpha_t是一个随时间动态变化的系数从接近1慢慢降到接近0。也就是说早期步骤保留的原始信息多后期步骤几乎全是噪声。这个公式的妙处在于它不需要一个模型去参与前向过程只需要按公式直接采样就能生成任意一个时刻的“加噪版本”训练时也不用一步步慢慢跑可以直接从函数跳到噪声较重的中间状态极大提升训练效率。2.2 反向过程学一个“时间倒流”网络真正的目标是反向过程。给定一个纯噪声x_T我们想让它一步步变回清晰图片x0。如果已知每一步加噪的完整分布反向过程理论上可以精确推出来但这个分布复杂到没人能算得动所以只能用神经网络去逼近。核心的训练目标是多少用噪声预测损失L E[ || eps - eps_theta(x_t, t) ||^2 ]这里的含义很直观模型输入一个被污染过的图像x_t和时间步t去预测当初被加进去的噪声eps。预测准了反向过程就可以不断把图像往“减去噪声”的方向推。这听起来像是让模型搞一个去噪任务。没错扩散模型最底层的训练实际上就是一个“按时间条件变化的去噪器”只不过这个去噪器被反复迭代使用上千次才从纯噪声中长出图像结构。很多人第一次看代码时觉得简单但真正理解这上千步迭代的累积效应后才明白它为什么能产生细节极其丰富的输出。2.3 从DDPM到Score SDE两条线索的汇合2020年前后扩散模型其实有两条独立的发展线索。一条是DDPM脉络。它直接基于物理直觉把扩散过程写成马尔可夫链使用变分下界推导训练损失。Denoising Diffusion Probabilistic ModelsDDPM这篇文章就是这条线的集大成者。另一条是Score匹配脉络。斯坦福的Yang Song等人从“估算分数”即对数概率密度的梯度出发提出用带噪声的条件分数网络去逼近数据分布并用朗之万动力学采样生成图像。这条线听起来跟热力学扩散没什么关系但最后推导出来的损失函数和DDPM殊途同归。两边的研究人员后来共同推进了统一视角把所有扩散过程看作连续时间的随机微分方程也就是著名的Score SDE框架。在这个统一框架下DDPM和NCSN不过是同一个连续过程的不同离散化方式。这种视角让数学更优雅也让后续加速采样、编辑潜变量、控制生成方向成为可能。3. 发展史上的三个关键节点3.1 2015年第一次把“非平衡热力学”变成模型很多教程会把DDPM当成扩散模型的起点但严格来说第一颗种子来自2015年的一篇冷门论文Sohl-Dickstein等人发表的Deep Unsupervised Learning using Nonequilibrium Thermodynamics。这篇论文把物理中的非平衡热力学过程直接搬进神经网络训练已经明确提出了“用可逆链逐步毁掉数据分布再学习反向链恢复数据”的整体思想。不过当年的实验效果很弱只在小规模数据上有初步结果。原因也很直接2015年的网络结构、计算资源和训练技巧都撑不起上千步的迭代生成加上当时GAN风头正劲几乎没有人关注这条路线。这个阶段就像一颗被埋在杂志堆里的种子理论框架已经成型但现实条件不允许它发芽。3.2 2020年DDPM让图像质量追上GAN直到2020年Ho等人发表了DDPM论文扩散模型才终于进入主流视野。DDPM最大的贡献不是说提出了一个从没想过的新思想而是把工程细节打磨到位用实验证明扩散模型在图像生成质量上能和当时的GAN掰手腕。这篇文章用了U-Net作为噪声预测网络去掉了很多花哨的归一化层引入时间步嵌入和简单的位置编码并系统对比了不同噪声调度对生成质量的影响。最终在CIFAR-10、CelebA等数据集上的FID分数追上甚至超过了当时的GAN同时训练过程不需要对抗技巧不用调判别器和生成器的平衡稳定性好很多。我印象非常深刻的一点是DDPM论文附录里那张噪声调度曲线图。就是这些看起来平平无奇的曲线决定了模型生成质量的上下限。很多复现者一开始不重视结果要么生成糊成一片要么样本千篇一律被坑得不轻。3.3 2021年加速采样、引导生成与控制内容DDPM证明了“能生成”但它的生成速度太慢了。生成一张图需要上千步前向传播每一步都要跑一次完整U-Net同等硬件条件下比GAN慢几十到上百倍。这成了扩散模型落地的大阻碍。2021年的几篇工作解决了这个问题的前半段。DDIMDenoising Diffusion Implicit Models提出了一种几乎确定性的采样过程用更少的步数生成质量不错的图片还带着很强的可复现性相当于让“用噪声倒退到原图”变成一条可以恢复的唯一路径。同一年Classifier Guidance与Classifier-Free Guidance相继被提出。前者用一个分类器去引导生成过程让模型偏向生成某个类别后者的想法是同时训练条件和无条件去噪推理时把两边差值放大做到完全不需要外部分类器也能精准控制生成内容。Classifier-Free Guidance后来几乎成了所有工业级扩散模型控制生成方向的标准做法Stable Diffusion的prompt强度调节底层用的就是它的变体。4. 潜在扩散模型扩散模型真正走进大众的关键一跳4.1 为什么非要在潜空间做扩散DDPM虽然效果好但实践上有个致命问题计算成本太高。一张512×512的图片像素点有几十万个U-Net要在这么高的分辨率上反复前向传播上千步普通显卡跑一次要几分钟甚至几十分钟。这不适合做成产品。2022年Rombach等人提出了高分辨率图像合成的新思路也就是潜在扩散模型Latent Diffusion Models。它的原名很长论文题目是High-Resolution Image Synthesis with Latent Diffusion Models也是后来Stable Diffusion的基础结构。核心想法并不复杂别在原始像素空间做扩散而是先训练一个自编码器把512×512的图片压缩到64×64甚至更小的潜空间编码再在这个小得多的潜空间里做扩散过程和去噪过程。由于潜空间维度比原始像素空间小太多每一步计算压力大幅下降训练成本和推理成本都直线降低。4.2 Stable Diffusion的架构拆解Stable Diffusion是潜在扩散模型最知名的实现基础架构可以拆成三个部分。第一部分是变分自编码器负责把图像编码到潜空间也负责把潜空间解码回图像。它相当于一个压缩与解压缩工具图片的信息在这里被压缩成紧凑的潜在表示而扩散模型只在这个压缩后的空间里工作。第二部分是扩散模型本体它接收带噪声的潜变量和时间步输出预测噪声。只不过这个模型不是单纯生成任意图像而是通过交叉注意力层接收外部条件的输入比如一句文本描述。第三部分是文本编码器负责把自然语言转换成模型能理解的向量表示。OpenAI的CLIP文本编码器就被直接用在了Stable Diffusion里让人可以通过一句话控制画面内容。这个“交叉注意力”机制让扩散模型从单纯“学分布”的工具变成了可以响应语言指令的创作引擎。4.3 从研究工具变成创作工具潜在扩散模型真正引爆公共舆论靠的不只是算法改进还在于它可以跑在消费级显卡上。普通人不需要去租集群只要用自己的显卡加载一套开源权重就能输入一句话生成图像。这在当时是革命性的体验。之后的图像编辑、修复、超分、视频生成等衍生工作几乎全都在潜在扩散模型这个底座上搭建。它让“扩散模型”这个概念从研究论文里走出来进入设计师、插画师和普通用户的日常工具链。从这里开始扩散模型不再是一个需要理解吉布斯分布和随机微分方程才能使用的黑盒而是一个可以对话的创作伙伴。5. 扩散模型还在往哪里走应用、限制与我的观察5.1 应用边界在快速拓展严格来说扩散模型早已不局限于生成图像了。音频领域有AudioLDM、Stable Audio在学音频谱的分布视频领域有各种Video Diffusion框架在做逐帧联合生成生物领域有人尝试用扩散模型生成分子构象和蛋白质结构。只要是“从噪声中逐步恢复结构”的任务框架基本都能迁移。我这里特别想提的一个方向是逆问题求解也就是给定一段不完整或受损的数据用扩散模型去恢复原始数据。比如盲去模糊、去噪、修复老照片、从低分辨率重建高分辨率这些任务本质上都可以理解成“从被噪声污染的状态反向采样”。扩散模型的前向加噪过程在这里反而变成了一种天然的正则化工具让恢复结果既符合数据分布又忠实于已知条件。5.2 绕不开的问题与挑战扩散模型虽然强远没有到成熟收工的地步。采样速度仍是最大痛点。虽然DDIM已经把步数从一千步降到五十步甚至更少但和GAN的一步生成比起来仍然不够快。工业部署时通常还要配合知识蒸馏、感知压缩、随机采样器优化等手段才能把单张生成压到一秒以内。为了速度做蒸馏又会牺牲一定的多样性算是在夹缝里做权衡。另一个问题是评估指标跟不上。FIDFréchet Inception Distance是目前最常用的指标但它只能衡量生成分布与真实分布的接近程度很多情况下会误导人。比如一张图把所有细节都模糊掉FID可能并不差但观众一眼就觉得不舒服。后面有人提出用CLIP Score衡量语义一致性用LPIPS衡量感知相似度但至今没有一个单指标能完全评价“生成得好不好”。还有一个很实际的坑是训练过程的超参数敏感度。噪声调度函数、时间步采样分布、损失函数权重这些细节任何一项设置不当轻则生成的图偏暗偏灰重则训练完全不收敛。这些经验在论文里往往只是一个小图展示只有自己跑一遍才知道背后坑有多深。5.3 这些年下来我的几点使用体会如果你只是想用现成模型生成图像我会建议先把“采样步数”和“引导强度”两个参数调明白。采样步数是质量和速度的旋钮引导强度是多样性与一致性的天平。调高引导强度确实会让图更贴近prompt但细节容易过饱和画面也会变僵硬调太低则经常生成出和prompt完全无关的构图。如果你打算自己训练一个扩散模型我建议从小数据实验开始。先跑一个单GPU小时能完成的玩具任务把前向加噪、U-Net结构、采样器这几个模块连起来确认每个模块的行为符合预期再去考虑大数据集和复杂条件控制。几乎所有灾难性的失败都是因为某个细小环节没调对等到大规模训练时才彻底暴露。另外一定多看老代码少看Remote封装。DDPM的PyTorch实现只有几百行核心代码自己动手写一遍比看十篇教程都有用。很多“老知识”在今天的库里面看不到了但这些细节恰恰决定了你复现一个模型时是顺利还是卡壳。我个人这一路上的最大体会是扩散模型之所以能成功核心不在于它有多么巧妙的“大新闻”而在于它把一个看似不可能的任务——从纯噪声恢复到自然图像——拆成了上千个极其简单的小任务让神经网络在每个小任务上都游刃有余。这种“分而治之”的思路放之任何生成任务都不过时。以后当你遇到一个看起来无从下手的复杂任务时不妨也想想能不能像扩散模型一样把任务拆到每一步都快到无可出错这比死记一百篇论文都更值得带走。