你有没有想过这样一个场景:一个人每天写日记,然后又把自己的日记当作范文反复练习写作。时间久了,他的文笔会越来越好,还是会越写越怪?
这听起来像个脑筋急转弯,但它恰恰是2026年一篇研究论文想要回答的核心问题。研究者给这个问题起了个挺形象的名字,叫自我生成反馈。他们发现,当一个AI模型一边生成文本一边拿这些文本来训练自己时,情况会变得非常糟糕,糟糕到让人意外的程度。
**问题出在哪:当AI开始吃自己的尾巴**
先说清楚一个背景。现在很多大语言模型在处理超长文本的时候,会用一种叫做测试时训练的技术。
测试时训练(简称TTT):一种让AI模型在实际使用过程中,根据当前正在读的内容实时调整自己参数的技术,目的是让信息能够留在模型的"记忆"里,而不是单纯依赖注意力窗口去记住前面的文字。
打个比方,普通的AI模型就像一个只能靠短期记忆工作的人,读到后面就忘了前面说的话。而测试时训练相当于给了这个人一个习惯:每读完一段话,就往自己的笔记本上记一笔,之后翻笔记本就能想起来之前读过什么。这个思路听起来很聪明,对处理长文档、长对话特别有用。
但这篇论文的研究者发现了一个此前被忽视的危险场景:如果这个AI不仅要读别人写的文字,还要读自己生成的文字,并且把从自己生成文字里学到的东西也记进笔记本,会发生什么?
答案是:会出大问题。
研究者设计了一个12.8万token(大约相当于十几万个单词或汉字片段的长度单位)的超长文本流实验。流程是这样的:先给模型8000个token的真实人类文字作为开头,然后让模型自己生成接下去的内容,每生成一段(1024个token),模型就从这段自己写的内容里学习一次,更新一次参数。这个过程重复105次,中间穿插着让模型去预测一些独立的、人类写的新文本,看看它的预测能力有没有变化。
实验设置了两组对照。一组叫闭环,模型每次生成文字之后都会保留从这段文字学到的更新;另一组叫关闭写入,模型同样会读到自己生成的文字,但每次学完之后就把这次更新给扔掉,不留痕迹。两组都要去预测同样的独立真实文本。
结果非常清楚。在三种不同规模的模型上(研究者分别标注为1.25亿参数、7.6亿参数、30亿参数),保留自我生成文字更新的那一组,预测真实文本的表现持续变差,而且差距随着模型处理的文本越长变得越大。在1.25亿参数的模型上,这个差距达到了3.01纳特(衡量预测误差的单位,数值越大代表模型越不准),在7.6亿参数模型上差距达到6.00纳特。换算成更直观的感受,这相当于模型在长时间自我学习之后,对真实世界文字的理解能力严重退化了。
更让人意外的是,研究者还换了一个完全不同的技术路径来验证这件事,他们直接用最常见的Adam优化器(深度学习里最常用的参数更新算法之一)去更新Qwen3-4B这个现成大模型的权重,不添加任何专门的测试时训练模块。结果同样的现象出现了:只要模型在自我生成的闭环里持续写入,预测真实文本的能力就会变差,学习率调到万分之一的时候,这个损害达到1.231纳特。而同样的更新方式,如果拿来学习真实文字,反而能让模型预测得更准,降低了0.168纳特的误差。
这说明一件很关键的事:问题不是出在某个具体的算法设计上,而是出在"自己生成、自己学习"这个闭环结构本身。
**拆解闭环:到底是谁在作怪**
发现问题之后,研究者没有满足于"闭环有害"这个粗糙结论,而是想搞清楚闭环里到底是哪个环节在制造伤害。他们设计了三组层层递进的对照实验,像剥洋葱一样把这个闭环拆开来看。
第一步,叫做固定生成。做法是让一个冻结不变的初始模型(记作W0)去生成所有的训练文本片段,而另一个正在学习、正在更新参数的模型只负责从这些片段里学习,不参与生成。换句话说,学习者看到的还是AI生成的文字,但这些文字的内容不会因为学习者自己的更新而改变。
结果让人印象深刻:这样一改,1.25亿参数模型上的损害减少了98.3%,7.6亿参数模型上减少了98.8%。几乎所有的伤害都消失了。
这就好比一个人每天在镜子前练习演讲,如果镜子里的影像是提前录好的、固定不变的,那他可以反复纠正自己,表现会越来越好。但如果镜子会实时反映他刚刚犯的错误,并且这个错误又变成了他下一次练习要模仿的范本,那他只会在错误的路上越走越远。固定生成相当于把这面"会实时反映错误的镜子"换成了"提前录好的标准范本",切断了错误自我放大的链条。如果不做这一步替换,学习者看到的素材会随着自己能力的下降而同步变差,形成恶性循环;而把生成者固定住之后,学习者面对的始终是同一批内容,它能稳定地从中学到东西,不会被越来越糟的素材反噬。
这个实验结果也排除了一个可能的误解,就是"AI生成的文字本身就是劣质训练数据"。因为固定生成实验里,学习者依然在吃AI生成的文字,只是这些文字不会因为学习反过来变坏。既然伤害几乎消失了,说明问题根源不在"文字是不是AI写的",而在"学习者的更新有没有改变它未来要吃的食物"。
第二步,叫做记录回放。这一步要把"文字内容本身造成的伤害"和"学习更新造成的额外伤害"彻底分开。做法是:先让闭环生成一段已经退化的文字,把这段文字录下来,然后找一个全新的、没有参与过生成的接收模型,让它去处理这段录好的文字。一次只读不学,另一次读完还要更新参数,两次用的是完全相同的文字。
在1.25亿参数模型上,只读不学会让真实文本的预测误差增加1.606纳特,说明这段退化文字本身,光是出现在注意力窗口里,就已经有害了。而如果读完还要学,误差进一步增加到3.874纳特,也就是学习这段文字额外带来了2.268纳特的伤害。在30亿参数模型上做了类似的验证,学习带来的额外伤害是0.193纳特,区间稳定在0.104到0.327之间。
这个发现很重要,它说明伤害分成两层:一层是坏内容本身留在记忆里造成的干扰,另一层是把坏内容"刻进"参数里造成的更持久的损害。后者更难消除,因为前者只要文字离开注意力窗口就结束了,而后者会一直留在模型的权重里。
第三步,叫做单次更新配对实验。研究者从同一组参数、同一个注意力状态、同一段文字出发,做两个分支:一个分支保留这次更新,另一个分支扔掉这次更新。两个分支之后都去预测同一段新的真实文字。
结果显示,在闭环历史之后做的这种配对实验里,保留更新确实能让模型更好地预测它刚刚学的那段自己生成的文字,但同时会让它对下一段真实文字预测得更差。这个现象在三种历史背景下(闭环历史、关闭写入历史、固定生成历史)都出现了,只是程度不同。固定生成历史下,源文本拟合提升最大(0.1449纳特),但真实文本的伤害最小(0.0018纳特);闭环历史下,源文本拟合提升较小(0.0354纳特),真实文本伤害反而最大(0.0381纳特)。而且这个伤害会随着闭环历史的拉长而不断加剧,从最早期的0.006纳特涨到后期的0.113纳特。
这就像一个学生拼命背诵自己写的错误笔记,背得越熟,对标准答案的理解反而越偏。背诵这件事本身没有问题,问题是背的内容本身在走偏,而他越努力背,偏离就越严重。
研究者还找到了两个能提前预判"这次更新会不会有害"的信号。第一个是梯度余弦相似度,简单理解就是衡量"从自我生成文字学到的方向"和"预测真实文字需要的方向"之间夹角有多大。
梯度余弦相似度:描述两个优化方向之间的夹角关系的数值,数值越负代表两个方向越对立,也就是朝着这个方向调整参数会让另一个目标变得更差。
实验发现这个相似度和实际造成的伤害呈现稳定的负相关,相关系数在负0.5到负0.8之间,说明两个方向越对立,实际伤害越大。第二个信号是用梯度直接预测损失变化的近似值,这个值和实际伤害呈正相关,相关系数在0.6到0.8之间。两个信号方向一致地指向同一个结论:自我生成文字要求的更新方向,和预测真实文字需要的方向,正在产生冲突,冲突越剧烈,伤害越大。
**伤害不是均匀分布的,而是少数"坑"在作怪**
拆解到这一步,还有一个问题没解决:随着闭环运行时间变长,平均伤害在上升,但这是所有片段都在变坏,还是少数几个片段在拖后腿?
研究者对24个源文本序列、每个配上三个不同的接收模型、在七个不同的流位置上做了细致的测量。结果发现,在最早期的位置,所有72组配对的伤害值都在0.5纳特以下,没有一个例外。但到了流的末尾位置,72组里有12组的伤害超过了0.5纳特,而这12组全部来自同样的4个源序列(总共24个里的4个)。
更关键的是,一旦某个"源序列-接收模型"组合第一次突破0.5纳特这个门槛,它在之后的采样位置上会持续保持在高位。换句话说,不是流位置本身决定了伤害大小,而是某几条特定的生成轨迹一旦走歪了,就会一直歪下去,而且越往后歪得越厉害。
这个现象很像一群人在走迷宫,大部分人都能摸索着找到正确路线,但有极少数人在某个岔路口走错了方向,而且这个错误方向还会不断地给他们错误的"路标",让他们越走越偏,最后彻底迷失。整体平均下来看,迷宫里的平均迷失程度在上升,但这其实是极少数人的失败在拉高平均值,而不是所有人都在变糟。
这个发现对解决方案的设计影响很大。如果伤害是平均分布在所有写入操作上的,那么简单地把每次更新的幅度调小一点,或者给重复的内容降权,也许就够了。但既然伤害集中在少数几条轨迹上,这些温和的手段注定只能是治标不治本。
论文里确实测试了几种温和手段。给重复内容降权能把闭环的损害缩小到54%,只读真实上下文(不学习,只是把真实文字放进注意力窗口)能缩小到48%,每隔8个片段就把参数重置一次能消除94.2%的伤害。但重置这个办法有个明显的副作用,它同时也抹去了44.1%的有效学习收益。换句话说,这些办法都是在"少伤害"和"少学习"之间做权衡,没有一个能精准地只挡住那几条真正有害的轨迹,同时保留其他轨迹的学习价值。
**解决方案:让更新先"接受考试",通过才能生效**
既然问题是少数轨迹在作怪,而且这些轨迹单看"学没学到自己生成的内容"是看不出来的(因为它们对自身内容的拟合效果反而更好),那研究者就换了一个思路:不去看这次更新能不能让模型更好地记住自己刚写的东西,而是直接拿一段独立的、真实的文字去考它。
这个方法论文里叫作Settlement,可以理解为"结算"或"验证入账"的意思。
Settlement机制:在模型准备把一次参数更新正式写入权重之前,先用一段独立的、模型没有生成过的真实文字去测试一下,比较"更新前的状态"和"更新后的状态"谁预测这段真实文字的误差更小,只有更新后的状态表现更好或至少不差,才允许这次更新真正生效,否则就丢弃。
这个思路换成生活化场景来说,就像是公司招聘新员工,不能只看他自己写的求职信有多漂亮(那是"自我拟合"),而是要让他做一道独立的笔试题,看看他能不能真的解决实际问题。写得漂亮的求职信不代表真有本事,只有在没见过的考题上表现好,才能证明这个人靠得住。如果不设这道笔试关卡,公司招进来的可能全是简历包装高手,干起活来却状况百出,这正是闭环模型此前一直在发生的事情:它一直在用"自我感觉良好"的标准筛选更新,却从没拿独立证据去检验。
Settlement的效果相当明显。在1.25亿参数模型上,它只接受了936个候选更新里的22个,最终让闭环造成的3.18纳特伤害缩小到仅剩0.07纳特的残余差距,这个区间还包含零,说明在统计上基本看不出和"完全不写入"有什么差别。在7.6亿参数模型上,它接受了312个里的18个,最终的残余差距是负0.02纳特,相当于比完全不写入还略好一点点。
而且这个效果不是靠简单地把每次更新幅度缩小换来的。研究者专门做了对照,把更新幅度缩小到四分之一,或者只是穿插真实文字进注意力窗口而不学习,这两种温和手段单独使用时,仍然留下0.90纳特和1.04纳特的伤害;但只要配上Settlement验证机制,所有组合的最终伤害都被压到0.04纳特以内。这说明真正起作用的核心是"验证"这个步骤本身,而不是更新量变小了或上下文变好了这些附带效果。
研究者还测试了Settlement在真实文字流上的表现,确认它不是一个只会一味拒绝的保守策略。在一个全部由真实文字组成的流里,Settlement接受了113个候选更新里的89个,相比完全拒绝所有更新的策略,减少了0.0534纳特的误差;相比全部接受的策略,也仍然有0.0083纳特的优势。这说明它不是简单粗暴地关闭所有学习,而是真的能分辨出哪些更新值得保留。
另外一个容易想到的朴素方案是源头标记法,也就是直接根据这段文字是真实写的还是AI生成的来决定要不要学。
源头标记法:根据文本片段的来源标签(真实文字还是AI生成文字)来决定是否保留对应的参数更新,是真实文字就保留,是生成文字就丢弃。
在标签完全准确的情况下,这个方法确实更简单,表现也略好于Settlement(误差3.8072对3.8196)。但研究者故意制造了标签错误的情况,逐步提高错误率。结果源头标记法随着错误率上升迅速失效,错误率到100%时误差飙升到4.2544,因为它彻底搞反了该保留什么该丢弃什么。而Settlement几乎不受影响,一直稳定在3.82左右的区间,因为它根本不依赖标签去判断好坏,它判断的是"这个更新对真实世界的预测到底有没有帮助"这个更本质的问题。这就像一个只认学历证书的招聘官,一旦证书造假泛滥,招聘质量就全面崩盘;而一个坚持要求现场笔试的招聘官,无论简历上写了什么,照样能把真正有能力的人挑出来。
**跳出纯文本:在真实任务里也会发生同样的事**
实验室里关于文本预测的发现,如果只停留在"纳特"这种抽象指标上,说服力还是有限的。研究者接着把同样的问题搬到了两个需要AI实际完成任务的环境里。
第一个环境叫WebShop,是一个模拟网购场景的测试平台,AI要根据购物指令在模拟商城里搜索、点击、下单,完成任务才算成功。研究者让AI用LoRA(一种只调整模型里一小部分参数、成本更低的微调技术)持续学习自己在购物过程中生成的动作,并保留这些更新。结果闭环策略的任务完全成功率只有10.53%,而让生成环节保持冻结的固定生成策略,成功率提升到了18%。再用Settlement机制去筛选候选更新,只接受了180个候选批次里的10个,成功率达到18.53%,同样稳定超过闭环策略。
第二个环境叫ALFWorld,是一个模拟家庭日常任务的文字游戏,AI要完成诸如"把苹果放进冰箱"这类指令。这个实验里闭环策略的表现极不稳定,三个随机种子里有两个在134个未见过的新任务上完全没有成功过一次,成功率是0%。而用了Settlement机制的版本,未见任务的成功率稳定在88.1%到94%之间,只保留了19%到33%的更新批次,却避开了闭环策略那种灾难性的崩溃。
这两个实际任务的结果,把前面那些关于文本预测误差的抽象发现,变成了具体可感的后果:一个在不断自我学习中迷失方向的AI购物助手,可能真的会在你需要它完成任务的时候,因为之前学歪了而彻底失能。
写在后面
读完这篇论文,最让我意外的一点,其实是损害的分布方式。我原本以为既然是闭环自我学习,伤害应该是渐进的、均匀的,就像温水煮青蛙一样慢慢变糟。但实际数据显示,24条轨迹里真正造成大麻烦的只有4条,而且一旦某条轨迹开始走偏,后面会一路偏下去。这意味着闭环的风险不是"持续小额损耗",而更像是"少数几次意外脱轨,然后越滑越远"。这个发现本身对设计任何自我迭代系统都有参考价值,因为它提示我们监控的重点不该是平均水平,而是要盯住那些可能开始脱轨的个别轨迹。
另一个让我反复琢磨的细节是梯度余弦相似度那组数据。闭环历史下,两个真实文字的梯度之间夹角反而是正相关的(配合得挺好),但自我生成文字的梯度和真实文字梯度之间却呈现出明显的对立。这说明模型在闭环里学到的"技能",其实已经悄悄偏离了通用的语言理解能力,变成了一种只擅长拟合自己错误输出的特殊能力。这让我想到人类学习中的"自我强化偏见",一个人反复确认自己已有的错误观点,会在那个小圈子里越来越"自信",却离客观事实越来越远。AI的这个闭环问题,某种意义上和人类认知里的信息茧房,有着惊人相似的结构。
论文最后留下的问题是,Settlement机制依赖"有没有独立的真实文字可以拿来验证"这个前提。但在很多实际的智能体场景里,独立可信的验证信号可能很稀缺,甚至验证信号本身也可能被污染。如果某一天连验证用的"考题"也开始掺假,这套机制还能守住底线吗?这恐怕是下一个值得深挖的问题。
Q&A
Q1:测试时训练是什么?
A:测试时训练是一种让AI模型在实际使用过程中根据当前读到的内容实时调整参数的技术,目的是让信息留在模型权重里,不依赖注意力窗口记忆前文,常用于处理超长文本。
Q2:为什么AI学习自己生成的文字会出问题?
A:因为模型更新参数后,这个更新又决定了它接下来生成的内容,形成闭环。实验显示保留这类更新会让模型预测真实文本的误差明显上升,在不同规模模型上都观察到了同样的失败方向。
Q3:Settlement机制是怎么解决这个问题的?
A:Settlement在正式写入一次参数更新前,先用独立真实文字测试更新前后谁预测得更准,只有更新后不变差才允许生效,否则丢弃,实验显示这能把闭环造成的伤害几乎完全消除。







