Paper2Code:自动从机器学习科学论文生成代码

256 阅读8分钟

Paper2Code:自动从机器学习科学论文生成代码

引言

可重复性是科学进步的基石,但在机器学习研究中,存在一个明显的差距:许多已发表的论文缺乏相应的代码实现。这阻碍了结果的验证,并减缓了科学的进步。为了应对这一挑战,KAIST 和 DeepAuto.ai 的研究人员开发了 PaperCoder,这是一个自动框架,可以直接从机器学习研究论文中生成可执行的代码库。

PaperCoder 框架概述

PaperCoder 框架概述

图 1:PaperCoder 框架的三阶段方法,展示了它如何通过规划、分析和编码阶段将研究论文转换为代码库。

与以往依赖现有代码片段或 API 的方法不同,PaperCoder 旨在通过利用大型语言模型(LLM)在多代理系统中来创建完整的、可执行的代码库。该系统通过将其分解为三个结构化的阶段来模拟人类的软件开发过程:规划、分析和生成。

机器学习中的可重复性危机

机器学习社区面临着重大的可重复性挑战。对近期顶级机器学习会议的分析表明,只有一小部分被接受的论文提供了相应的代码:

机器学习会议中的代码可用性

机器学习会议中的代码可用性

图 2:主要机器学习会议(ICLR、NeurIPS 和 ICML 2024)上公开发布代码的论文百分比。

如图 2 所示,在 ICLR 2024 上接受的论文中只有 21.2%,在 NeurIPS 2024 上接受的论文中只有 10.9%,在 ICML 2024 上接受的论文中只有 31.6% 提供了公开发布的代码。 这种缺乏实现细节使得研究人员难以验证结果并在现有工作的基础上进行构建,从而减缓了该领域的科学进步。

PaperCoder 框架

PaperCoder 通过将研究库生成形式化为软件开发问题来解决可重复性挑战。该框架可以表示为 M(R) = C,其中:

  • • R 是包含方法和算法的研究论文
  • • C 是生成的代码库
  • • M 是执行转换的基于 LLM 的模型

该系统采用三阶段方法,该方法反映了人类的软件开发过程:

  1. 1. 规划阶段:创建高级路线图,包括架构设计(类图和序列图)、文件依赖关系识别和配置文件生成。
  2. 2. 分析阶段:对每个文件和函数进行细粒度的解释,分析输入、输出、交互和算法约束。
  3. 3. 生成阶段:根据规划期间确定的执行顺序合成整个代码库。

每个阶段都使用专门的 LLM 代理来实现,这些代理协同工作以完成任务,这使得 PaperCoder 成为一个复杂的多代理系统。

技术实现

PaperCoder 的详细实现揭示了它如何克服从论文中生成代码的朴素方法的局限性:

PaperCoder 详细实现

PaperCoder 详细实现

图 3:PaperCoder 实现的详细视图,展示了与朴素方法的对比,并通过具体示例说明了三阶段过程。

如图 3 所示,一种朴素的方法(左侧)直接将论文输入 LLM,通常会生成包含严重错误的代码,例如缺少位置编码或优化器实现。相比之下,PaperCoder 的结构化方法包括:

  1. 1. 规划
    • • 总体计划制定
    • • 使用 UML 图进行架构设计
    • • 文件依赖关系的逻辑设计
    • • 配置文件创建
  2. 2. 分析
    • • 对每个文件进行细粒度的解释
    • • 详细检查函数及其相互依赖关系
    • • 识别关键组件,例如位置编码机制
  3. 3. 编码
    • • 基于分析的系统代码生成
    • • 实现先前阶段中确定的所有必要组件

这种结构化方法确保论文中的关键细节,例如位置编码实现或具有特定参数的 Adam 优化器,能够正确地合并到生成的代码中。

评估方法

PaperCoder 的有效性通过定量指标和人工评估进行评估。评估包括:

  1. 1. 基于参考的评估:将生成的代码与现有的参考实现进行比较(如果可用)。
  2. 2. 无参考的评估:在没有参考实现的情况下评估生成代码的质量。
  3. 3. 人工评估:由原始论文作者或领域专家评估生成代码的正确性和完整性。

基于参考和无参考评估之间的相关性如图 4 所示:

评估方法之间的相关性

评估方法之间的相关性

