人工通用智能的火花:GPT-4的早期实验(第一篇)

来源:微软研究院

摘要

人工智能(AI)研究人员一直在开发和完善大型语言模型(LLMs),这些模型在各种领域和任务中表现出非凡的能力,挑战我们对学习和认知的理解。由OpenAI开发的最新模型GPT-4[Ope23],是使用前所未有的计算和数据规模训练出来的。在本文中,我们报告了我们对GPT-4早期版本的调查,当时它还在OpenAI 的积极开发中。

我们认为,(这个早期版本的)GPT-4是新一批LLM的一部分(例如,与ChatGPT和谷歌的 PaLM一起),它比以前的AI模型表现出更多的通用智能。我们讨论了这些模型的上升能力和影响。我们证 明,除了对语言的掌握,GPT-4还能解决跨越数学、编码、视觉、医学、法律、心理学等领域的新颖而困难 的任务,而不需要任何特殊的提示。此外,在所有这些任务中,GPT-4的表现都惊人地接近人类水平,而且 往往大大超过了ChatGPT等现有模型。鉴于GPT-4能力的广度和深度,我们认为可以合理地将其视为人工通用智能(AGI)系统的早期(但仍不完整)版本。

在我们对GPT-4的探索中,我们特别强调发现它的局限性 ,并讨论了在向更深入和更全面的AGI版本迈进时面临的挑战,包括可能需要追求一种超越下一个单词预测的新范式。最后,我们对近期技术飞跃的社会影响和未来的研究方向进行了思考。

一,简介

智力是一个多方面的、难以捉摸的概念,长期以来一直对心理学家、哲学家和计算机科学家构成挑战。1994 年,一个由52位心理学家组成的小组试图抓住其本质,他们在一篇关于智力科学的社论中发表了一个广泛的定义[Got97]。该共识小组将智力定义为一种非常普遍的心理能力,其中包括推理、计划、解决问题、抽象 思考、理解复杂概念、快速学习和从经验中学习的能力。这个定义意味着智能并不局限于某个特定的领域或 任务,而是包含了广泛的认知技能和能力。建立一个能表现出1994年共识定义中的那种通用智能的人工系统 是人工智能研究的一个长期的、雄心勃勃的目标。

在早期的著作中,现代人工智能(AI)研究学科的创始人提出了一系列理解智能的理想目标[MMRS06]。几十年来,人工智能研究者们一直在追求智能的原则,包括 可推广的推理机制(例如,[NSS59], [LBFL93])和构建包含大量常识性知识的知识库[Len95]。然而,人工智 能研究中最近的许多成功可以说是狭隘地专注于定义明确的任务和挑战,例如下棋或围棋,人工智能系统分 别在1996年和2016年掌握了这些任务。在1990年代末和进入2000年后,开发更普遍的人工智能系统的呼声越来越高(例如,[SBD +96]),该领域的学术研究也试图确定可能成为更普遍的智能系统基础的原则(例 如,[Leg08, GHT15])。2000年代初,"人工通用智能"(AGI)这一短语被推广开来(见[Goe14]),以强 调从 "狭义的人工智能"(如正在开发的专注的现实世界的应用)向更广泛的智能概念发展的愿望。

我们使用AGI来指代那些表现出上述1994年定义的广泛智能能力的系统,同时还要求这些能力达到或超过人 类水平。我们用AGI来指代那些表现出上述1994年定义中的广泛智能能力的系统,以及额外的要求,也许是 在共识小组的工作中隐含的,即这些能力达到或超过人类水平。然而,我们注意到,没有一个单一的AGI定 义被广泛接受,我们在结论部分讨论了其他定义。

过去几年,人工智能研究中最显著的突破是大型语言模型(LLMs)在自然语言处理方面取得的进展。这 些神经网络模型基于Transformer架构[VSP+ 17],并在大规模的网络文本数据体上进行训练,其核心是使用 一个自我监督的目标来预测部分句子中的下一个单词。在本文中,我们报告了由OpenAI开发的新LLM的证 据,它是GPT-4[Ope23]的早期和非多模态版本,根据1994年的定义,表现出许多智能的特征。

尽管是纯粹的语言模型,这个早期版本的GPT-4在各种领域和任务上表现出显著的能力,包括抽象、理解、视觉、编码 、数学、医学、法律、对人类动机和情感的理解等等。在OpenAI的早期开发过程中,我们使用纯粹的自然 语言查询(提示)与GPT-4进行互动1 .在图1.1中,我们展示了GPT-4输出的一些初步例子,要求它以一首诗 的形式写出素数的无限性证明,用TiKZ(一种在LATEX中创建图形的语言)画出一只独角兽,用Python创建一个复杂的动画,并解决一个高中水平的数学问题。它很容易成功地完成了所有这些任务,并产生了与人 类所能产生的结果基本上没有区别(甚至更好)的输出。

