MetaEvolve:把自我进化做成内生能力,代码OOD任务提升24.12%

Teaching LLMs to Self-Evolve: Cultivating Core Meta-Skills with Reinforcement Learning

在推理期通过多轮迭代、引入环境反馈来自我进化,是近期大语言模型(LLM)实现能力跃升的重要路径。从 FunSearch 到 AlphaEvolve,基于进化算法的代码探索已经能够解决许多复杂的数学与系统优化问题。然而,现存的演化系统大多将“迭代优化”视为一种外部工程脚手架(Inference-time Heuristic)——模型本身并未经历过如何在多轮历史中反思、纠错与改进的针对性训练。当面对失败尝试或复杂性能瓶颈时,模型往往陷入无序盲猜、反复循环或浅层微调,缺乏真正的自省与定向优化能力。

ArXiv URL:https://arxiv.org/abs/2607.21971

针对这一根本局限,研究团队提出了 MetaEvolve 框架,其核心主张是:自我进化不应该只是推理期的外挂搜索机制,而应当被作为一种可以通过强化学习(RL)直接内化的高阶元技能(Meta-skills)。 该工作以算法编程为天然实验场,利用程序执行带来的确定性正确性与连续运行时间作为多粒度奖励信号,离线合成了富含演化历史上下文的训练轨迹,并通过基于执行反馈的群组相对策略优化(GRPO)直接训练模型。

实验结果表明,在七项主流代码基准测试中,基于 Qwen3-14B 构建的 MetaEvolve 相比基线 AlphaEvolve,在分布内任务上取得了 10.01% 的绝对平均提升,而在完全未见过的分布外(OOD)基准上,绝对性能优势扩大至 24.12%。更引人注目的是,该元技能展现出了强大的跨领域迁移能力:在完全脱离常规刷题范畴、聚焦科学计算与数值优化的开放式算法基准 AlgoTune 上,MetaEvolve 取得了 46.9% 的相对性能提升。这项研究表明,通过针对性的强化学习显式培育反思与改进的元能力,是通向真正自主演化智能系统的坚实路径。

为什么推理期的启发式演化远远不够?

以往的大模型演化框架如 AlphaEvolve,其运作逻辑主要依赖演化算法控制流:从模型采样多个候选方案,交由测试环境评估,挑出适应度最高者放入种群,再通过 Prompt 提示模型“根据先前的运行结果做进一步优化”。

这种机制的脆弱之处在于,预训练和常规后训练(Post-training)从未赋予模型理解“演化轨迹”的能力。普通的 SFT 或多轮 RLHF 优化的是单次任务完成度,模型在看到包含多次历史失败、性能得分的上下文时,缺乏深层认知:它不知道哪次尝试走入了死胡同,也不理解代码改动与底层时间复杂度之间的因果关联。质性分析显示,未经过针对性演化训练的模型在面对多轮优化请求时,极易表现出无证据的盲目怀疑、脱离当前代码的空泛理论推演,或者在几个细枝末节的语法点上原地打转。

要想让模型在推理期展现出有目的性的自我重组,就必须把“诊断当前缺陷、从历史失败中提炼经验、根据外部环境反馈转化出改进方案”定义为核心任务目标。为了将这种抽象的“元技能”落地为可优化的数学对象,研究团队将目光投向了算法竞赛编程。

编程任务具备其他任务少有的两项特质:第一,它拥有无可争议、自动化验证的客观真理(通过单元测试);第二,即便在代码完全正确的情况下,程序运行时间(Runtime)也提供了连续、细粒度的性能梯度。从一个能跑通的 $O(n^2)$ 解法演进到一个 $O(n \log n)$ 乃至线性时间复杂度的优秀算法,中间存在着清晰的性能进化空间,这为模型提供了超越二元对错(0/1)的丰富学习信号。

MetaEvolve 数据生成管线概览

数据合成:在静态数据中重建演化历史

要通过强化学习训练演化能力,首要挑战在于缺乏现成的“演化轨迹数据集”。如果完全依赖在线多轮交互采样来构建环境,计算成本将呈爆炸式增长。MetaEvolve 巧妙设计了一套无需昂贵在线回滚的离线数据合成管线,该流程主要包含两个阶段:多样性过滤与上下文历史合成。

数据源选自包含 TACO、APPS、Codeforces 和 CodeContests 的 Eurus-2-RL-Data 训练集,覆盖超过 25,000 道算法题目。为了使轨迹具备教学意义,模型必须能够看到在结构和算法路线上真正存在差异的方案,而不是轻微的重命名或格式微调。为此,MetaEvolve 引入了二级多样性过滤机制。

