您好,欢迎您来到林间号!
官网首页 小额贷款 购车贷款 购房贷款 抵押贷款 贷款平台 贷款知识 手机租机

林间号 > 区块链 > 0代码训练GPT-5?MIT和微软证实GPT-4涌现自我纠错能力,智能体循环根据反馈让代码迭代!

0代码训练GPT-5?MIT和微软证实GPT-4涌现自我纠错能力,智能体循环根据反馈让代码迭代!

区块链 岑岑 本站原创

原始资料来源:新智元

图片来源:由* * AI生成

众所周知,大模型有自省能力,可以自己修正代码。

这种自我修复背后的机制是如何工作的?

模型能在多大程度上提供准确的反馈,说明代码为什么是错的?

最近,麻省理工学院和微软学者发现,在GPT-4和GPT-3.5中,只有GPT-4显示出有效的自我修复。此外,GPT-4甚至可以向GPT-3.5生成的程序提供反馈。

地址:https://arxiv.org/pdf/2306.09896.pdf.

Nvidia科学家Jim Fan强烈推荐了这项研究。

在他看来,即使是最专业的人类程序员,也不可能一次写对程序。他们需要看实施结果,推理出问题,给出修复措施,反复尝试。这是一个代理循环:根据环境反馈迭代改进代码。

OpenAI很可能通过雇佣大量软件工程师来培养下一代GPT。他们不需要输出代码——你只需要评论。

–GPT-4能够自我修复的核心原因是其强大的反馈能力。它能有效的反思代码的问题,其他模型无法与之抗衡。

–反馈模型和代码生成模型不必相同。其实反馈模式才是瓶颈。

–根据GPT-4的反馈,GPT-3.5可以写出更好的代码。

–根据专业人士的反馈,GPT-4本身可以写出更好的代码。

揭示代码生成的GPT修复

众所周知,大语言模型在生成代码方面表现出了非凡的能力。

但是在具有挑战性的编程任务中(比如软件工程师的竞赛和面试),他们做得并不好。

幸运的是,许多模型会通过一个自我修复的工作流来“自省”,并自己纠正代码中的错误。

研究人员渴望知道这些模型能在多大程度上提供正确的反馈,并解释为什么它们生成的代码是错误的。

该图显示了基于自修复方法的经典工作流程。

首先,给定一个规范,从代码生成模型中抽取一个程序,然后在规范中提供的一组单元测试上执行该程序。

如果程序在任何单元测试中失败,错误消息和程序将被提供给反馈生成模型,该模型将输出代码失败原因的简短解释。

最后,反馈被传递给修复模型,该模型生成程序的固定版本。

从表面上看,这个工作流程似乎很完美。它允许系统在解码过程中克服坏样本带来的误差,并容易地合并来自符号系统(编译器、静态分析工具和执行引擎等)的反馈。)在修复阶段。

并且模仿人类软件工程师写代码的试错方式。

但是工作流有一个问题:自修复需要对模型进行更多的调用,增加了计算成本。

而且,研究人员发现了一个有趣的现象:大型模型自我修复的有效性不仅取决于模型生成代码的能力,还取决于它识别代码在任务中如何出错的能力。

目前,还没有工作对此进行详细调查,因此作者研究了GPT-3.5和GPT-4在解决竞争级代码生成任务中的自修复有效性。

研究人员提出了一种新的评估策略,叫做

在该策略中,任务的通过率根据从模型中抽取的令牌总数来衡量。

因为用pass@t代替了传统的pass@k(通过率是根据实验次数来衡量的),所以可以和纯基于采样的方法进行公平的比较。

从实验中,研究人员发现:

1.GPT-4可以实现自修复带来的性能提升;对于GPT-3.5,修复后的通过率低于或等于所有预算下的基准非修复方法。

2.即使是GPT-4模型,性能提升最多也只能算中等(在预算7000个令牌的情况下,通过率从66%提升到71%,大约等于45个独立同分布的GPT-4样本的成本),而且还取决于初始方案的多样性。

3.使用GPT-4产生的反馈代替GPT-3.5对错误的解释,可以获得更好的自修复性能,甚至超过基准GPT-3.5无修复方法(在7000 token下从50%到54%)。

4.用人类程序员提供的解释代替GPT-4自己的解释,可以显著提高修复效果,修复并通过测试的程序数量增加了57%。

自我修复的四个阶段

自修复方法包括四个阶段:代码生成、代码执行、反馈生成和代码修复。对此,研究人员正式定义了这四个阶段。

阶段1:代码生成

给定规格

,一个程序模型

,首先生成

样品

用一个公式来表示:

阶段2:代码执行