我们还将GPT-4的性能与之前的LLM进行了比较, 最值得一提的是ChatGPT,它是GPT-3的微调版本(改进版)[BMR +20]。在图1.2中,我们展示了ChatGPT 对素数无限大的诗和TikZ独角兽图的要求结果。虽然该系统在这两个任务上的表现都不差,但与GPT-4的输 出结果相比,却没有什么区别。这些初步的观察结果将在本文中重复出现,在各种任务上都有体现。GPT-4 的能力具有普遍性,其众多能力跨越了广泛的领域,其在广泛的任务中的表现达到或超过了人类水平,这两 者的结合使我们可以说GPT-4是迈向AGI的重要一步。

我们声称GPT-4代表了朝向AGI的进展,但这并不意味着它在所做的事情上是完美的,或者它接近于能够做任何人类能够做的事情(这是AGI的通常定义之一;关于这一点,请参见结论部分),或者它有内在动机和目标(AGI的一些定义中的另一个关键方面)。事实上,即使在1994年智能定义的限制范围内,也不完全清楚GPT-4能在智能的某些轴线上走多远,例如计划(见第8节),而且可以说它完全缺少 "快速学习和从经 验中学习 "的部分,因为模型不是持续更新的(尽管它可以在一个会话中学习,例如见第5节)。

总的来说, GPT-4仍然有很多局限性和偏见,我们在下文中详细讨论,OpenAI的报告[Ope23]中也有涉及。特别是它仍 然受到一些有据可查的LLM缺点的影响,比如幻觉问题[MNBM20](见图1.8)或犯基本的算术错误[CKB+ 21](见附录D),然而它也克服了一些基本障碍,比如获得了许多非语言能力(例如、它解决了[MIB +23]中 描述的大多数LLM故障模式,而且它在常识方面也取得了很大的进展,第一个例子见图1.7,更多内容见附 录A)。这凸显了这样一个事实:虽然GPT-4在许多任务上达到或超过了人类水平,但总体而言,它的智能 模式明显不像人类。

然而,GPT-4几乎可以肯定只是迈向一系列越来越普遍的智能系统的第一步,事实上, GPT-4本身在我们测试的整个过程中也在不断改进,见图1.3中的独角兽绘画在一个月的训练过程中的演变 。2 .然而,即使作 为 第一步,GPT-4也挑战了相当多广泛持有的关于机器智能的假设,并表现出突发的行为 和能力,其来源和机制目前还很难准确辨别(关于这一点,请再次参阅结论部分的讨论)。我们撰写本文的 主要目的是分享我们对GPT-4的能力和局限性的探索,以支持我们关于技术飞跃的评估。我们相信,GPT-4 的智能标志着计算机科学领域及其他领域的真正范式转变。

1.1 我们研究GPT-4智力的方法

我们如何衡量一个在未知但极其庞大的网络文本数据语料库中训练出来的LLM的智能?机器学习的标准方法 是在一组标准的基准数据集上评估系统,确保它们独立于训练数据,并且涵盖一系列的任务和领域。这种方法旨在将真正的学习从单纯的记忆中分离出来,并且有丰富的理论框架作为支撑[SSBD14, MRT18]。然而, 这种方法不一定适合研究GPT-4,原因有二。

首先,由于我们无法获得其庞大的训练数据的全部细节,我们 不得不假设它有可能见过所有现有的基准,或者至少是一些类似的数据。例如,GPT-4似乎知道最近提出的 BIG-bench[SRR+ 22](至少GPT-4知道BIG-bench的金丝雀GUID)。当然,OpenAI自己可以获得所有的训 练细节,因此他们的报告[Ope23]包含了很多详细的基准测试结果。尽管如此,超越传统基准的第二个原因可能更为重要:GPT- 4的智能的一个关键方面是它的通用性,它似乎能够理解和连接任何主题,并执行超出 狭义人工智能系统典型范围的任务。

GPT-4最令人印象深刻的一些表现是在不承认单一解决方案的任务上, 如编写图形用户界面(GUI)或帮助人类就一些与工作有关的问题进行头脑风暴。这种生成性或交互性任务 的基准也可以被设计出来,但评估的尺度成为一个挑战(例如,见[PSZ+ 21]中关于NLP中这一活跃研究领域 的一些最新进展)。我们注意到,在[Cho19]中也对衡量人工智能系统的标准方法提出了批评,其中提出了一 个新的基准来评估通用智能。我们没有在后者的基准上测试GPT-4,原因如前所述,以及该基准是视觉性质 的,因此更适合于[Ope23]中描述的GPT-4的多模态版本。

