打开网易新闻 查看精彩图片

你有没有想过一个问题:一个学生如果只靠自己出题给自己做,能考出好成绩吗?

这听起来有点荒唐,但这恰恰是当下大语言模型自我进化领域正在发生的事情。研究者们发现,让一个AI模型(我们叫它挑战者)出题,另一个AI模型(solver,我们叫它解题者)做题,两者轮流训练、互相进步,是一条挺有效的自我提升路子。这种玩法有个专业名字。

**自我博弈**:让挑战者和解题者两个模型反复对抗、交替训练的自我提升方法,挑战者负责出题,解题者负责答题,双方在多轮迭代中共同进步。

但问题来了。如果没人告诉挑战者该出什么样的题,事情会往哪个方向发展?答案是:会失控。

论文里给了一个特别直观的例子。在没有任何引导的自由探索模式下,训练到第一轮时,挑战者出的题目还挺正常,类似"求方程的所有实数解"这种。可是到了第五轮,题目变成了一个套了五天科学节、多个房间轮换、涉及复杂到场时间安排的巨型应用题,绕来绕去才问到两个变量的平方和。题目长度从几十个词膨胀到接近170个词,但解题者的数学能力曲线却在这个过程中停止了增长,甚至开始下滑。

这就是这篇论文要解决的核心矛盾:题目变复杂了,不代表AI变聪明了。表面上看起来越来越难的题目,实际上可能只是在堆砌文字长度和场景设定,并没有真正戳中解题者反复犯错的那个知识漏洞。

题目该往哪个方向进化,才算得上真正的引导?

难在哪里:现有方法要么"没方向",要么"靠外援"

现有的自我博弈方法大致分成两派。

第一派是无引导型,代表是R-Zero和Absolute Zero这类方法。它们靠解题者对题目的反应来调整难度,比如答对了就出难一点,答错了就出简单一点。这个思路的问题在于,它只知道"这题solver答得好不好",却不知道"solver为什么答错"。

想象一下你在健身房请了个不太懂行的私教。他只会看你举铁时脸红不红、气喘不喘,就据此判断今天该加重量还是减重量。可是你今天做深蹲失败,到底是因为核心力量不够,还是膝盖角度不对,还是呼吸节奏乱了,私教完全不管。他只根据"你今天累不累"简单粗暴地调整计划。结果就是,你可能练了三个月,同一个错误动作模式一直没被纠正,因为没人告诉你具体错在哪儿,你的进步自然会卡在瓶颈上。

第二派是外部引导型,比如R-Few靠人工标注的例子出题,SPICE靠文档语料库,DARC干脆引入了难度标签、外部文档,甚至专门配了一个"特权教师"模型来指导训练。这些方法效果不错,但都有个共同的软肋:得依赖自我博弈循环之外的资源。人工示例总有用完的一天,文档语料库也不是无限的,一旦这些外部资源枯竭或者跟不上,进步也会跟着停滞。

那有没有办法既不靠外援,又能精准知道solver到底哪里不会?

论文作者的思路是:答案本来就在solver自己的失败记录里。每一次解题失败,其实都是一次免费的诊断机会,只是过去没人把这些诊断结果攒起来、用起来。

这就是这篇论文提出的**DiagEvo**。

**DiagEvo**:一种诊断引导的自我博弈框架,通过分析解题者的失败轨迹提取可复现的错误根源,并用一个分层记忆结构来指导后续题目生成的方法。

诊断医生怎么工作:对比两份答案,揪出真正的病灶

DiagEvo里有个角色叫诊断医生,由一个轻量级的LLM担任。它的工作方式很像医生看病例,但更准确地说,是对照实验。

具体是怎么做的?对于每一道题,solver会生成很多份答案,多数人认同的答案会被当成伪标签(因为这些题目是新生成的,没有标准答案,只能靠投票近似)。诊断医生会挑出一份和多数票一致的答案,和一份不一致的答案,放在一起对比,找出这两份推理路径最早出现分歧的那一步,然后总结出一个可迁移的错误原因。

**伪标签**:在没有标准答案的情况下,用solver多次作答的多数投票结果来近似真实答案的做法。

