微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 几步生成图片这件事,为什么非要在"噪声空间"里反复折腾?

几步生成图片这件事,为什么非要在"噪声空间"里反复折腾?

2026-11-11 14:45
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-11-11 14:45 • 科技行者

你有没有想过,AI生成一张图片,到底是怎么从一堆随机噪点,变成一只蓝色小鸟的?

现在主流的生成模型,比如Flow Matching流匹配模型,走的是一条看起来很优雅的路:从纯噪声出发,沿着一条数学上连续的"流",一步步走到真实图片。这条路理论上无限平滑,但现实很骨感,想走完它往往需要几十次甚至上百次计算。这就像从北京走到上海,理论上你可以一步一步量着走,但谁会真的这么干。

于是研究者想了个办法:蒸馏。把这条漫长的路压缩成一步或几步走完。听起来很美好,但一步走完的代价是,图片质量会打折扣,细节模糊,像被压缩过的照片。所以现实中大家更愿意接受"少数几步",比如四步,作为速度和质量的平衡点。

问题来了:这几步到底应该怎么走?

**现有方法的几步生成,都绕不开一个固定的"时间表"**

目前的少步生成方法,无论用什么花样,本质上都是在流匹配定义的那条"概率流"路径上做文章。

流匹配*:一种训练生成模型的方法,它学习如何把随机噪声连续地转变成真实数据(比如图片),这个转变过程被看作一条数学意义上的"流"。

具体操作上,大致分两种流派。第一种叫"流-加噪迭代",模型先预测出一张干净图片,然后往这张图片里重新掺一些噪声,把它变回某个中间噪声状态,再丢给模型继续预测。这个过程反复几次,直到噪声完全去掉。第二种叫"流-映射迭代",模型直接学习从一个噪声时间点跳到下一个噪声时间点的映射关系,不需要先还原干净图片再加噪。

这两种方法都有一个共同的前提:你必须先定好一张"时间表",也就是去噪过程要经过哪些具体的时间点,比如1.0、0.75、0.5、0.25。

这张时间表怎么定?说实话,很大程度上靠拍脑袋,或者靠大量试错搜索出来。而且更麻烦的是,如果训练方式是"自我滚动"(模型用自己上一步生成的结果,作为下一步的输入来训练自己),这张时间表就必须在训练开始之前就固定下来,不能等训练完了再调。换一张时间表,基本等于要重新训练一个模型。

自我滚动蒸馏*:一种训练少步生成模型的技巧,让模型用自己前面几步生成的结果作为输入,去训练后面步骤该怎么走,这样训练出来的模型更擅长"自己纠正自己"。

这就好比你要修一条从家到公司的通勤路线,路线图必须在你出门前就画好,画错了,等你走到半路发现堵车,也没法现场改路线,只能回家重新规划一条,再走一遍。如果你的工作地点经常变(不同的生成任务、不同的图片内容),那每次都要重新规划整条路线,成本高得吓人。

研究者们开始怀疑:这张"放之四海而皆准"的时间表,真的存在吗?

不同的图片,复杂程度天差地别。一张画着纯色背景单一物体的照片,和一张画着复杂花纹、细节密布的照片,它们需要的"修正力度"显然不一样。同样,一张图片里不同区域,比如天空和羽毛的纹理,所需要的精细程度也不同。但现有方法用的是一张全局统一的时间表,所有图片、所有区域都被迫按同一个节奏走。这就像让所有学生,不管基础好坏,都必须用同一张课程表、同一个进度学完一门课,显然不是最优解。

**数据空间迭代:把"时间表"这件事直接扔掉**

研究团队提出了一个思路,叫做数据空间迭代。

数据空间迭代*:一种少步生成方法,它不在"概率流"路径上按时间点迭代,而是直接在"图片本身"这个空间里反复修正预测结果,每一步都基于上一步生成的图片本身,而不是某个带噪声的中间状态。

具体怎么做?整个过程特别干脆。先从随机噪声出发,初始化一个全零的"图片估计"(可以理解成一张什么都没有的空白画布)。然后让一个共享的生成器,反复刷新这张画布:每一次,生成器看一眼当前的画布状态,再结合最初的噪声,直接产出一张更好的图片,这张新图片又成为下一轮刷新的起点。整个过程不涉及"往图片里加噪声再去噪"的操作,也不构造任何中间时间点的状态。

这里有个很关键的细节:每一步生成器都知道自己是第几轮刷新。研究者给生成器加了一个"轮次编号"的输入,让它清楚自己是第一次修正、第二次修正,还是第四次修正。这样,生成器可以针对不同轮次采取不同的修正策略,而不是每次都用完全相同的套路。

