Enhancing Genetic Improvement Mutations Using Large Language Models

📄 arXiv: 2310.19813v1 📥 PDF

作者: Alexander E. I. Brownlee, James Callan, Karine Even-Mendoza, Alina Geiger, Carol Hanna, Justyna Petke, Federica Sarro, Dominik Sobania

分类: cs.SE, cs.AI, cs.LG, cs.NE

发布日期: 2023-10-18

备注: Accepted for publication at the Symposium on Search-Based Software Engineering (SSBSE) 2023

期刊: Arcaini, P., Yue, T., Fredericks, E.M. (eds) Search-Based Software Engineering. SSBSE 2023. Lecture Notes in Computer Science, vol 14415. Springer, Cham

DOI: 10.1007/978-3-031-48796-5_13


💡 一句话要点

利用大型语言模型增强遗传改进变异以提升搜索效率

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 遗传改进 大型语言模型 程序修复 代码优化 软件工程

📋 核心要点

  1. 现有的遗传改进方法在搜索效率和补丁多样性方面存在不足,特别是在利用大型语言模型时。
  2. 论文提出将大型语言模型作为变异操作符,扩展现有的遗传改进工具,以生成更有效的代码编辑。
  3. 实验结果显示,使用LLM生成的补丁通过单元测试的比例比标准方法高出75%,但补丁的多样性较低。

📝 摘要(中文)

大型语言模型(LLMs)在软件工程任务中取得了成功,尤其是在程序修复方面。然而,它们在基于搜索的技术如遗传改进(GI)中的应用仍然较少探索。本文评估了LLMs作为GI的变异操作符,以改善搜索过程。我们扩展了Gin Java GI工具包,调用OpenAI的API为JCodec工具生成编辑。通过随机抽样5种不同的编辑类型,我们发现使用LLM生成的补丁通过单元测试的数量比标准插入编辑高出75%。然而,使用LLMs找到的补丁通常在多样性上较低。尽管LLM增强的GI发现了许多改进补丁,但最佳改进补丁仍由标准GI找到。

🔬 方法详解

问题定义:本文旨在解决遗传改进(GI)方法在搜索效率和补丁多样性方面的不足,尤其是在应用大型语言模型时的挑战。现有方法未能充分利用LLMs的潜力,导致生成的补丁质量和多样性不理想。

核心思路:论文的核心思路是将大型语言模型作为变异操作符,利用其生成能力来改善遗传改进的搜索过程。通过调用OpenAI的API,生成多种编辑类型,以期提高补丁的有效性和通过率。

技术框架:整体架构包括扩展Gin Java GI工具包,集成OpenAI API,生成针对JCodec工具的编辑。实验中随机抽样5种不同的编辑类型,评估其在单元测试中的表现。

关键创新:最重要的技术创新在于将LLMs引入遗传改进的变异操作中,显著提高了补丁通过单元测试的比例。这一方法与传统的插入编辑相比,展示了新的可能性和改进方向。

关键设计:在实验中,设置了多种编辑类型,并通过随机抽样生成补丁。关键参数包括编辑类型的选择和生成策略,确保生成的补丁能够覆盖不同的代码修改场景。

📊 实验亮点

实验结果表明,使用LLM生成的补丁通过单元测试的比例比标准插入编辑高出75%。尽管LLM增强的GI发现了许多有效补丁,但最佳改进补丁仍由传统GI方法找到,显示出不同方法在补丁质量和多样性上的差异。

🎯 应用场景

该研究的潜在应用领域包括自动化程序修复、代码优化和软件工程中的智能辅助工具。通过提升遗传改进的效率,能够帮助开发者更快速地修复和优化代码,降低维护成本,提升软件质量。未来,随着LLMs技术的进步,可能会在更广泛的编程任务中发挥重要作用。

📄 摘要(原文)

Large language models (LLMs) have been successfully applied to software engineering tasks, including program repair. However, their application in search-based techniques such as Genetic Improvement (GI) is still largely unexplored. In this paper, we evaluate the use of LLMs as mutation operators for GI to improve the search process. We expand the Gin Java GI toolkit to call OpenAI's API to generate edits for the JCodec tool. We randomly sample the space of edits using 5 different edit types. We find that the number of patches passing unit tests is up to 75% higher with LLM-based edits than with standard Insert edits. Further, we observe that the patches found with LLMs are generally less diverse compared to standard edits. We ran GI with local search to find runtime improvements. Although many improving patches are found by LLM-enhanced GI, the best improving patch was found by standard GI.