举个论文里的实际案例。题目是解方程log?(x-1)+log?(x-5)=3。两条推理路径都算出了x=3±2√3这两个候选解,但只有答对的那条路径记得回头检查,原方程要求x-5必须大于0,所以x=3-2√3这个解其实是非法的,必须舍去。诊断医生从这个对比里提炼出的错误原因是:在代数变换后没有检查候选解是否仍满足原始定义域限制。

这个错误原因不是针对这一道题的,它是一种可以套用在很多不同题目上的通病。这跟你去医院验血查出"缺铁性贫血"是一个道理,医生不会说"你今天头晕是因为血液里第37348号红细胞数量不对",而是给你一个抽象出来、能反复验证的诊断结论,这个结论以后遇到类似症状还能继续用。

分层错误记忆:让漏洞不再散落一地

光找出一个个孤立的错误原因还不够,因为同一类错误可能会用完全不同的面孔反复出现。DiagEvo为此设计了一个分层记忆结构,把相关的错误原因归到同一个技能节点下面。

**分层错误记忆**:一种把具体错误原因归类到更高层级技能节点下的记忆结构,每个错误原因还带有一个状态标记,用来表示这个问题是否已经被解决。

每个错误原因有两种状态,激活态表示这个问题还没解决,是接下来出题时要重点照顾的对象;掌握态表示solver在针对这个错误原因出的题目上已经表现出很高的自洽性,说明这个坑已经填上了。

这里有个特别聪明的设计叫跨状态拼接。当挑战者要出题时,如果某个激活态的错误原因所在的技能节点下面,还挂着一个已经掌握的错误原因,挑战者会把两者揉进同一道题里,而不是分开出两道简单题。论文里给了个例子:针对"代数变换后忘记检查定义域"这个激活态问题,配上"用均值不等式求最值时忘记验证等号能否成立"这个已掌握问题,合成出了一道要求x>2条件下求F(x)=√((x-2)/(x+1))+√((x+1)/(x-2))下确界的复合题。这道题必须同时用到两种能力才能做对,任何一个环节偷懒都会翻车。

如果没有这种归类和状态追踪会怎样?错误原因会散落成一盘散沙,挑战者今天出一道题正好碰上某个漏洞,明天又出一道题完全没碰到,全凭运气。就像你打游戏卡在某个关卡,如果游戏系统只会记录"你死了37次"这个数字,却不会告诉你"你37次里有30次是因为躲避子弹的时机不对",你永远不知道该练什么,只能一遍遍瞎撞。

那激活和掌握之间怎么切换?论文设定了一个阈值,当solver在某个激活态错误原因对应的题目上,平均自洽率达到70%以上时,这个错误原因就会被判定为已掌握,频率计数清零,进入"观察期"。如果之后又出现新的失败被归因到这个已掌握的问题上,它会被重新激活,这个机制叫重新激活,保证了记忆不是一劳永逸的标签,而是会随着solver的实际表现动态调整。

自由探索和定向练习怎么分配比例

有了错误记忆,接下来的问题是,挑战者该花多少精力去针对性出题,又该花多少精力自由探索新领域。

DiagEvo用一个很朴素的逻辑来动态调整这个比例。每一轮训练结束后,系统会统计当前所有激活态错误原因累积的失败次数,这个失败次数越多,意味着solver身上还有越多未解决的顽疾,下一轮就应该多花力气定向攻克这些顽疾,少花力气去自由探索。反过来,如果失败次数很少(要么是因为漏洞已经被修复完,要么是刚开始训练还没积累足够诊断数据),挑战者就该多做自由探索,维持题目的多样性和覆盖面。

这个设计背后其实是在权衡两种风险。如果完全不管三七二十一地自由探索,前面提到的题目越来越长、越来越离谱的问题就会重演。但如果100%扑在定向练习上,又会陷入另一个陷阱,题目会变得越来越窄,solver可能会在这几个已知漏洞上表现完美,但换个陌生领域就露馅了。这就好比一个偏科生,如果老师发现他数学不好就疯狂刷数学题,刷到他数学突飞猛进,但物理化学全都没时间碰,总分照样上不去。

论文的消融实验很直接地验证了这个权衡的必要性。把挑战者完全冻结不更新,数学平均分从72.3掉到68.5;纯自由探索,分数是69.5;纯定向生成,分数是70.1;只有把两者按动态比例混合起来,才能拿到72.3的最高分。这组数字说明,单靠任何一种模式都做不到最好,自由探索和定向练习必须协同工作。