图 4:基于参考和无参考评估分数之间的强相关性 (r = 0.79),表明即使没有现有代码,也可以可靠地评估模型。

这种强相关性 (r = 0.79) 确保即使不存在参考实现,也可以可靠地评估 PaperCoder,这在没有已发布代码的论文中通常是这种情况。

结果与性能

PaperCoder 在基线方法上表现出显著的改进,生成了更有效和更忠实的代码库。关键性能亮点包括:

  1. 1. 优于现有基线:PaperCoder 的性能优于软件开发工作基线,如 ChatDev 和 MetaGPT,表明其专门设计的有效性。
  2. 2. 组件贡献:框架的每个组件(规划、分析和生成)都有助于整体性能提升,这已通过消融研究证明。
  3. 3. 高可执行性:生成的代码库是可执行的,在发生执行错误的情况下,通常只需要进行少量修改(平均占总代码行的 0.48%)。
  4. 4. 强大的复制能力:PaperCoder 在 PaperBench Code-Dev 基准测试中获得了很高的复制分数,表明它能够有效地捕捉研究论文的基本组成部分。

该框架在两个基准上进行了评估:

  • • Paper2Code 基准(由作者创建)
  • • 现有的 PaperBench 基准

在这两种情况下,PaperCoder 都表现出优于基线方法的性能。

人工评估

人工评估对于评估生成代码库的实际效用至关重要。作者与专家(包括原始论文作者)进行了评估,以评估生成代码的质量。结果显示:

  • • PaperCoder 生成的存储库中有 77% 被人类评估者评为最佳
  • • 85% 的人类评审员报告说生成的存储库很有帮助

图 5 展示了一个人工评估表格的示例:

人工评估表格

人工评估表格

图 5:用于评估生成代码仓库质量的样本人工评估表格。

评估包括对生成代码在多大程度上实现了原始论文中各种组件的详细评估,包括数据处理、方法和评估程序。这种以人为中心的评估为 PaperCoder 在真实研究场景中的实际效用提供了强有力的证据。

局限性和未来工作

尽管 PaperCoder 表现出色,但它仍存在一些局限性,这些局限性指出了未来研究的方向:

  1. 1. 范围限制:目前的实现主要集中在机器学习论文上。将框架扩展到其他科学领域将扩大其影响力。
  2. 2. 评估局限性:主要的评估依赖于基于模型的指标。纳入更多基于自动执行的评估,包括故障定位和调试,将提高实用性。
  3. 3. 复杂算法实现:对于一些高度复杂的算法或新的数学公式,该系统可能仍然面临挑战。
  4. 4. 依赖性处理:管理外部依赖性并确保跨不同软件环境的兼容性仍然具有挑战性。

未来的工作可以通过以下方式解决这些局限性:

  • • 扩展框架以涵盖更广泛的科学学科
  • • 开发更复杂的基于执行的评估指标
  • • 整合自动化调试和纠错功能
  • • 增强依赖性管理和环境兼容性

结论

Paper2Code 代表了从科学论文中自动生成代码的重大进步,解决了机器学习研究可重复性中的一个关键挑战。通过在结构化的多代理框架中利用 LLM,模拟人类软件开发流程,PaperCoder 可以生成可执行的代码仓库,忠实地实现研究论文中描述的方法。

该框架的三阶段方法——规划、分析和生成——确保正确识别和实施关键组件,克服了幼稚的代码生成方法的局限性。定量评估和人工评估都证明了 PaperCoder 的有效性和实用性。

通过自动化从研究论文中生成代码,PaperCoder 有潜力通过提高可重复性来加速科学进步,使研究人员能够更轻松地验证和建立在现有工作的基础上。 这有助于在机器学习领域以及潜在的其他科学领域中建立一个更加透明和高效的研究生态系统。

.preview-wrapper pre::before { position: absolute; top: 0; right: 0; color: #ccc; text-align: center; font-size: 0.8em; padding: 5px 10px 0; line-height: 15px; height: 15px; font-weight: 600; } .hljs.code__pre > .mac-sign { display: flex; } .code__pre { padding: 0 !important; } .hljs.code__pre code { display: -webkit-box; padding: 0.5em 1em 1em; overflow-x: auto; text-indent: 0; }

本文使用 文章同步助手 同步