首先是题目级过滤。针对一道题目的多个模型采样解,计算程序两两之间的差异度分值。多样性评估综合考量了字符长度差异、代码行数差异与字符集差异:

\[\text{Diversity}(c_1, c_2) = 0.1 \times \Delta_{\text{length}} + 10 \times \Delta_{\text{lines}} + 0.5 \times \Delta_{\text{charset}}\]

在这项设计中,代码行数差异($\Delta_{\text{lines}}$)被赋予最高权重,因为行数的显著变化往往标志着解法逻辑、数据结构或算法流派的根本不同,而非表层的拼写变动。通过对整体分数分布设定阈值区间 $[\tau_{\min}, \tau_{\max}]$,排除了方案过于单一或噪声过大的题目。

随后是候选解级别的贪心筛选。系统以最高质量的代码作为初始种子,在剩余候选集中迭代计算其与已选集合的平均多样性,并按照综合分值进行选取:

\[\text{Score}_{\text{selection}} = 0.3 \times \text{correctness} + 0.7 \times \text{diversity}\]

经过这道工序,原始庞杂的题目池被浓缩为约 6,000 个兼具高质量与高解法差异性的精选样本。

在组织训练样本时,MetaEvolve 将这些静态解法串联成演化时序。每个训练样本包含四大要素:问题描述、当前程序及其适应度得分、模拟的先验演化历史、以及要求模型进一步提高适应度的指令。为了度量程序的综合表现,适应度函数兼顾了正确性与速度:

\[\text{Score} = \min\left(\frac{1}{(\text{speed} + 10^{-6}) \times 1000}, 1.0\right) \times \text{correctness}\]

其中正确性为严格的二进制值(全测例通过为 1,否则为 0),速度为平均执行秒数。将速度归一化到 $(0, 1]$ 之间,确保了极快代码不会导致得分无序膨胀,同时以正确性作为强乘数约束——唯有在功能正确的前提下,效率优化才具备意义。

通过从题目的解法池中采样 1 到 3 个历史尝试,并将其按性能指标升序排列(性能最差的在最前,当前方案位于末尾),MetaEvolve 在单轮交互的训练格式下,完美复刻了推理期面对演化上下文的真实场景。

奖励设计与 RL 训练:对停滞不前的严苛惩罚

有了结构化的演化上下文后,MetaEvolve 采用群组相对策略优化(GRPO)进行策略微调。在训练过程中,模型读取上下文中的当前程序 $P_1$ 及其历史,并生成新的改进程序 $P_2$。两者置于相同的测试用例沙盒中执行,得出各自的适应度分数 $\text{Score}(P_1)$ 和 $\text{Score}(P_2)$。

奖励函数的定义体现了非常纯粹的演化导向:

\[r = \begin{cases} -1 & \text{if } \text{Score}(P_1) \ge \text{Score}(P_2) \\ \text{Score}(P_2) - \text{Score}(P_1) & \text{otherwise} \end{cases}\]

这种分段奖励设计的关键在于:只要新生成的程序没有在适应度上超越现有程序,系统直接赋予 $-1$ 的硬性惩罚。这一规则坚决抑制了模型的无效折腾或性能退步,明确传递了一个信号——在自我演化中,“原地踏步”即意味着失败。相反,只要产生正向增益,模型即可获得与分数提升量成正比的奖励差值。由于所有信号均直接来自测例运行结果,整个 RL 过程无需任何人类标注,具备极高的扩展性。

跨基准评测:不仅是提速,更是范式泛化

在相同的演化搜索控制流(基于 OpenEvolve 框架、岛屿模型多群演化、相同的采样超参数设置)下,研究人员对比了以原始 Qwen3-14B 为骨干的 AlphaEvolve 与以 MetaEvolve 强化后模型为骨干的演化效果。

在七项算法基准的 10 轮演化实验中,MetaEvolve 展现出压倒性优势。在涵盖训练源域的 APPS、TACO、CodeContests 和 Codeforces 等分布内任务中,绝对改进率提升了 10.01%;而在完全未见过的 Atcoder、Leetcode 和 USACO 三大分布外基准上,改进率更是达到了 57.70%、68.87% 和 49.03%,分别领先基线 AlphaEvolve 达 30、29 和 13 个百分点。这一跨越式差距证明,模型通过 RL 学到的并不是特定测试集的作答技巧,而是如何理解历史差量并进行针对性改进的通用元技能。

