← 最新论文
🤖 AI

Loreley: Repository-Scale Program Evolution with Quality-Diversity Search

本文介绍了 Loreley,这是一个利用质量-多样性(Quality-Diversity)搜索来保留多样化仓库状态以供未来采样的仓库级程序演化系统,该系统在初步测试中成功激活了阶梯式机制(stepping-stone mechanisms),但在一项包含 48 个任务的受控实验中,未能证明其相对于顺序冠军编辑(sequential champion editing)或独立根提案(independent root proposals)具有统计学意义上的性能优势。

原作者: Mohan Chen

发布于 2026-08-21
📖 1 分钟阅读☕ 轻松阅读

原作者: Mohan Chen

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在现代软件那广阔而复杂的景观中,性能的提升很少表现为全新的发明。相反,它们往往是对现有代码库的细微调整,其中单次改动必须完美契合数千行既有的逻辑、严格的构建规则以及公共接口。寻找这些改进非常困难,因为可能的改动空间极其巨大,且大多数尝试都会导致构建失败或破坏系统。为了应对这一挑战,研究人员开发了能够编写并测试代码的自动化智能体。这些智能体就像探险家一样运作,但它们决定下一步走向何处的策略至关重要。有些策略完全专注于目前发现的最优路径,像登山者攀登单条山脊一样,在上面不断堆叠改动。另一些策略则尝试同时探索许多不同的路径,但每次新尝试都从最开始重新出发,丢弃之前所有尝试所取得的进展。第三种方法被称为质量多样性搜索(quality-diversity search),它试图维护一张包含许多成功状态的地图,保留那些未必是当前“最优”但可能在未来导向更好结果的变体。

本文介绍了一个名为 LORELEY 的系统,它将这种质量多样性方法应用于整个软件仓库的演化。研究人员想要了解,通过保留一个多样化的过去代码状态存档,并偶尔从中汲取灵感,是否真的能比单纯在当前最优版本上堆叠改动,或者每次都从头开始,产生更好的结果。他们通过在一项受控实验中使用 Zstandard 压缩库(这是一个用于缩小数据文件体积的关键软件组件)进行测试,来验证这一点。目标是观察这种更复杂、具备丰富记忆的方法,能否在固定的尝试预算内找到一个更优的最终代码版本。

该实验设计严谨且匹配细致,以确保公平比较。研究人员在相同的 Zstandard 代码冻结起点上运行了三种不同的搜索策略。第一种策略被称为“顺序冠军”(Sequential Champion),它扮演着一名执着的登山者:它选取目前发现的最佳版本并要求智能体对其进行进一步改进,从而丢弃所有其他分支。第二种策略是“独立根源”(Independent Root),它像是一群每次都从大本营出发的徒步旅行者;每一次尝试都始于原始代码,忽略他人发现的任何改进。第三种策略,即 LORELEY,维护了一个包含许多有效代码状态的存档。当它需要生成新想法时,它可以从这个存档中选择一个基准,并借鉴其他存储状态的灵感,希望通过将一个不太明显的起点与新鲜的想法相结合,从而实现突破。

研究过程为一个特定的预算,即为每种策略分配 48 次尝试或“作业”(jobs)。在自动化编程领域,一个“作业”是一个完整的循环:系统选择一个起始代码版本,智能体在隔离环境中编写改动,然后由外部测试器进行构建并测量结果。研究人员使用另一组智能体在搜索过程中从未见过的测试数据,来衡量每种策略找到的最佳代码的最终性能。这种“留出测试”(holdout test)确保了结果是真正的改进,而非仅仅是在训练数据上表现良好的运气之举。

结果显示,采取“顺序冠军”策略——即简单地在最佳版本上持续构建——在 48 次作业后观察到的平均值和中位数性能最高。尽管 LORELEY 系统拥有复杂的存档并具备回顾旧想法的能力,但其最终表现略逊于这位“冠军”。“独立根源”策略由于从未记住过去的成功,表现最差。然而,数据并未建立起质量多样性(QD)方法相对于两种控制组的统计学优势;置信区间包含了零,这意味着实验无法证实 QD 是否能比更简单的策略提升最终的留出性能,也无法证实两者的等效性。虽然 LORELEY 确实成功地在其存档中保留了一系列多样化的代码状态,并偶尔从中采样,但这种行为并未转化为统计学上证明更优的最终结果。该系统并未证明,在这一特定任务中,维护一张多路径地图是否确实优于专注于单条最优路径。

然而,对于这种复杂方法而言,故事并非全然是失败的。研究人员观察到,LORELEY 系统确实执行了其预期的机制。它成功保留了并非当前最优的代码状态,并且确实在稍后将其作为基准或灵感来源进行了采样。在七次测试运行中有四次,LORELEY 系统的最终获胜代码,其祖先在被加入存档时并非当时的领先者。这证明了系统能够保留并重新审视“垫脚石”——即那些本身可能并不完美,但能导向全新方向的中间想法。然而,在这次特定的实验中,受限于有限的尝试次数,这些垫脚石并未能在统计学意义上帮助系统击败更直接、更简单的策略。

论文还回顾了该系统在早期较小规模活动中的表现,包括在处理文本的 Python 库以及另一个版本的压缩工具上的应用。在这些案例中,系统成功实现了显著的改进,例如在一个库中实现了近 7% 的加速,在另一个库中实现了 25% 的增益。这些成功表明,在适当条件下,该系统能够找到复杂的多文件改进。但与更简单策略的受控比较表明,至少对于具有 48 次作业预算的 Zstandard 任务而言,维护多样化存档的额外复杂性并未提供统计学上确立的优势。

最终,这项研究为自动化软件演化提供了一个细致入微的观点。它证实了一个系统可以被设计成记忆并重用各种过去的各种状态,并且能够成功地在复杂代码库中寻找改进。但它也表明,对于某些任务且在特定的时间限制内,最有效的策略可能是最直接的那一个:找到你拥有的最好的东西,并不断完善它,而不是试图管理一张庞杂的可能性地图。研究人员并未发现这种复杂方法是无效的,但他们确实发现,在这次特定的比赛中,它并未能以统计显著性取胜。结果仍然取决于所使用的工具和约束条件,这也留下了悬念:是否更长的搜索过程或不同类型的任务,最终会更青睐这种具备多样性、拥有丰富记忆的方法。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →