赞
踩
论文地址:https://arxiv.org/pdf/2401.08500.pdf
源码地址:https://github.com/codium-ai/alphacodium
研究要点包括
总之,AlphaCodium 这种独特的代码生成方法可以提高 LLM 在编程领域的性能。
顺便提一下,AlphaCodium 通过直接使用通用语言模型(如 GPT 和 DeepSeek)而无需额外训练,并应用专用流程,成功地大幅提高了代码生成性能。
这种方法可应用于各种语言模型,而无需额外的数据或计算成本高昂的训练阶段。
最近的大规模语言模型(LLM)在为简单的编程任务生成代码方面表现出色。然而,现实世界中的编程要复杂得多,因此即使是最新的 LLM 也经常无法达到预期效果。
这是因为代码生成任务具有不同于自然语言处理的特殊挑战,自然语言的优化方法无法直接应用。
具体来说,他们面临以下挑战
迄今为止,代码生成一直采用 “自然语言任务优化方法”,随着任务变得越来越复杂,这种方法很容易导致错误。
因此,为了提高更复杂的编码任务的性能,人们研究了专门针对编码任务的优化方法。
CodeContests 数据集的发布使我们能够对从竞技编程平台上收集到的解决更难编程问题的模型和方法进行评估。
在早先的 AlphaCode 研究中,大量的计算是通过微调进行的,这被认为是不切实际的。
CodeChain 还引入了一个新的推理框架。
AlphaCodium 代码生成过程分为两个主要阶段:"预处理阶段 "和 “迭代阶段”。
上图左侧为预处理阶段,右侧为迭代阶段。
**在预处理阶段,对自然语言中指定的问题进行分析和推理。**具体来说,需要执行以下流程
这意味着,预处理阶段使用自然语言处理来分析问题,生成和选择初始候选解决方案代码,并准备测试用例供迭代阶段使用。
下面是一个给定问题陈述的示例,其中包括任务目标、输入、输出、规则和限制等信息。
然后从上述问题陈述中提取信息,并由人工智能以要点形式总结如下
**在迭代阶段,对预处理阶段生成的求解代码进行改进。**具体来说,要重复以下循环。
这意味着,在迭代阶段,代码会被实际执行,并利用测试结果作为反馈,逐步完善解决方案代码。除了现有的测试数据集,测试还利用了人工智能生成的额外测试集,从而实现了高度全面的验证。
在使用 AlphaCodium 生成代码时,以下描述的技术更为有效
这些方法被认为不仅广泛适用于本研究,也适用于使用 LLM 的代码生成任务。
下面将依次介绍每种技术。
在设计提示时要求以 YAML 格式输出,可以系统地表示复杂的任务,大大减少提示工程的工作量。
作者认为,YAML 格式比 JSON 格式更合适,特别是在代码生成任务中。
生成的代码通常包含单引号、双引号和特殊字符,但在 JSON 中很难有效地放置这些字符。另一方面,在 YAML 中,只要遵守适当的缩进,块标量格式就可以正确地表示任意文本和代码。
YAML 格式所需的标记也比 JSON 少,因为它不需要像 JSON 那样的大括号、引号和转义字符。
这将降低成本,缩短推理时间,提高质量。
当要求人们对一个问题进行推理时,将输出结果以项目符号的形式呈现会取得更好的效果。这是因为项目要点能促使法律硕士更深入地理解问题,并改进输出结果。
指导他们生成代码时,不要只生成一个函数,而是将代码详细拆分成多个函数,这样生成的代码质量高,错误少。
通过提供一个额外步骤,要求学习者重新生成生成的输出结果并进行必要的修改,鼓励学习者进行 “批判性推理”。
他们认为,这比直接要求回答 "是或否 "的问题更有效。
就复杂问题直接提问往往会产生错误的答案。因此,采用的流程是从较简单的任务中逐步积累数据。该公司表示,重要的是要避免不可逆转的决定,并为探索和代码迭代留出空间。
由于一些人工智能生成的测试可能是不正确的,因此它们被用作在公共测试集中验证过的测试的锚点,以防止对代码进行不正确的修改。
为了测试所提方法的有效性,我们在竞赛编程问题数据集 CodeContests 上进行了实验。
与直接提示输入法相比,本实验评估了 AlphaCodium 在多大程度上提高了 LLM 代码生成性能。
此外,还将 AlphaCodium 的性能与之前的研究 AlphaCode 和 CodeChain 进行了对比评估。
本研究使用竞赛编程问题数据集CodeContests来评估 AlphaCodium 的性能。
CodeContests 数据集的主要特点是
如上所述,CodeContests 是一个很好的基准,它由现实而具有挑战性的问题组成,侧重于竞赛编程。
如前所述,本研究进行了两项实验
让我们依次来看看它们。
直接提示输入与 AlphaCodium
每个问题生成五个代码,然后比较正确答案的百分比(pass@5)。
结果如下(METHOD 一栏中的 “直接”= 直接提示输入)。
结果表明,在使用 GPT-4 时,AlphaCodium 在验证集上的正确率从 19% 提高到 44%(提高了 2.3 倍)。
其他模型,如 GPT-3.5 和 DeepSeek,也显示出持续和显著的改进。
…先前的研究与 AlphaCodium 的对比
与之前一样,每个问题生成五个代码,然后比较正确答案的百分比(pass@5)。
结果如下
结果表明,在使用相同的 GPT-3.5 模型时,AlphaCodium 的性能比 CodeChain 更好。
顺便提一下,AlphaCode 涉及微调和大量计算,而 AlphaCodium 则使用 LLM,无需训练。不过,我们可以看到,AlphaCodium 仍能实现与 AlphaCode 相同甚至更好的性能,而计算复杂度却不到 AlphaCode 的万分之一。
本文介绍了对 AlphaCodium 的研究,这是一种专门针对竞赛编程问题的新代码生成方法
这是一项重要的研究,表明 LLM 的代码生成性能有了显著提高。
本研究的局限性包括以下三点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。