然后在测试平台上执行。

代码示例,并假设您可以访问可执行形式的完整测试集。

如果任何一个样本通过了所有的测试,它就会停止,因为此时已经找到了一个满意的程序。

否则,收集执行环境返回的错误信息。

这些错误消息包含编译/运行时错误信息或示例输入,其程序输出与预期的不同。

阶段3:反馈生成

在这里,研究人员使用反馈模型来生成更详细的错误解释。

在这个阶段,每生成一个错误的程序。

反馈字符串,

,如下所示:

阶段4:代码修复

在最后一步中,对于每个初始程序,

和反馈

,

候选修补程序来自

中等取样:

研究人员称这个过程为交错文本和程序树修复树。

-植根于规范

然后分支到初始程序。

,每个程序分支到反馈。

然后修复它。

具体如图所示:

由于自修复需要几个相关的模型调用,且成本不一致,因此在此设置中,

(在

在样本中获得正确程序的可能性)不是比较和评估自修复的各种超参数选择的合适度量。

相反,研究人员将通过率作为从模型中采样的令牌总数的函数来测量,这被称为

的度量。

实验过程

研究人员进一步测试了三个问题:

1.对于更具挑战性的编程任务,这些模型是否有比未经修复的i.i.d .更好的自我修复样本?

2.更强的反馈模型会提高模型的修复性能吗?

3.如果让人类参与最强大模型的自我修复循环,并提供人工反馈,是否可以解锁更好的修复性能?

首先,研究团队引入了一个具有挑战性的编程任务:自动编程进度标准(Apps)数据集中的编程任务。

该数据集中的任务包括从入门级到大学竞赛级的编程任务,可用于评估人类程序员的问题解决和编码能力。

研究人员选择了300项任务,包括60项入门级任务和60项竞赛级任务。

研究人员选择GPT-3.5和GPT-4作为模型,使用模板字符串连接和单个提示词进行自我修复。

下图就是提示词的例子之一。

自愈需要强大的模型和多样的初始样本。

研究人员要求单个模型分别生成代码修复和反馈。

在右边的图表中,我们显示了一个热图,沿轴有两个超参数,其中每个单元格中的值代表平均通过率。当给定相同的令牌预算(即相同的t pass@t值)时,通过基线的平均通过率来归一化自愈。

从图中可以看出,对于GPT-3.5模型,pass@t在所有设置下都低于或等于对应的基线(黑色),这清楚地表明自修复对于GPT-3.5来说并不是一个有效的策略。

在GPT-4(下图)中,几个数值的自愈通过率明显好于基线。

下图是

和基线无修复方法。

GPT-4反馈改善了GPT3.5的修复结果

研究人员进一步进行了一项新的实验,评估使用一个单独的、更强的模型来生成反馈的效果,以测试一个假设:由于模型无法自省和调试自己的代码,因此阻碍了自我修复(例如,对于GPT-3.5)。

这个实验的结果如上图所示(亮蓝色)。

就绝对性能而言,GPT-3.5和GPT-4确实突破了性能障碍,而且比GPT-3.5的i.i.d .抽样效率略高。

这说明文本反馈阶段本身就很重要,对其进行改进可以缓解GPT-3.5自我修复的瓶颈。

人工反馈显著提高了GPT-4修复的成功率。

在最后一个实验中,我想研究在使用更强的模型(GPT-4)进行修复时,添加人类专家程序员的反馈的效果。

这项研究的目的是了解模型识别代码错误的能力与人类相比如何,以及这如何影响自我修复的下游性能。

研究人员研究人员招募了16名参与者,包括15名研究生和1名专业机器学习工程师。

每个参与者都有五个不同的基本程序,并根据他们的Python经验编写代码。

每个程序取自不同的任务,参与者永远不会看到属于同一任务的两个不同的程序。

然后,参与者被要求用自己的话解释程序做错了什么。

实验结果如下图所示:

研究人员发现,当我们将GPT-4的调试替换为人类参与者的调试时,整体成功率提高了1.57倍以上。

毫不奇怪,随着问题变得越来越难,相对差异会越来越大,这表明当任务(和代码)变得越来越复杂时,GPT-4生成准确有用的反馈的能力远远落后于人类参与者。

本网站声明:网站内容来源于网络。如有侵权,请联系我们,我们会及时处理。

温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信,我们会及时处理和回复。

原文地址"0代码训练GPT-5?MIT和微软证实GPT-4涌现自我纠错能力,智能体循环根据反馈让代码迭代!":http://www.ljycsb.cn/qukuailian/210537.html

微信扫描二维码投放广告
▲长按图片识别二维码