这就像一个画家在反复打磨同一幅画。第一遍下笔,先把大致轮廓和色块铺出来;第二遍,调整光影和比例;第三遍,精修细节,比如鸟喙的高光、羽毛的纹理。画家心里清楚自己画到了第几遍,所以每一遍用的笔触和注意力都不一样。如果画家每次都从头重新构图、重新上色(就像加噪再去噪那样把已经画好的部分抹掉重来),那前几遍打磨出来的好东西全白费了,反而更费工。论文里的实验数据也验证了这一点:研究者测量了相邻两步生成图片之间的差异,发现"流-加噪"方法在第一步到第二步之间的平均变化量高达82.72,而数据空间迭代只有59.65,到第三步时两者差距进一步拉大(29.91对35.98的变化趋势也印证了数据空间迭代在后期更注重精修而非推倒重来)。数字背后的意思是,"流-加噪"方法在迭代过程中经常把已经画好的内容大幅推翻重画,而数据空间迭代更倾向于在已有基础上小幅修正。

这个设计解决的根本矛盾是:固定时间表强迫所有样本按统一节奏推进,而数据空间迭代把节奏的选择权交还给模型自己,让模型根据当前画布的状态自主决定下一步该精修哪里、改多大幅度。

**训练这套系统,几乎不用改动现成的工具箱**

研究团队没有重新发明一套训练体系,而是选择在一个已经被广泛验证的框架上做最小改动,这个框架叫分布匹配蒸馏。

分布匹配蒸馏*:缩写DMD,一种训练少步生成器的方法,它用两个辅助的"流模型"(一个真实、一个模仿生成器当前输出分布的"假"模型)之间预测的差异,给生成器提供更新方向,让生成器产出的图片分布逐渐逼近真实数据分布。

DMD原本的框架里有一个真实流模型(预训练好、固定不动)和一个辅助的假流模型(专门跟踪生成器当前输出的分布)。研究者保留了这整套机制,唯一改动的是生成器"滚动"的方式:原来是在概率流空间里一步步挪,现在改成在数据空间里直接修正。其他部分,包括损失函数的核心形式、训练的轮换方式,全部照搬不变。

这种"最小改动"的设计思路本身就值得说一说。研究者为什么不干脆设计一套全新的训练体系?因为如果同时改变训练框架和迭代方式,实验结果就很难判断,到底是新框架厉害,还是新迭代方式厉害?这就像做科学实验必须控制变量,如果你同时换了烤箱的品牌和面粉的种类,蛋糕烤出来好吃了,你根本不知道是哪个因素起的作用。保留原有框架不变,只换迭代方式这一个变量,才能干净地证明"数据空间迭代"本身的价值。

生成器的具体实现也挺巧妙。研究者没有另起炉灶设计新网络,而是直接拿预训练好的速度预测网络来改。原来这个网络接收一个带噪声的图片和一个时间点,预测这个时刻的"速度方向"。现在给它加了一个额外的输入通道,专门接收"当前画布状态",再加一个"轮次编号"的小标签,把原本的时间点输入固定成一个常数。最后用噪声减去网络预测的速度,就是新一轮的画布估计。因为改动很小,新增的参数几乎可以忽略不计,甚至因为去掉了原来处理时间点的一个小模块,整体参数量反而比原模型还少了一百多万个。

**实验怎么测,结果说了什么**

研究团队在ImageNet 256×256这个经典的图片生成测试集上做了系统的对比实验,用的是预训练好的SiT-XL/2流匹配模型作为"老师"。衡量标准是FID分数,这个分数越低,说明生成的图片越接近真实照片的统计特性。

Fréchet Inception Distance*:缩写FID,一种衡量AI生成图片质量的指标,通过比较生成图片和真实图片在特征空间里的统计差异来打分,数值越低说明生成效果越逼真。

分类条件生成*:指生成图片时会指定一个类别标签(比如"金翅雀"或"鸵鸟"),模型要生成符合这个类别的图片,而不是随便生成任意图片。

实验结果很直接。在不开启额外引导技术的情况下,四步生成时,传统的"流-加噪"方法FID是2.75,"流-映射"方法是2.55,而数据空间迭代做到了2.46,全面领先。即便允许传统方法从三种不同时间表里挑最好的那个结果(相当于作弊式地给对手开后门),流-加噪最好也只能做到2.72,流-映射最好做到2.48,数据空间迭代2.46依然领先。开启经典的分类器自由引导技术后,数据空间迭代四步生成做到2.29,同样是所有方法里最低的。

分类器自由引导*:缩写CFG,一种在生成过程中增强"条件信息"影响力的技巧,通过比较有条件和无条件两种预测结果,放大条件对生成内容的引导作用,从而让生成结果更贴合指定类别或描述。

