你有没有想过一件事:一个学生要变强,最直接的办法是什么?
找一个更厉害的老师盯着他改作业,对吧。这几乎是所有人的直觉,也是过去几年语言模型训练里最火的思路之一。最近有研究发现,语言模型其实可以不需要外部老师,只靠自己给自己当老师,通过回看自己在"有提示"和"没提示"两种情况下的表现差异,就能获得有效的训练信号。
(相关资料图)
这件事挺反直觉的。因为按常理,自己教自己应该是左手打右手,没什么信息增量。但语言模型领域的研究证明了,只要你能构造出一个"更容易的版本"和一个"更难的版本"的自己,中间的差距本身就是有用的信息。
问题来了:这套思路能搬到图像生成的扩散模型上吗?
这篇论文的答案是:能,而且不需要额外的老师网络,不需要演示数据,甚至不需要修改推理流程。
扩散模型的训练为什么不够聪明
先说说现在的扩散模型是怎么训练的。
扩散模型*:一种生成图像的技术,核心思路是先把清晰图像一步步加噪声变成随机噪声,再训练一个网络学会把噪声一步步还原回图像。
训练的时候,网络会被喂进去各种加了不同程度噪声的图片,然后学着预测"应该往哪个方向去噪"。这个过程有一个默认假设:所有的训练样本,不管难易,都应该一视同仁地参与梯度更新,权重都一样。
这个假设听起来公平,但其实有问题。
想象你是一个摄影老师,同时在教两个学生临摹照片。一个学生临摹的是蓝天白云的简单风景照,另一个学生在临摹车水马龙的街景,里面有反光的橱窗、重叠的行人、模糊的霓虹灯字。如果你给两人布置同样数量的练习,简单风景照的学生很快就学会了,后面的练习基本是在浪费时间;而街景学生可能练十次都抓不住重点。公平地平分你的教学时间,看似公平,实际上是把本该多给难题的精力,浪费在了已经学会的题目上。
这就是扩散模型训练里的第一个问题:样本难度不均,但训练对待它们是一样的。
第二个问题更隐蔽,藏在图像的频率结构里。神经网络有个特性叫"频谱偏好",学习低频粗略结构(比如大色块、整体轮廓)的速度远快于学习高频细节(比如发丝、羽毛纹理、文字边缘)。可是标准的均方误差损失函数,是把整张图的所有误差压缩成一个数字,完全不区分这个误差是来自哪个频率。
频谱偏好*:深度神经网络普遍存在的一种学习倾向,会优先学会图像中平滑、低频的大结构,然后才慢慢学会高频的精细纹理。
这就好比给厨师的考核只打一个总分,不告诉他是刀工差还是火候差。厨师很难知道具体该改进哪里,训练效率自然就低了。
那怎么解决?论文作者想到了一个巧妙的办法:让同一个模型,同时看同一张图片的两个版本,一个噪声少(容易),一个噪声多(困难),然后比较这两个版本的表现差距,用这个差距去指导训练该往哪使劲。
这套方法起名叫SALD。
SALD到底是怎么运作的
SALD*:Self-referenced Advantage Learning for Diffusion,自我参照优势学习,一种给扩散模型设计的训练框架,核心是让模型用自己的"简单版表现"做参照物,来调整训练的重点。
整个框架的核心设定是:对每一张训练图片和对应的文字描述,同时跑两条路径。
一条叫简单路径(Path A),加的噪声少,评估时不记录梯度,相当于只是看一眼,不做反向传播学习。另一条叫困难路径(Path B),加的噪声多,这条路径上会正常计算梯度,模型参数靠它来更新。
这里有个关键细节:SALD并不是直接把简单路径的预测结果,硬塞给困难路径去模仿。它不做这种"老师给答案"式的蒸馏。它做的事情是,看这两条路径的误差差了多少,用这个差值去调整困难路径的训练权重。
这个设计思路挺值得琢磨的。为什么不直接蒸馏?因为在图像生成里,根本没有现成的"正确演示"可以参考,模型只能靠自己构造一个相对简单的参照系,而不是一个绝对正确的答案。这跟语言模型自蒸馏里用人类演示数据或模型自身反馈做参照是不一样的,图像生成这边没有这种现成的反馈数据可用,只能靠噪声水平的差异自己造一个参照出来。
这套机制具体拆解成三个模块:优势引导扩散(AGD)、时序优势记忆(TAM)、谱优势分解(SAD)。三个模块共用同一套模型参数,训练和推理阶段都不需要额外的老师网络或者新增的可训练参数,推理流程完全不变。
下面逐个拆开讲。
优势引导扩散:找出谁更难
AGD*:Advantage-Guided Diffusion,优势引导扩散,SALD里负责给每个训练样本算出一个"难度权重"的模块。
AGD做的事情很直接:对每个样本,用困难路径的损失,减去简单路径的损失(这部分不参与梯度计算),得到一个叫"优势值"的数字。
这个数字如果是正的,而且很大,说明这张图在噪声变多之后,变得明显更难预测了,那这张图应该在这一轮训练里获得更多关注。
接下来的操作是把这个优势值,通过一个Sigmoid函数转换成0到1之间的数,再在整个批次里做归一化,让所有样本权重的平均值保持为1。这样一来,权重调整只是改变了样本之间的相对重要性,不会让整体训练信号的量级发生偏移。
这里有个细节特别讲究:虽然简单路径的损失不参与梯度回传,但是优势值本身是可微的,它的梯度会通过困难路径一路传回去。换句话说,简单路径只是提供一个数值上的参照点,不是一堵完全隔绝的墙。
这就好比健身教练给你定训练计划。他会先让你做一组热身动作看看你现在的状态(这组不计入成绩,纯粹是参考),然后让你做正式的高强度组(这组才是真正计入训练效果的)。教练根据你热身和正式组之间的表现落差,决定下一次给你加多少重量。如果教练压根不看热身表现,直接凭感觉加重量,很可能会出现给已经很疲惫的部位加更多负荷、给状态好的部位却加得不够的情况,训练效果就会打折扣。
时序优势记忆:把难度变成一种记忆
单次计算出来的优势值其实挺不稳定的,因为每次迭代采样的高斯噪声都是随机的,一次算出来的"难度"可能只是噪声的巧合,不代表这张图真实的难度水平。
TAM要解决的就是这个问题。
TAM*:Temporal Advantage Memory,时序优势记忆,给每个训练样本保存一个持续更新的"历史难度值"的非训练缓冲区。
TAM给每个训练样本维护一个记忆值,用指数滑动平均的方式不断更新:这次的难度值乘以一个衰减系数,加上历史记忆乘以另一个系数,叠加起来。这样一来,单次噪声采样带来的随机波动会被平滑掉,留下的是这张图在整个训练过程中体现出来的、相对稳定的难度趋势。
更妙的是,这个记忆值还被用来反过来调整简单路径和困难路径之间的噪声差距。如果一张图历史上一直很难,TAM会让这张图的两条路径之间噪声差距拉得更大,制造更强的对比信号;如果一张图已经很容易了,差距就会被压缩回去。
这相当于给每个样本配了一张专属的"学习进度卡"。想象一个老师同时带着三十个学生,每个学生做题的正确率都记在本子上,而不是每次上课都凭当场的感觉临时判断谁需要加练。如果没有这本记录,老师只能靠这一次课堂的表现判断,可一个学生当天状态不好偶尔做错一道题,不代表他真的薄弱,这种偶然性会干扰老师的判断,导致该加练的学生没被抓出来,不该加练的学生反而被反复折腾。
谱优势分解:从频率上找出没学好的地方
前面两个模块解决的是"哪张图更难"的问题,这是样本级别的。但论文作者觉得这还不够细,因为同一张图里,不同的频率成分难度也不一样。
SAD*:Spectral Advantage Decomposition,谱优势分解,把两条路径的残差误差转换到频域里对比,构造出一个按频率加权的潜在空间权重图的模块。
具体做法是,把简单路径和困难路径各自的预测误差,分别做傅里叶变换,得到各自的功率谱(也就是每个频率分量上的能量大小)。然后比较这两个谱,哪个频率上困难路径的误差能量明显比简单路径大,就说明这个频率成分还没学扎实。
这个比较结果经过一个Sigmoid门控,再做逆傅里叶变换,映射回潜在空间,归一化之后,变成一个权重图,用来给困难路径的像素级损失做加权。
这里有个需要澄清的地方:因为功率谱只保留了频率的能量信息,丢弃了相位信息(也就是空间位置信息),所以这个权重图其实不能精确告诉你误差出现在图像的哪个具体位置,它只能告诉你哪种频率模式(比如高频细节还是低频轮廓)整体上还没学好。论文里也特意强调了这一点,把它称为"频率导出的潜在权重",而不是"像素级定位的误差图"。
这就像医生看X光片的灰度直方图,能看出骨密度整体偏低还是偏高这种统计规律,但光靠直方图没法指出具体是哪根骨头出的问题,要看具体位置还得结合别的影像。如果医生只凭直方图就下诊断说是哪块骨头坏了,那就是过度解读了手头的信息,容易误诊。SAD的设计很老实地承认了自己的边界,它只做频率层面的判断,不做空间定位。
三个模块怎么拼起来
最终的损失函数分两层:先用SAD算出的频率权重,对困难路径的像素级残差做加权求和,得到每个样本的损失;再用AGD算出的样本权重,对批次里所有样本的损失做加权平均。
整个梯度流动路径里,唯一被"掐断"(stop-gradient)的地方,只有简单路径的参照值。其他所有地方,包括AGD的权重、SAD的权重,都是可微的,梯度能正常流过去。TAM存储的记忆则完全是非训练状态,不参与反向传播。
论文还给出了一个理论分析,证明在TAM记忆状态固定的前提下,这套可微分目标函数在标准假设下(目标函数下有界、梯度满足利普希茨连续)能收敛到一个稳定点附近的邻域,这是随机梯度下降类算法的标准收敛性质,说明这套设计在数学上是站得住脚的,不是单纯拍脑袋想出来的权重游戏。
实验结果说明了什么
论文在四种模型架构(SANA的0.6B和1.6B版本、PixArt-Σ、Flux.2 Klein Base 4B)、七个数据集、两种分辨率(512×512和1024×1024)上做了大量实验。
在512分辨率的实验里,SALD在COCO 2017、MultiGen-20M、Flickr8k、CUB-200、Oxford 102 Flowers五个数据集上,相比基线模型和三个竞争方法(SpeeD、Temporal Diff、SRA),在FID(衡量生成图像和真实图像分布相似度,越低越好)、CLIP分数(衡量图文匹配程度,越高越好)、LPIPS(衡量感知相似度,越低越好)这三个指标上基本全面占优。比如SANA 1.6B在COCO上的FID,基线是26.49,SALD降到22.76,这个降幅相当可观。
在1024分辨率的实验里,MAGICK和DALL·E 3两个数据集上也呈现同样的趋势。尤其是Flux.2 Klein这个4B参数的大模型上,SALD把MAGICK数据集的FID从基线的35.93降到31.63,DALL·E 3上从14.11降到10.85,降幅都超过10%。
消融实验部分也挺有意思。研究者拆开AGD、TAM、SAD三个模块单独测试,发现AGD贡献最大,因为它直接给出了即时的难度信号;SAD单独使用效果也不错,但会对CLIP分数有轻微影响;TAM单独使用效果最弱,因为它的滑动平均记忆机制需要AGD提供的持续优势信号才能稳定运作。三个模块两两组合时,AGD+SAD效果最好,因为两者分别作用在样本难度和频率结构两个互不干扰的维度上;而三个模块全部组合的SALD完整版,效果超过任何一个单独模块或两两组合,说明这三者之间存在真正的协同效应,不是简单的信息重复。
论文还测试了几个关键超参数的敏感性。AGD的温度系数τ,取0.5时效果最好,太低会过度集中在极端样本上,太高又会让难度信号变得近乎无效,呈现一个U型曲线的敏感性。TAM的衰减系数α,默认值0.9表现最佳,太激进的衰减(0.5)会让难度估计变得嘈杂,太保守的衰减(0.999)又跟不上训练过程中难度分布的变化。最大噪声差距?max设为250时效果最好,太窄会削弱难易对比的强度,太宽又会把简单路径推向近乎无噪声的状态,反而高估了难度,使训练不稳定。
一个特别值得一提的消融实验是关于stop-gradient(阻断梯度)这个设计的。研究者尝试让权重参与反向传播,结果发现模型开始"钻空子",利用权重机制本身来降低损失,而不是真正提升预测质量。这个结果反过来验证了"只阻断简单路径参照值"这个设计决策的必要性。
另一个有意思的发现是关于推理步数的。论文测试了减少推理步数对生成质量的影响,SALD在12步推理下的效果,仍然优于基线模型用20步推理的效果。这说明SALD训练出来的模型学到的去噪轨迹更平滑,不需要那么多次迭代就能收敛到合理的结果。这背后的原因,其实跟AGD的权重机制有关:既然模型的优化重点一直放在那些在噪声轨迹上表现仍然困难的区域,模型对整条去噪路径的预测准确度会更均衡,自然就不那么依赖密集的采样步骤去纠偏了。
论文里还专门做了一个长时间训练的对照实验,把基线和SALD都训练到10万步(是正常训练预算的10倍),结果发现SALD相对基线的FID优势在整个训练过程中都保持稳定,并没有随着训练时间拉长而消失。这个实验的意义在于排除了一种可能的质疑:SALD的提升会不会只是因为基线训练得不够?答案是否定的,哪怕训练十倍时间,差距依然存在。
这套方法还有什么限制
论文也很坦诚地讨论了SALD的局限性。
最直接的代价是计算开销。因为要多跑一条简单路径的前向推理,每一步训练的耗时会增加大约25%。不过论文做了一个按总训练耗时对齐的实验,让SALD训练1万步、基线训练1.25万步(总耗时大致相当),结果SALD依然在生成质量上占优,说明这25%的额外开销,被更快的收敛速度抵消掉了。
TAM需要为每个训练样本存一个标量记忆值,这个存储开销随数据集规模线性增长。对于超大规模的网络爬取数据集来说,如果每个样本只被访问几次,TAM的滑动平均机制很难积累出有效的历史难度信息,这时候这套记忆机制的效果会打折扣。
另外,论文的实验都是在预训练模型基础上做微调,没有验证从零开始训练的场景。理论收敛性分析也只在TAM记忆状态固定的前提下成立,完整的在线记忆更新过程缺少严格的数学保证。论文虽然讨论了把这套思路扩展到DDPM(另一种主流扩散模型范式)的可能性,但没有做实验验证。
写在后面
读完这篇论文,最让我觉得有意思的一点,是SALD对"自我蒸馏"这个概念做了一次很克制的改造。
语言模型那边的自蒸馏,本质上还是依赖一个外部信号,可能是人类写的演示文本,也可能是模型自己尝试后得到的反馈。但图像生成这边压根没有这种现成的反馈可用,SALD索性放弃了"模仿一个更好的答案"这个思路,转而去比较"同一个东西在两种难度下的表现差距"。这个思路的巧妙之处在于,它把"自我监督"这件事,从"需要一个外部参照答案"降级成了"只需要制造一个内部对比组",门槛一下子低了很多。
另一个让我多想了一会儿的地方,是SAD模块里那句话:"频率导出的潜在权重,而不是局部化的误差图"。这个澄清看起来是个很小的技术细节,但背后体现的是一种对自己方法边界的清醒认知。很多论文在构造一个新模块的时候,会倾向于把它的能力说得更强一点,但这篇论文反而主动承认了这个权重图丢失了空间定位信息。这种诚实挺难得的,尤其是在一篇要投稿、要讲故事的论文里。
还有一点值得琢磨,SALD用两次前向传播换来了训练效率的提升,这种"花一点推理成本换训练效果"的思路,其实在很多领域都出现过,比如测试时增强、多次采样取平均。但SALD的特别之处在于,它把这种成对比较做成了训练阶段的常规操作,而不是推理阶段的后处理技巧。这个设计选择是不是也适用于别的生成任务,比如视频生成或者3D生成,论文里也留了这个问题没答,这大概是值得后续工作去填的坑。
一个模型要变聪明,到底是需要一个更聪明的老师,还是只需要学会跟过去的自己比一比?这篇论文给出的答案,或许比我们以为的更简单,也更值得琢磨。
Q&A
Q1:SALD是什么?
A:SALD是一种给扩散模型设计的自我参照训练框架,让同一个模型在低噪声和高噪声两种状态下评估同一张图片,用两者的误差差距来调整训练重点,不需要外部老师网络或额外可训练参数。
Q2:SALD相比传统扩散模型训练方法有什么优势?
A:SALD能识别哪些样本更难、哪些频率细节没学好,并动态调整训练权重,实验显示在FID、CLIP、LPIPS等指标上全面优于基线和SpeeD、SRA等竞争方法,且推理步数更少也能保持质量。
Q3:使用SALD训练会增加多少成本?
A:由于需要多跑一条简单路径的前向推理,每步训练耗时增加约25%,但论文实验显示这部分开销会被更快的收敛速度抵消,按总耗时对齐后SALD依然效果更优。