你有没有在大雾天爬过山?一开始眼前白茫茫一片,什么都看不清;雾慢慢散开,先是隐约看见山的轮廓,然后是树林的颜色,最后连石阶上的青苔都清清楚楚。AI 画一张图的过程和这很像——只不过那场「雾」是它自己撒下的随机噪点,而「散雾」的本事,是它在海量图片上练出来的。
这一节不写公式,用几个生活里的类比,把扩散模型(Diffusion Model)从训练到出图的全过程讲清楚。看完你会明白:为什么同一句提示词每次画出来都不一样,为什么把某个参数调高画面会「用力过猛」,以及 AI 为什么曾经那么不会画手。
先搞懂一件反直觉的事:学「画画」,其实是学「去噪」
直觉上,教 AI 画画应该是给它看大量画作,让它学会一笔一笔地画。扩散模型走的却是一条反过来的路:先学会怎么把一张被弄脏的图擦干净。
训练时大致是这样做的:
- 拿一张清晰的图片,比如一只猫。
- 往上面撒一点点随机噪点(像老电视的雪花),图变得有点脏。
- 再撒一点,再撒一点……重复很多步,直到图片彻底变成一片毫无意义的雪花。这一段叫「前向加噪」,是事先设计好的固定过程,不需要学。
- 真正要学的是反方向:给模型看一张「撒了若干步噪点」的图,让它猜「这里面混进了哪些噪点」。猜对了,把噪点减掉,图就干净了一点。
模型在数以亿计的图片上反复练这一件事。练到后来,哪怕给它一张几乎全是噪点的图,它也能「看出」一点点结构的影子,并把它往更清晰的方向推一步。
小贴士:可以把它想成修复老照片的师傅。见过足够多的照片,哪怕底片发霉、划痕累累,他也能判断「这里原本应该是眼睛,那里是衣领」。
这个思路早在 2015 年前后就有研究者提出,2020 年前后效果有了大突破;到了 2022 年,基于扩散模型的文生图工具开始走进大众视野。
出图:从一片雪花开始,一步步「雾散山现」
学会去噪之后,生成图片就变成了一个很妙的过程:
- 先随机生成一张纯噪点的图。注意,这里面本来什么都没有。
- 让模型去噪一步:它把这片噪点往「看起来像一张正常图片」的方向推一点点。
- 再去一步、再去一步……传统做法通常要重复几十步,新一代的加速方法可以把步数压得很少。
- 最后雪花消失,一张世界上从来不存在的图出现了。
AI 绘画工具里常见的两个参数,正好对应这个过程:
| 参数 | 它在过程中的含义 | 调整后的典型效果 |
|---|---|---|
| 步数(Steps) | 去噪一共走多少步 | 太少可能粗糙、细节没长出来;多到一定程度后提升不明显,只是更慢 |
| 随机种子(Seed) | 决定最开始那片噪点长什么样 | 同一模型、同一提示词、同一种子和参数,通常能复现几乎相同的图;换种子就是换一张 |
这就解释了一个常见疑问:为什么同一句话每次画出来都不一样? 因为每次的起点——那片噪点——不同。就像看天上的云,这次你看出一只兔子,下次云的形状变了,看出的兔子姿势也就不同。遇到一张构图满意、只想微调的图,记得记下它的种子。
文字是怎么「指挥」画面的
如果只会去噪,模型只能画出「某张看起来正常的图」,至于画什么全凭运气。让它听你的话,靠的是两样东西。
第一,把文字变成模型能懂的「坐标」。 你输入的提示词会先经过一个文本编码器,变成一串数字向量。整个系统在训练时见过海量「图片 + 文字说明」的配对,所以学会了「橘猫」「水彩」「逆光」这些词和画面特征之间的对应关系。
第二,在每一步去噪时都参考这串坐标。 模型去噪时会通过注意力机制(早期模型里常见的叫「交叉注意力」)不断回头看你的文字:这一块该往「猫毛」的方向长,还是往「窗帘」的方向长?于是同一片噪点,在「一只橘猫」的引导下会长出猫,在「一片麦田」的引导下会长出麦田。
还有一个关键技巧叫「无分类器引导」,在工具里常显示为 CFG、引导强度或提示词相关性。它有点像让模型同时打两份草稿:一份参考你的提示词,一份不参考。两份之间的差别,就是「你的文字带来的影响」;把这份影响再放大一些,画面就更贴合描述。
- 引导强度太低:AI 偏向自由发挥,可能不太听话。
- 引导强度太高:画面「用力过猛」——颜色过饱和、对比生硬、细节怪异。
- 一般先用工具的默认值,不满意时小幅调整。
很多工具里的「反向提示词」(写不想要的内容),原理也和这里有关:它在引导时扮演「往反方向推」的角色,让画面远离你列出的东西。不过并不是所有模型都支持这个功能。
为了画得快:在「压缩空间」里作画
一张高清图有几百万个像素,如果每个像素都反复去噪几十次,计算量非常大。2022 年前后流行开来的「潜空间扩散」想了个办法:
- 先用一个「压缩器」(常见的是 VAE)把图片压成一份小得多的「浓缩草图」,保留关键的结构和质感信息。
- 去噪的全过程都在这份浓缩草图上进行。
- 最后再用「解压器」把它还原成完整的高清图片。
就像建筑师先在小比例图纸上反复修改,定稿后再按比例施工,而不是直接在工地上搬砖试错。开源的 Stable Diffusion 系列就是这条路线的代表。近年来,越来越多模型还把负责去噪的网络换成了 Transformer 架构(也就是大语言模型背后的那类结构),让模型更容易做大,也更擅长理解长而复杂的描述。
注意:扩散并不是唯一的出图路线,也有一些新模型采用自回归(像写字一样一块一块生成)或混合路线。但理解了扩散,你就拿到了理解大多数 AI 绘画工具的钥匙。
用原理解释几个常见「怪现象」
| 现象 | 背后的原因 | 实用对策 |
|---|---|---|
| 手指多一根、少一根 | 手的姿势变化极多,在训练图里又常被遮挡,模型学到的是「手大概的样子」,而不是「手有五根手指」这条规则 | 换种子多出几张挑选;用局部重绘只修手 |
| 图里的文字成了乱码 | 模型学的是像素图案,早期模型并不真正「会拼写」 | 新模型已明显改善;文字尽量短,用引号括起来 |
| 描述越堆越多,画面反而乱 | 文字引导的「注意力」是有限的,太多或互相矛盾的要求会互相拉扯 | 抓住主体和关键特征,下一节教你结构化写法 |
| 同一角色每次长得不一样 | 每次都是从不同的噪点重新「长」出来的 | 固定种子,或使用参考图(第三节会讲) |
理解了这些,你就不会再把 AI 绘画当成「抽奖」。出图其实是「从随机起点出发,在文字引导下一步步去噪」:起点(种子)、走几步(步数)、听话程度(引导强度)、往哪走(提示词),每一项都可以有意识地去调。
本节要点
- 扩散模型训练时学的是「去噪」:看一张加了噪点的图,猜出噪点并去掉。
- 出图从一片纯随机噪点开始,经过多步去噪,画面逐渐「长」出来。
- 提示词被编码成向量,在每一步去噪中引导方向;引导强度过高会让画面「用力过猛」。
- 随机种子决定起点:同模型、同种子、同参数通常能复现,这也是每次结果不同的原因。
- 潜空间扩散先压缩再作画,大大降低了计算成本。