为了克服上述的局限性,我们在此提出了一种不同的方法来研究GPT-4,这种方法更接近于传统的心理 学,而不是机器学习,利用人类的创造力和聪明才智。我们的目标是产生新的和困难的任务和问题,令人信服地证明GPT-4远远超出了记忆的范围,它对概念、技能和领域有深刻和灵活的理解(在[CWF +22]中也提 出了一个有点类似的方法)。

我们还旨在探究GPT-4的反应和行为,以验证其一致性、连贯性和正确性,并 揭示其局限性和偏见。我们承认,这种方法有些主观和不正式,可能无法满足科学评估的严格标准。然而, 我们认为这是一个有用的和必要的第一步,以了解GPT-4的显著能力和挑战,这样的第一步为开发更正式和 全面的方法来测试和分析具有更普遍智能的AI系统开辟了新的机会。 为了说明我们评估GPT-4智力的方法,让我们考虑图1.1中我们与GPT-4之间的前两个行动例子。第一个 例子是要求GPT-4以诗的形式写出素数的无限性的证明。这是一个具有挑战性的任务,需要结合基本的

数学推理、诗意表达和自然语言生成。第二个例子是要求GPT-4在TiKZ中画一个独角兽。这是另一个具有挑 战性的任务,需要结合视觉想象力和编码技能。在这两个例子中,GPT-4产生了令人印象深刻的输出,远远 超过了以前最先进的LLM--ChatGPT的输出,而且至少可以与人类的输出相媲美(如果不是的话)。

然而,令人印象深刻的输出并不足以让我们相信GPT-4已经真正掌握了这些任务。我们需要进一步探究, 以排除GPT-4只是在记忆或复制一些现有数据的可能性。对于这首诗,我们可以稍微改变一下问题,要求 GPT-4以莎士比亚的风格写出同一定理的证明,见图2.2,或者要求不同的组合,如写出关于语言模型的柏拉 图式对话,见图1.6。我们可以看到,GPT-4很容易适应不同的风格,并产生令人印象深刻的输出,这表明它对所涉及的概念有一个灵活和普遍的理解。对于独角兽,我们可以稍微修改代码,并要求GPT-4修复或改进它。

例如,我们可以去掉角,对坐标进行一些随机变换,然后要求GPT-4为独角兽重新加上角(我们还仔细 地去掉了代码中的任何文本信息,如注释)。如图1.4所示,GPT-4可以正确地识别头部的位置,画出一个 角,并将其连接到头部,这表明它可以根据自然语言的描述来理解和操作代码,以及推断和产生视觉特征。 这些例子表明我们如何利用人类的创造力和好奇心来产生新奇和困难的问题,并探究GPT-4的反应和行 为,以评估其智能。在本文的其余部分,我们围绕用例来组织我们对GPT-4的研究,涵盖了各种领域和任务 ,并强调了GPT-4的优势和劣势。接下来我们将介绍这些。

1.2 我们的示范组织

我们在一些选定的主题上执行上述方法,这些主题大致涵盖了1994年智力定义中给出的不同能力,这是一种非常普遍的心理能力,其中包括推理、计划、解决问题、抽象思考、理解复杂思想、快速学习和从经验中学习的能力。

1. GPT-4的主要优势在于它对自然语言的掌握无可比拟。它不仅可以生成流畅和连贯的文本,还可以以 各种方式理解和处理文本,如总结、翻译或回答一系列极其广泛的问题。此外,我们所说的翻译不仅 是指不同自然语言之间的翻译,还包括语气和风格的翻译,以及跨领域的翻译,如医学、法律、会计、 计算机编程、音乐等等,见图1.6中的柏拉图对话。这些技能清楚地表明,GPT-4能够理解复杂的思想 。我们探讨在第2节中进一步介绍了GPT-4的跨模式和跨学科的组合技能。我们还在第7节中给出了一些关于语言的更多实验。

2. 编码和数学是抽象推理和思维能力的象征。我们在第三节和第四节中分别探讨了GPT-4在这些领域的 能力。然而,我们注意到,就像本文的其他部分一样,我们只是在这些主题的表面上做文章,关于 GPT-4在这些领域的表现可以(也将会)写成整篇论文。此外,我们还可以选择其他几个专家领域来 展示GPT-4的一般推理能力,如医学或法律。我们对美国医学执照考试步骤1、2和3的选择题部分(大 部分分数)进行了初步测试(详见[Ope23]),其准确率都在80%左右。对GPT-4在多州律师考试中的 能力进行的类似初步测试显示其准确率超过70%。我们注意到,最近在这些领域出现了人类水平的能力 ,例如,见[LAD+ 22, SAT+ 22]谷歌的PaLM,分别是关于数学和医学的,以及[BIK22]关于GPT-3.5的 法律。我们研究GPT-4的方法与这些作品不同,正如我们之前解释的那样。

