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

news2024/11/28 7:49:12

夕小瑶科技说 原创
作者 | 智商掉了一地、Python

随着 AIGC 技术迈出了一大步,ChatGPT 等聊天机器人被频繁地使用在生活和工作中的各个场景。想象一下,当你写代码陷入没有头绪的境地或者无法解决 Bug 时,这种基于大型语言模型(LLM)的系统由于有丰富的训练数据与强大的推理能力,可能会在一些简单的代码生成任务上有着出色表现,为你提供灵感。然而,在面对更复杂的代码生成任务(如竞赛级问题)时,仍然存在一定的挑战。

有一个名为 BRAINSTORM(头脑风暴)的新框架或许能更好地应对这个问题,它利用高层次算法蓝图、神经排序模型以及 LLM 的推理能力,来帮助我们生成多样化的思路并找到最佳的解决方案,它的性能甚至可以达到与人类程序员相当的水平。让我们一起来看看吧~

论文题目:
Think Outside the Code: Brainstorming Boosts Large Language Models in Code Generation

论文链接:
https://arxiv.org/abs/2305.10679

大模型研究测试传送门

ChatGPT能力研究传送门: hujiaoai

GPT-4能力研究传送门(遇浏览器警告点高级/继续访问即可): Hello, GPT4!

背景介绍

程序综合

程序综合(Program Synthesis)在自动化软件发现、程序分析和验证、以及人机交互等领域中有广泛的应用,它是一种旨在通过自动合成完整的功能程序来解决开发者所提出问题的技术。

传统方法通常在由底层编程语言定义的搜索空间中搜索满足特定任务约束条件的程序。然而,这种方法面临着搜索空间复杂和形式规约不足等问题。基于深度学习的程序综合可以从非正式规范(如自然语言、部分代码、输入-输出示例或伪代码)中生成程序。目前,深度学习方法主要用于生成特定领域内的短程序或通用编程语言中的单行代码。

竞赛级的代码生成

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

论文速览

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

▲图1 BRAINSTORM 框架的示例

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

  1. 头脑风暴(Brainstorming):该步骤是 BRAINSTORM 框架的核心,旨在生成各种可能有助于解决给定问题的思路。如图 2 所示,为了实现这个目标,作者设计了多种类型的指令,并将这些指令与问题描述一起输入到 LLM 中。

  2. 思路选择(Idea Selection):在上一步中生成了大量的思路后,需要对它们进行筛选和排序。如图 3 所示,具体地,使用了一个评估函数来评估每个思路的质量,并选择最高质量的思路作为最终输出。

  3. 代码生成(Code Generation):在上一步中选择了最佳思路后,需要将其转换为代码。具体而言,作者使用了一个代码生成器来将思路转换为可执行代码。而且如图 4 所示,BRAINSTORM 框架可以在零样本情况下工作,与少样本方法不同,这里不需要任何示例即可实现高效的代码生成。

实验

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

  • 如表 1 和 2 所示,在 APPS 和 CodeContests 基准测试中,作者使用 BRAINSTORM 框架生成代码,并与其他方法进行比较。结果表明,BRAINSTORM 框架在这两个基准测试中都显著提高了 LLM 的性能。

    如图 5 所示,在涉及概率、最短路径和图的问题上有显著的相对改善,并且随着评级的提高,该方法始终优于 ChatGPT 和 COT。

  • 作者还在真实编程竞赛中进行了实验,将 BRAINSTORM 框架应用于代码生成。表 3 的结果表明,该框架可以将 ChatGPT 算法推理能力提高到与人类程序员相当的水平

这些结果表明,在使用 BRAINSTORM 框架时,LLM 生成的代码质量更高、更接近人类程序员所写的代码。

小结

本文介绍了一种名为BRAINSTORM的新的竞赛级别代码生成框架,其亮点在于:

  1. 提出竞赛级别代码生成框架 BRAINSTORM:通过生成多样化的思路并从中选择高质量思路来实现高效代码生成任务

  2. 利用 LLM 的算法推理能力:通过设计多种类型的指令来实现生成多样化的思路,并使用评估函数和代码生成器将思路转换为可执行代码。

  3. 零样本学习:可以在零样本情况下工作,不需要任何示例即可实现高效的代码生成。