双重置信度过滤:把靠不住的伪标签挡在门外

前面提到,新生成的题目没有标准答案,只能靠solver投票多数决来近似。这里藏着一个隐患,如果solver自己在某道题上就是集体犯糊涂,那么错误答案反而会成为多数票,被当成伪标签写进训练数据。这种情况一旦发生,后续用这个伪标签训练solver,等于是在强化它原本的错误认知,越训越歪。

**自我确认偏差**:当solver的同一种错误在多次采样中反复出现并成为多数投票结果时,这个错误会被误判为正确答案,进而在后续训练中被不断强化的现象。

为了防住这个坑,DiagEvo设计了双重置信度过滤。第一重是绝对置信度约束,只保留多数票占比落在一个中等区间(比如25%到75%)的题目,太简单(接近100%一致)或太混乱(接近随机)的题目都被剔除,这个逻辑跟很多强化学习工作里"中等难度题目学习信号最强"的发现是一致的。

第二重是这篇论文额外加的相对置信度约束,专门针对高冲突题目。

**高冲突题目**:指solver作答时排名第一和第二的两个候选答案得票数很接近,导致多数票伪标签很不稳定,换一批采样可能就翻转的题目。

DiagEvo要求排名第一的答案得票数必须明显领先第二名(用一个倍数阈值τ来卡),否则这道题也会被剔除,不参与solver的训练。

打个比方,这就像一场选举计票,如果A候选人得了51%的票,B候选人得了49%,这种票数太接近的选举结果其实很不可靠,重新计一次票可能就翻盘了。如果选举委员会不管三七二十一,凡是票数过半就直接宣布当选,那这个"民意"的可信度其实很低。DiagEvo做的事情,就是只承认那些票数遥遥领先、争议不大的"选举结果",拒绝承认那些势均力敌、随时可能翻盘的结果。

消融实验里,不做任何过滤,数学平均分是69.4;只加绝对置信度约束,涨到70.9;两重约束都加上,涨到72.3。相对置信度约束单独贡献了1.4个百分点的提升,证明它确实解决了一个真实存在的问题。

更直观的证据来自论文里对伪标签质量的追踪。研究者请了一个更强的模型(GPT-5)当裁判,重新给训练集里的题目打标签,然后看DiagEvo自己算出的伪标签跟裁判结果的一致率。纯自由探索加绝对约束的方案,一致率从83%一路跌到65%;加上错误记忆机制,第五轮的一致率回升到72%;再加上相对置信度约束,进一步提升到75%。这组数字清楚地拆解了两个设计各自的贡献,记忆机制贡献了7个百分点的提升,相对置信度约束贡献了3个百分点。

实验结果:三个模型、九个基准全面领先

DiagEvo在Qwen3-4B、Qwen3-8B、OctoThinker-8B三种不同规模和架构的solver上都做了测试,对比对象包括R-Zero、Absolute Zero、SPICE、R-Few、DARC等多个代表性方法。

方法(Qwen3-8B为例) 数学推理平均分 通用推理平均分 综合得分

基础模型(未训练) 63.4 33.2 50.0

R-Zero 67.8 36.2 53.8

DARC 71.1 37.8 56.3

**DiagEvo(默认4B诊断医生)** **72.3** **38.8** **57.4**

在Qwen3-8B这个配置上,DiagEvo拿到72.3%的数学推理平均分,比R-Zero高出4.5个百分点,比引入了外部资源的DARC还要高1.2个百分点。要知道,DARC用了难度标签、外部文档和一个专门的特权教师模型,而DiagEvo全程没有借助任何外部任务资源,完全靠solver自己的失败历史驱动。

在另外两个模型上,DiagEvo也都以1.3个百分点左右的优势超过DARC。更值得说的是跨领域泛化能力,solver训练全程只见过数学题,但在MMLU-Pro、GPQA-Diamond这类通用推理基准上,Qwen3-8B的通用推理平均分从33.2%涨到38.8%,OctoThinker-8B更是从10.7%直接涨到28.4%。数学训练带来的推理能力提升,能够溢出到完全不同的知识领域,这说明DiagEvo诊断出的"错误原因"很多时候触及的是通用推理习惯,而不只是数学技巧本身。