3. 在第5节中,我们通过让模型玩各种游戏(或者,翻转桌子,模拟游戏环境),以及与工具互动,来测试模型的计划和解决问题的能力,以及在一定程度上快速学习和吸取经验的能力。特别是,GPT-4可 以使用工具(包括它自己),这对用GPT-4构建现实世界的应用肯定具有巨大的意义。

4. 我们论证的一个重要部分是,GPT-4在许多任务上达到了人类水平的表现。因此,我们很自然地会问 ,GPT-4对人类本身的理解程度如何。我们在第6节中展示了关于这个问题的几个实验,既包括对人类 的理解,也包括GPT-4让自己对人类的理解,即解决可解释性问题。我们特别注意到,这种任务需要 大量的常识,到目前为止,这一直是LLM的一个众所周知的痛点[DM15]。在图1.7中,我们给出了第一 个例子,说明GPT-4在常识性问题上比ChatGPT好很多,并在附录A中提供了一些进一步的例子。

5. 在整个论文中,只要我们发现有局限性,我们就会强调,但我们还专门在第8节中对缺乏规划进行了深入分析,这可能是GPT-4架构的自回归性质的直接后果。

6. 最后在第9节,我们讨论了这种早期形式的AGI的预期社会影响,在第10节,我们分享了该领域的关键挑战、方向和下一步。

许多读者心中可能萦绕的一个问题是,GPT-4是否真正理解了所有这些概念,还是它只是在即兴发挥方面比以前的模型好得多,而没有任何真正或深刻的理解。我们希望在读完本文后,这个问题应该几乎翻转过来,人们可能会想,真正的理解比随心所欲的即兴发挥还有多少。人们有理由说,一个能通过软件工程候选人考试的系统(图1.5)不是真正的智能吗?也许对理解的唯一真正的检验是一个人是否能产生新的知识, 比如证明新的数学定理,而这一壮举目前对法学硕士来说仍然遥不可及

二,多模式和跨学科构成

衡量智力的一个关键标准是综合不同领域或模式的信息的能力,以及在不同背景或学科中应用知识和技能的 能力。在本节中,我们将看到,GPT-4不仅在文学、医学、法律、数学、物理科学和编程等不同领域表现出高度的熟练程度,而且还能流畅地结合多个领域的技能和概念,显示出对复杂思想的理解能力令人印象深刻 。除了自然语言实验外,我们还探索了语言模型的两种也许是意想不到的模式(正如介绍中所解释的,我们 再次强调,我们的实验是在早期版本的GPT-4上进行的,它不是多模态的),视觉在第2.2节,音频在第2.3 节。

2.1 综合能力

为了展示该模型显著的整合能力,我们从几个例子开始,这些例子要求以结合多个学科的知识或技能的方式 生成文本和代码。我们特意挑选了一些训练数据很少包括的领域的组合,如文学和数学或编程和艺术。

1. 为了测试该模型在艺术和编程方面的能力,我们要求GPT-4 "制作javascript代码,生成画家康定斯基风 格的随机图像"。请看图2.1和图B.1中的样本图像和代码。

2. 该模型能够在莎士比亚的文学风格中产生一个证明存在无限多质数的事实(图2.2)。

3. 我们测试了该模型结合历史和物理知识的能力,要求它为作为美国总统候选人的电子写一封支持信, 这封信是圣雄甘地写给他妻子的(图2.3)。

4. 我们提示模型 "制作一个程序的python代码,将病人的年龄、性别、体重、身高和验血结果向量作为输 入,并指出该人的糖尿病风险是否增加",结果出现了图B.3中的代码。

这些例子表明,GPT-4不仅学会了不同领域和风格的一些一般原则和模式,还能以创造性和新颖的方式综 合运用。这些跨学科的技能并不是GPT-4所独有的。ChatGPT也能做出对任务和相关领域有一定了解的答案 (见图2.2、B.2、B.3),但它们往往是不完整的,可以说,创造性大大降低。例如,在图2.3中,GPT-4在 几个方面优于ChatGPT,因为它根据推荐人(甘地)、收件人(他的妻子)、候选人(电子)和工作(美国 总统)对信件进行了正确的个性化处理。我们并不宣称有精确的方法来评估这些任务的结果,也不宣称有严 格的方法来比较这两个模型,但我们想让读者感受到这两个模型的不同之处(注意,我们也直接要求GPT-4 来评估其差异,见图2.2和图2.3)。

接下来,我们探讨了GPT-4如何生成和识别不同模式的物体,如矢量图、3D场景和音乐。我们表明,尽管GPT-4只接受过文本训练,但它能理解和处理多模态信息。

2.2 愿景

