部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >爆火!CodiumAI | 提出LLM代码生成新方法: AlphaCodium,可让GPT-4提升2.3倍!

爆火!CodiumAI | 提出LLM代码生成新方法: AlphaCodium,可让GPT-4提升2.3倍!

作者头像
ShuYini
发布2024-01-25 11:30:05
发布2024-01-25 11:30:05
7340
举报

引言

代码生成问题与常见的自然语言处理问题不同,代码生成需要匹配目标语言的确切语法,关注代码规范的众多细节,所以适用于常见自然语言生成的优化方法和技巧并不一定对代码生成产生同样好的效果。

为此CodiumAI提出了一种LLM生成代码的新方法:AlphaCodium,该方法让GPT4准确率(pass@5)从19%提高到44%,火爆了AI社区,目前GitHub一周之内达到了1.5K Star

https://arxiv.org/pdf/2401.08500v1.pdf

背景介绍

由于稀疏的奖励信号,代码生成任务需要在巨大结构化空间中进行搜索。对于同一个问题来说,正确的解决方案可能完全不同,那么判断解决方案是否有用,对于我们来说是一项艰巨的挑战 。单字符的改变可以完全改变整个解决方案的行为。所以由于代码生成任务的独特性,针对自然语言任务优化的常见提示技术在应用于代码生成时可能不会那么有效。

最近基于Transformer的大型语言模型已经可以生成解决简单编程任务的代码。然而,实际应用过程中的代码问题在本质上是不同的--它们更加复杂,并且通过很长的自然语言任务描述(即规范)来定义,其中包含解决方案代码必须解决的多个细节和规则

CodeContests数据集是由Google的DeepMind推出的一个具有挑战性的代码生成数据集,其中包括从Codeforces等竞争性编程平台精选出的问题。该数据集包含1万个代码问题,可用于训练LLMs,并包括验证集和测试集,用于评估LLMs解决具有挑战性的代码问题的能力。

基于CodeContests 数据集,DeepMind 开发的代码生成系统AlphaCode。首先,AlphaCode生成大量可能的解决方案(最多 1M),然后对这些解决方案进行处理和聚类,并选择少量方案进行提交。虽然 AlphaCode 的结果惊人的好,但它需要针对代码任务进行模型微调,并且需要大量的计算资源,这使得它难以在实际应用场景落地。CodeChain是另一项解决竞争性编程任务的工作,它引入了一种新颖的推理框架,通过一系列基于子模块的自我修订来改进LLM中的代码生成。

AlphaCodium

基于以上背景,本文提出了AlphaCodium是一种以代码为导向的流程,围绕一个迭代过程展开,其中生成的代码会被反复运行和修复,以满足输入-输出测试。AlphaCodium流程的主要包含两个关键要素:

  • (a) 生成额外的数据,例如问题反思和测试推理,以帮助迭代过程;
  • (b) 通过额外的人工智能生成的测试来丰富公共测试。

AlphaCodium具体流程如上图所示,分为两个主要阶段:一个是预处理阶段,在这个阶段中,问题会以自然语言进行推理;另一个是迭代代码生成阶段,在这个阶段中,会生成、运行和修复代码解决方案,以满足公共和人工智能生成的测试。

设计 AlphaCodium 流程时的一个关键发现,即生成额外的有用测试比生成正确的代码解决方案更容易。添加具体测试主要需要理解问题、提升洞察力以及实现基本逻辑推理,并且生成附加测试时无需完全“解决”问题。

「AlphaCodium流程还利用了面向代码的设计概念、技巧和最佳实践」,例如:

  • (1)「YAML结构化输出」 使用YAML格式的结构化输出可以使复杂答案以直观、类似代码的方式呈现。这可以应用于其他代码生成任务,简化流程并获得涉及多个阶段的复杂答案;
  • (2) 「符号分析进行语义推理」 通过项目符号分析鼓励语义推理,有助于理解自然语言中的问题并识别代码生成任务的关键要求。这种方法可以应用于其他任务,确保全面理解问题;
  • (3)「生成模块化代码」 生成模块化代码的方法对其他代码生成任务也有益处,因为它可以使代码库更有组织性和可管理性;
  • (4)「双重验证的软决策」 采用双重验证的软决策的概念可以应用于其他代码生成任务,避免不可逆的决策,为不同可能的解决方案留下探索和代码迭代的空间。这有助于确保生成的代码的健壮性;
  • (5) 「鼓励探索和测试锚点」;鼓励探索的理念以及使用测试锚点来防止错误修复的代码可以应用于其他代码生成任务,确保生成解决方案的可靠性

与精心设计的单一提示相比,AlphaCodium 的流程显著提高了LLM在代码生成问题上的表现。对于开源模型DeepSeek和闭源模型GPT 都是如此。例如,对于验证集上的 GPT-4,pass@5 准确率从19%提高到 44%。AlphaCodium 的性能也优于以前的作品,同时计算预算显着减少,并且比 AlphaCode 取得了更好的结果,例如,LLM 调用减少了四个数量级。

实验结果

如下表所示,将 AlphaCodium 结果与通过单个精心设计的直接提示获得的结果进行了比较。「使用的指标是pass@k」,定义为针对每个问题使用 k 个生成的解决方案解决的问题的百分比。可以发现AlphaCodium显着地提高了LLM在代码生成问题上的表现。「对于验证集上的GPT-4,pass@5分数从19%提高到44%」

如下表所示,将 AlphaCodium 结果与文献中的其他方法进行了比较。可以看出,当使用相同模型(GPT-3.5)和相同指标(pass@5)将 AlphaCodium 与 CodeChain 进行比较时,「AlphaCodium 始终表现更好」

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AINLPer 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 背景介绍
  • AlphaCodium
  • 实验结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档