不仅如此,为了验证模型生成的究竟是实质性的算法创新还是浮于表面的代码重构,研究团队引入了抽象语法树编辑距离(AST Edit Distance)与 CodeBLEU 两项指标。统计显示,MetaEvolve 在 7 个基准中的 6 个上展现出了更高的 AST 编辑距离,并且在全部 7 个基准上保持了更低的 CodeBLEU 相似度。这意味着,经过演化训练的模型在发现局部优化潜力受限时,更敢于跳出舒适区,推翻原有的算法构架,从底层数据结构或解题思路上进行大刀阔斧的重写。

最能体现该方法潜力的当属在 AlgoTune 上的测试。AlgoTune 是一套完全不同于竞赛算法题的开放式算法优化基准,涵盖二维仿射变换、复数特征值求解、快速傅里叶变换(FFT)、LU 矩阵分解等底层科学与数值计算任务。面对这类高度开放且缺乏常规语法套路的任务,在 50 轮演化探索下,MetaEvolve 取得了 2.045 倍的综合几何平均加速比,显著超过了 AlphaEvolve 的 1.392 倍,在 8 个独立任务中的 7 个均取得了优势。例如在 affine_transform_2d 任务中,MetaEvolve 实现了 6.945 倍的加速,而基线几乎未能突破(1.072 倍)。这强有力地支撑了作者的核心假设:虽然强化学习的奖励是在具体代码环境中培育的,但由此激发的“反思-假说-验证-迭代”元技能,具备天然的领域无关性。

关键机制挖掘:正向演化轨迹为何更加重要?

在深入探究 MetaEvolve 机制的过程中,本文给出了两项反直觉却发人深省的研究发现。

第一个发现涉及训练样本中初始程序的质量配比。一个直觉的想法是:如果想让模型具备从 Bug 中恢复的能力,应该给它灌输大量错误的初始程序。研究团队测试了初始程序“正确:错误”比例分别为 50:50、60:40 与 80:20 的三种配置。结果显示,80:20 的比例在绝大多数基准上均取得了最佳效果,在 APPS、TACO 和 USACO 等硬核基准上相比对半开配置取得了 10 个百分点以上的显著优势。

这一结果揭示了模型学习自我进化的本质机制:演化能力的基石在于理解“怎样把一个可用的东西变得更优”。当训练集中充斥着过多的错误程序时,模型频繁面对的是功能完全失效的无效探索,这阻碍了它建立起代码结构与运行效率之间精细映射的高阶认知。维持 80% 的高效演化轨迹能够让模型持续沉浸在良性改进的正向反馈中,而保留的 20% 错误轨迹则恰到好处地充当了“容错修补”能力的补充。

第二个发现与错误恢复能力(Error Recovery)直接相关。当初始采样的所有程序均未通过全部测例时,系统将陷入无正确起点的死局。此时对比 AlphaEvolve、MetaEvolve 以及一个完全只用错误程序训练的变体模型(Trained on Incorrect),结果令人意外:纯用错误数据训练的模型在错误恢复率上几乎毫无起色,在四个基准中有三个取得了 0% 的修复率;而遵循 80:20 黄金比例训练的 MetaEvolve,反而在 APPS 上取得了 10%、在 Codeforces 上取得了 18.18% 的最高错误修复率。

这证实了一个深刻的认知规律:纠错能力的本质不是对错误模式的死记硬背,而是建立在对全局算法正确性与运行逻辑拥有深刻洞察之上的“解构重组”能力。 只有当模型在大量正向演化轨迹中学会了如何诊断系统瓶颈并重构程序,它才能在面对彻底瘫痪的错误代码时,展现出冷静的诊断与根本性修复能力。

走向内生进化的自主 AI

MetaEvolve 为大语言模型的后训练和推理期计算扩展(Test-time Scaling)提供了全新的思考维度。过去的探索大多走向两个分支:要么在预训练与指令对齐阶段追求模型本身的单步输出质量;要么在推理阶段依赖越来越复杂的外部工程架构,用外挂记忆、多智能体交互或启发式搜索把模型当成“无状态生成器”调用。

MetaEvolve 证明了第三条道路的可行性:把复杂演化系统的控制流和反思机制,通过精巧的合成数据与严苛的确定性环境奖励,直接雕刻进模型的权重之中。

当模型在权重层面内化了对自身历史的审视习惯与迭代思维,推理期的多轮演化便不再是碰运气的蒙特卡洛抽样,而演变为一场步步为营的定向跃迁。尽管该工作当前主要锚定在可确定执行的代码与算法优化任务中,但这种基于历史差异施加进化强化学习的范式,极有可能成为未来智能体攻克数学发现、材料合成协议设计以及复杂系统架构演进等开放式探索任务的关键跳板。让模型学会在失败中审视自我,正是迈向真正具备自主演化能力 AI 的坚实一步。