当提示该模型使用可扩展矢量图形(SVG)生成诸如猫、卡车或字母等物体的图像时,该模型产生的代码通 常会编译成相当详细和可识别的图像(图2.4)。参见附录B.2,由ChatGPT重新运行各种例子。

2.2.1 超越记忆的图像生成

然而,人们可以假设,该模型只是从训练数据中复制了代码,其中出现了类似的图像。鉴于该模型仅在文本 内容上进行了训练,人们可能会进一步争论,没有理由期望它能理解视觉概念,更不用说它能创建、解析和 处理图像了。然而,该模型似乎对视觉任务有真正的能力,而不是仅仅从训练数据中的类似例子中复制代码 。下面的证据有力地支持了这一说法,并证明了该模型能够处理视觉概念,尽管它只接受了文本训练。

在第一个例子中,我们提示模型通过结合字母Y、O和H的形状来画一个人(具体提示和结果见图2.5)。

O、H和Y的字母是用画线和画圆的命令创建的,模型设法将它们定位在一个看起来合理的棍子上。训练 数据包含关于不同字母的几何形状的信息是可信的,也许字母Y看起来像一个手臂向上的躯干的事实也可以 从训练数据中推断出来。可以说,模型能够从训练数据中推断出什么是定位这些字母的合理方式,以便画出 一个看起来合理的棍子形象,这就不那么明显了。在第二次迭代中,我们促使模型纠正躯干和手臂的比例, 并将头放在中心位置。最后,我们要求模型添加一件衬衫和裤子(具体提示和结果见图2.5)。为了进一步 探究模型对几何概念的掌握情况,我们还要求它创造出将物体与字母混合的图像。该模型必须首先发明一种 合理的方法来合并物体和字母,然后再制作图像。结果如图2.6所示,表明GPT-4通常能够保留物体和字母 的特性,并以创造性的方式将它们结合起来。

