扩散模型(Diffusion Model)是今天绝大多数 AI 图像、视频和音频生成背后的方法。它和大语言模型的工作方式很不一样:语言模型是从左到右一个 Token 接一个地往下写,扩散模型是先给出一整张全是噪点的画面,再反复修,一步步把它修成清晰的图。
这个名字来自物理里的扩散现象——一滴墨水在水里慢慢散开,最后均匀到看不出原来的形状。扩散模型学的正是这个过程的逆运算:怎么从均匀的噪声里,把那滴墨水重新收回来。
先用一句话抓住它
扩散模型先学会「怎么把一张图一步步毁成噪点」,再把这套流程倒过来跑,从噪点里生成图。
生活里的类比是雕塑:米开朗基罗那句「石头里本来就有大卫,我只是把多余的部分去掉」。扩散模型面对的「石头」是一整块随机噪声,提示词告诉它要凿出什么,然后它一刀一刀地去掉不属于这张图的部分。
它是怎么训练和生成的
前向过程很简单,不需要学:拿一张真图,按固定规则一点点加高斯噪声,加够步数就变成纯噪点。因为每步加了多少是已知的,就能自动造出海量的「带噪图 → 该去掉的噪声」训练样本。
反向过程才是模型学的东西:给它一张带噪图和当前处在第几步,让它预测这一步该去掉的噪声。训练目标朴素到有点反直觉——模型的本职工作其实是「认噪声」,生成能力是这件事的副产品。
生成时从纯噪声起步,反复调用模型去噪几十步,每步都把文本提示作为条件注入。步数是速度和质量的直接权衡,这也是各家产品里「快速 / 标准 / 高质量」档位的来源。
潜空间:为什么它变得跑得动
早期扩散模型直接在像素上做去噪,一张高分辨率图算起来极慢。2022 年的潜在扩散(Latent Diffusion)换了个思路:先用一个自编码器把图压缩成小得多的「潜空间」表示,在潜空间里做完整个去噪流程,最后再解码回像素。计算量掉了一两个数量级,消费级显卡才跑得动,Stable Diffusion 一类的开源生态也才起得来。
文本条件是通过交叉注意力注入的:提示词先被编码成向量,去噪的每一步都让画面去「看」这段文本,从而把生成方向拉向描述的内容。
从 U-Net 到 DiT,以及视频
早期扩散模型的骨干网络是卷积结构的 U-Net。后来业界发现把骨干换成 Transformer 效果更好、也更容易随算力放大,这就是 DiT(Diffusion Transformer)。当下主流的图像和视频生成模型大多走这条路线,缩放定律那套「加算力加数据就变好」的经验也因此能迁移过来。
视频生成是同一套机制加上时间维度:把连续帧一起压进潜空间,让去噪同时考虑空间和时间的一致性。难点从「这一帧好不好看」变成「这几秒里同一个人还是不是同一个人」。
和自回归生成的区别
大语言模型是自回归的:从左到右一个 Token 接一个生成,每一步只看已经写出来的部分,写错了很难回头改。扩散是迭代精修的:每一步都在修改整张画面,早期步骤定大结构,后期步骤补细节,全局构图因此更容易控制。
这也解释了两类模型的手感差异。文字生成里你能明显看到「一句一句往外冒」;图像生成里你看到的是一张图整体从模糊变清晰。近两年也出现了把扩散思路用到文本上的尝试,以及把自回归用到图像上的模型(ChatGPT 的图像功能就属于后一类思路),两条路线正在互相借鉴,但生成图像视频的主流仍是扩散。
容易误解的地方
「它是在数据库里检索拼贴」——不是。模型权重里没有存原图,生成过程是从随机噪声出发的数值优化。但这不代表版权问题不存在:训练数据来源、对特定风格的高度模仿、以及在数据重复严重时可能复现近似样本,都是真实且仍在争议中的问题。
「同样的提示词应该出同样的图」——起点是随机噪声,所以除非固定随机种子且模型、步数、采样器全都一致,否则结果会不同。这是设计如此,不是不稳定。
「步数越多越好」——超过一定步数后收益迅速变小,甚至可能让画面变得过于平滑。不同采样器的最佳步数区间差别很大,需要实测而不是无脑拉满。
什么时候值得了解它
如果你只是用绘图工具,理解「从噪声里逐步收敛」这一点,就能解释很多日常现象:为什么改一个字结果全变(噪声起点和条件一起决定路径)、为什么手指和文字容易画坏(局部细节在后期步骤才定,约束弱)、为什么图生图的「重绘幅度」本质上是在选「从哪一步开始重跑」。
如果你要做产品选型或工程集成,需要再关注潜空间分辨率、采样器与步数的成本曲线、以及可控生成的手段(ControlNet 一类的结构条件、参考图一致性、区域重绘),这些比模型名字更决定最终能不能用。