一个技巧,让ChatGPT学会复杂编程,编程水平逼近人类程序员!

推荐使用ChatGPT4.0中文网,国内可直接访问:www.chatgp4.com

 

随着 AIGC 技术的飞速发展,ChatGPT 等聊天机器人正被广泛应用于生活和工作中的各个场景。想象一下,当你在编写代码时遇到瓶颈,或者无法解决 Bug 时,这种基于大型语言模型(LLM)系统可能会凭借丰富的训练数据和强大的推理能力,在一些简单的代码生成任务中提供灵感。然而,面对更复杂的代码生成任务(如竞赛级问题),仍然存在一定的挑战。

背景介绍

程序综合

程序综合(Program Synthesis)在自动软件发现、程序分析与验证以及人机交互等领域具有广泛应用,是一种旨在通过自动合成完整功能程序来解决开发者提出问题的技术。传统方法通常在由底层编程语言定义的搜索空间中,寻找满足特定任务约束条件的程序。然而,这些方法面临着搜索空间复杂和形式规约不足等挑战。基于深度学习的程序综合能够从非正式规范(如自然语言、部分代码、输入-输出示例或伪代码)中生成程序。目前,深度学习方法主要用于生成特定领域内的短程序或通用编程语言中的单行代码。

竞赛级代码生成

竞赛级代码生成(Competition-level code generation)指生成具备竞赛级水平的复杂编程解决方案的过程。这要求模型具备更高的推理和抽象能力,能够理解和处理更为复杂的任务描述、更长的代码以及更多的上下文信息。研究表明,LLM在零样本设置中生成代码比针对特定数据集进行微调具有更好的泛化能力。此外,关于GPT-4的调查表明,使用该模型解决竞赛级编程问题的通过率仅在个位数。

论文速览

BRAINSTORM 框架是一种用于竞赛级代码生成的方法,其核心是生成多样化的思路并从中选择高质量的方案,从而有效利用LLM的推理能力。该框架通过设计多种类型的指令,并将这些指令与问题描述一起输入到LLM中,以生成多种思路。

如图所示,BRAINSTORM 框架包括以下几个步骤:

  1. 头脑风暴(Brainstorming):框架的核心步骤,旨在生成各种可能有助于解决给定问题的思路。为此,作者设计了多种类型的指令,并与问题描述一起输入LLM中。
  2. 思路选择(Idea Selection):在生成大量思路后,需要对其进行筛选和排序。具体来说,使用评估函数来评估每个思路的质量,并选择质量最高的思路作为最终输出。
  3. 代码生成(Code Generation):在选择最佳思路后,将其转换为代码。作者使用了代码生成器,将思路转化为可执行代码。BRAINSTORM框架可以在零样本情况下进行工作,无需任何示例即可高效生成代码。

实验

文中进行了多项实验,结果总结如下:

在APPS和CodeContests基准测试中,作者使用BRAINSTORM框架生成代码,并与其他方法进行比较。结果表明,该框架在这两个基准测试中显著提升了LLM的性能。在处理涉及概率、最短路径和图的问题上,方法有显著相对改善,并且在各种评级下始终优于ChatGPT和COT。

作者还在真实编程竞赛中应用BRAINSTORM框架进行代码生成,实验结果表明,该框架能够使ChatGPT的算法推理能力与人类程序员相当。这些结果表明,采用BRAINSTORM框架时,LLM生成的代码质量更高,更接近人类程序员创作的代码。

小结

本文介绍了一种名为BRAINSTORM的新框架,其亮点在于:

  • 提出竞赛级别代码生成框架BRAINSTORM:通过生成多样化的思路并从中选择高质量思路,实现高效代码生成任务。
  • 利用LLM的算法推理能力:通过设计多种类型的指令生成多样化思路,并使用评估函数和代码生成器将思路转化为可执行代码。
  • 零样本学习:此框架可以在零样本情况下工作,无需示例也能实现高效的代码生成。

随着这一领域的进一步探索与发展,我们相信生成更精准、高质量的代码将成为必然趋势。当越来越多研究者关注这一方向时,我们离利用AI解放双手、自动生成代码的美好未来将更近一步。

滚动至顶部