AI客服学会了自己改进自己,结果却把自己学坏了
你有没有想过这样一个场景:一个AI助手每天都在帮你处理各种任务,订餐、查资料、操作软件。每次任务结束后,它会不会越做越聪明?直觉上答案应该是"会"。毕竟人就是这样成长的,做过的事越多,经验越丰富。但研究人员真的让一个大语言模型(LLM)在执行任务的过程中不断用自己的经验更新自己的"大脑"时,发生了一件让人意...
你有没有想过这样一个场景:一个AI助手每天都在帮你处理各种任务,订餐、查资料、操作软件。每次任务结束后,它会不会越做越聪明?
直觉上答案应该是"会"。毕竟人就是这样成长的,做过的事越多,经验越丰富。但研究人员真的让一个大语言模型(LLM)在执行任务的过程中不断用自己的经验更新自己的"大脑"时,发生了一件让人意外的事:
模型越学越笨了。
这篇来自新南威尔士大学的论文,就是围绕这件诡异的事展开的。他们给这个现象起了个名字,叫做在线智能体测试时训练(Online Agentic Test-Time Training,简称OaTTT),并提出了一种叫ASCENT的方法来解决这个问题。
这件事到底有多反常,我们得先搞清楚问题出在哪。
一个AI智能体要解决的任务有多难
先说清楚什么是智能体。
LLM智能体*:以大语言模型为核心决策大脑,通过不断观察环境、生成推理和动作、再接收环境反馈的方式,一步步完成复杂任务的程序。
举个例子,让智能体去完成"把一个冷鸡蛋放进微波炉"这个任务,它得先想办法找到鸡蛋,拿起来,想办法把它变冷,然后放进微波炉。这中间可能要经历二三十个来回:观察房间里有什么,决定下一步动作,看环境反馈,再决定下一步。整个过程像一盘没有存档点的游戏,只有在最后一步才知道自己是赢了还是输了。
这种"只在最后给一个结果"的设定,专业说法叫稀疏奖励,也就是整个过程中环境只告诉你任务最后成功了还是失败了,中间每一步做得对不对,没人告诉你。
这就带来了一个巨大的麻烦。如果一个智能体部署在现实世界里,每天面对一连串类似的任务,它理应能从早上做的任务里吸取经验,帮助它在下午做得更好。但怎么吸取经验,是个技术难题。
现有的做法大致分两条路。第一条路是不碰模型本身,只往它的"提示词"里加东西,比如把之前任务的反思、技巧、教训写成文字存起来,下次遇到类似任务就翻出来看看。这叫做情境学习式的适应,模型权重完全不变,变的只是喂给它的文字。第二条路更激进,直接去调整模型的参数权重,让模型真正"学会"这些经验,而不是每次都要翻小本子。
论文作者关心的是第二条路,而且是一种特别苛刻的版本:模型只能看到任务流一次,每个任务只能尝试一次,拿到的唯一反馈就是这次尝试到底成没成功,然后立刻把这次经验变成权重更新,带着走向下一个任务。没有重来的机会,没有离线训练阶段,一切都发生在部署的现场。
这就好比一个新员工,第一天上岗就要边干活边总结经验,而且每件事只能做一次,做完立刻就要判断这次经验该不该变成以后的工作习惯,还不能回头重做。这个设定比传统的强化学习训练严格得多,因为强化学习通常可以对同一个问题尝试很多次,比较哪种做法更好,而这里只有一次机会。
直接模仿自己的经验,为什么会翻车
研究者首先试了最直白的办法:既然任务完成了,那就让模型直接模仿自己刚刚生成的那些文字,把这次成功的操作变成训练目标,强化这些词出现的概率。
这个思路听起来很合理,有点像"你这次做对了,那就把这次的动作刻进脑子里"。作者设计了五种这样的直接训练方法,包括直接模仿所有生成的文本、只模仿验证通过的轨迹(这叫拒绝采样微调,Rejection sampling Fine-Tuning,简称RFT),以及用策略梯度的方式对成功和失败的尝试分别做加强或削弱。
结果呢?论文里的图表显示了一个相当触目惊心的过程。随着任务一个一个往后推进,这些方法训练出来的模型,开始生成越来越极端、越来越确定的回答,第一个输出词的概率分布几乎坍缩成了一个点。模型跟最初的版本之间的差异越拉越大,而且最关键的是,模型输出的有效动作比例越来越低,也就是说模型开始越来越频繁地生成一些环境根本执行不了的指令,比如调用不存在的命令。到了任务流的后半段,这些方法训练出来的智能体,成功率反而比完全不训练的原始模型还低。
这是为什么?
这里有个关键的认知误区需要打破。每一次更新用的,永远只是模型自己这一次随机生成出来的那段文字。如果这次生成的文字里混杂了一些啰嗦的、绕路的、甚至无意义的推理过程,而任务恰好最后成功了,模型就会把这些啰嗦和绕路的部分也一起强化。这就好比一个学生偶然用了一个很笨拙的方法蒙对了一道数学题,老师却因为答案对了,就把那个笨拙的解题步骤当成标准答案让他反复练习。做得越多,笨拙的习惯就刻得越深,而且下一次的尝试又是从这个已经被扭曲的模型生成出来的,偏差会一轮一轮往下传递,越滚越大。
一轮一轮的任务下来,这种偏差不断累积,模型逐渐偏离了它原本还算靠谱的初始状态,变成了一个越来越极端、越来越不稳定的怪物。
这揣摩出了整篇论文最核心的矛盾:你想让模型从自己唯一的一次尝试里学东西,但这一次尝试里混杂了太多噪声和偏差,直接拿来做训练目标,就是在往模型的大脑里灌噪音。
ASCENT的解法:让一个冷静的旁观者来打分
既然直接模仿自己的输出会出问题,作者想出了一个巧妙的绕路方案,这就是ASCENT(全称是Agentic Self-distillation for Cross-task EvolutioN at Test-time,直译过来大概是"测试时跨任务进化的智能体自蒸馏")。
它的核心思路是这样的:不要直接告诉模型"把这段话说出来的概率调高",而是找一个冷静的、不会被当前任务情绪影响的参照物,让这个参照物看着这次成功的完整经历,重新生成一份"如果我早知道结果会怎样"的预测,然后让当前模型去学这份预测,而不是去学自己原始生成的那段文字本身。
这个参照物是谁?就是模型最初、还没被任何任务更新过的那个版本,论文里管它叫教师模型,而当前正在不断被更新的、带着任务经验在变化的模型叫学生模型。
教师模型是固定不变的,永远是最开始那个干净的版本。这很关键,因为如果教师模型也跟着学生模型一起变化,那就会形成一个自己验证自己的循环:学生做错了一点,教师也跟着偏了一点,教师给出的"标准答案"也跟着偏了一点,学生学了这个偏了的答案又偏了一点,这样滚雪球式的偏差积累会比直接模仿还糟糕。论文专门做了实验验证这一点,让教师模型以不同速度跟随学生更新,发现教师跟得越紧、学生的成功率掉得越快,跟得最紧的那组设置甚至让成功率从接近50%一路掉到不到3%。固定住教师,这个雪球滚不起来了。
这就好比考试阅卷。如果让学生自己批改自己的卷子,他很容易把蒙对的瞎写也打上满分。但如果请一位从不参与这次考试、脑子里没有被这次考试任何细节污染的老教授来批改,这位教授看到了完整的标准答案和解题过程后给出的评语,才更值得信赖。如果老教授本身也跟着这个学生的水平一起浮动,那评卷标准也就失去了意义。
那这个固定的教师模型,具体是怎么给学生打分的呢?这里有个精妙的设计,叫做**特权信息(privileged information)。
特权信息*:指的是只提供给教师模型、不提供给学生模型的额外信息。在ASCENT里,这份特权信息就是这次任务成功的完整经过,包括目标达成的声明和具体走过的每一步推理和动作。
学生模型在执行任务的当下,是看不到后面会发生什么的,它只能一步一步往前走,走到哪算哪。而教师模型拿到的,是整个任务已经成功完成之后的"上帝视角",也就是论文里说的**事后认知(hindsight)**。教师模型被告知:"这个任务已经被下面这套动作序列成功解决了,请你在看到这个结果之后,重新想想,如果站在学生当时那个位置,你会预测接下来该说什么。"
这个事后认知会带来一个很直观的好处:教师知道结局,所以
有了教师模型的判断,接下来就是怎么把教师的判断灌输给学生。这里ASCENT用的技术叫自蒸馏(self-distillation),具体的损失函数用的是正向KL散度(forward KL divergence)。
KL散度*:一种衡量两个概率分布之间差异程度的数学工具,这里用来衡量学生模型预测的下一个词的概率分布,和教师模型预测的下一个词的概率分布之间差了多少。
关键点在于,这个训练目标不是让学生死记硬背教师说出的那一个词,而是让学生去匹配教师给出的整条概率分布,也就是教师对所有可能的下一个词给出的完整打分表,不只是最高分那一个词,而是每个候选词各自获得多少概率质量。这跟前面提到的直接模仿方法有本质区别。直接模仿只会把某一个具体的词的概率往上拉,其余所有词的概率被等比例地往下压,这样会让整个分布越来越尖锐,越来越极端。而匹配一整条分布,则是让学生的所有词的概率都朝着教师给出的方向靠拢,哪个词教师认为该高就高,该低就低,不会无差别地让分布坍缩。
论文里专门画了图来验证这件事。在任务流上跑下来,ASCENT训练出的模型始终保持着比较健康的输出多样性,跟最初的模型差距也控制得比较稳定,而且生成有效动作的比例一直维持在比较高的水平,不像直接模仿那几种方法一路崩溃。
把走歪的那几步从"好榜样"里剔除
即便一次任务最终算成功了,这一路走过来也未必每一步都干净漂亮。
智能体在执行任务的过程中,经常会生成一些不被环境认可的动作,比如调用一个根本不存在的命令,或者写的代码执行时报错了。这种情况论文里叫做无效动作(invalid action)。即便最终任务还是达成了,这些无效动作的那几个回合其实是绕了弯路,甚至可以说是走错了但最后歪打正着成功了。
ASCENT在构造那份"事后认知"特权信息的时候,专门加了一道筛选,论文里叫做动作有效性过滤器。
动作有效性过滤器*:通过检查环境对每一步动作的反馈,判断这一步到底是被环境真正执行了还是被环境拒绝了(比如报错或返回"什么都没发生"),从而把那些被环境拒绝的回合从"喂给教师模型的成功经验"里剔除出去。
注意,这个过滤器只记录"这一步动作有没有被执行",它不判断这一步是不是真的对完成任务有帮助,更不会给任何回合单独打分或分配功劳,它纯粹是一道客观的筛子。被筛掉的,只是那些连执行都没成功的无效步骤,剩下的有效步骤连同它们的推理过程,才会被拿去构造那份讲给教师听的"成功故事"。
但这里有个细节特别值得留意:即便某个回合的内容被从特权信息里剔除了,学生模型依然会在这个位置接受训练,只是这个位置上教师给出的参考答案变了。因为教师没看到这个无效回合的内容,它会更倾向于预测一个更合理、更可能被环境接受的替代动作。这相当于告诉学生:"你刚才那一步走岔了,如果你当时换一个合理的走法,大概率是朝着这个方向走的。"
这就像教练在复盘一场比赛录像的时候,把那几次明显犯规、球根本没打进场内的回合从"精彩集锦"里删掉,只留下真正有效的回合给球员反复看。但球员在训练那几个犯规的瞬间时,教练依然会在场站在原地,告诉他"你刚才这一步,正常应该怎么出手"。如果不这么处理,球员可能会把犯规动作也当成得分套路反复练习。实验数据也印证了这一点,这个过滤器开启之后,在较小的4B模型上,成功率能从60.0%提升到69.5%,同时平均回合数还减少了,说明执行路径也变得更干净了。
四个基准测试,看看ASCENT到底行不行
说了这么多设计理念,终究还是要用数字说话。
研究团队在三个长链条任务环境里做了测试:ALFWorld(一个文字版的家务模拟环境,要求智能体在房间里找东西、操作家电完成各种家务任务)、WebShop(一个模拟网购环境,要求智能体搜索并购买符合描述的商品)、以及AppWorld(一个要求智能体写代码操作各种模拟软件应用的环境)。测试模型用了Qwen3.5的4B和9B两个版本。
在ALFWorld上,9B模型的基础版本(也就是完全没训练过的原始模型)成功率只有55.0%,而ASCENT训练出来的版本把这个数字拉到了77.4%,提升了超过22个百分点,同时平均回合数从32.6降到了21.0,也就是说任务不仅做对的次数更多了,而且每次做对还更利索了。
更值得玩味的是基础模型在一些困难任务类型上的表现。比如"把物体加热"(Heat)和"把物体冷却"(Cool)这两类任务,4B版本的基础模型成功率分别只有6.2%和8.0%,几乎可以说是完全不会做。而经过ASCENT的持续进化,这两个数字分别提升到了20.8%和54.7%。这说明智能体在部署过程中真的从自己验证过的成功经历里,学到了一些原本完全不具备的能力,而且这个过程没有借助任何更强的外部老师,纯粹是自己的经验喂给了自己最初版本的"回声"。
在WebShop上,9B模型从基础的17.2%精确成功率,被ASCENT提升到41.5%,涨幅超过了一倍。
跟谁比才算有意义呢?论文拿ASCENT去对比了一大串其他方法,包括MemP、ReasoningBank、ACE、A-Mem、MemRL、Dynamic Cheatsheet这些情境学习式的记忆/技能积累方法(也就是前面提到的只改提示词不改模型权重的那条路),还对比了一个叫TT-OPSD的方法,这是作者自己把另一种已有的自蒸馏技术OPSD搬到这个在线测试时训练场景里做的改造版本。TT-OPSD跟ASCENT用的是类似的自蒸馏思路,但它只让教师模型看到当前这一步的局部反馈,看不到整条轨迹后续怎么走到成功的。
对比结果显示,ASCENT在几乎所有场景下都超过了这些对比方法,而且明显超过TT-OPSD,这恰恰说明了让教师看到完整的事后认知(而不只是局部的一步反馈)是真正带来价值的那部分设计,不是可有可无的细节。
换个场景测试,经验还管用吗
一个更尖锐的问题是:这些在之前任务流里学到的经验,换到一个全新的场景里还有用吗?
研究者专门设计了这样的实验:ALFWorld有一个"已见过的"场景分支和一个"未见过的"场景分支,后者是完全不同的房间布局和物品摆放。让模型先在已见过的场景流里完整走一遍、积累经验,然后直接把这份经过更新的权重原样搬到未见过的场景上去测试,这叫冻结迁移。另外还测试了一种"继续进化"模式,也就是搬到新场景之后,不停止学习,继续按OaTTT的方式边做边更新。
在9B模型上,冻结迁移就已经达到了88.8%的成功率,远超基础模型的49.3%,这说明之前积累的经验确实能跨场景发挥作用,不只是死记硬背了具体房间的布局。继续进化模式则把这个数字进一步推到了90.0%,说明这份经验还能在新场景里继续增长。
这个结果有点出乎意料。按理说换了一整套完全陌生的房间布局和物品位置,之前学到的东西应该用不上多少才对。但细想一下也能理解,因为ASCENT学到的不是"鸡蛋在哪个具体位置"这种死知识,而是"遇到需要冷却的任务,大致应该先找到目标物体,再找冷却设备,再放进去"这种可以迁移的套路。这就像一个人换了一座新城市生活,虽然具体的街道完全不认识,但"遇到不懂的事先用导航软件查、查不到就问路人"这种处理陌生环境的通用能力是带得走的。
一个具体的翻车案例,看懂差距在哪
论文里给出了一个特别生动的案例,值得细细说一说。
任务依然是"把一个冷鸡蛋放进微波炉"。基础模型没有任何跨任务记忆,在搜寻鸡蛋的过程中反复试探,拿起一个碗以为里面有鸡蛋,结果发现是空的,最后耗尽了50个回合的预算,任务失败。
两种情境学习式的适应方法也都失败了,但失败的原因很值得琢磨。第一种情况是检索出了错误或矛盾的记忆:系统检索出来的经验居然建议"避免把食物直接放进微波炉,比如生鸡蛋可能会爆炸,应该选择替代方法",模型被这条建议误导,干脆跳过了冷却这一步,直接把生鸡蛋塞进微波炉,结果任务自然没有完成。第二种情况更让人无奈:模型检索到了40条正确的、相关的操作规则,明确写着"遇到冷却类目标,应该走到冰箱或冷柜,拿起物体放进去再关门",但模型自己没有遵守这条已经写得明明白白的规则,它把鸡蛋拿出来又放回去,打开了微波炉却始终没有真的把鸡蛋放进去,最后还是耗尽回合,任务失败。
而ASCENT训练出来的智能体,在没有检索任何文字记忆的情况下,仅凭之前两个类似任务(冷却一个番茄放进
这个对比特别说明问题。情境学习式的方法,命门在于两步都要走对:第一步得先检索出真正相关的经验,第二步模型自己还得真正听话去执行这份经验。检索这一步本身就不保险,论文的统计数据显示,就算之前真的存在一次同类型的成功经验,检索系统也只有大约三分之一到四分之三的概率能把这条经验真正捞出来(具体取决于看前几条检索结果),而且就算捞出来了,模型也不一定真的照着做。而ASCENT把经验直接写进了权重,不存在"检索失败"这一步,执行的时候这份经验已经融入了模型的决策本能里,不需要模型先读一段文字再决定要不要照做。
这就好比两种学习方式的差别。一种是考试时允许翻小抄,但小抄本子又厚又乱,关键的那一页经常翻不到,翻到了也可能因为紧张没看明白就答错了。另一种则是提前把知识点真正理解透了,刻进了脑子里,考试的时候这些知识会自然地在需要的时候冒出来,不需要现场去翻找。
还剩下几个没说透的问题
论文也诚实地讨论了这个方法的边界。
首先,ASCENT需要完整访问模型的下一个词概率分布,这意味着它只能用在开源权重模型上,闭源的商业模型API通常不会给你这种级别的访问权限,所以没法直接套用。
其次,它只用了任务级别的成功失败这种粗粒度信号,每个回合都被平等对待,没有做更细粒度的"这一步到底功劳多大"的判断。未来如果能做出更精细的回合级别信用分配,可能还有进一步提升的空间。
还有一个有意思的边界情况是关于教师和学生之间是不是真的完全独立。教师看到的特权信息里,实际上包含了学生自己生成的那段文字内容,这意味着教师的"预测"某种程度上可能是在重新组织学生已经说过的话,而不是完全独立地凭空给出判断。这个独立性到底打了多少折扣,论文里也承认这是一个尚待厘清的问题。
论文里还做了一个初步但很有启发的小实验,把ASCENT跟情境学习方法(比如ACE和MemP)结合起来一起用,而不是二选一。结果发现在9B这种相对更强的模型上,两者结合效果比单用ASCENT更好,说明检索到的文字记忆和权重里积累的经验可以互补,一个负责提供具体的临场参考,一个负责提供内化的行为本能。但在4B这种相对较弱的模型上,单用ASCENT反而效果最好,加入额外检索的记忆内容反而可能让模型分心,这暗示着模型能力强弱不同,适合的学习组合方式也不一样。
Q&A
Q1:ASCENT是什么?
A:ASCENT是新南威尔士大学提出的一种让AI智能体在部署过程中自我进化的方法,它让智能体用一个固定不变的自己(初始版本模型)作为冷静的"老师",根据每次成功任务的完整经过给出参考答案,再把这份参考答案蒸馏进模型的持续更新权重里,从而避免直接模仿自己生成文本带来的崩溃问题。
Q2:为什么智能体直接模仿自己做对的任务反而会变笨?
A:因为每次更新只基于一次尝试生成的文字,其中混杂着绕路、啰嗦、甚至无意义的步骤。如果任务最后恰好成功了,这些不理想的部分也会被当作正确答案强化,导致模型输出越来越极端、生成的动作越来越无效,一轮一轮累积后成功率反而低于完全不训练的原始模型。
Q3:ASCENT在实际测试中效果怎么样?
A:在ALFWorld家务模拟任务上,9B模型的成功率从基础模型的55.0%提升到77.4%,平均完成一个任务所需的操作步数也明显减少;在WebShop购物任务上,精确成功率从17.2%提升到41.5%,并且这些经验还能迁移到完全没见过的新场景中继续发挥作用。