论文还测试了不同规模诊断医生的效果,从4B参数一路换到235B-A22B。结果显示,诊断医生越大,数学推理成绩确实会有小幅提升(大约1个百分点),尤其在OlympiadBench这种高难度赛题上提升更明显。但整体来看,即便用最小的4B诊断医生,DiagEvo已经能全面超越所有对比方法,说明这套框架的核心价值不在于诊断医生本身有多聪明,而在于诊断加记忆这个机制设计。

跨轮次的动态变化:进步不是无限的

论文还追踪了DiagEvo在连续多轮训练中的表现变化。结果显示,前五轮里数学平均分持续上涨,到第五轮达到72.3%的峰值,但第六轮开始略微回落到72.0%,第七轮降到71.4%。这说明即便有了诊断引导,训练轮次也不是越多越好,存在一个最优的训练窗口,论文因此把第五轮的模型作为最终报告结果。

记忆结构本身在训练过程中也在持续演化。错误原因的总数从151个逐渐增长到244个,但技能节点数量在第三轮之后就稳定在36个左右,这得益于论文设计的"节点合并"机制,防止记忆库无限膨胀成一堆冗余条目。激活态错误原因的数量在第二轮达到峰值188个,之后逐渐下降到117个,而掌握态错误原因累积到127个,占了记忆库的一半以上。这个此消彼长的过程,直观地展示了solver是怎么一点点把自己的知识漏洞补上的。

写在后面

读完这篇论文,一个最直接的触动是,很多人第一反应可能会觉得"用solver自己的失败经验训练自己"听起来像是自己给自己批改作业,会不会陷入某种自我循环的陷阱。但DiagEvo的关键设计恰恰是在防这个坑,它不是简单地记录"哪道题错了",而是通过对比两条不同的推理路径,提炼出跨题目通用的错误模式,这种做法把一次性的失败,转化成了可以反复验证、可以被状态追踪的持久知识。这种转化本身,可能比"自我博弈"这个大框架更值得注意。

论文里那张关于题目长度和数学平均分的对比图,其实藏着一个挺扎心的提醒。很多时候我们评价一个系统"在进步",可能只是看到某个表面指标在变化,比如题目变复杂了、生成内容变长了,却没意识到这些变化跟真正想要的能力提升之间根本没有必然联系。这提醒我们在评估任何自我进化系统时,都得多问一句:变化的到底是能力,还是表象。

还有一个细节值得单独说一说。诊断医生在提取错误原因时,论文明确要求描述必须限定在10到20个词,不能带有具体的题目数值或变量。这个看似很技术性的约束,背后的逻辑其实很朴素,只有足够抽象、去掉具体细节的描述,才能在后续用向量相似度去匹配、去重时保持稳定,如果描述里夹杂了题目特有的数字和符号,整个记忆系统的检索效果会被严重稀释。这算是一个很小但很典型的工程细节,提醒我们抽象层次的选择,往往决定了一个系统能否真正规模化运转。

如果一个AI系统能持续从自己的错误里总结经验,而不需要人类不断投喂新素材,那么下一个问题自然就冒出来了:这种自我诊断的能力,能不能延伸到数学之外,延伸到那些没有明确对错标准的开放式任务里去?

Q&A

Q1:DiagEvo是什么?

A:DiagEvo是一种诊断引导的自我博弈框架,通过分析解题者失败轨迹中反复出现的错误原因,用一个分层记忆结构来指导下一轮出题,全程不依赖任何外部任务资源。

Q2:DiagEvo和R-Zero、DARC这些方法比效果怎么样?

A:在Qwen3-8B上,DiagEvo数学推理平均分达到72.3%,比R-Zero高4.5个百分点,比引入了外部文档和特权教师的DARC还高1.2个百分点,九个基准测试全面领先。

Q3:DiagEvo为什么不容易陷入自我循环的陷阱?

A:因为它不是简单记录错题,而是对比答对和答错两条推理路径,找出最早出现分歧的那一步,提炼出可迁移的抽象错误原因,再用状态标记和自洽率检验来动态判断问题是否真正解决。