ShinkaEvolve:开放且样本高效的程序进化 这是一篇非常精彩且具有前沿性的AI研究论文。这篇题为《ShinkaEvolve: Towards Open-Ended And Sample-Efficient Program Evolution》走向开放式且样本高效的程序进化的论文由 Sakana AI 团队Robert Tjarko Lange 等人撰写。论文的核心贡献是提出了一个开源、极高样本效率的LLM代码进化框架——ShinkaEvolve“Shinka”在日语中意为“进化”用于自动化的科学发现和算法优化。以下是对该论文的详细解读和总结1. 研究背景与痛点 (Motivation)近年来利用大语言模型LLMs作为“变异算子Mutation Operators”来进行代码进化的研究非常火热例如谷歌的 AlphaCode, AlphaEvolve 等。系统通过不断让LLM修改代码、测试运行、保留高分代码从而自动发现新算法。痛点样本效率极低现有方法通常需要评估成千上万次甚至数百万次LLM生成的代码才能找到有效解计算成本极其昂贵。闭源限制目前最先进的系统如 AlphaEvolve大多数是闭源的阻碍了社区的复现和二次开发。2. 核心创新与方法论 (Methodology)为了解决样本效率低下的问题ShinkaEvolve 引入了三大核心算法创新创新一平衡探索与利用的父代采样策略 (Parent Sampling Strategy)传统的进化算法要么盲目随机选效率低要么只选当前分最高的爬山算法容易陷入局部最优。ShinkaEvolve 引入了加权采样Weighted Sampling结合了代码的适应度分数高低和新颖性该代码产生后代的次数。同时采用“岛屿模型Island Model”并行进化偶尔在岛屿间迁移代码以保持种群的多样性。创新二基于代码新颖性的拒绝采样 (Novelty Rejection Sampling)LLM 经常会生成与之前完全相同或逻辑上几乎无区别的代码白白浪费评估算力。ShinkaEvolve 在评估前会先用 Embedding 模型将代码向量化计算与库中已有代码的余弦相似度。如果相似度 0.95则调用另一个 LLM 作为“新颖性裁判Novelty Judge”来判断这段代码是否有实质性创新。如果没有直接拒绝并重新生成。创新三基于多臂老虎机的自适应 LLM 集成 (Bandit-based LLM Ensemble)不同的 LLM如 GPT-4, Claude, Gemini在不同任务甚至不同进化阶段的表现不同。系统使用 UCB1多臂老虎机算法根据每个 LLM 提出代码的“相对分数提升”动态调整调用该 LLM 的概率。谁最近提出的代码好就更多地调用谁。此外系统还引入了Meta-Scratchpad元草稿本定期总结成功的优化经验附加在Prompt中指导后续的生成。ShinkaEvolve 的工作流水线。系统维护着一个“已评估程序档案库Archive”。它从中挑选出好的代码作为“父代Parent”让 LLM大语言模型生成新的代码。 这里强调了“拒绝采样Rejection-samples”这一步在把代码真正送去运行评估之前系统会先过滤掉那些缺乏新意、与之前重复的代码不浪费算力。最后对通过审核的代码进行“适应度评估Evaluates their fitness”也就是测测新代码能拿多少分并把结果存回档案库形成闭环。ShinkaEvolve 程序的“新颖性拒绝采样”机制ShinkaEvolve嵌入可变代码片段并计算其与存档中已有代码的相似度若最高相似度得分超过阈值则调用另一个大语言模型LLM来评估该程序是否具有实质性的新颖性。相关工作-LLM4ADLLM4AD来自LLM4AD: A Platform for Algorithm Design with Large Language Model是一个“集成工作台/测试平台”而 ShinkaEvolve 是一种“全新的、极度省算力的高效进化算法”。LLM4AD 是一个统一的 Python 开源平台Platform和代码库。它的主要目的是解决该领域缺乏统一代码库、复现困难、无法公平比较不同算法等“基础设施”问题。注意到的 population_0 - evaluate - population_1 … - population_n在学术上被称为迭代搜索Iterative Search或演化搜索Evolutionary Search。LLM4AD 正是利用这个流程来不断进化和改进代码的它的具体步骤是初代种群 (population_0) 系统一开始只有一个人写的简单、基础的代码模板或者叫“启发式算法”。LLM 变异 (Generate new algorithms) LLM4AD 将这些基础代码喂给大语言模型通过 Prompt 告诉 LLM“请基于这段代码想出新的点子或者修改其中的逻辑生成一批新的代码。”评估打分 (evaluate) 将 LLM 写出的新代码放进安全的沙盒Sandbox里在测试集上跑一遍得出分数Fitness Score。优胜劣汰 (Survive into population_1) 淘汰掉那些跑不通、报错、或者分数低的代码。把得分高的、优秀的算法保留下来组成新一代的种群 population_1。循环往复 把 population_1 再喂给 LLM 继续修改……直到循环 n 代最终输出极其强悍的算法。所以LLM4AD 绝对是一个不断优化、改进算法的系统。 它内置的 EoH (Evolution of Heuristics) 和 FunSearch 算法本质上跑的都是这套流程。大家都在做 population_0 到 population_n 的循环但 LLM4AD 代表的是经典的进化流水线而 ShinkaEvolve 在这条流水线上加了几个极度抠门省算力的超级外挂父代采样避免局部最优多LLM联合择优多臂老虎机评估前进行拒绝采样embedding查重过滤。3. 四大核心实验与成果 (Experiments Results)论文在四个截然不同的计算问题领域对 ShinkaEvolve 进行了评估均取得了卓越的成果(1) 圆形堆积优化 (Circle Packing) - 数学优化任务将26个圆放入一个单位正方形中最大化这些圆的半径总和且不能重叠。成果仅用 150 次采样比 AlphaEvolve 少了几个数量级就打破了现有记录发现了新的 SOTAState-of-the-Art解。发现的算法发现了一个高度复杂的混合算法结构化的黄金角螺旋初始化 结合模拟退火全局探索与 SLSQP 梯度优化局部微调 智能扰动机制。(2) AIME 数学推理 Agent 架构设计 - Agentic Design任务在最多调用 10 次 LLM 的限制下设计一个能解决 AIME 2024 竞赛级数学题的 Agent 工作流代码。成果进化出了一个高效的 3 阶段架构3 个具有不同“人设”的专家独立解题 - 严厉的同行评审Peer Review揪出逻辑漏洞 - 主编角色进行综合得出最终答案。该架构仅用 7 次 LLM 调用性能全面超越了人类设计的“多数投票Majority Voting”基线且泛化能力极强。(3) 竞技编程 (ALE-Bench) - 组合优化任务在 AtCoder 启发式编程比赛数据集上优化基础的 LLM 生成代码。成果在 10 个任务上平均提升了 2.3% 的分数。在ahc039任务上ShinkaEvolve 发现的代码如果去参赛可以获得排行榜第 2 名的好成绩。它成功引入了高级的缓存机制和定向局部搜索操作。(4) 混合专家模型 (MoE) 负载均衡损失函数设计 - LLM 训练设计任务MoE 架构如 GPT-4, Qwen 等使用需要 Load Balancing Loss (LBL) 来防止 token 全挤到少数专家那里导致其他专家“饿死”。任务是发现一种更好的 LBL 函数。成果在小型模型上经过 30 次迭代进化出了一个新的 LBL 正则化项。发现的公式在经典的 Global-batch LBL 基础上新增了一个自适应惩罚项。当路由熵较低即路由开始集中时该惩罚项会动态激活强制将 token 分配给使用率低于阈值的专家。在 2.7B 的大型 MoE 验证中该损失函数在 Perplexity 和多项下游任务上均优于现有的标准基线。4. 消融实验证明 (Ablations)论文通过控制变量法验证了三大创新的必要性父代采样Weighted加权采样表现远好于 Hill Climbing爬山法过早停滞和 Uniform随机收敛极差。LLM 集成Bandit动态分配老虎机 Fixed Ensemble固定概率集成 单一模型。拒绝采样结合 Embedding 和 LLM-Judge 的拒绝采样极大地提升了样本效率避免了原地踏步。5. 总结与意义 (Conclusion Impact)极其高效ShinkaEvolve 将自动化科学发现的门槛从“大厂专属的算力怪兽”降低到了“普通研究机构也能承担”的水平样本效率提升了几个数量级。完全开源该框架在 Apache 2.0 许可证下开源极大地促进了“开放式科学发现Open-ended scientific discovery”的民主化。展现了 LLM 的创造力从底层的数学公式设计MoE Loss到顶层的 Agent 架构组装再到传统算法优化该框架展现了极其广泛的通用性。一句话评价这是一篇工程落地极强、且极具开源精神的佳作。它用一套精巧的“探索-过滤-反馈”机制榨干了 LLM 变异代码的每一滴潜力为未来的自动化 AI 科学家 (AI Scientist) 指明了高效探索的方向。