文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

上海交大发布大模型双语编程评估基准CodeApex,机器真的开始挑战人类写代码了吗?

2024-11-30 09:04

关注

大语言模型 (Large Language Models) 的出现,让模型的编程能力越来越受到研究者的关注。在此态势下,上海交通大学 APEX 实验室推出了 CodeApex-- 一个专注于评估 LLMs 的编程理解和代码生成能力的双语基准数据集。

在评估大语言模型的编程理解能力上,CodeApex 设计了三种类型的选择题:概念理解、常识推理和多跳推理。此外,CodeApex 也利用算法问题和相应的测试用例来评估 LLMs 的代码生成能力。CodeApex 总共评估了 14 个大语言模型在代码任务上的能力。其中 GPT3.5-turbo 表现出最好的编程能力,在这两个任务上分别实现了大约 50% 和 56% 的精度。可以看到,大语言模型在编程任务上仍有很大的改进空间,打造能自己写代码的机器,这样的未来十分可期。

简介

编程理解和代码生成是软件工程中的关键任务,在提高开发人员生产力、增强代码质量和自动化软件开发过程中起着关键作用。然而,由于代码的复杂性和语义多样性,这些任务对于大模型来说仍然具有挑战性。与普通的自然语言处理相比,使用 LLMs 生成代码需要更加强调语法、结构、细节处理和上下文理解,对生成内容的准确度有着极高要求。传统的方法包括基于语法规则的模型、基于模板的模型和基于规则的模型,它们通常依赖于人工设计的规则和启发式算法,这些规则和算法在覆盖范围和准确性方面受到限制。

近年来,随着 CodeBERT 和 GPT3.5 等大规模预训练模型的出现,研究人员开始探索这些模型在编程理解和代码生成任务中的应用。这些模型在训练期间集成了代码生成任务,使它们能够理解并生成代码。然而,由于缺乏标准的、公开可用的、高质量的、多样化的基准数据集,对 LLMs 在代码理解和生成方面的进步进行公平的评估是很困难的。因此,建立一个广泛覆盖代码语义和结构的基准数据集对于促进编程理解和代码生成的研究至关重要。

现有的代码基准数据集在应用于 LLMs 时,存在着适用性和多样性的问题。例如,部分数据集更适用于评估 Bert 类型的、双向语言建模的 LLMs。而现存的多语言代码基准数据集(例如 Human-Eval)包含的问题比较简单、缺乏多样性、只能实现一些基本的功能代码。

为了弥补以上空白,上海交通大学 APEX 数据与知识管理实验室构建了一个新的大模型代码理解与生成的评测基准 --CodeApex。作为一个开创性的双语(英语,汉语)基准数据集,CodeApex 专注于评估 LLMs 的编程理解和代码生成能力。

CodeApex 的整体实验场景如上图所示。

第一个任务编程理解包括 250 道单项选择题,分为概念理解、常识推理和多跳推理。用于测试的题目选自高校的不同课程 (编程、数据结构、算法) 的期末考试题目,大大降低了数据已经在 LLMs 训练语料库中的风险。CodeApex 在 0-shot、2-shot、5-shot 三种场景下测试了 LLMs 的代码理解能力,并同时测试了 Answer-Only 和 Chain-of-Thought 两种模式对于 LLMs 能力的影响。

第二个任务代码生成包括 476 个基于 C++ 的算法问题,涵盖了常见的算法知识点,如二分搜索、深度优先搜索等。CodeApex 给出了问题的描述和实现问题的函数原型,并要求 LLMs 完成函数的主要部分。CodeApex 还提供了 function-only 和 function-with-context 两种场景,它们的区别是:前者只有目标函数的描述,而后者除了目标函数的描述之外,还被提供了目标函数的调用代码、时间空间限制、输入输出描述。

实验结果表明,不同模型在代码相关任务中的表现不同,GPT3.5-turbo 表现出卓越的竞争力和明显的优势。此外,CodeApex 比较了 LLMs 在双语场景下的表现,揭示了不同的结果。总体而言,在 CodeApex 排行榜中,LLMs 的准确性仍有很大的提高空间,这表明 LLMs 在代码相关任务中的潜力尚未被完全开发。

代码理解

要将大语言模型完全集成到实际代码生产场景中,编程理解是必不可少的。编程理解需要从各个方面理解代码的能力,例如对语法的掌握、对代码执行流程的理解以及对执行算法的理解。