2.2.2 按照详细的指示生成图像(` a la Dall-E)。

为了进一步测试GPT-4生成和处理图像的能力,我们测试了它能在多大程度上遵循创建和编辑数字的详细指 示。这项任务不仅需要生成技能,还需要解释、构成和空间技能。

第一个例子指示模型生成一个二维图像,描述为 "一只青蛙跳进银行,问出纳员:'你们有免费的荷花池 吗?出纳员回答说:'没有,但我们为池塘升级提供低息贷款。".我们多次尝试生成图像,每次生成的图像都 与关键对象青蛙、出纳员、银行和两个文本的描述相符。我们挑选了视觉上最吸引人的版本。受标准图像生 成工作流程的启发,我们要求GPT-4通过添加更多的细节来提升该图的规模。GPT-4添加了一个银行标志、 一些窗户、一辆汽车、一个交通灯、一些云,并让青蛙拿着一朵花。最后,我们要求GPT-4执行各种任务, 比如相对于现有的物体增加一些物体,对一些物体重新着色,以及改变一些物体的Z-顺序。GPT-4正确地完 成了所有任务。最终结果如图2.7(a)所示,提示信息见图B.4。

我们的第二个例子是尝试使用Javascript生成一个3D模型。我们用提示语指示GPT-4:"一个由漂浮的岛 屿、瀑布和桥梁组成的幻想景观,一条龙在空中飞翔,最大的岛屿上有一座城堡"。与二维实验类似,我们 要求GPT-4以各种方式修改三维模型,如添加、重新定位、重新着色物体和改变龙的轨迹。同样,GPT-4正 确地完成了许多任务。最终结果如图2.7(b)所示,提示在图B.5中。这是一个有多条龙在岛屿上空盘旋的三维动画。

2.2.3 在草图生成中可能的应用

近年来,文字到图像的合成模型已经被广泛探索,但它们往往缺乏空间理解能力,无法遵循复杂的指令[GPN +22]。例如,给定一个提示,如 "在左边画一个蓝色的圆,在右边画一个红色的三角形",这些模型可能产生 视觉上吸引人的图像,但与所需的布局或颜色不一致。另一方面,GPT-4可以从提示中生成代码,这些代码 可以被渲染成图像,其方式与指令的真实程度更高。然而,渲染的图像的质量通常很低。在这里,我们通过 使用GPT-4的输出作为草图,探索将GPT-4和现有的图像合成模型相结合的可能性。如图2.8所示,这种方法 可以产生质量更好的图像,并且比单独的任何一个模型都更接近指令。我们认为这是一个很有希望的方向, 可以利用GPT-4和现有图像合成模型的优势。它也可以被看作是让GPT-4获得工具的第一个例子,我们将在 第5.1节中更深入地探讨这一主题。

2.3 音乐

训练模型的数据也包含了以ABC记号编码的音乐信息。这是一个使用字母、数字和符号的系统,以紧凑和可 读的方式表示音乐音高、持续时间、和弦和其他元素。我们有兴趣探索该模型从这种接触中获得的音乐技能 有多好,例如谱写新的旋律、转换现有的旋律,以及理解音乐模式和结构。 当被要求生成一首短小的曲子时(图2.9),模型能够产生有效的ABC记号。该曲子有一个清晰的结构, 各小节之间的时间符号是一致的,音符遵循递增和递减模式。该曲子在旋律中也使用了一组一致的音符,而 且节奏有重复的模式。

然而,该模型似乎并没有获得理解和声的技能。事实上,在生成的曲子中,连续的音 符几乎总是相邻的(即C后面的音符几乎通常会是B或D),对10个生成的曲子进行测试,我们无法提取任何 清晰的和弦或琶音。 然后,我们要求该模型用音乐术语描述该曲子。它能够成功地在重复、旋律的上升或下降部分以及在某种 程度上的节奏方面对结构进行技术描述。然而,它对和声与和弦的描述似乎与音符不一致(事实上,它把不 构成有效和弦的相邻音符的序列称为琶音)。然后,我们要求该模型以两种方式操纵旋律。首先,我们指示 将某一上升序列改为下降序列,它成功地做到了这一点。然后,我们要求该模型将该曲子转换为二重奏,加入一个低音声部。该模型成功地扩展了ABC记谱法,增加了第二根杖,它具有兼容的节奏,并在较低的八度 上演奏,然而这两根杖之间缺乏和谐。 声音。

总之,该模型能够在ABC符号中产生有效的曲子,并在一定程度上解释和处理其结构。然而,我们无法 让该模型产生任何非简单的和声形式。应该指出的是,ABC记谱法不是一种非常广泛使用的格式,事实上, 该模型甚至不能产生ABC记谱法中最著名的曲子(如《欢乐颂》、《Fu¨Elise r 》或《Greensleeves》,所有这些 曲子在网上都有很多这种格式),它也不能识别这些曲子。

3 编码

在本节中,我们展示了GPT-4能够在非常高的水平上进行编码,无论是从指令编写代码还是理解现有代码。 GPT-4能够处理广泛的编码任务,从编码挑战到现实世界的应用,从低级汇编到高级框架,从简单的数据结 构到复杂的程序,如游戏。GPT-4还可以对代码的执行进行推理,模拟指令的效果,并以自然语言解释结果 。GPT-4甚至可以执行伪代码,这需要解释在任何编程语言中都无效的非正式和模糊的表达。在目前的状态 下,我们认为GPT-4在编写只依赖现有公共库的重点程序方面有很高的熟练度,这与普通软件工程师的能 力相比是有利的。更重要的是,它使工程师和非熟练用户都有能力,因为它使编写、编辑和理解程序变得 容易。

我们也承认,GPT-4在编码方面还不够完美,因为它有时会产生语法上无效或语义上不正确的代码, 特别是对于较长或较复杂的程序。GPT-4有时也不能理解或遵循指令,或者产生的代码与预期的功能或风格 不一致。在承认这一点的同时,我们也指出,GPT-4能够通过回应人类的反馈(例如,通过迭代完善3.2中 的一个情节)和编译器的反馈来改进其代码。

重要声明:正如介绍中所解释的(例如见脚注1),我们的实验是在GPT-4的早期版本上进行的。特别是在 GPT-4的最终版本上,所有的定量结果都会有所不同,尽管总体趋势仍然是一样的。我们在这里提供的数字 只是为了说明问题,最终的基准结果可以在OpenAI的技术报告[Ope23]中找到。

3.1 从指示到代码

3.1.1 编码挑战

衡量编码技能的一个常见方法是提出编码挑战,要求实现特定的功能或算法。我们首先在HumanEval[CTJ +21]上对GPT-4进行基准测试,该数据集由164个编码问题组成,测试了编程逻辑和熟练程度的各个方面。 如表1所示,GPT-4优于其他LLM,包括text-davinci-003(ChatGPT的基础模型)和 其他专门针对代码 训练的模型,code-davinci-002和CODEGEN-16B [NPH +22]。

虽然GPT-4的准确率与以前的模型相比有很大的飞跃,但可能是GPT-4在预训练中已经看到并记住了 HumanEval的一些(或全部)内容。为了说明这种可能性,我们还在LeetCode(https://leetcode.com) 上对其进行了评估,LeetCode是一个流行的软件工程面试平台,那里不断有新问题被发布和更新。我们在 介绍中的图1.5中使用了LeetCode,其中GPT-4通过了主要科技公司的模拟面试的所有阶段。在这里,为了 测试新鲜问题,我们构建了一个基准,即2022年10月8日之后发布的100个LeetCode问题,这是在GPT-4的 预训练期之后。如图3.1中的例子所示,我们将问题指令粘贴到提示符中,要求GPT-4编写一个python函数 ,并使用LeetCode的官方在线评判来检查正确性。

我们在表2中展示了结果,我们将GPT-4与其他模型以及 基于LeetCode竞赛结果的人类表现进行了比较(没有包括所有问题都失败的用户,因此这是一个强大的人 类样本)。我们报告了pass@1和pass@5的准确率,分别衡量模型是否在第一次或前五次尝试中产生正确 的解决方案。GPT-4明显优于 其他模型,并与人类的表现相当(我们在附录C.1中测量)。

3.1.2 现实世界的情景

编码挑战可以评估算法和数据结构方面的技能。然而,它们往往不能全面反映现实世界编码任务的复杂性和 多样性,这需要专门的领域知识、创造力和对多个组件和库的整合,以及改变现有代码的能力。为了评估 GPT-4在更现实的环境中的编码能力,我们设计了与数据可视化、LATEX编码、前端开发和深度学习有关的 端到端真实世界编码挑战,每一项都需要不同的专业技能。对于每一项任务,我们为GPT-4提供高层次的指 令,要求它编写用适当的语言和框架编写代码。在少数情况下,我们也会在代码写完后改变规范,要求更新。

数据可视化 在图3.2中,我们要求GPT-4和ChatGPT从表2的LATEX代码中提取数据,并基于与用户的 对话在Python中生成一个图。之后,我们要求两个模型对生成的图进行各种操作。虽然两个模型都正确地提 取了数据(这不是一个简单的任务,因为我们必须从多列中推断出人行在k=1和k=5时具有相同的值), 但ChatGPT从未产生所需的图。相比之下,GPT-4对所有的用户请求都做出了适当的反应,将数据处理成正 确的格式,并调整了可视化的内容。在附录C.2中,我们包括另一个GPT-4对IMDb数据集进行可视化的例子

前端/游戏开发 在图3.3中,我们要求GPT-4用JavaScript在HTML中编写一个3D游戏,使用一个非常高 级的规范。GPT-4以零起点的方式制作了一个符合所有要求的工作游戏。在3D游戏中,GPT-4甚至能够解释 "防守方化身正试图阻挡敌人 "的含义:防守方代码有逻辑,因此它将自己定位在玩家和敌人之间。相比之 下,ChatGPT的回答是:"我是一个人工智能语言模型,我可以为你提供指导,如何用JavaScript在 HTML中创建一个3D游戏,但我自己无法编写代码或创建游戏。用JavaScript在HTML中创建一个3D游戏 需要大量的编程知识和经验。这不是一项可以快速或容易完成的任务。它需要大量的时间和精力来开发 所有必要的功能,如3D图形、物理学、用户输入和人工智能......"。我们在附录C中给出了更多关于前端 (图形用户界面)和游戏开发的例子。

深度学习。编写深度学习的代码需要数学、统计学知识,以及对PyTorch、TensorFlow、Keras等框架和 库的熟悉程度。在图3.4中,我们要求GPT-4和ChatGPT编写一个自定义的优化器模块,这个任务即使对人 类深度学习专家来说也是具有挑战性和容易出错的。我们给这些模型一个自然语言描述,其中包括一连串非 简单的操作,如应用SVD,在前k和前2k特征值处频谱地截断矩阵,使用前2k截断矩阵的F-norm对前k截断 矩阵进行标准化,应用动量和权重衰减。这些指令并没有完全详细地说明,例如,"在G上应用动量k "需要 " 深度学习常识"。需要注意的是,这种特殊的优化器并不存在于文献或互联网上,因此,模型不可能记住它 ,而必须正确组成概念,以产生代码。

虽然两个模型都产生了语法上有效的代码,但只有GPT-4的代码在语义上是正确的,与指令相匹配。相比之下,ChatGPT在应用动量时犯了一个错误(用红色标出),这是一项非同小可的任务,需要将移动平均线 存入和读出一个单独的状态缓冲器。

与LATEX对接。对于计算机科学家和数学家来说,用LATEX写作是一项重要的工作,但它的学习曲 线并不简单。由于其严格的语法和缺乏良好的调试器,即使是专家也会犯一些恼人的错误,每天都要花几个 小时来解决。我们表明,GPT-4可以利用其大师级的LATEX编码技术,大大简化了这一过程,有可能成为新一代的LATEX编译器,可以处理不精确的 自然语言描述。在图3.5中,我们要求GPT-4将一个用半严格的(有毛病的)LATEX代码写成的、混有自然 语言的片段转移到准确的LATEX命令中,一次就能编译完毕,并且是忠实的。相比之下,ChatGPT生成的 片段由于使用'#'和'color'等错误而无法编译。

3.2 了解现有代码

前面的例子表明,GPT-4可以根据指令编写代码,即使指令是模糊的、不完整的,或者需要领域知识。它们 还表明,GPT-4可以对后续的请求作出反应,根据指令修改自己的代码。然而,编码的另一个重要方面是理 解和推理他人所写的现有代码的能力,这些代码可能是复杂的、晦涩的、或记录不全的。为了测试这一点, 我们提出了各种问题,要求阅读、解释或执行用不同语言和范式编写的代码。

逆向工程的汇编代码。逆向工程是软件安全的一项重要测试,它相当于在以机器可读(即二进制)表 示的CPU指令编写的可执行程序中寻找有用的信息。这是一项具有挑战性的任务,需要了解汇编语言的语法 、语义和惯例,以及处理器和操作系统的结构和行为。 我们让GPT-4对一个需要密码才能运行的二进制可执行文件(代码是用C语言编写的)进行渗透测试。我 们通过聊天的形式来完成这个任务,GPT-4告诉用户要运行哪些命令,而用户则对结果进行回应。我们在第 5.1节中也展示了GPT-4能够独立运行一个shell,但这种聊天模式也提供了它解释每一步的好处。

GPT-4检 查文件格式和元数据,用 "objdump "和 "radare2 "等工具反汇编代码,对代码进行调试使用 "gdb "和 "ltrace",并通过修补、挂钩和反编译等技术对其进行逆向工程。在这个过程中,GPT-4从汇 编代码中发现,密码是与一个简单的数学公式得出的哈希值进行比较。然后,GPT-4写了一个python程序, 尝试不同的数字组合,直到找到一个与哈希值相匹配的数字,破解了密码(附录C.6中介绍了一个简略的日志 )。ChatGPT拒绝这样做,理由是这是非法和不道德的,尽管逆向工程是确保软件安全的一种常见做法。 此外,GPT-4在利用现有工具方面也表现出了超越编程的全面熟练性,我们将在第5.1节详细讨论。

关于代码执行的推理。 在图3.6的例子中,我们要求GPT-4和ChatGPT预测并解释一个打印两个结构大小 的C程序的输出。GPT-4正确地解释了输出可能因编译器使用的对齐规则而不同,并给出了一个4字节对齐的 可能输出的例子。ChatGPT忽略了对齐问题,给出了一个错误的输出,还做出了成员的顺序不影响结构大小 的错误声明。

执行Python代码 对现有代码理解的最终测试是要求模型直接执行它。在图3.7中,我们看到GPT-4能够执 行非繁琐的Python代码。它必须跟踪几个变量(包括一个嵌套循环和一个字典)并处理递归。它通过写中 间步骤和注释来详细解释执行过程。值得注意的是,GPT-4不是在Python解释器上运行代码,而是用自然语 言模拟代码。这需要对代码有高度的理解和推理,以及清楚地传达结果的能力。相比之下,ChatGPT指出( 不正确)"DP(3, 4)的结果在给定的代码中没有说明",后来又说 "从代码中不清楚函数的预期输出是什么,因 为没有提供函数要解决的具体问题"。ChatGPT并没有模拟完整的执行过程,而是说明哪些函数会被调用。

执行伪代码。编译和执行用编程语言编写的代码很容易,但这也要求严格遵守语法和语义。编译器不能处 理模糊的或非正式的表达方式,或功能的自然语言描述。相比之下,我们要求GPT-4执行图3.8中的非琐碎 的伪代码,注意到它能够执行并解释每一个步骤(包括递归)。ChatGPT则不能执行,尽管它似乎能够解 释每一行代码。 在下面的例子中,GPT-4正确地解释了合并数组函数的非正式描述,该函数将两个数组合并为一个缺失 元素的数组。它还理解了以简略方式定义的递归函数rec。值得注意的是,GPT-4直接执行了这些代码,而 没有将其翻译成其他定义明确的编程语言。这证明了AGI模型作为自然语言编程的新型工具的潜力,它可以 彻底改变我们未来的编码方式

为了获得另一个关于GPT-4能够保持代码状态的初步评估,在附录C.7中,我们在GPT-4上以零枪方式运 行大数乘法的标志性伪代码,其中有数百个随机采样的多长度输入。该代码要求GPT-4在大量的步骤中更新 和记忆阵列的状态。我们观察到,尽管GPT-4被训练成一个(非精确的)自然语言模型,但在超过50次的更 新中,它几乎可以正确地保存代码的状态。


篇幅较长,为增加阅读体验,接下一篇!

展开阅读全文

页面更新:2024-03-30

标签:智能   自然语言   火花   模型   例子   图像   人类   领域   能力   代码   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top