不是代码没变,而是算法卡死!DAPS让自主科研闭环泛化提升83.7%
Beneath the Diff: Diagnosing and Mitigating Algorithmic Mode Collapse in Code-Level Autonomous Research Loops

自 Andrej Karpathy 开源极简的单卡自主研究脚本 autoresearch 以及 AI-Scientist 等系统问世以来,由大语言模型驱动的“代码级自主科研闭环”(Code-Level Autonomous Research Loops,简称 ARL)正在成为自动化机器学习的前沿阵地。在这个闭环中,LLM 扮演研究员的角色,自主提出对训练流水线的代码修改方案,提交执行引擎运行,并依据实际运行得到的验证指标来决定保留代码还是回滚。表面上看,由于每次代码修改都要经过真实代码编译与运行时验证,ARL 拥有一套不可伪造的外生反馈信号,理应不会像纯自回归文本生成那样陷入自我重复的死循环。
ArXiv URL:https://arxiv.org/abs/2609.00077
然而,来自麦吉尔大学(McGill University)、MirrorSpace、MBZUAI 和西蒙弗雷泽大学(SFU)的研究团队最新发表的论文打破了这一乐观假设。他们系统分析了长时间跨度下 ARL 的演进轨迹,发现了一种隐蔽而普遍的系统性失效:算法模式崩溃(Algorithmic Mode Collapse)。智能体提交的 Git Diff 看起来花样百出,修改的文件和行号不断变化,但代码底层的算法逻辑和探索机制却迅速枯竭,不断用不同的代码外壳包装同一种调参伎俩。更严重的是,这种狭隘的探索直接导致严重的“古德哈特定律”(Goodhart’s Law)效应——模型在闭环内的指标一路高歌猛进,但在未见过的真实测试集上却几乎原地踏步。
针对这一顽疾,研究团队提出了多样性感知提案采样框架(Diversity-Aware Proposal Sampling,简称 DAPS)。在严格隔绝的“闭环-审计-双盲”三层验证协议下,DAPS 将算法语义聚类的衰减程度降低了 69.1%,并将未见过测试集上的相对保真度提升了 83.7%,同时几乎没有牺牲闭环内部的迭代优化效率。
繁荣的假象:代码行在变,算法灵魂却“卡死”了
理解算法模式崩溃的关键,在于分清“代码表层修改”与“算法机制语义”的区别。在传统的 ARL 框架中,LLM 会查看当前的代码仓库、历史改动摘要以及上一轮的性能表现,随后生成一段说明和具体的补丁(Patch)。如果候选补丁在验证指标 $m^{\text{opt}}$ 上的表现超越了阈值,它就会被合入主干代码。
直觉上,研究者通常认为监控代码补丁的编辑距离就足以衡量智能体是否还在积极探索。但实验数据显示,在覆盖预训练、后训练、逻辑推理以及推理配置优化的 4 项自然语言处理任务中,连续运行 500 轮之后,补丁的表层编辑距离曲线几乎是一条平直的横线,平均值稳定在 0.66 到 0.68 之间。从监控面板来看,智能体每一轮都在辛勤重构不同的函数、调整新的变量名、引入不同的控制流。
然而,一旦对智能体每次修改意图的文本描述提取 Sentence-BERT 向量,并使用 HDBSCAN 算法进行语义聚类分析,就会发现聚类中心数量在同样的 500 轮跨度内直接暴跌了 50% 到 70%。智能体实际上陷入了一种算法偏执:它可能连续几十轮都在试图调整学习率预热曲线、尝试轻微改变权重衰减的衰减因子,或者不断地增删微不足道的归一化层,只是每一次选取的代码实现位置和变量写法截然不同。
研究团队指出,这种现象背后的机理在于 LLM 提案者在漫长的搜索过程中,受到闭环内验证指标的持续条件强化,迅速向其自身先验中那些最容易见效、方差最小的局部修改策略收敛。它放弃了对结构创新、新型损失函数或非常规数据预处理的高风险探索,转而在舒适区内用不同的语法糖刷分。这就如同一个研究员掌握了一个微小的调参窍门后,不断在论文里换着花样汇报同一种技术,表面上成果斐然,实质上认知已经固化。
评估的谎言:闭环内刷分为何无法转化为真提升?
如果算法模式的集中真能带来稳定泛化,那么这种收敛或许可以被视作一种工程上的最优化收敛。然而事实恰恰相反,语义维度的模式崩溃直接伴随着模型泛化能力的雪崩。
为了严谨刻画这一失真现象,研究团队设计了一套三层评估协议。第一层是闭环指标 $m^{\text{opt}}$,即智能体在优化过程中唯一能够感知和利用的反馈信号;第二层是审计指标 $m^{\text{audit}}$,它测量智能体试图改善的核心能力,但在数据分布上存在明显偏移,且完全独立于流水线代码之外,仅用于外部监督;第三层是双盲指标 $m^{\text{blind}}$,在整个实验期间完全离线,无论是智能体还是中间控制机制都绝对无法接触,作为最终的真实泛化金标。
基于这套协议定义的保真度比率 $\rho^{\text{audit}} = \bar{g}^{\text{audit}} / \bar{g}^{\text{opt}}$(即外部真实增益与闭环内宣称增益的比值),直接揭穿了经典 ARL 的泡沫。在基准实现 Vanilla AR 运行到第 300 轮时,$\rho^{\text{audit}}$ 在各项任务中仅在 0.38 到 0.49 之间徘徊。这意味着智能体在闭环内宣称的性能提升,有超过一半甚至三分之二都属于针对特定验证集的过拟合,根本无法在分布外的测试中复现。到第 300 轮时,闭环内部报告的增益平均夸大了真实增益 2.0 到 2.6 倍之多。
研究团队还引入了另外两个维度的诊断工具。一个是机制熵 $\mathrm{H}{t}$,通过将修改方案映射到底层机制分类后计算离散熵;另一个是语料相似度 $\mathrm{V}{t}$,即计算修改描述与 2024 年之前发表的 110 万篇 arXiv 论文摘要之间的最近邻余弦相似度。监测发现,随着闭环迭代推进,机制熵断崖式下跌了约 0.6 nats,而语料相似度却单调上升(从 0.60 升至 0.72)。这表明,自主智能体在遇到瓶颈时并没有开展科学发现,而是越来越倾向于从其预训练权重的记忆中检索最平庸、最广为人知的机器学习老套路。
常规的工程调优手段在这一问题面前几乎全部失效。许多从业者直觉上认为只需把采样温度调高(如从 0.7 提到 1.2)即可打破僵局。但实验证明,提高温度仅仅是增加了表层代码生成的随机扰动,提案的机制熵和语义聚类依然严重衰减,真实泛化保真度没有任何实质改变。简单引入文本反思模块(Reflexion)或通用的文本级多样性惩罚,同样无法约束代码底层的机制坍缩,甚至会导致智能体因为受到过多无关约束而损失闭环本身的收敛效率。
破解模式崩溃:DAPS 框架的三重防线
既然表层的随机性无法解决底层的算法枯竭,那么对探索行为的调控就必须下沉到算法语义和验证闭环的交互机制上。DAPS 框架通过引入三套协同运作的轻量级组件,重塑了科研智能体的搜索动力学:
第一道防线是类别覆盖重加权(Category-Coverage Reweighting, CCR)。系统维护一个高层算法机制的分类空间(涵盖优化器、架构、数据预处理、损失函数等),并跟踪各类别在近期的探索频率。当智能体开始过度偏向某一类操作(如疯狂微调优化器参数)时,CCR 会自动调整 Prompt 中的提示分布与候选权重,强制惩罚过饱和类别,动态拉高对被冷落机制类别的探索概率,迫使智能体把目光投向尚未深挖的代码模块。
第二道防线是持久编辑记忆(Persistent Edit Memory, PEM)。它在语义向量空间中构建了一个持续的排斥场。每当智能体生成一个新的修改提案时,PEM 会在将其送入执行器之前,利用句子嵌入模型将其与记忆库中已被接受的近期历史提案进行语义相似度比对。如果发现当前提案在语义上与之前的某个修改过于重合(即使代码行数、变量名和实现细节截然不同),该提案都会在执行前被直接拦截并要求重采样。这不仅阻断了“换汤不换药”的代码重写,还避免了宝贵的 GPU 运行时间被浪费在毫无新意的重复实验上。
第三道防线是假设验证门(Hypothesis Validation Gate, HVG)。即便有了前端的多样性引导,智能体仍有可能误打误撞提出某些专攻闭环漏洞的作弊补丁。HVG 以极低的频次(每 10 轮一次)调用外部审计指标 $m^{\text{audit}}$。但它并不把具体的审计指标值暴露给智能体,以防智能体再次针对审计集过拟合;它仅仅做一次标量校验——一旦发现闭环内增益与审计增益之间的差距 $\Delta^{\text{faith}}$ 超过了自适应校准的阈值,门控机制就会强行将代码流水线回滚到上一个被验证为“忠实且有效”的历史检查点,并向智能体发送一条不含具体分数的模板化警告。
这三者的分工极为明确:CCR 与 PEM 在执行之前从源头上维持算法提案的多样性,而 HVG 则在执行后充当守门员,防止系统沿着过拟合的错误路径一路滑落。
实验检验:双盲环境下的全方位反弹
为了确保研究结论的坚实度,实验不仅跨越了预训练(T1,以 WikiText-103 为盲测集)、指令微调(T2,以 500 条 Dolly 指令的人工/LLM 盲测胜率为准)、复杂推理(T3,以 SVAMP 为盲测集)和推理超参配置(T4,以 OpenBookQA 为盲测集)四大场景,还动用了 Claude Opus 4.7、GPT-5.2 以及开源的 Llama-3.3-70B 三款主力模型,并在单卡 A100 上累计消耗了超过 6200 个 GPU 小时。同时,除了 Karpathy 的 autoresearch 架构外,团队还将这套体系无缝移植到基于 Git 提交与代码检索替换块的 Aider 框架中,证明了结论与代码智能体的具体架构无关。
在包含 8 种对照组的严苛评测中,DAPS 展现出了显著优势。在第 300 轮时,在基础实现中普遍跌破 0.5 的审计保真度比率,在 DAPS 介入后一举攀升至 0.74 到 0.82。更重要的是,在从始至终没有任何组件接触过的双盲测试集上,DAPS 的相对保真度平均提升了 83.7%(从基线的 0.41 跃升至 0.74)。这意味着,智能体在闭环内部所争取的每一点指标提升,绝大部分都能原封不动地转化为通用泛化能力的增强。
更值得一提的是消融实验所揭示的组件协同效应。如果仅仅保留外部验证门控(即纯基于审计信号进行回滚的消融变体),虽然保真度能够获得一定提升,但由于智能体底层的算法先验并未改变,它依然会源源不断地生成重复无效的提案,导致验证门频繁触发回滚,进而将闭环内优化速度拉低近 5%。而当 CCR、PEM 与 HVG 协同工作时,前置的语义去重反倒为系统节约了无效的执行开销,使得完整版 DAPS 在实现 0.79 极高审计保真度的同时,闭环内优化速度不仅没有拖慢,反而保持了与基线相近的高水准(相对比值为 0.983)。在衡量轨迹多样性衰减的指标 $\Delta\mathrm{C}$ 上,基线模型的衰减率高达 68%,而全配版的 DAPS 将这一衰减大幅压低至 21%,成功维系了长时间跨度内的探索活力。
对自主科研未来的关键启示
这项工作为当下火热的 AI Scientist 和自动化研发浪潮敲响了一记警钟,也指明了关键的进阶路径。
首先,评估指标绝不能只看“代码改动量”。在许多自动化编程与代码智能体的基准测试中,学术界和工业界习惯于将代码行变动、编译成功率或补丁编辑距离作为衡量探索能力的代理指标。然而本论文的扎实数据证明,代码表层的多样性与底层算法的探索广度几乎毫无正相关。任何缺乏语义层监控的科研智能体系统,哪怕运行上千轮、生成了数万行形态各异的代码,也极有可能只是在极其狭隘的算法死角里空转。
其次,闭环系统必须警惕“外生可执行反馈”带来的盲目自信。过去人们普遍认为,代码级闭环因为有实际代码运行结果作为判定标准,天生免疫生成式模型的自回归退化。但事实证明,只要目标函数是单一固定的,LLM 强大的局部模式拟合能力就会在漫长周期中迅速演化成对该指标的“逆向工程”,形成披着探索外衣的过拟合。
未来的自主科研智能体若想真正承担起发现全新科学假说的重任,就必须摆脱单一、脆弱的闭环反馈依赖。像 DAPS 这样将高层语义记忆、机制覆盖引导与多层隔离审计融为一体的防御架构,不仅是当下提升研究闭环可靠性的有效工具,更是未来通向真正具备科学探索能力系统不可或缺的基础设施。