CodeApex 从高校期末考试题目中抽取了 250 道选择题作为测试数据,这些测试数据被分成了三类:概念理解、常识推理、多跳推理。

测试模式包括两类:Answer-Only 和 Chain-of-Thought。

实验结果与结论

CodeApex 在代码理解任务上的中英评测结果如以下两表所示。(表现最好的模型加粗显示;表现次好的模型用下划线标注。)

从中可以得到以下结论:

代码生成

训练大语言模型生成准确且可执行的代码是一项具有挑战性的任务。CodeApex 主要评估 LLMs 基于给定描述生成算法的能力,并通过单元测试自动评估生成代码的正确性。

CodeApex 的代码生成任务包括 476 个基于 C++ 的算法问题,涵盖了常见的算法知识点,如二分搜索和图算法等。CodeApex 给出了问题的描述和实现问题的函数原型,并要求 LLMs 完成函数的主要部分。

CodeApex 提供了 Function-only 和 Function-with-context 两种场景。Function-only 场景只提供了目标函数的描述,而 Function-with-context 场景不仅提供了目标函数描述,还提供了目标函数的调用代码、 时间空间限制、输入输出描述。

实验结果与结论

每种语言版本都采用了两种 Prompt 策略 (Function-Only 和 Function-with-Context)。为了和人类代码测试场景对齐,评估指标包括了 AC@1, AC@all 和 AC 率。


各模型的代码生成任务结果如以下两张表格所示。(表现最好:加粗;表现次好:下划线。)

可以得到以下结论:

此外,CodeApex 还提供了每种场景中可编译代码的比例。在将生成函数和主函数连接起来之后,可编译的代码再去通过测试用例进行检查。

可以看到:

结论

CodeApex 作为一个关注 LLMs 编程能力的双语基准,评估了大语言模型的编程理解和代码生成能力。在编程理解上,CodeApex 在三类选择题中评估了不同模型的能力。在代码生成上,CodeApex 利用测试代码用例的通过率来评估模型的能力。对于这两个任务,CodeApex 精心设计了 Prompt 策略,并在不同的场景下进行了比较。CodeApex 在 14 个 LLMs 上进行了实验评估,包括通用 LLMs 和基于代码微调的专用 LLMs 模型。

目前,GPT3.5 在编程能力方面达到了比较良好的水平,在编程理解和代码生成任务上分别实现了大约 50% 和 56% 的精度。CodeApex 显示,大语言模型在编程任务上的潜力尚未被完全开发。我们期待在不久的将来,利用大型语言模型生成代码将彻底改变软件开发领域。随着自然语言处理和机器学习的进步,这些模型在理解和生成代码片段方面将变得更加强大和熟练。开发人员将发现他们在编码工作中拥有了一个前所未有的盟友,因为他们可以依靠这些模型来自动化繁琐的任务,提高他们的生产力,并提高软件质量。

在未来,CodeApex 将发布更多用于测试大语言模型代码能力的测试(例如代码校正),CodeApex 的测试数据也会持续更新,加入更多元的代码问题。同时,CodeApex 榜单也会加入人类实验,将大语言模型的代码能力和人类水平做对比。CodeApex 为大语言模型编程能力的研究提供了基准与参考,将促进大语言模型在代码领域的发展与繁荣。

APEX 实验室简介

上海交大 APEX 数据与知识管理实验室成立于 1996 年,其创办人为 ACM 班总教头俞勇教授。实验室致力于探索将数据有效挖掘和管理并总结出知识的人工智能技术,发表 500 篇以上国际学术论文,并追求在实际场景中的落地应用。27 年来,APEX 实验室在多次世界技术浪潮中成为全球范围内的先锋者,实验室于 2000 年开始研究语义网(现称知识图谱)核心技术,于 2003 年开始研究个性化搜索引擎和推荐系统技术,于 2006 年开始研究迁移学习理论与算法,于 2009 年开始探索深度学习技术并基于 GPU 开发神经网络训练库。产出丰硕的科研和落地成果的同时,APEX 实验室也锻炼出了一支功底扎实的数据科学与机器学习研究团队,走出了包括薛贵荣、张雷、林晨曦、刘光灿、王昊奋、李磊、戴文渊、黎珍辉、陈天奇、张伟楠、杨笛一等人工智能领域杰出校友。

来源:机器之心内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