随着该领域的进一步探索和发展,我们相信生成更精准、高质量的代码将成为一种必然趋势。当更多研究者将目光投入这个领域,那么我们离解放双手生成代码的美好世界也会更近一步~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/590456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ROS:发布者Publisher的编程实现(C++)

目录 一、话题模型二、创建功能包三、创建Publisher代码四、编译代码五、运行 一、话题模型 图中,我们使用ROS Master管理节点。 有两个主要节点: Publisher,名为Turtle Velocity(即海龟的速度) Subscriber&#xff0c…

STM32H723ZGT6 LAN8720A LWIP

Stm32CubeMX 版本&#xff1a;6.8.1 硬件库版本&#xff1a;STM32Cube FW_H7 V1.11.0 usart.c#include <stdio.h> #if 1//标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半主机模式 void _…

设计模式(二):创建型之工厂方法和抽象工厂模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二)&#xff1a;创建型之工厂模式 目录 一、设计模式分类二、概述三、简单工厂模式1、结构2、实现3、扩展&#xff1a;静态工厂 四、工厂方法模式1、结构2、 实现3、优缺点 五、抽象工厂模式1、结构2、实…

牛客网2018吉比特校招技术开发类试题分析

最近做了两套笔试题&#xff0c;复习一下错题&#xff0c;有很多地方需要查缺补漏&#xff0c;再谈一下感受总结一下。 2018届吉比特校招技术类笔试B卷 吉比特2018届提前批校园招聘-开发类试卷 一、基础题 1.已知 a 6789x 6789、b 6789x 6790、c 6789x 6791&#xff0c…

GIT | 浅析原理篇

此篇文章主要是讲讲 一些 git 操作发生的时候 , .git 文件如何变化&#xff0c;git 背后发生了什么。磨刀不误砍柴工嘛&#xff01;算是一篇视频观后笔记&#xff08;文末取视频地址&#xff09; 基础概念 Git 是一个代码版本管控的工具&#xff0c;是一个内容寻址文件系统&am…

剑指 Offer 14- I. 剪绳子解题思路

文章目录 题目解题思路优化 题目 给你一根长度为 n 的绳子&#xff0c;请把绳子剪成整数长度的 m 段&#xff08;m、n都是整数&#xff0c;n>1并且m>1&#xff09;&#xff0c;每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少&…

Spring Boot + vue-element 开发个人博客项目实战教程(二十六、前端首页统计完善及完结)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ 后端代码gitee地址&#xff1a;https://gitee.com/whxyh/personal_blog …

设计模式六大原则的理解

本文参考&#xff1a; 设计模式简介 | 菜鸟教程 (runoob.com) 六大设计原则之依赖倒置原则&#xff08;DIP&#xff09; - 简书 (jianshu.com) 设计模式的六大原则有&#xff1a; 1、开闭原则&#xff08;Open Close Principle&#xff09; 开闭原则的意思是&#xff1a;对扩…

设计模式之~桥接模式

桥接模式&#xff1a; 将抽象部分与它的实现部分分离&#xff0c;使他们都可以独立地变化。这种类型的设计模式属于结构型模式&#xff0c;它通过提供抽象化和实现化之间的桥接结构&#xff0c;来实现二者的解耦。 什么叫抽象与它的实现分离&#xff0c;这并不是说&#xff0c;…

图解系列 图解Spring Boot 最大连接数及最大并发数

文章目录 概序架构图TCP的3次握手4次挥手时序图核心参数AcceptCountMaxConnectionsMinSpareThread/MaxThreadMaxKeepAliveRequestsConnectionTimeoutKeepAliveTimeout 内部线程AcceptorPollerTomcatThreadPoolExecutor 测试参考 每个Spring Boot版本和内置容器不同&#xff0c;…

