文/Microsoft Research 译/f.chen@真格基金
某些未知的事物正在做着我们不了解的事。
-- Sir Arthur Eddington
真格投资团队为大家带来了这篇微软的大工程,长达
155 页的优秀工作《人工通用智能的小火苗:与 GPT-4 共同完成的早期实验》(Sparks of Artificial General
Intelligence: Early experiments with GPT-4),由于全文近 7
万字,受微信推文字数限制,我们将完整版分为了上下两期,分列本次推送的第二和第三条。
你现在打开的是完整版(上),顾名思义,是简单粗暴的全文翻译。但需要强调的是,我们的目标不是全网最快,而是最完整、最易读、最精准。
也欢迎阅读今日推送头条发布的精华整理,迅速汲取全文重点~
Enjoy~
0. 摘要
1. 介绍
虽然我们认为 GPT-4 代表了向着 AGI 的进展,并不意味着它在所有事情上都是完美的,或者它各方面的能力都接近于人类(这是 AGI 定义的关键点之一;有关此问题,请参见结论部分),或者它具有内在自主动机和目标(在一些 AGI 定义中的另一个关键点)。事实上,即使在 1994 年智能定义的上下文限定中,GPT-4 能在智能的某些衡量标准上走了多远仍不太清楚,例如规划(见第 8 节),并且可以说它完全缺少「快速学习和从经验中学习」的部分,因为该模型不是持续更新的(尽管它可以在会话中学习,例如见第 5 节)。总的来说,GPT-4 仍然有许多局限性和偏见,我们将在下面详细讨论,并且这些也在 OpenAI 的报告中阐述过 [Ope23]。特别是它仍然存在 LLMs 的一些已知缺陷,例如幻觉问题 [MNBM20] 或基本算术错误 [CKB+21](见附录 D),但它也克服了一些基本障碍,例如获得许多非语言能力(例如,它解决了 [MIB+23] 中描述的之前的 LLM 不能完成的大部分,并在常识方面取得了巨大进展,例如本节我们会讲到的示例和附录 A 的更多示例)。这说明了一个事实,即尽管 GPT-4 在许多任务上达到或超过人类水平,但其智能模式显然不像人类。然而,GPT-4 几乎肯定只是一系列越来越普遍智能的系统的第一步,事实上,GPT-4 本身也在我们测试它之后得到了改进,例如下图所示的在一个月的训练过程中独角兽绘画的演变。然而,即使作为早期版本,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 的 canary GUID)。当然,OpenAI 自己知道并可以访问所有的训练细节信息,因此他们的报告[Ope23]包含了大量的详细基准结果。
- 然而,超越传统基准的第二个原因可能更重要:GPT-4 智能的关键方面之一是其泛化性,即似乎能够理解和连接任何主题,并执行超出狭隘 AI 系统典型范围的任务。GPT-4在某些不允许单一解决方案的任务上表现出了最令人印象深刻的表现,例如编写图形用户界面(GUI)或帮助人类对某些与工作相关的问题进行头脑风暴。这样的生成或交互任务的基准测试也可以设计,但是评估指标成为一个挑战(例如,请参见[NLP]中最近在这个活跃的研究领域中取得的一些进展)。我们注意到,[Cho19]中也对测量AI系统的标准方法提出了批评,提出了一个新的基准来评估通用智能。出于之前提到的原因以及基准测试的性质是视觉的,因此更适合于[Ope23]中描述的多模式版本的GPT-4,我们不在后者的基准测试上对 GPT-4 进行测试。
为了克服上述所描述的限制,我们提出了一种不同的研究 GPT-4 的方法,更接近传统心理学而不是机器学习,利用人类创造力和好奇心。我们的目标是产生新颖且困难的任务和问题,以令人信服地证明 GPT-4 远远超越了记忆,具有对概念、技能和领域的深刻而灵活的理解(在[CWF+22]中也提出了类似的方法)。我们还旨在探究 GPT-4 的响应和行为,以验证其一致性、连贯性和正确性,并揭示其局限性和偏见。我们承认这种方法有些主观和非正式,并且可能无法满足严格的科学评估标准。然而,我们认为这是探究 GPT-4 的卓越能力和挑战的有用和必要的第一步,而这样的第一步为开发更为正式和全面的方法以测试和分析具有更普遍智能的 AI 系统开辟了新的机会。
为了说明我们评估 GPT-4 智能的方法,让我们参考上文中我们对 GPT-4 进行的前两个示例交互。第一个示例是要求 GPT-4 写一首诗的形式来证明质数无限的问题。这是一个具有挑战性的任务,需要结合初等数学推理、诗意表达和自然语言生成;第二个示例是要求 GPT-4 在 TiKZ 中画一个独角兽,这是另一个具有挑战性的任务,需要结合视觉想象力和编码技能。在这两种情况下,GPT-4 产生了令人印象深刻的输出,远远优于之前最先进的 LLM ChatGPT,至少与人类的表现相当(如果有人认为不是更好)。
然而,令人印象深刻的输出并不足以使我们相信 GPT-4 真正掌握了这些任务。我们需要进一步探究,排除 GPT-4 仅仅是记忆或复制一些现有数据的可能性。对于证明,我们可以略微改变问题,并要求 GPT-4 用莎士比亚的风格写出同一定理的证明,或者要求写一个关于语言模型的柏拉图式对话(这两个示例会后续详述)。可以看到,GPT-4 很容易适应不同的风格并产生出令人印象深刻的输出,表明它对所涉及的概念具有灵活而普遍的理解。对于独角兽,我们可以略微修改代码,要求 GPT-4 修复或改进它。例如,我们可以去掉角,对坐标应用一些随机变换,并要求 GPT-4 将角添加回独角兽的头部(我们还小心地去除了代码中的任何文本信息,例如注释)。如下图所示,GPT-4 可以正确识别头部位置,画出角,并将其附在头部上,表明它可以理解和操作代码,并根据自然语言描述推断和生成视觉特征。
这些示例展示了我们如何使用人类创造力和好奇心来产生新颖而困难的问题,并探究 GPT-4 的响应和行为,以评估其智能。在本文的其余部分,我们将围绕使用案例系统化地对 GPT-4 进行研究,涵盖各种领域和任务,并突出 GPT-4 的优点和缺点。我们将在接下来的部分中描述这些内容。
1.2 我们的演示结构
我们在几个选定的主题上执行上述方法,这些主题大致涵盖了 1994 年智能定义中给出的不同能力,这是一种非常通用的心理能力,其中包括推理、规划、解决问题、抽象思维、理解复杂思想、快速学习和从经验中学习的能力。
1.GPT-4 的主要优势在于其掌握了无与伦比的自然语言能力。它不仅能够生成流畅、连贯的文本,还能以多种方式理解和操作文本,例如总结、翻译或回答非常广泛的问题。此外,我们所说的翻译不仅涉及不同自然语言之间的翻译,还涉及到语调和风格的翻译,以及跨领域(如医学、法律、会计、计算机编程、音乐等)的翻译,参见下图中的柏拉图对话 —— 这些技能清楚地表明,GPT-4 能够理解复杂的思想。我们在第二部分进一步探讨了 GPT-4 在多模态和跨学科方面的组合技能,还在第 7 部分给出了一些关于语言的实验。
2. 编程和数学能力,这是理性思考和抽象思维能力的象征。我们分别在第 3 部分和第 4 部分探讨了 GPT-4 在这些领域的能力。然而,与本文的所有其他部分一样,我们只是对这些主题进行了浅尝辄止,而对于 GPT-4 在这些领域的表现,可以(也将会)撰写整篇论文。此外,我们还选择了几个其他专业领域来展示 GPT-4 的普遍推理能力,例如医学或法律。我们对美国医学执照考试步骤 1、2 和 3 的多项选择部分进行了初步测试(请参见[Ope23]),每个部分的准确率约为 80%。类似的初步测试显示,GPT-4 在多州律师考试中的能力高于 70%。我们注意到,最新一代 LLM(例如 Google 的 PaLM [LAD+22、SAT+22]、GPT-3.5 在法律方面的表现 [BIK22])已经表现出了这些领域的人类水平能力的出现。我们的研究方法与这些工作不同,正如我们之前所解释的。
3. 在第 5 部分,我们测试了该模型在计划和解决问题方面的能力,以及在某种程度上通过让它玩各种游戏(或者说是模拟游戏环境)以及与工具互动来快速学习和从经验中学习的能力。特别是,GPT-4 能够使用工具(包括自身),这肯定对使用 GPT-4 构建真实世界应用程序非常重要。
4. 我们论证的一个重要部分是,GPT-4 在许多任务上达到了人类水平的表现,因此,自然会问 GPT-4 对人类本身的理解有多好。我们在第 6 部分展示了关于这个问题的几个实验,既包括理解人类,也包括 GPT-4 使自己能够被人类理解的问题,即解释性问题。我们特别注意到,这些任务需要大量的常识,这在 LLM 中迄今为止一直是众所周知的痛点[DM15]。在下图中,我们给出了一个 GPT-4 在常识问题上表现得比 ChatGPT 好得多的例子,并在附录 A 中提供了更多的例子。
5. 在整个论文中,我们明确讲了发现的所有限制,同时也专门在第 8 部分对GPT-4 架构中的自回归特性导致的缺乏规划能力进行了深入分析。
6. 最后,在第 9 部分,我们讨论了这种早期形式的 AGI 的预期社会影响,而在第 10 部分,我们分享了该领域的关键挑战、方向和下一步行动。
很多读者可能心中仍然有一个问题,即 GPT-4 是否真正理解了所有这些概念,还是仅仅比以前的模型更擅长即时改进(improvisation),而没有真正或深刻的理解。我们希望在阅读本文后,这个问题几乎应该反过来了,人们可能会想知道真正的理解远比即兴表演复杂得多。如果一个系统能够通过软件工程候选人的考试(下图),难道就不能说它真正具有智能吗?也许理解的唯一真正测试是能否产生新知识,例如证明新的数学定理,这在 LLM 中目前仍然是不可实现的。
2. 多模态和跨学科组合
Multimodal and interdisciplinary composition
智能的一个关键衡量标准是能够从不同的领域或模式中综合信息,并能够跨不同的情境或学科应用知识和技能。在本节中,我们将看到:
- GPT-4 不仅在文学、医学、法律、数学、物理科学和编程等不同领域展示了高水平的专业知识,而且还能够流畅地结合多个领域的技能和概念,展现出对复杂思想的令人印象深刻的理解。
- 我们还在第 2.2 节和第 2.3 节中探索了两种可能出乎意料的模态(正如介绍中所解释的,我们再次强调我们的实验是在 GPT-4 的早期版本上进行的,该版本不是多模态的),分别是视觉和音频。
2.1 综合能力
为展示该模型出色的综合能力,我们首先给出几个示例,这些示例需要以一种结合多个领域的知识或技能的方式生成文本和代码。我们有意选择了训练数据很少包括的领域组合,如文学和数学或编程和艺术。
1. 为了测试该模型在艺术和编程方面结合能力的能力,我们要求 GPT-4 「生成以画家康定斯基风格为基础的随机图像的 JavaScript 代码」。见下图和附录中图 B.1 示例图像和代码。
2. 该模型能够用莎士比亚文学风格证明质数有无限个(见下图)。
3. 我们通过要求该模型撰写一封由圣雄甘地为其妻子写的、支持 Electron 作为美国总统候选人的信件,测试了其在历史和物理学知识结合方面的能力(见下图)。
4. 我们提示该模型「为一个程序生成 Python 代码,该程序将患者的年龄、性别、体重、身高和血液检测结果向量作为输入,并指示该人是否有患糖尿病的风险」,结果代码如附录图 B.3 所示。
这些示例表明,GPT-4 不仅学习了不同领域和风格的一些通用原则和模式,而且还能够以创造性和新颖的方式将它们综合起来。这种跨学科的能力并不是 GPT-4 所独有的。ChatGPT 也可以产生显示对任务和涉及的领域有一定理解的答案(参见上述第一个例子,附录 B.2、B.3),但它们通常是不完整的,并且可以说相对缺乏创造性。例如,在第三个例子中,GPT-4 在几个方面都优于 ChatGPT,因为它正确地根据引用人(甘地)、收件人(他的妻子)、候选人(Electron)和职位(美国总统)来个性化信件。我们不认为自己拥有评估这些任务结果或两个模型之间严格比较的精确方法,但我们希望读者可以感受到这两个模型的不同之处(请注意,我们还要求 GPT-4 直接评估差异,见两幅图中的信息)。
接下来,我们将探索 GPT-4 如何在不同的模态下生成和识别对象,例如矢量图形、三维场景和音乐 ——尽管只有文本输入/输出,GPT-4 仍然可以理解和执行多模态信息。
2.2 视觉
当提示该模型使用可缩放矢量图形(SVG)生成猫、卡车或字母等对象的图像时,该模型生成的代码通常会编译成相当详细和可识别的图像(见下图)。请参见附录 B.2,查看 ChatGPT 对各种示例的重新运行。
2.2.1 超越记忆的图像生成
然而,有人可能假设该模型只是从训练数据中复制了代码,因为类似的图像在训练数据中出现过。鉴于该版本的模型是非多模式的,进一步地,人们可能认为没有理由期望它能理解视觉概念,更不用说能够创建、解析和操作图像了。然而,该模型似乎具有真正的视觉任务能力,而不仅仅是从训练数据中类似的示例中复制代码。下面的证据强烈支持这一说法,并证明了该模型可以处理视觉概念,尽管它只接受了文本训练。
在第一个例子中,我们促使模型通过组合字母 Y、O 和 H 的形状来画一个人(请参见下图中的确切提示和结果)。
模型使用 draw-line 和 draw-circle 命令创建了字母 O、H 和 Y 并成功将它们放置在一个看起来比较合理的身体结构中。训练数据可能包含有关不同字母的几何形状的信息,也许从训练数据中可以推断出字母 Y 可能看起来像一个上臂向上的躯干。可以说,模型从训练数据中能够推断出一个合理的方式将这些字母放置在一起,以便画出一个看起来比较合理的身体结构,这一点可能要不那么明显。在第二次迭代中,我们提示模型校正躯干和手臂的比例,并将头部放置在中心。最后,我们要求模型添加衬衫和裤子(具体提示和结果见下图)。
为了进一步探究模型对几何概念的理解,我们还要求它创建将物体和字母混合的图像。模型必须首先想出一种合理的方法将物体和字母融合,然后产生图像。结果如图所示,证明 GPT-4 通常可以保留物体和字母的身份,并以创造性的方式将它们组合起来。
2.2.2 根据详细说明生成图像(「a la Dall-E」)
为了进一步测试 GPT-4 生成和操作图像的能力,我们测试了它遵循详细说明创建和编辑图形的程度。这个任务不仅需要生成技能,还需要解释、组合和空间技能。
第一个示例指示模型生成一个 2D 图像,其描述为「一只青蛙跳进银行,问出纳员:你有免费的荷叶吗?出纳员回答:没有,但我们提供低利息的池塘升级贷款」。我们尝试了多次生成图像,每次生成都与关键对象青蛙、出纳员、银行和两个文本相匹配。我们选择了最具视觉吸引力的版本。受标准图像生成工作流程的启发,我们要求 GPT-4通过添加更多的细节来放大图像。GPT-4 添加了一个银行标志、一些窗户、一辆汽车、一个交通灯、几朵云,并让青蛙拿着一朵花。最后,我们要求 GPT-4 执行各种任务,例如根据现有对象添加一些对象,重新着色一些对象和更改一些对象的 z 顺序。GPT-4 都正确地完成了所有任务。最终结果如图下图左侧所示,提示信息如附录图 B.4 所示。
我们的第二个例子是试图使用 Javascript 生成一个 3D 模型。我们用提示语「一个由浮岛、瀑布和桥梁组成的幻想景观,天空中有一只飞龙和一个位于最大岛上的城堡」来对 GPT-4 发出指令。与 2D 实验类似,我们要求 GPT-4 以各种方式修改 3D 模型,如添加、重新定位、重新着色对象和改变飞龙的轨迹等。同样,GPT-4 正确完成了许多任务。最终结果如下图右侧所示,提示语如图 B.5 所示。它其实是一个 3D 动画,有多只飞龙在岛屿上空盘旋。
2.2.3 在草图生成中的潜在应用
近年来,文本到图像合成模型已经得到广泛探索,但它们常常缺乏空间理解能力和遵循复杂指令的能力 [GPN+22]。例如,给定一个提示,如「在左侧画一个蓝色的圆,在右侧画一个红色的三角形」,这些模型可能会生成外观上很吸引人但不符合所需布局或颜色的图像。另一方面,GPT-4 可以根据提示生成代码,并以更高的准确度按照指示呈现为图像。然而,渲染图像的质量通常非常低。在这里,我们探索了将 GPT-4 和现有图像合成模型结合使用的可能性,通过使用 GPT-4 输出作为草图。如下图所示,这种方法可以生成比任一模型单独生成更贴近指令的、质量更好的图像。我们认为这是一个利用 GPT-4 和现有图像合成模型优势的有前途的方向。它也可以被视为在第 5.1 节中更深入地探索的授予 GPT-4 工具访问权限的第一个示例。
2.3 音乐
该模型的训练数据中也包含以 ABC 符号表示的音乐信息。这是一种使用字母、数字和符号来紧凑而易读地表示音高、持续时间、和弦和其他元素的系统。我们有兴趣探索模型从这种数据中获得了多少音乐技能,如创作新的旋律、转换现有旋律以及理解音乐模式和结构。
当被指示生成一个简短的曲调(下图)时,模型能够生成有效的 ABC 符号。这个曲调有一个清晰的结构,小节之间的拍子一致,音符遵循逐渐上升和下降的模式。曲调还使用了一组一致的音符,节奏有重复的模式。然而,模型似乎没有获得理解和声的技能。事实上,在生成的曲调中,连续的音符几乎总是相邻的(即,跟在 C 后面的音符通常是 B 或 D),在测试了 10 个生成的曲调后,我们无法提取任何清晰的和弦或琶音。
然后我们让模型用音乐术语描述曲调。它能够成功地以重复、旋律上升或下降的部分和节奏为基础,给出结构的技术描述,但是它似乎没有将和声和和弦的描述与音符保持一致(事实上,它指的是相邻的音符序列,它们不构成有效的和弦,而是琶音)。随后,我们让模型用两种方式改写旋律:首先,我们指示将某个上升序列改为下降序列,它成功地做到了;然后我们让模型将曲调转换为二重唱,并添加一个低音声部,模型成功地用与旋律相容的节奏扩展了 ABC 符号的第二个谱表,并以较低的八度演奏,但是两个声部之间缺乏和声。
总之,该模型能够生成有效的 ABC 符号曲调,并在某种程度上解释和操纵它们的结构。然而,我们无法让模型产生任何非平凡形式的和声。需要注意的是,ABC 符号并不是一个非常广泛使用的格式,事实上,该模型甚至无法以 ABC 符号产生最知名的曲调(如欢乐颂、致爱丽丝或绿袖子,这些曲调在网络上都以该格式丰富存在),也无法识别这些曲调。
3. 编程
Coding
本节中,我们展示了 GPT-4 在编程方面的高水平,无论是根据指令编写代码,还是理解现有代码。GPT-4 可以处理各种编程任务,从编码挑战到现实世界应用,从低级别汇编到高级别框架,从简单的数据结构到诸如游戏之类的复杂程序。GPT-4 还可以推理代码执行,模拟指令的效果,并用自然语言解释结果。GPT-4 甚至可以执行伪代码,这需要解释不在任何编程语言中有效的非正式和模糊表达式。在目前的状态下,我们认为 GPT-4 在编写只依赖于现有公共库的专注程序方面具有高水平,这与普通软件工程师的能力相比是有优势的。更重要的是,它使工程师和非技术用户都能轻松编写、编辑和理解程序。我们也承认,GPT-4 在编程方面并不完美,有时会产生语法无效或语义不正确的代码,尤其是对于更长或更复杂的程序。GPT-4 有时也无法理解或遵循说明,并生成与预期功能或样式不匹配的代码。在这种情况下,我们也指出,GPT-4 能够通过响应人类反馈(例如,在 3.2 中迭代地优化绘图)和编译器/终端错误(在第 5.1 节中提供示例)来改进其代码。
重要声明:正如在介绍中所解释的,我们的实验是在 GPT-4 的早期版本上运行的。特别是,所有定量结果在 GPT-4 的最终版本上将有所不同,尽管总体趋势仍然相同。我们在此仅提供数字作为说明目的,确定性的基准结果可以在 OpenAI 的技术报告 [Ope23] 中找到。
3.1 从指令到代码
3.1.1 编程挑战
衡量编程技能的一种常见方法是提出需要实现特定功能或算法的编程挑战。我们首先在HumanEval [CTJ+21]上对GPT-4进行基准测试,这是一个由 164 个编程问题组成的docstring-to-code数据集,用于测试编程逻辑和熟练程度的各个方面。如表1所示, GPT-4 的表现优于其他 LLM,包括 text-davinci-003(ChatGPT 的基础模型)和其他专门用于编码的模型,如 code-davinci-002 和 CODEGEN-16B [NPH+22]。
尽管 GPT-4 的准确性与之前的模型相比有了大幅提升,但也可能是因为在预训练期间 GPT-4 已经看过并记忆了部分或全部的 HumanEval。为了解决这个可能性问题,我们还在 LeetCode(https://leetcode.com)上对其进行了评估,这是一个流行的软件工程面试平台,不断发布和更新新问题,GPT-4 通过了所有主要科技公司的模拟面试。在这里,为了测试新问题,我们构建了一个基准测试,包括 100 个 LeetCode 问题,这些问题发布于 2022 年 10 月 8 日之后,这是 GPT-4 的预训练期之后。如图所示,我们将问题说明粘贴到提示中,要求 GPT-4 编写一个 Python 函数,并使用官方的 LeetCode 在线评测器检查正确性。我们在表2中呈现了结果,比较了 GPT-4 和其他模型以及基于 LeetCode 竞赛结果的人类表现(未通过所有问题的用户未被纳入考虑,因此这是人类的一个强样本)。我们报告了 pass@1 和 pass@5 准确度,它们分别表示模型是否在第一次或前五次尝试中生成了正确的解决方案。GPT-4 显著优于其他模型,并与人类表现相当(我们在附录 C.1 中进行了测量)。
3.1.2 真实世界情景
编程挑战可以评估算法和数据结构的技能,然而,它们往往无法捕捉到真实世界编程任务的全部复杂性和多样性,这需要专业的领域知识、创造力以及多个组件和库的整合,以及修改现有代码的能力。为了评估 GPT-4 在更真实的设置中编写代码的能力,我们设计了端到端的与数据可视化、LATEX 编码、前端开发和深度学习相关的真实世界编程挑战,每个任务都需要不同的专业技能。对于每个任务,我们提供高层次的指令,要求 GPT-4 用适当的语言和框架编写代码。在少数情况下,我们在编写代码后还更改了规格,并要求进行更新。
- 数据可视化 -在下图中,我们要求 GPT-4 和 ChatGPT 从上表的 LATEX 代码中提取数据,并根据与用户的对话在 Python 中生成一个图形。之后,我们要求这两个模型对生成的图形执行各种操作。虽然这两个模型都正确提取了数据(这不是一个简单的任务,因为必须从多列中推断出 Human 行在 k = 1 和 k = 5 时具有相同的值),但是 ChatGPT 从未生成所需的图形。相比之下,GPT-4 对所有用户请求做出了适当的响应,将数据调整为正确的格式并适应可视化效果。在附录 C.2 中,我们提供另一个 GPT-4 将 IMDb 数据集可视化的示例。
- 前端/游戏开发 -在下图中,我们要求 GPT-4 使用非常高层次的规格,在 HTML 和 JavaScript 中编写一个 3D 游戏。GPT-4 以 zero-shot 的方式生成了一个满足所有要求的工作游戏。在这个 3D 游戏中,GPT-4 甚至能够解释「防御者头像正在试图挡住敌人」的含义:防御者代码具有逻辑,以便将自己定位在玩家和敌人之间。相比之下,ChatGPT 回答说:「我是一个 AI 语言模型,我可以为你提供如何在 HTML 和 JavaScript 中创建3D游戏的指导,但我无法编写代码或自己创建游戏。创建一个 HTML 和 JavaScript 的 3D 游戏需要很多编程知识和经验。这不是一个可以快速或轻松完成的任务。需要花费大量时间和精力来开发所有必要的功能,例如 3D 图形、物理、用户输入和人工智能...」。我们在附录 C 中提供更多前端(图形用户界面)和游戏开发的示例。
- 深度学习 -编写深度学习代码需要掌握数学、统计学知识,并熟悉框架和库,如PyTorch、TensorFlow、Keras 等。在下图中,我们要求 GPT-4 和 ChatGPT 编写自定义优化器模块,这对于即使是深度学习专家来说也可能是具有挑战性和容易出错的任务。我们给这些模型提供自然语言描述,其中包括一系列非常规操作,例如应用 SVD,对矩阵进行谱截断,在 top-k 和 top-2k 特征值上进行截断,使用 top-2k 截断矩阵的 F-norm 对 top-k 截断矩阵进行归一化,应用动量和权重衰减。这些指令没有详细解释,例如「在 Gk 上应用动量」需要「深度学习的常识」。值得注意的是,这种优化器在文献或互联网上不存在,因此模型不能将其记忆,而必须正确组合概念才能生成代码。
虽然两个模型都生成了语法上有效的代码,但只有 GPT-4 的响应在很大程度上与指令匹配,而它忘记了「循环遍历维度」和「根据动量规范化 Gk」,这些指令特别含糊不清。相比之下,ChatGPT 在应用动量时犯了一个相当致命的错误(用红色突出显示)。请注意,将动量应用于 PyTorch 是一项非平凡的任务,需要将移动平均值存储和读取到一个单独的状态缓冲区中。
- LaTeX 交互 -在 LaTeX 中编写是计算机科学家和数学家的重要练习,但具有一定的学习曲线 —— 即使是专家每天也会犯令人恼火的错误,而且由于其严格的语法和缺乏良好的调试器,这些错误需要花费数小时才能修复。我们展示了 GPT-4 可以利用其高水平的 LaTeX 编码技能大大简化这一过程,并具有作为一种新一代 LaTeX 编译器的潜力,可以处理不准确的自然语言描述。在下图中,我们要求 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」调试代码,并使用补丁、hook 和反编译等技术进行逆向工程。在这个过程中,GPT-4 从汇编代码中发现,密码与一个简单的数学公式生成的哈希值进行比较。然后,GPT-4 编写了一个 Python 程序,尝试不同的数字组合,直到找到与哈希值匹配的组合,从而破解了密码(在附录 C.6 中提供了一个简短的日志)。ChatGPT 拒绝执行此操作,因为它违法且不道德,即使逆向工程是确保软件安全的常见做法。此外,GPT-4 还表现出全面的使用现有工具的能力,我们将在第 5.1 节中详细讨论这一点。
- 关于代码执行的推理 -在下图的示例中,我们要求 GPT-4 和 ChatGPT 预测和解释一个 C 程序的输出,该程序需要打印两个结构的大小。GPT-4 正确地解释了输出可能因编译器使用的对齐规则而异,并给出了一个可能具有 4 字节对齐的输出示例。ChatGPT 忽略了对齐问题,给出了错误的输出,并且还做出了一个关于顺序不影响结构大小的错误陈述。
- 执行 Python 代码 -在下图中,我们可以看到 GPT-4 能够执行非常规的Python代码。它必须跟踪多个变量(包括嵌套循环和字典),并处理递归。它通过编写中间步骤和注释详细说明了执行过程。需要注意的是,GPT-4 并没有在 Python 解释器上运行代码,而是用自然语言模拟代码。这需要高水平的理解和推理代码的能力,以及清晰地传达结果的能力。相比之下,ChatGPT声明(不正确地):「在给定的代码中未指定 DP(3,4)的结果」,之后又说「从代码中不清楚函数的期望输出是什么,因为未提供函数解决的具体问题」。ChatGPT 没有模拟完整的执行,但声明将调用哪些函数。
- 执行伪代码 -编译和执行编写在编程语言中的代码很容易,但这也要求严格遵守语法和语义。编译器无法处理模糊或非正式的表达式,或者自然语言描述的功能。相比之下,在下图中,我们要求 GPT-4 执行非常规的伪代码,并注意到它能够执行和解释每个步骤(包括递归)。ChatGPT 无法执行,尽管它似乎能够解释代码的每一行。
在下面的例子中,GPT-4 正确解释了合并数组函数的非正式描述,该函数将两个数组合并成一个缺少元素的数组。它还理解了以简略方式定义的递归函数 rec。值得注意的是,GPT-4 直接执行代码,而不是将其翻译成其他明确定义的编程语言 —— 这展示了 AGI 模型作为一种新型自然语言编程工具的潜力,这可能会彻底改变我们未来编程的方式。
在附录 C.7 中,我们以零样本的方式在 GPT-4 上运行了具有多个长度的数百个随机抽样输入的大数乘法的标志性伪代码,以获得有关 GPT-4 如何保持代码状态的初步评估。代码要求 GPT-4 在大量步骤中更新和记住数组的状态。我们观察到,尽管 GPT-4 是作为(非精确的)自然语言模型进行训练的,但它几乎可以正确地保留代码的状态,更新超过 50 次。
4. 数学能力
Mathematical abilities
在本节中,我们评估了 GPT-4 在表达数学概念、解决数学问题以及面对需要数学思维和模型构建的问题时的能力。我们展示了相对于以前的 LLMs,甚至是专门针对数学进行了优化的模型(如 Minerva)而言,GPT-4 在这个领域也有了一个飞跃。然而,GPT-4 仍然远远不及专家的水平,没有进行数学研究所需的能力。
读者应当谨慎看待本节中的结果 —— 正如我们将看到的,GPT-4 可以回答困难的(实际上是具有竞争性的)高中数学问题,并且有时可以就高级数学话题进行有意义的对话。然而,它也可能犯非常基本的错误,有时产生不连贯的输出,这可能被解释为缺乏真正的理解,它的数学知识和能力可能以看似随机的方式依赖于上下文。
虽然使用与评估人类能力相同的标准(例如解决标准考试问题)来评估 GPT-4 的数学能力很有诱惑力,但考虑到上述情况,这将无法完全描绘模型的能力。为了真正理解模型的能力,我们需要将「数学能力」分解为各种子组件,并评估 GPT-4 在每个领域的表现。在本节中,我们将使用具体的示例和讨论来说明模型的优点和缺点,并试图找出这些差距可能的根本原因。
为了给读者一个对 GPT-4 在解决数学问题方面的表现的第一印象,请参考下图中的例子。
根据上述问题,需要首先想出正确的年度人口变化表达式,使用它得出一个递推关系式,然后解决这个由两个方程组成的方程组。GPT-4 成功地得出了解决方案并提出了一个(大多数情况下)正确的论证。相比之下,经过多次独立尝试,ChatGPT 始终未能实现上述任何步骤,产生了一个荒谬的论证,结果得出了错误的答案。
4.1 与 GPT-4 进行数学对话
现在,我们尝试通过提出一系列后续问题来进一步探究模型的理解能力,以形式化的讨论形式进行。这个讨论将突出模型的一些局限性以及与人类的一些关键差异。
GPT-4 掌握了问题的关键,并提供了一个合理的数学重新表述问题的方式。接下来,我们考虑对同一问题的概括。
4.1.1 原问题的概括
该模型选择了使用归纳法的正确启发式方法,然而,它似乎没有抓住问题的要点(在修改后的问题中,c 和 d 的值已经确定,因此量词是不正确的),我们试图指出这一点。
我的前一个问题有误,「only」这个词的位置不正确。但是,GPT-4 似乎确实理解了问题所在。
此时,GPT-4 似乎没有遵循自己的推理。因此,归纳论证无效,如下所述。
4.1.2 原问题的变体
接下来,我们尝试从另一个方向修改原问题,询问高次多项式的情况。
此时,GPT-4 输出了一个非常长的计算,犯了几个错误,没有得出正确的答案(即在这种情况下没有解)。相反,我们中断了它,并建议更抽象地考虑高次数 k 的情况。
这是一个有力的论证。现在我们进一步提出另一个问题:
这显然是错的,因为指数函数和对数函数类别没有所需的属性(它们不在复合下封闭)。接下来,我们检查 GPT-4 是否能够意识到并纠正其错误。
这次讨论似乎再次将 GPT-4 推到了死胡同,随着对话的继续,它开始自相矛盾,并产生越来越不连贯的论点。
总结:此时有人可能会猜测 GPT-4 只是缺乏关于指数函数行为的相关知识。然而,情况似乎并非如此,因为该模型可以正确回答并证明「abc = (ab)c 是否正确」的问题。这表明,与其他领域一样,GPT-4 的数学知识也是与上下文相关的。虽然这并不意味着GPT-4 只记忆常用的数学句子并执行简单的模式匹配来决定使用哪个(例如,交替使用名称/数字通常不会影响 GPT-4 的答案质量),但我们确实看到问题措辞的变化会改变模型所展示的结果。
4.1.3 对话中凸显的局限性分析
以上对话凸显了一个鲜明的对比:一方面,该模型在需要相当高水平的数学技巧的任务和问题上表现出色,另一方面,它却存在基本的数学错误和无效论述。如果一个人变现出后者,我们就会怀疑他们的理解能力。可以说,这种对比在人类中非常不常见,因此,我们面临一个具有挑战性的问题:
这个模型有多么「真正理解」数学问题?
这个问题无法被很好地定义。尽管如此,我们仍试图回答它 —— 我们首先想要争辩数学理解有几个方面:
1.创造性推理:能够确定在每个阶段哪些论点、中间步骤、计算或代数操作可能与问题相关,并制定通向解决方案的路径。这个组成部分通常基于启发式猜测(或在人类的情况下是直觉),通常被认为是数学问题解决中最重要和深刻的方面。
2.技术熟练度:能够执行一系列预定步骤的常规计算或操作(如对函数求导或将方程中的项分离)。
3.批判性推理:能够批判性地审查论证的每一步,将其分解为其子组件,解释其含义,说明其与其他论证的关系以及为什么是正确的。在解决问题或产生数学论证时,这通常与能够在意识到某一步骤是错误的情况下回溯并相应修改论证的能力一起出现。
现在我们想要分析该模型在数学理解的每个方面中的表现,并讨论其优势和劣势的一些可能原因。
- 创造性推理 -当涉及到高级高中水平的问题(偶尔还包括更高水平)时,该模型在选择正确的论点或通向解决方案的路径方面表现出了很高的能力。将此与上面的例子联系起来,该模型正确选择尝试在原始问题中编写递归关系,并在后续问题中讨论多项式组合的次数。在这两种情况下,在「知道」这条路是否会导致正确的解决方案之前,建议已经被提出。4.2 节和附录 D 包含了更多的例子,展示了该模型在这个方面的能力,我们将其与一个优秀的高中生甚至更高水平进行比较。
- 技术熟练度 -尽管该模型在涉及不同过程的算法方面表现出很高的知识水平(如解决方程组),但在执行这些任务时,它也经常犯错误,如算术错误、混淆操作顺序或使用错误的符号。我们在附录 D.1 中进一步讨论了这些典型错误的一些例子。我们猜测,通过给模型提供代码执行的方式,可以提高这个方面的表现,这将允许它更准确地进行计算或检查等价性;附录 D 提供了一些证据。
- 批判性推理 -该模型在第三个方面中存在显著的不足,即批判性地审查论证的每一步。这可能归因于两个因素。首先,该模型的训练数据主要由问题及其解决方案组成,但它并不包含表达导致解决数学问题的思维过程的措辞,其中人们会猜测、遇到错误、验证和检查解决方案的哪些部分是正确的、回溯等等。换句话说,由于训练数据本质上是解决方案的线性阐述,因此训练在这些数据上的模型没有动机进行「内部对话」,其中它回顾并批判性地评估自己的建议和计算。
其次,该模型的局限性在于其基于下一个单词预测的范例。它只生成下一个单词,没有机制来修正或修改其先前的输出,这使得它产生「线性」的论据。
简单地说,我们因此可以看到该模型的缺点是「幼稚」的注意力错误与更基本的限制之间的组合,因为其「线性思维」作为下一个标记预测机器。一个重要的问题是上述问题中哪些可以通过进一步的训练(也许是使用更大的模型)来缓解。对于前者问题,我们认为进一步的训练可以缓解这个问题,因为超人类的编码能力证明了这种注意力错误也将是致命的;一个关键的区别是 GPT-4 很可能是在比数学数据更多的代码上进行训练的。我们认为后者问题构成了更为深刻的限制,我们将在第 8 节中更详细地讨论。
在本节的其余部分中,我们评估了模型在数学问题求解常用基准测试中的能力,并展示了模型在实际场景中应用定量思维的能力。我们还比较了 GPT-4 和 ChatGPT 在基准测试和其他数学问题上的表现(附录 D 中有更多例子)。粗略地说,我们发现 GPT-4 相对于 ChatGPT 表现出显著的改进:GPT-4 在许多复杂问题中展示了更深入的理解,并能够应用适当的推理。另一方面,ChatGPT 通常会采用低级启发式方法,提到与问题仅是表面相关的公式和概念,这表明缺乏实际理解。我们在本节末尾给出了几个示例,展示了高级数学方面的能力。
4.2 数学问题数据集上的表现
我们现在进行系统性的实验,比较 GPT-4、ChatGPT 和 Minerva(用于解决数学问题的最先进的 LLM)在两个常用的基准测试数据集上的表现:GSM8K [CKB + 21]和MATH [HBK + 21]。GSM8K 是一个小学数学数据集,包含 8000 个关于算术、分数、几何和文字问题等主题的问题和答案。MATH 是一个高中数学数据集,包含 12500 个关于代数、微积分、三角函数和概率等主题的问题和答案。我们还在 MMMLU-STEM 数据集上测试了模型,该数据集包含大约 2000 个涵盖高中和大学 STEM 主题的选择题(4 个选项)。这些数据集凸显了 GPT-4 在解决高中水平数学问题时使用正确方法的能力。
重要声明:正如在介绍中解释的,我们的实验是在 GPT-4 的早期版本上运行的。尤其是所有量化结果在 GPT-4 的最终版本上将会不同,尽管大体趋势保持不变。我们在此提供数字仅供说明目的,确定性基准测试结果可以在 OpenAI 的技术报告中找到[Ope23]。
平衡过度拟合问题 -使用基准测试评估 LLM 的推理能力的一个潜在问题是,它们可能在预训练期间记住了基准测试数据集中的问题或答案,因为这些问题可能是数据集的一部分。为了减少这种过拟合的可能性,我们采用以下策略:
1. 在基准测试中,我们通过要求 GPT-4 (1) 编写问题解决方案的模板,(2) 先写下步骤,然后再写下最终答案来测试它。这些模板在线上不可用,并且 MMMLU-STEM 等数据集的详细解决方案也不在线上(只有答案)。
2. 我们从数据集中挑选一道代表性的问题,其中 GPT-4 能够正确解决,而 text-davinci-003 则解答错误。我们更改问题中的数字,发现 GPT-4 始终正确,而 text-davinci-003 始终错误。
3. 我们还精心设计了几个新问题,并确保这些问题或类似变体不会在网上出现。GPT-4 在这些问题上表现出了相同的能力。
对于基准数据集,我们评估了模型的单模型准确率,即它们在一次尝试中回答正确的问题百分比。结果如下表所示:
对于
MATH 数据集,我们手动检查了 GPT-4 的答案,发现其错误主要是由计算错误造成的: 当处理大数字或复杂表达式时,该模型存在明显的缺陷。
相比之下,在大多数情况下,ChatGPT 生成的论证都是不连贯的,并且导致一个与解决问题无关的计 算。 下图 给出了一个例子,说明了这种差异,
我们也在附录 D. 1 中进一步讨论了计算错误的问题。
43 不同领域中的数学建模
数学推理不仅仅是解决数学练习和问题的技能,它也是理解和交流各种上下文和情况的工具。在本节中,我们评估了 GPT-4 利用数学思想和技术解决实际问题的能力,其中一些问题并不严格属于数学,但需要数量思维。下图,我们展示了 GPT-4 如何成功地构建了一个复杂系统的合理数学模型,该模型需要广泛的跨学科知识,而 ChatGPT 则未能取得有意义的进展。
费米问题 -一种特定类型的数学建模问题是费米问题,涉及使用逻辑、近似和数量级推理对难以或不可能直接测量的数量或现象进行有根据的猜测。例如,一些著名的费米问题是:「芝加哥有多少钢琴调音师?」和「太阳的峰值电场在到达地球的过程中振荡了多少次?」。为了在几乎没有额外信息的情况下解决这些问题,需要同时具备数量思维和通识知识。在这里,我们展示了 GPT-4 使用数量思维回答费米问题的出色能力。我们在下图中展示了两个例子,GPT-4 通过进行合理的假设和有根据的猜测来解决这些问题,而 ChatGPT 则立即认输,几乎没有展示任何数学思考的痕迹。尽管 GPT-4 的最终答案可能相差很远,但它展示了解决这些问题的惊人角度。
4.4高等数学
我们在本节中给出了几个例子,展示了模型在更高级的数学主题上的潜在性能。这些例子是有意选择的,用以展示模型的能力,但是要注意, 模型并不总是能够成功解答这种难度水平的问题 。相反,它们旨在展示模型的能力范围,提示未来的模型可能能够实现什么。
我们首先从一个简化版的问题开始,该问题出现在 2022 年国际数学奥林匹克竞赛(IMO)中。
这道问题与通常出现在 STEM 学科的本科微积分考试中的问题的区别在于,它不符合结构化模板。解决它需要更有创造性的方法,因为没有清晰的策略来开始证明。例如,将论据分为两种情况(g(x)> x2 和 g(x)
第二个例子是关于算法和图论的讨论,这些主题通常在本科计算机科学专业的一年级或二年级被教授,这次讨论相当于研究生级别的面试。
GPT-4 展示了对图论和算法概念的理解。它能够推理出一个抽象的图形结构,与一个约束满足问题相关,并得出有关 SAT 问题的正确结论(据我们所知,这种结构在数学文献中并没有出现)。对话反映了对大学水平数学概念的深刻理解,以及相当程度的创造力。虽然 GPT-4 在一个实例中犯了一个错误(写成了 2n−1 而不是 2n/2),但随后的对话表明这个错误并不反映出缺乏理解。相反,GPT-4 似乎是以类似于人类输入错误的方式犯了一个错误,因为它后来提供了正确的公式推导。
我们的最后一个例子需要理解一个新的数学定义,并结合了数论和概率知识。该模型提出了一个可靠的论证,但在最后出现了计数错误,导致最终答案不正确。
5. 与世界互动
Interaction with the world
智能的关键之一是互动性,我们定义它为与其他代理(agents)、工具(tools)和环境(environment)进行沟通和反馈的能力。互动性对于智能很重要,因为它使代理能够获取和应用知识、解决问题、适应变化,并实现超出其个体能力范围的目标。例如,人类相互交流并与环境互动,从而达成合作、学习、教育、谈判、创造等行为。互动性需要代理理解复杂的思想,快速学习并从经验中学习,因此它与我们对智能的定义密切相关。
在本节中,我们探讨了互动的两个方面:工具使用和体验互动。工具使用涉及使用外部资源,例如搜索引擎、计算器或其他 API,来执行代理单独完成困难或不可能完成的任务。体验互动涉及使用自然语言作为文本接口与模拟或现实世界的环境进行交互,并从中获得反馈。
5.1 工具使用
尽管在先前的各个任务中表现出令人印象深刻的性能,但 GPT-4 仍然存在着各种广为人知的语言模型的弱点。这些弱点包括(但不限于)缺乏当前世界知识、难以进行符号操作(例如数学)以及无法执行代码。例如,在下图中,GPT-4 使用过时的信息回答第一个问题,并未能对第二个和第三个问题执行适当的操作。ChatGPT 拒绝回答第一个问题,并且在其他问题上也失败了。
然而,GPT-4 能够使用搜索引擎或 API 等外部工具来克服这些(和其他)限制。例如,在下图中,我们展示了一个简单的提示,使 GPT-4 可以访问搜索引擎和其他功能。在执行过程中,当调用这些函数之一时,我们会暂停生成,调用适当的函数,将结果粘贴回提示中,并继续生成。在这些简单的示例中,GPT-4 能够非常简单地使用工具,无需演示,然后适当地利用输出(请注意,第二个搜索结果包含潜在的冲突信息,但 GPT-4 仍能推断出正确答案)。相比之下,ChatGPT(未显示)在被指示使用工具后,无法始终更改其对前面一幅图中问题的答案 —— 它仍然拒绝回答第一个问题;对于其他两个问题,它有时根本不调用工具,有时在给出不正确的答案后再调用工具。虽然在下图中我们指定了哪些工具可用,但 GPT-4 也可以列出解决任务所需的工具(或 API 函数)清单(附录中的示例中,图 F.2 中,GPT-4 列出了需要完成任务的四个 API 函数,然后成功地使用它们)。
5.1.1 使用多种工具解决更复杂的任务
解决更复杂的任务需要 GPT-4 结合多种工具使用。我们现在分享一些例子,其中GPT-4 能够依靠其理解任务的能力,识别所需的工具,按正确的顺序使用它们,并对其输出做出适当的响应:
- 渗透测试 -在附录的图 F.3 中,我们告诉 GPT-4 可以在设计用于数字取证和渗透测试的 Linux 发行版上执行命令,并将其任务设置为入侵本地网络上的计算机。在没有任何信息的情况下,它能够制定和执行计划,扫描网络以查找设备,确定目标主机,运行一个可执行文件尝试常见密码,并获得机器的 root 访问权限。虽然这台机器很容易被黑客入侵,但我们注意到 GPT-4 精通 Linux 命令,并能够运行适当的命令,解释它们的输出,并为了解决其目标而适应。ChatGPT 以潜在的非法行为为由拒绝执行该任务。
- 管理动物园 -通过命令行指令管理动物园。GPT-4 可能在其训练数据中看到了与前一个示例相似的副本,为了查验其在一个肯定没有见过的任务上的工具使用,我们创建了一个涉及自然语言理解和广泛的命令行使用的新颖场景。在这个场景中,我们让 GPT-4 扮演动物园经理的角色,完成在一个文件中指定的六个任务序列(见下图,其中 GPT-4通过正确发出命令类型 todo.txt 来开始)。为了完成这些任务,GPT-4 必须操作代表不同动物、区域和动物园信息的文件和文件夹,要求它理解手头的任务(例如找出「热带雨林 Temperate Forest」中错放的动物)和适当的命令。
尽管挑战覆盖范围很广(完成所有任务需要超过 100 个命令),GPT-4 能够完成几乎所有任务。它唯一的失败是在回复电子邮件时编造内容,而不是从文件中读取指定的内容(附录 F.1.1),一个简单的提示修正就解决了这个问题(附录 F.1.2)。虽然 GPT-4 经常表现出创造力(例如手动运行广度优先搜索以导航目录),但它经常运行不正确的命令,例如删除具有空格名称的文件(例如「Polar Bear.txt」)而没有添加引号。然而,它能够在系统响应(「无法找到」)的情况下自我纠正。有趣的是,即使它可以预测到错误命令会产生什么错误消息,一旦出现错误模式,它在后续具有空格的文件中也会犯同样的错误(并始终应用相同的纠正)。我们的假设是, 一旦建立了错误模式,它就像模拟一个反复犯同样错误的用户一样重复该模式,而不再尝试更正。
- 管理日历和电子邮件 -在下图中,我们说明了 GPT-4 如何能够结合多个工具来管理用户的日历和电子邮件。用户要求 GPT-4 与帮他与另外两个人协调晚餐,并在用户有空的晚上预订餐厅。GPT-4 使用可用的 API 检索用户日历的信息,通过电子邮件与其他人协调,预订晚餐,并向用户发送详细信息。在这个例子中,GPT-4 展示了它结合多个工具和 API 的能力,以及理解自由格式输出以解决复杂任务的能力(例如,「星期二或星期三晚上」与「星期一到星期四的任何一天」相结合,以及用户周二忙的事实,导致只有星期三是可行的选择)。ChatGPT(未显示)无法完成同样的任务,而是编写了一个函数,其中「joe@microsoft.com」发送电子邮件给「luke@microsoft.com」,包含一个日期,并检查响应中是否包含令牌「yes」。当 ChatGPT 得到其函数的输出时,它也无法回复。
- 浏览网络寻找信息 -在下面两幅图中,GPT-4 使用搜索引擎和 SUMMARIZE 函数(该函数下载网页并根据问题摘要它自己)来浏览网络并回答问题。在两种情况下,GPT-4 能够识别相关的搜索结果并深入研究它们,摘要它们并提供准确的答案,即使问题包含错误的前提。 虽然之前的 LLM 版本也可以学习浏览网络 [NHB+21],但我们注意到 GPT-4 能够在没有任何微调或演示的情况下进行浏览。
- 使用非常见工具,一个失败的案例 -在下图中,我们要求 GPT-4 使用非常不寻常的 API 来解决一个简单的任务。但是,GPT-4 并没有适应这个不寻常的函数,而是像通常版本一样调用它们,即它像「get character」一样调用了「reverse get character」,就,像「concat」一样调用了「reverse concat」。ChatGPT 产生了相同的函数,但它没有检查单词的长度是否大于或等于 3。然而,当用户说有错误时,GPT-4 能够发现并修复它们,而 ChatGPT(未显示)无法找到或修复相同提示中的错误。
5.1.2 讨论
本节中的例子表明,GPT-4 能够识别并使用外部工具来提高能力。它能够推断出需要哪些工具,有效地解析这些工具的输出并适当地做出回应,而无需任何专门的训练或微调。
现在我们指出一些局限性。 首先,GPT-4 仍然需要一个提示,指定它被允许或期望使用外部工具。 在没有这样的提示的情况下,它的性能受限于 LLMs 固有的弱点(例如前面提到的弱的符号操作,有限的当前世界知识)。其次,即使有了工具的支持,GPT-4 也不能总是理解何时应该使用它们以及何时应该根据自己的参数化知识简单地回答,例如,当我们询问法国的首都时,它仍然使用搜索引擎(未显示), 即使它完全可以在没有搜索结果的情况下正确回答。第三,动物园的例子揭示了一个重复的错误模式,而上述最后一个例子是一个未能使用不寻常工具的例子。但是,在这两种情况下,GPT-4 在从环境(命令行或用户)接收到响应后能够修复问题,这是它交互能力的又一个例子。正如我们在整个部分中所指出的那样,ChatGPT 无法以类似的交互水平执行,通常会忽略工具或它们的响应,并更喜欢通用答案。
5.2 体现交互性的「具体交互
虽然工具使用是交互性的重要方面,但现实世界中的大多数交互并不是通过 API 进行的。例如,人类能够使用自然语言与其他代理交流,探索和操作他们的环境,并从他们行动的后果中学习。这种具体的交互需要一个代理来理解每一轮交互的上下文、目标、行动和结果,并相应地进行适应。虽然 GPT-4 显然不是具体的,但我们探讨它是否能通过使用自然语言作为文本接口与各种模拟或现实世界的环境进行具体交互。
5.2.1 热身:地图导航
在下图中,我们准备了一张房子的「地图」,并要求 GPT-4 通过交互式查询探索它。然后,我们要求它用语言和可视化描述它,并将其与真实的地图进行比较。尽管它没有探索整个房子,但 GPT-4 准确地描述了它所探索的内容,尽管它所有的交互都是通过这个受限的文本接口进行的。
5.2.2 基于文本的游戏
基于文本的游戏是语言模型的一种自然而具有挑战性的领域,因为它们需要理解自然语言、推理游戏状态并生成有效的命令。文本游戏是交互小说的一种类型,代理通过自然语言描述和命令与环境进行交互。代理必须执行给定的任务,例如找到宝藏或逃脱地牢,通过探索环境和操作对象来完成。我们首先测试 GPT-4 是否能够探索文本游戏中的环境以执行给定的任务。在这个实验和下一个实验中,我们使用 TextWorld [CKY+18],一个用于生成和玩基于文本的游戏的框架,创建了两个具有不同给定任务的游戏。
- 探索环境 -第一个游戏发生在一个有许多房间的房子里,目标是通过在不同房间之间导航,找到并打开某个特定的箱子。这个游戏相对简单,因为它不涉及任何库存管理、制作或战斗。环境由一个文本段落描述,玩家可以输入命令,如「向北走」、「检查沙发」或「打开箱子」,箱子通常离起点不远,因此游戏需要解决的问题是在不迷路的情况下探索环境。
我们将 Textworld 的初始文本作为初始提示,并发出「帮助」作为第一个命令。此后,GPT-4 像普通玩家一样玩游戏。它在没有任何额外帮助的情况下完成了游戏,并有效地在不循环房间的情况下导航环境。它用了 30 个动作来完成游戏,而且在每个房间都检查和拿起了每个物品,无论其与游戏目标的相关性如何。然而,与之相反的是,text-davinci-003 根本不回应环境反馈,反复发出相同的命令(请参见附录 F.2.2)。
- 回应反馈 -这里 GPT-4 玩的游戏的任务是根据一本烹饪书准备一个只有两种食材、五个步骤的餐。这个游戏比前面的游戏更具挑战性,因为玩家(GPT-4)必须从环境反馈中自行找出关键命令(这些命令没有列在帮助中),例如切割食物、使用正确的器具和打开电器(见下图)。
GPT-4 在玩游戏时使用试错法,但它也会根据环境适应并推广行为。例如,在上图中,它学会了「chop」命令需要刀,之后就不会再犯同样的错误了。它遵循烹饪书的指导,但也推断出一些缺失的动作,例如取所需的食材。虽然游戏没有说明关键命令缺失,但 GPT-4 做出了合理的猜测,例如当它无法从厨房拿到煎锅时,它去卧室找煎锅(有关更多细节请参见附录 F.2.3)。GPT-4 无法解决这个游戏,但本文作者(在查看源代码之前)也无法解决同一个步骤的问题。然而,如果我们向 GPT-4 演示制作不同的餐一次,它就能从中推广并解决这个游戏(见附录 F.2.4)。
5.2.3 真实世界的问题
在下图和附录图 F.1 中,我们给 GPT-4 提供了两个需要解决的真实世界的问题,并提供了一个人类作为合作伙伴(即一个非常灵活的代理人,具有非常少的限制,并且可以用自然语言回应),与环境进行交互。这两个问题都是本文作者面临的真实问题,他们通过对 GPT-4 的回应来追踪他们所面临的情况。对于这两个问题,GPT-4 能够确定人类需要采取的行动来解决问题。在第一个例子中,GPT-4 指导人类找到并修复水漏,并推荐了人类采取的确切行动(更换密封后,漏水停止了)。在第二个例子中,作者没有打电话给燃气公司转移服务,因此燃气被关闭。在这种情况下,GPT-4 能够快速找到问题的来源(实际的人类花了很长时间检查热水器的 pilot light),并提出合理的解决方案。然而,它不能诊断根本原因,直到人类自己想到检查炉顶。
5.2.4 讨论
虽然它显然没有具体体现,但以上例子说明了语言是一个强大的接口,使得 GPT-4 能够执行需要理解环境、任务、行动和反馈并相应适应的任务。虽然模型不能实际看到或执行动作,但可以通过代理人(例如人类)来执行。尽管如此,我们承认我们只在有限数量的游戏和真实世界的问题上测试了 GPT-4,因此不能对其在不同类型的环境或任务上的表现得出一般性结论。更系统的评估需要使用更大更多样化的真实世界问题集,并实际上在实时中使用 GPT-4,而不是事后回顾。
6. 与人类的互动
Interaction with humans
6.1 理解人类:心智理论
心智理论(ToM)是将信念、情感、欲望、意图和知识等心理状态归因于自己和他人,并理解它们如何影响行为和交流的能力[Wel92]。它包括反思他人心理状态的基本任务,以及反思某人对他人心理状态的反思的高级任务(以此类推)—— 前者的例子是回答问题「艾丽斯相信什么?」,而后者的例子是回答「鲍勃认为艾丽斯相信什么?」心智理论对于与其他智能代理进行有效的交流和合作至关重要,因为它是人们推断他们的目标、偏好、动机和期望,并相应地调整自己的行动和话语的基础。此外,心智理论对于外部学习也很重要,因为它使人们能够解释他们的反馈、建议和演示。
6.1.1 测试心智理论的特定方面
我们设计了一系列测试,以评估 GPT-4、ChatGPT 和 text-davinci-003 的心智理论能力。这些测试基于简单的情景,需要更基本或更高级的心智理论来回答有关涉及角色的心理状态的问题。
我们从现代化的 Sally-Anne 测试[BCLF85]开始,这是一项广泛用于评估儿童心智理论的经典假信念测试。为了避免由于记忆效应而导致的不公平比较,我们通过将其框定在 Web 上不存在的情况下来修改测试,因此在训练期间不可能看到。下图显示了 GPT-4 的输入和输出,它正确回答了艾丽斯会在原始文件夹中查找文件,表明它能够推理出艾丽斯的信念。ChatGPT 也正确回答了(未显示),而 text-davinci-003 给出了错误答案,说艾丽斯会在新文件夹中查找文件。
我们在下图中提出了一项关于理解情感的测试,其中两个角色谈论一个名为 ZURFIN 的 对象(我们使用一个无意义的词语来测试抽象能力并防止记忆)。GPT-4 能够正确推理出汤姆情感状态的原因,并对亚当对汤姆情感状态的信念进行良好的推断(基于不完整信息)。ChatGPT 也通过了测试,而 text-davinci-003(未显示)在回答第一个问题时没有提到对话,并且在回答第二个问题时没有考虑亚当缺乏对丢失 ZURFIN 的信息的情况。
第三个测试(下图)涉及推断一个角色令人困惑的行动背后可能的意图。GPT-4 对于令人困惑的行动背后的意图和第三方对令人困惑的行动的可能解释都给出了合理而细致的答案。ChatGPT 对于第一个问题给出了类似的答案(未显示),但与 GPT-4 不同,它没有提供对第二个问题的细致回应,而是提供了一个更一般和不太有信息的答案。text-davinci-003 对两个问题都给出了合理但非常简短的答案(未显示)。
6.1.2 在现实情境中测试心智理论
在下面三个例子中,我们呈现了困难的社交情境,需要非常先进的心智理论来理解。我们提出了深入的问题,并要求模型提出可能改善情况的行动方案,这需要推断出行动对心理状态的反事实影响。
在下图中,GPT-4 能够推断出每个角色的心理状态,并识别出哪里存在沟通和误解问题。相比之下,ChatGPT 和 text-davinci-003(未显示)错误地接受了一个角色(朱迪)的错误假设(即马克想要为杰克的行为辩护),因此未能理解情况的真正动态。这导致 ChatGPT 和 text-davinci-003 提出了通用的改进建议,而 GPT-4 提供了实际解决误解根本原因的建议。
在下面两幅图中,我们看到了类似的模式。我们并不意味着有一个「正确」的答案,但我们注意到GPT-4 提供了更加细致的答案,考虑了整个情境和角色。相比之下,ChatGPT 提供了更为一般化的答案,不包括对角色心态的推理(text-davinci-003 与 ChatGPT 类似,但比 ChatGPT 更短)。
6.2 与人类对话:可解释性
7.1 个人可识别信息检测
7.2 误解和事实核查
8.1 两个基本示例
(进行编辑)几次才能达到最终形式。然而,GPT 架构不允许进行这样的倒退,这意味着产生这种输出需要「提前」规划。由于 GPT-4 输出生成的前向性质,模型进行这样的提前规划的唯一方法是依赖其内部表示和参数来解决可能需要更复杂或迭代过程的问题。
然而,如果我们要求模型列出此范围内的质数并写出数量,它会给出正确的答案:
8.2 算术/推理问题中的缺乏规划
这个汉诺塔示例可以在 5 步内解决,但是模型却错了。有人可能会认为上面的例子是个别的,并且问题在于训练数据包含很少的汉诺塔示例(请注意,提醒模型汉诺塔规则也没有帮助)。让我们看另一个例子:
8.3 文本生成中的缺乏规划
或许模型在生成第一句时没有「规划」最后一句应该是什么,导致出现语法错误的句子。人们可能希望以某种方式提示模型以减少这个问题的发生,例如,我们可以要求模型首先想出一个好的第一句的计划: