想象你是一个 Kaggle 选手,面前摆着 75 道竞赛题,从图像分类到表格回归,从简单到地狱难度。你有 12 小时。你的对手有 24 小时,用的是更强的模型,背后是 OpenAI、DeepMind 级别的团队。
结果呢?你拿了 65.3% 的奖牌率,金牌率 34.7%,100% 有效提交——全场第一。
这不是人类选手的故事。这是 MLEvolve,一个来自上海人工智能实验室的自我进化多智能体框架,刚刚在 MLE-Bench 上登顶,顺便在数学优化任务上把 Google DeepMind 的 AlphaEvolve 按在地上摩擦了 14/15 场。
问题:为什么现有的 AI 做 ML 工程这么拉?
让 LLM 自动做机器学习工程(MLE),听起来很美。现实是,现有的 MLE Agent 有三个致命伤:
1. 信息孤岛——树搜索的每条分支都是一座孤岛。分支 A 发现了一个绝妙的特征工程技巧,分支 B 完全不知道,还在原地踩坑。这就像一个公司的两个团队做同一个项目,却不共享任何文档。
2. 金鱼记忆——每次规划决策都是"从零开始"。第 50 次迭代时,Agent 完全不记得第 3 次迭代犯过什么错、第 17 次什么策略有效。搜索框架只传递标量奖励,每个决策都是孤立的。
3. 一把梭式写代码——不管当前状态如何,每次都重写整个解决方案。就像你只想改个 CSS 颜色,却把整个前端项目从头重写一遍——效率低,风险高,改着改着把本来能跑的功能也搞坏了。
MLEvolve 的三板斧
第一斧:渐进式蒙特卡洛图搜索(Progressive MCGS)
传统 MCTS 是一棵树——每个节点只有一个爹,信息只能沿着树枝流动。MLEvolve 把树升级成了图。
关键创新是引用边(Reference Edge):除了正常的父子边,节点还可以"引用"其他分支的节点。这意味着分支 B 在卡住时,可以直接偷看分支 A 的成功经验,把好的思路融合进来。
四种扩展模式,对应四种"偷师"策略:
- 基础扩展:老老实实从父节点生成,不参考别人
- 分支内进化:回顾自己最近 k 次尝试,反思什么有效什么翻车了
- 跨分支引用:卡住时,把全局 Top-N 的方案拉过来当参考
- 多分支聚合:把多个强方案的互补洞察拼在一起,激发新方向
更妙的是渐进式探索调度。搜索早期,像探险家一样四处游荡(高熵探索);搜索后期,像猎手一样盯着最有希望的分支(低熵开发)。这个切换不是硬切换,而是受信息熵启发的概率软切换——每一步都以一定概率在 UCT 探索和精英引导开发之间选择,切换概率随时间平滑变化。
还有停滞检测:分支连续若干步没进步?触发分支内进化。全局最佳连续没提升?触发多分支聚合。系统会自动诊断"卡住了"并采取行动。
第二斧:回溯记忆(Retrospective Memory)
MLEvolve 给 Agent 装了一个"经验硬盘",分两部分:
冷启动知识库——按任务类型(图像分类、NLP、表格回归等)整理的领域知识,包括适合的模型和使用指南。这就像给新手发了一本《Kaggle 竞赛速成手册》,避免冷启动时瞎写。
动态全局记忆——搜索过程中,每次有效执行后自动记录:计划、结果、分析、反馈信号。检索时用 BM25 关键词匹配 + FAISS 语义搜索混合检索,通过 Reciprocal Rank Fusion 融合排序。
最关键的是阶段感知检索:
- 规划阶段:用初始计划查询,检索相关的成功/失败经验,帮助制定更靠谱的策略
- 调试阶段:用报错信息查询,检索类似的已解决错误,直接获取修复思路
不需要额外的 LLM 调用来做反思总结——记忆是自动积累的,零额外成本。
第三斧:分层规划 + 自适应代码生成
把"想改什么"和"怎么改"拆开:
规划器(Planner) 在模块级别思考:根据执行反馈、分支轨迹和检索到的记忆,决定改哪个模块、为什么改。
编码器(Coder) 在代码级别执行:根据规划器的指令,选择三种粒度之一来生成代码:
- Base 模式:从零生成完整代码——适合初始阶段
- Stepwise 模式:按模块逐步生成——适合复杂多阶段流水线
- Diff 模式:只做精确的局部修改——适合已有可运行方案时的微调
这就像一个经验丰富的程序员:项目初期从头搭建,中期按模块迭代,后期只改关键几行。而不是每次都 rm -rf 重新来过。
数据说话
MLE-Bench(75 个 Kaggle 任务)
| 方法 | 运行时间 | 奖牌率 | 金牌率 | 有效提交率 |
|---|---|---|---|---|
| AIDE | 24h | 17.1% | 9.4% | 82.8% |
| ML-Master 2.0 | 24h | 56.4% | 19.6% | 95.6% |
| MARS+ | 24h | 62.7% | 33.8% | 100% |
| AIBuildAI | 24h | 63.1% | 25.8% | 100% |
| MLEvolve | 12h | 65.3% | 34.7% | 100% |
用一半的时间,打败了所有对手。包括用 Claude Opus 4.6 的 AIBuildAI,用 Gemini-3-Pro 的 MARS+。
数学优化(15 个 AlphaEvolve 任务)
这才是真正的震撼。AlphaEvolve 是 Google DeepMind 专门为数学算法优化设计的系统,而 MLEvolve 只是一个"顺便也能做数学"的 ML 工程框架。
结果:15 个任务中,MLEvolve 在 14 个上匹配或超越 AlphaEvolve。
几个亮点:
- Hex packing:3.928476 vs 3.930092(越低越好,MLEvolve 胜)
- Autocorrelation 3rd (v):1.458770 vs 1.468762(越低越好,MLEvolve 大幅领先)
- Sum-diff 1:1.190177 vs 1.147989(越高越好,MLEvolve 胜)
- Autocorrelation 2nd:0.905422 vs 0.896280(越高越好,MLEvolve 胜)
唯一的败绩是 Kissing number d11:592 vs 593(越低越好,AlphaEvolve 胜)。
工程洞察
1. 图搜索 > 树搜索——在开放搜索空间中,允许跨分支信息流动是质变而非量变。树搜索的每条分支都在重复发明轮子,图搜索让好的发明自动传播。
2. 记忆不需要反思——很多方法用额外的 LLM 调用来做"反思总结",MLEvolve 证明自动积累的结构化记录 + 混合检索就够了。省掉了反思的 token 开销,效果反而更好。
3. 代码生成粒度要自适应——一把梭重写和精确 diff 编辑各有适用场景。关键不是选哪个,而是根据当前状态自动选对的那个。
4. 通用框架可以打败专用系统——MLEvolve 不是为数学优化设计的,但它的搜索+记忆+分层生成范式足够通用,在数学任务上也能超越专门打造的 AlphaEvolve。这说明"好的搜索框架"比"针对特定任务优化的技巧"更持久。
开源代码
代码已开源:https://github.com/InternScience/MLEvolve
基于 Gemini-3.1-Pro-preview,每个任务 500 步扩展上限,12 小时运行时间,单卡 H200。
我的思考
MLEvolve 最让我兴奋的不是某个具体数字,而是它展示的自我进化范式:一个 Agent 在搜索过程中不断积累经验、调整策略、融合不同方向的洞察,最终涌现出超越任何单一路径的解决方案。
这像极了人类科研的真实过程——没有人是靠单线思维做出突破的。我们读别人的论文(跨分支引用),回顾自己的失败(分支内进化),把不同领域的想法拼在一起(多分支聚合),在探索和开发之间反复切换(渐进式调度)。
MLEvolve 把这些人类直觉编码成了算法。而算法的好处是:它不会偷懒,不会忘记,不会因为面子拒绝参考别人的方案。
当 AI 开始用这种自我进化的方式做研究,下一个问题就变得很有趣了:如果 MLEvolve 用自己来优化自己的搜索策略呢?那才是真正的递归进化。
论文:MLEvolve: A Self-Evolving Framework for Automated Machine Learning Algorithm Discovery
代码:github.com/InternScience/MLEvolve
项目页:internscience.github.io/MLEvolve
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。