扩散模型入门:从噪声里「雕刻」出图像

一步画出一张图,为什么这么难

生成模型的目标可以一句话说清:让神经网络学会「图像的分布」,再从这个分布里抽出一张新图。难点在于分布本身——一张图是数百万维像素空间里的一个点,而「合理的图像」只占这个空间里极小、形状极不规则的一小块。要求网络一步到位地输出「落在这一小块里」的图,等于让它一口气解决一个超高维、高度多峰的拟合问题。早期的生成对抗网络(GAN)用两个网络互相博弈来逼近这个分布,训练出了名地不稳定。扩散模型(Diffusion Model)换了一条思路:不让网络学会「一次生成」,而是把生成拆成几百个小步。

前向过程:把图一步步泡进噪声

扩散的前向过程简单到近乎粗暴:拿一张真实图像,每一步混入一点高斯噪声(一种各维度独立的随机噪声),重复几百上千步。步数够多之后,原图信息被彻底淹没,得到与原图无关的纯噪声。这个过程不需要学习,是固定的数学操作,每一步的噪声强度由事先设计好的日程表决定。

前向过程的价值在于提供近乎无限的训练素材:任何一张真实图,随机挑一个中间步骤,就得到一份「清晰图与噪声按已知比例混合」的样本,训练数据要多少有多少。

反向过程:训练一个「去噪预言家」

真正要学的是反向过程:从噪声往回走,每一步去掉一点噪声。做法是训练一个网络(常见 U-Net 或 Transformer 结构),输入「某一步的带噪图像与步数」,输出这一步里混入的噪声——等价地,也可以让它直接预测「往清晰方向走一小步」该得到什么。训练目标是让预测噪声与实际混入的噪声尽可能接近,这是个定义清晰、优化稳定的回归问题。

采样时从一张纯噪声出发,反复调用网络:预测噪声、减掉一点、进入下一步。几百步之后,噪声被层层剥离,一张训练分布内的图像浮现出来。可以把它理解成雕刻:大理石是噪声,每一步刻掉的,都是网络判断出的「不像图的部分」。

为什么拆步之后反而容易

几百步比一步做更多的事,为什么反而更容易?因为每一步的任务被降到了最简单:只做一点微小修正,不需要一次性决定整张图的内容。整体构图在前几步就大致定型,后面的每一步只是细化纹理、修正局部。一个困难的全局生成问题,被拆成了几百个简单的局部修正问题,而每个子问题都是网络容易学会的小扰动。这就是扩散模型训练稳定、效果可靠的核心原因。

文字怎么「指挥」去噪方向

文生图的关键,是让去噪朝着文字描述的方向进行。文本先经过文本编码器变成一串向量——这类编码器通常在海量图文对上训练过(CLIP 是这类图文对齐思路的代表),语义上与图像概念互通。随后这串向量经 cross-attention(交叉注意力,一种让一组向量去「查阅」另一组向量的注意力机制)注入去噪网络:网络在每一步、每一层都查阅文本向量,决定该强化什么、弱化什么。同一个初始噪声,配上不同的文字,会走出完全不同的去噪轨迹——「减噪声」这个动作本身没有语义,语义全部来自条件的引导。

把几百步压到几十步

原始采样的步数对产品化太慢。加速的主流做法有两类:一是更好的采样器,数学上更聪明地安排每步步长,同等质量下大幅减少步数;二是蒸馏(训练一个学生模型去模仿原模型多步的效果),把迭代次数压到几十步甚至个位数量级。如今的图像生成产品普遍在几十步内出图,量级上比原始方法快一到两个数量级。

扩散与自回归:两条生成路线

图像生成还有另一条路线:自回归(AR)——把图像当序列,逐 token 生成,与语言模型同构。两条路线的取舍值得放在一起看:

维度 扩散模型 自回归模型
生成方式 全图并行去噪,迭代多步 逐 token 顺序生成
单步开销 每步完整跑一遍网络 每步只算一个 token
多模态统一 图像与文本表示体系不同,统一较难 天然统一:一切皆 token 序列
可控性 条件注入成熟,局部编辑灵活 与语言能力共享同一套指令接口

两条路线都在快速演进,也互相借鉴:扩散在吸收多模态条件,AR 在借鉴迭代精化。就当前的产品格局而言,像素级图像生成以扩散为主流,「统一一切模态」的尝试则更多站在 AR 一侧。

小结

扩散模型把「生成」这个太难的问题,翻译成「去噪」这个可学的问题:前向过程提供无限训练素材,反向过程把全局生成拆成几百个局部修正,文本条件经 cross-attention 指挥去噪方向,采样加速让这套机制能进产品。理解了「难任务拆成小步」这个核心,就理解了扩散模型为什么能成为图像生成的事实标准。

← 返回资讯列表

读者留言

COMMENTS 暂无
仅本站原创文章开放留言 · 请勿留下手机号、邮箱等个人信息

还没有留言,来说第一句?