你有没有想过,教一个AI画画有多难?
不是说让它画得像,而是让它越学越好,不要学着学着突然"学废了"。
这就是今天要聊的论文碰到的核心麻烦。研究团队想用强化学习的方式,让扩散模型(也就是现在最火的AI画图、生成视频的那套技术)根据打分不断进步,结果发现市面上两种主流训练思路都有各自的死穴:一种训得慢得让人抓狂,另一种快是快,但动不动就"崩盘",而且崩盘的原因还得靠老师傅反复调参数才能压住。
这篇论文的团队把这个问题拆开揉碎了讲清楚,然后给出了一个解法,叫DiffusionART。先说结论,这个新方法在视频生成任务上,用了比对手少十几倍的算力,却拿到了明显更高的分数。具体数字后面会讲到,先说说问题到底出在哪。
两条路,两种死法
先搞清楚一件事:现在教AI生成图片或视频,常用的套路是"在线强化学习"。
强化学习*:让模型先生成一批结果,用一个打分器(奖励模型)给结果打分,再根据分数反过来调整模型,分数越高说明生成得越符合要求(比如更符合文字描述、画质更好)。
这个打分器通常是个黑箱,你只能拿到一个分数,看不到它内部怎么算的,这就决定了训练方法必须想办法把这个"事后诸葛亮"式的反馈,拆解成每一步生成过程中该怎么调整。
扩散模型生成一张图或一段视频,不是一步到位的,而是从一堆随机噪声开始,一步步"去噪",最后变成清晰的画面。这个过程业内分成两条技术路线。
第一条叫反向过程强化学习,代表是Flow-GRPO这类方法。
它的做法是,在AI真实生成(也就是去噪)的过程中,每一步都跟踪记录,最后根据整段生成的总分来调整每一步的决策。问题是,最后的总分是针对"整个生成过程"打的,但具体是哪一步做对了、哪一步做错了,这个方法分不清楚,只能笼统地把总分摊到每一步上。
这就好比你带着十个厨师一起炒一道菜,最后顾客打了个差评,但你没法知道到底是切菜的手艺不行,还是火候没掌握好,还是调味出了问题,你只能把这个差评平均扣在每个厨师头上。结果就是真正该改进的厨师没被重点纠正,不该背锅的厨师也被连带扣分,训练效率自然就低了。
实验数据也印证了这一点,这类方法在学习效率上明显落后。
第二条路叫前向过程强化学习,DiffusionNFT是代表。
它换了个思路,不去跟踪生成过程中的每一步,而是直接看最终生成的"成品",然后人为地把这个成品重新"加噪"回去,用加噪后的轨迹去反推模型该往哪个方向调整。这种做法效率高很多,因为不用记录整条生成链路,但它有个致命弱点:训练很不稳定,必须靠两个"保险栓"才能撑住,一个是必须同时用"好样本"和"坏样本"一起训练,另一个是必须用一种叫EMA的技巧,而且这个技巧的参数还得针对每个具体任务反复调。
EMA(指数移动平均)*:不直接用最新训练出来的模型去生成下一批样本,而是维护一个"滞后版本"的模型,这个滞后版本的参数是历史参数的加权平均,更新速度比当前模型慢一拍。
论文团队发现,这两个保险栓背后到底在起什么作用,之前没人讲清楚。他们决定把这个黑箱打开看看。
藏在正负样本里的"拉扯力"
先看第一个保险栓:为什么DiffusionNFT必须同时用好样本和坏样本一起训练?
研究者做了个简单的消融实验:只用好样本(正向目标)训练,模型直接崩了;只用坏样本(负向目标)训练,同样崩了;只有两者一起上,才能正常学习。
这事儿挺反直觉的。因为从理论上讲,好样本告诉模型"往这个方向走更好",坏样本告诉模型"离这个方向远一点",这两个方向在数学上是共线的,也就是说理论上指向同一个目标,按理说单独用哪一个都该管用,结果却都不行。
论文作者把这个谜团命名为"前向-反向一致性力"。
简单说,DiffusionNFT构造训练目标的时候,是拿生成好的成品倒推"理想情况下模型应该学到的方向",但这个"理想方向"和模型实际生成时真正用到的方向,这两者是有差距的。差距存在,正样本的训练就会不自觉地把模型往这个"理想方向"拉,负样本则会把模型往反方向推,这两股力量方向相反,理论上该互相抵消,但论文证明了这种抵消只能做到"平均意义上"的抵消,没法做到针对每一个具体状态都精确抵消。
打个比方,这就像一个班级里有一半学生考高分一半考低分,平均下来全班及格率看着正常,但实际上有的学生次次踩线过、有的学生次次垫底,问题被平均数掩盖了。如果老师只看平均分调整教学方案,那些真正需要个别辅导的学生永远得不到对症的帮助。NFT的联合训练就是在"看平均分",它能部分抵消那股不该存在的拉扯力,但没法把每一个生成状态上的残留干扰彻底清零,这股残留会拖慢训练、甚至引发不稳定。
搞清楚这一点之后,第二个问题来了:那EMA这个保险栓,到底是靠什么稳住训练的?
是"离线数据"本身管用,还是别的机制在起作用?
恢复力,不是数据本身
论文做了个很巧妙的拆解实验。
他们把EMA的作用拆成了两种可能性:一种是EMA让模型用的是"滞后一步"的旧数据去生成样本(也就是常说的"离线训练"),另一种是损失函数里始终保留着一个"旧模型"作为锚点,训练过程中模型会被这个锚点往回拉一把。
实验结果很有意思:如果只保留"离线数据"这个特性,但把损失函数里的旧模型锚点去掉,训练照样崩。反过来,如果把一次更新拆成两次,第一次更新完全在新数据上做,第二次更新引入旧模型锚点作为参照,哪怕完全不用EMA,训练也能稳住,虽然会慢很多(实验显示慢了15倍左右)。
这说明真正起稳定作用的,是损失函数里那个"往回拉"的恢复力,而不是数据新不新鲜。
这个发现挺颠覆认知的。因为大家一开始以为EMA管用是因为它让训练数据"滞后"了,类似于离线强化学习里常说的"保守性"。但实际上关键在于,模型每走一步,都有一股力量把它往上一个状态拉回去一点,这股恢复力的强弱取决于模型这一步到底偏离了多少。
这就好比你在健身房练深蹲,如果完全没有任何人盯着你的姿势,你可能为了多举几次而越练越走形,最后伤到膝盖。但如果有个教练在旁边,每次你姿势偏了一点,他就轻轻把你推回正确姿势,你既能继续加重量进步,又不会彻底跑偏。EMA这个旧模型锚点,扮演的就是这个教练的角色,它不负责告诉你该往哪使劲(那是奖励信号的事),它只负责在你偏得太远的时候把你拉回来。
问题是,这个"教练"的松紧度得靠人工调。调太紧了,模型几乎不敢动,学得贼慢;调太松了,恢复力不够,照样崩。论文里提到,DiffusionNFT默认的EMA调度公式在OCR这种任务上就不好使,必须把参数改到接近0.999的高保留比例才行,而这个经验没法直接迁移到别的任务或别的模型上,换一个基座模型(比如从SD3.5换成FLUX)直接用原来调好的参数,训练又开始剧烈波动甚至崩溃。
两个洞察总结下来就是:
一致性力这个隐患,联合训练只能部分压制,没法连根拔起;恢复力才是稳定训练的关键,但靠EMA来提供恢复力,意味着每换一个任务都要重新摸索参数,这事没法规模化。
那怎么办?论文给出的答案就是DiffusionART。
先聚合,再指路
DiffusionART的核心想法其实挺朴素的:既然一致性力是因为训练目标里混入了"理想前向速度"这个不靠谱的中间量,那干脆别算这个中间量了,直接从终点结果里提炼出一个明确的改进方向,然后把这个方向直接套用到生成过程的每一步上。
具体怎么做呢?
对每一个提示词(比如"一只在沙漠里的雪豹"),模型会生成一组样本(比如8张图或8段视频),每个样本都有一个奖励分数。论文的做法是,把这一组样本的奖励分数和样本本身做一个协方差计算,协方差的方向就代表了"往哪个方向调整能让奖励变高"。
协方差*:统计学概念,这里指的是奖励分数高低和生成内容差异之间的关联方向,分数越高的样本和分数越低的样本之间的差值,经过加权平均后,就指向了"提升分数"的方向。
算出这个方向之后,再做一次归一化处理,让这个方向的"力度"在不同任务、不同奖励模型之间保持一致,不需要人工再去调一个力度系数。这个归一化之后的方向,论文管它叫G(c),c代表某个具体的提示词。
接下来最关键的一步是,这个G(c)方向会被直接加到生成过程中每一个状态的目标速度上,而不是像DiffusionNFT那样先构造一个"理想前向速度"再倒推。因为跳过了这个中间步骤,那个会引发一致性力的根源,从设计上就不存在了。
这个思路换个场景理解会更清楚。假设你是一个篮球教练,想让全队投篮命中率提高。老办法(NFT式)是,先假设每个球员都该学习"教科书式标准投篮动作",然后根据每个人投篮命中还是不中,把他们往这个标准动作上拉或者推,但问题是"标准动作"这个假设的参照系本身就和每个球员实际的出手习惯有偏差,拉和推两股力量没法完全抵消那个偏差。新办法(DiffusionART式)则是,直接统计这一组球员里,投中的人普遍是怎么出手的、没投中的人普遍是怎么出手的,算出两者之间真实存在的差异方向,然后告诉每个球员"往这个差异方向调整",不需要假设一个脱离实际的标准动作作为中转站。如果省略这一步直接套用标准动作,结果就是论文实验里看到的那种:训练要么崩溃,要么需要反复调参才能勉强稳住。
光有方向还不够,还得有刹车
但只给方向不够。论文的消融实验显示,如果只做"一次更新"(光套用G(c)这个方向,不加别的机制),训练一开始冲得很快,但过一阵子会逐渐变差。
为什么会这样?论文在附录里给出了解释:这个G(c)是按整个提示词、整组样本算出来的一个"共享方向",但具体到每一个生成状态(比如去噪过程中的某一步),这个共享方向未必和这一步真正该走的方向完全吻合。如果没有任何校正,不同状态上的偏差会越积越多,最终拖累整体表现。
所以DiffusionART加了第二道工序:把一批训练样本切成两半,分别做两次更新,第二次更新时引入一个"恢复力",这个恢复力的大小跟模型在第一次更新后偏离起点有多远成正比,偏得越远,往回拉得越狠;偏得不远,就让奖励方向继续主导。这跟前面提到的EMA锚点原理相通,但不需要像EMA那样设定一个全局统一还得跨任务调整的衰减系数,恢复力是根据每个状态自身的实际偏移动态算出来的。
打个比方,这就像开车时的自适应巡航系统。普通定速巡航(类似EMA)需要你提前设好一个固定速度,不管路况怎么变,它都按这个速度死守,遇到要加速超车的场景就显得笨拙,遇到该减速的场景又可能反应不及。自适应巡航则是实时感知和前车的距离,距离远就加速,距离近就减速,不需要你提前手动设定一个"万能速度"去适配所有路况。DiffusionART的第二次更新就是这种自适应逻辑,恢复力的强弱是跟着实际偏移量走的,不需要为每个新任务重新标定一个衰减参数。
论文还加了第三道保险,叫信任区域掩码。
这是借鉴了强化学习里经典的PPO裁剪思想。
PPO裁剪*:一种防止模型单次更新步子迈得太大的技术,常用在策略梯度类强化学习方法里,通过限制新旧策略之间的差异幅度来避免训练剧烈震荡。
但扩散模型的生成过程是确定性的常微分方程(ODE)求解,没法直接套用传统强化学习里算概率比值的那一套。研究者借用了Flow-GRPO提出的"ODE转SDE"的数学技巧,构造出一个近似的KL散度指标,用来衡量当前模型和更新前模型在某个状态上的"漂移"有多大。如果漂移超过阈值,并且这次更新是在往"错误方向"(远离目标)偏,就把这一步的更新力度屏蔽掉,只保留那些往正确方向纠正的更新。
三道工序叠加起来,构成了完整的DiffusionART:先聚合算方向、再做两次更新引入自适应恢复力、最后用信任区域掩码兜底防止单次更新步子太大。整个流程不需要可微分的奖励模型,用更少的样本就能训练,还天然支持"成对比较"式的反馈(比如A和B哪张图更好,而不需要给出具体分数),这个变体论文里叫DiffusionART-Pairwise。
数字说话:到底快了多少、稳了多少
光讲原理不够,数据得摆出来。
论文在图像生成(SD3.5-M、FLUX.1-dev)和视频生成(HunyuanVideo-13B、Wan2.1-I2V-14B)上都做了系统对比。
在图像生成任务上,SD3.5-M模型配合GenEval、OCR、PickScore这几类打分器单独训练,DiffusionART在没有针对任务单独调EMA参数的情况下,就避开了DiffusionNFT(纯在线版本)那种剧烈崩溃,训练效率跟经过精心调参的DiffusionNFT(EMA版本)基本持平,比反向过程方法Flow-GRPO快出一大截,分别用少了10.0倍、5.2倍、9.6倍的训练步数就达到了Flow-GRPO训练500步的水平。
换到更大的FLUX.1-dev(120亿参数)模型上,论文直接把SD3.5-M上调好的DiffusionNFT参数原样搬过来,结果DiffusionNFT出现了明显的训练奖励震荡,而DiffusionART依然学得又快又稳,这恰好印证了前面的论断:DiffusionNFT的稳定性严重依赖针对具体任务的参数调整,换个场景就容易失灵。
视频生成这块的数字更夸张。
在HunyuanVideo-13B上,设定视觉质量(VQ)和动作质量(MQ)权重各占一半,DiffusionART达到DiffusionNFT和Flow-GRPO-Fast后期训练水平所需要的GPU小时数,分别只要对方的1/12.02和1/11.72,同时训练奖励还分别高出28.8%和53.0%。
论文里还做了个很实在的实验,用一个经过"蒸馏"、生成速度更快的视频模型Wan2.1-I2V-14B做图生视频任务,DiffusionART把动作质量奖励冲到6分,只用了45.8个GPU小时,而Flow-GRPO-Fast需要220.3个GPU小时,差了4.8倍。更值得一提的是,DiffusionNFT在这个任务上很早就陷入了停滞,几乎不再进步,研究团队分析认为,这正是那个没被彻底清除的一致性力在作怪,梯度被稀释了。
论文还测试了用"成对比较"代替具体分数来训练的效果,结果显示每组只用2个样本(1对比较)的训练效果,跟每组用8个样本相差无几,但GPU消耗直接降到原来的三分之一左右。这意味着在实际应用中,不需要为了拿到稳定的训练信号而生成一大堆样本,一次简单的"A比B好"的判断就够用了。
写在后面
读完这篇论文,最让我意外的不是DiffusionART这个方法本身,而是论文把DiffusionNFT里那个"EMA到底在干嘛"的问题拆得这么干净。之前大家默认EMA有用是因为它提供了"离线数据"的稳定性,这几乎是强化学习圈子里的一个常识性直觉,结果论文用一个很简单的对照实验就把这个直觉推翻了:真正起作用的不是数据新鲜不新鲜,而是损失函数里那个默默无闻的锚点在提供恢复力。这提醒我一件事,很多时候我们觉得"理所当然"的技巧为什么管用,其实自己也说不清楚,直到有人愿意花功夫把它拆开看。
还有一个细节值得单独说一下:论文里提到restoration(恢复力)这个机制,平均下来output-force(输出层面的力)比guidance(引导力)小9.4倍,但到了参数梯度层面,恢复力的梯度范数反而比引导力大了4.9倍。这说明不同样本的引导信号在聚合时会互相抵消掉一大部分,但恢复力因为是针对每个状态单独算的,不会被抵消,最后在参数更新里反而占了主导。这个发现挺反直觉的,论文作者自己也说这块留给未来做更细的分析,没有强行给出一个漂亮的解释,这种坦诚挺难得。
DiffusionART没有解决所有问题。论文里提到自己是针对rectified flow(线性插值的扩散模型变体)做的分析,更一般的扩散模型架构下结论是否完全成立,没有展开讨论。信任区域掩码里那个阈值是固定死的10的负5次方,虽然论文说这个值没有针对任务调过,但它到底是不是在所有场景下都是最优的,也不好说。
Q&A
Q1:DiffusionART解决了扩散模型强化学习训练中的什么核心问题?
A:它解决了两大矛盾:反向过程方法(如Flow-GRPO)训练慢、信用分配不准,前向过程方法(如DiffusionNFT)训练快但不稳定、需要针对每个任务反复调EMA参数。DiffusionART通过聚合奖励方向加自适应恢复力,做到了既快又稳,不需要per-task调参。
Q2:DiffusionART为什么不需要像DiffusionNFT那样依赖EMA调参?
A:论文发现EMA真正起作用的是损失函数里保留的旧模型锚点提供的恢复力,而不是离线数据本身。DiffusionART直接设计了一个和每个状态实际偏移量成正比的自适应恢复力机制,取代了需要人工调松紧的EMA衰减系数。
Q3:DiffusionART在视频生成任务上的提速效果具体有多大?
A:在HunyuanVideo-13B上,DiffusionART达到DiffusionNFT和Flow-GRPO-Fast后期训练水平所需的GPU小时数,分别只要对方的1/12.02和1/11.72,同时训练奖励还分别高出28.8%和53.0%。