树状数组学习总结

今天本初中生蒟蒻学习了一下 树状数组 \color{red}{树状数组} 树状数组&#xff0c;总结一下~~~ 树状数组的实现 功能简介 快速求前缀和&#xff08; O ( l o g 2 n ) \color{purple}{O(log_2n)} O(log2​n)&#xff09;修改某一个数&#xff08; O ( l o g 2 n ) \color{gr…

SpringBoot+原生awt,实现花花绿绿的图形验证码

图形验证码是用于验证用户身份的一种方式&#xff0c;通常在网站注册、登录或进行某些敏感操作时会使用。它通过展示一个包含随机字符或数字的图形&#xff0c;要求用户输入相应的字符或数字来证明其为真人而非机器人。图形验证码能有效地防止机器人攻击和恶意注册行为&#xf…

Excel·VBA自动生成日记账的对方科目

如图&#xff1a;根据日记账/序时账的日期、凭证号为一组&#xff0c;按借贷方向生成相反的科目&#xff0c;并写入H列。可能存在一对一、一对多、多对多等情况的账目 目录 数组法遍历、判断、写入测试结果 多对多问题处理测试结果 数组法遍历、判断、写入 适用日期凭证号连续…

HTTPS的加密流程——巨详细!

文章目录 前言HTTPS的工作过程引入对称加密引入非对称加密引入证书完整的加密流程总结 前言 HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况. 比如&#xff1a;臭…

民宿预订系统的设计与实现(ASP.NET,SQLServer)

这个民宿预订系统是由第三方的运营公司来运营&#xff0c;他提供了一个民宿和客户都使用的一个信息平台&#xff0c;民宿注册之后把自己的民宿信息发布到网站平台上&#xff0c;然后发布自己的房间信息&#xff0c;打折信息等供客户查看和选择。客户可以在网站平台上查看民宿信…

深度学习:大模型的正则化

l1l2正则和dropout正则化[https://youzipi.blog.csdn.net/article/details/75307522] LN和BN归一化 [深度学习:批归一化Batch Normalization] 主流大模型使用的Normalization主要有三类,分别是Layer Norm,RMS Norm,以及Deep Norm。 Post-Norm和Pre-Norm 根据Normalizat…

网工内推 | 快手、瑞芯微招运维,思科、红帽认证优先

01 快手 招聘岗位&#xff1a;IT系统运维 职责描述&#xff1a; 1、负责IT基础架构运维体系的建设和优化改进&#xff1b; 2、负责IT核心基础服务&#xff08;如DNS、负载均衡、容器&#xff09;的架构设计、平台建设和运维&#xff1b; 3、负责IT内部日志系统、监控系统、报警…

SpringCloud微服务框架(通俗易懂,一秒上手)

&#x1f381;&#x1f381;资源&#xff1a;https://pan.baidu.com/s/1zRmwSvSvoDkWh0-MynwERA&pwd1234 SpringCloud微服务框架 &#xff08;一&#xff09;认识微服务服务架构演变SpringCloud &#xff08;二&#xff09;微服务拆分案例服务拆分服务间调用 &#xff08;三…

ROS:订阅者Subscriber的编程实现(C++)

目录 一、话题模型二、创建功能包三、创建Subscriber代码四、编译代码五、运行 一、话题模型 图中&#xff0c;我们使用ROS Master管理节点。 有两个主要节点&#xff1a; Publisher&#xff0c;名为Turtle Velocity&#xff08;即海龟的速度&#xff09; Subscriber&#xff0…

Rocketmq面试(一) Rocketmq同一个消费组订阅不同的Tag,会有什么问题?

先说结果&#xff1a;会造成数据丢失 再说依据&#xff1a; RocketMQ要求同一个消费者组内的消费者必须订阅关系一致&#xff0c;如果订阅关系不一致会出现消息丢失的问题。 官网入口&#xff1a;订阅关系一致 | RocketMQ 不想看官网的&#xff0c;直接看结论 什么叫订阅关…