这里有个挺有意思的发现:不管是数据空间迭代还是传统方法,蒸馏出来的几步生成模型,在不开引导的情况下,反而都比原始的、要跑250步才能生成的"老师模型"效果更好。老师模型FID是8.26,学生模型最低做到2.46,差了整整六个点。研究者猜测这跟DMD用的损失函数的"模式寻找"特性有关,它天然倾向于让生成结果更集中在高质量的典型样本附近,而不是像老师模型那样覆盖整个数据分布的全貌,代价是牺牲一些多样性换取更稳定的质量。这算是一个意外的副产品,倒不是这项研究刻意追求的目标。

论文里还做了大量细节上的消融实验。比如训练时怎么给不同的噪声强度分配权重,研究发现用重要性采样(直接按某个分布去抽取训练样本,而不是均匀抽样再加权重)效果比传统的加权方式更好,因为它让每个批次的训练样本都用在最该用的地方,不浪费计算资源在不重要的样本上。又比如优化器的动量参数,把一阶动量系数设成0反而效果更好,这个发现有点反直觉,因为常规训练里大家默认动量能帮助收敛更稳,但在这个场景下去掉它反而更干净。研究者还试过加一个"最优传输"正则项,希望让每一步的修正更一致、更趋向收敛到一个固定点,结果发现这个正则项不仅没帮上忙,反而让FID稍微变差了一点,这个尝试最终被放弃。

这几个消融实验说明一个朴素但容易被忽视的道理:很多听起来"理论上应该有帮助"的设计,放到实际场景里未必成立,必须靠扎实的实验去验证,不能靠直觉替代。

**可视化上能看出什么**

论文还给出了生成过程的可视化对比图。数据空间迭代生成的图片,从第一步到第四步,整体结构基本保持稳定,后面的步骤主要是在精修细节,比如鸟的羽毛纹理从模糊逐渐变清晰,背景逐渐去除噪点。而"流-加噪"方法的中间过程看起来相当动荡,前几步生成的图片内容可能和最终结果完全不是一回事,有时候第一步生成的是一片模糊色块,第二步突然冒出一只鱵鱼的轮廓,内容在迭代过程中大幅跳变。

这背后的原因不难理解。加噪操作本质上是把当前预测的图片和一批新的随机噪声按比例混合,这个混合过程会把已经预测对的区域也掺进噪声里,下一步生成器要重新从一个"半新半旧"的状态里再预测一遍,相当于把已经画好的部分又蒙上一层雾,逼着自己重新辨认。这就好比你写了一篇文章的草稿,审稿人让你把草稿和一堆随机单词混在一起,再从这个混合文本里重新理出一篇文章,你当然可能保留一些原来的意思,但也很容易被噪声带偏,写出完全不同的内容。数据空间迭代不做这个混合操作,它直接把上一轮的画布原样交给下一轮,所以内容的连续性天然更好。

**这个方法目前还有哪些局限**

论文也坦诚地提到了方法的边界。数据空间迭代依赖自我滚动训练,如果一个项目本来就需要用自我滚动的训练方式,那么用数据空间迭代不会增加额外成本。但如果项目更倾向于用传统的、基于真实数据和噪声配对的训练方式(不是自我滚动),数据空间迭代目前还没有更高效的训练方案,这是留给未来研究的空间。

另外,目前的实验主要集中在ImageNet这种相对标准化的图片生成任务上,论文附录里补充了一个CIFAR-10小规模数据集上的实验,验证方法在更小模型和更简单任务上依然有效(四步生成FID做到8.62,优于传统流-加噪方法的10.03),但把这个思路扩展到文字生成图片、视频生成等更复杂的场景,论文明确表示这是留给未来的工作。

Q&A

Q1:数据空间迭代和传统的少步生成方法最大的区别是什么?

A:传统方法在"概率流"路径上迭代,需要预先定好一张固定的时间表来决定去噪的每个中间步骤。数据空间迭代直接在图片本身的空间里反复修正预测结果,完全不需要这张时间表,每一步都基于上一步生成的图片直接精修。

Q2:数据空间迭代的效果到底好不好,有数据支撑吗?

A:在ImageNet 256×256测试中,四步生成时数据空间迭代的FID分数做到2.46,低于传统流-加噪方法的2.75和流-映射方法的2.55,即便传统方法从多种时间表里挑最优结果,依然略逊于数据空间迭代。

Q3:这个方法训练起来会不会很复杂,需要重新设计一整套系统吗?

A:不需要。研究者在现有的分布匹配蒸馏框架上做了最小改动,只是把生成器的迭代方式从概率流空间换成数据空间,训练流程、损失函数核心形式都保持不变,几乎不增加额外的计算和内存成本。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-