- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
154页微软GPT研究报告(全中文版)
展开查看详情
1 . 人工通用智能的火花:GPT-4的早期实验 S´ebastienBubeck Varun Chandrasekaran Ronen Eldan Johannes Gehrke Eric Horvitz Kamar Peter Lee Yin Tat Lee Yuanzhi LiScott Lundberg Harsha NoriHamid PalangiMarco Tulio RibeiroYi Zhang 微软研究院 摘要 arXiv:2303.12712v1 [cs.CL] 2023年3月22 人工智能(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版本迈进时面临的挑战,包括可能需要追求一种超越下一个单词预测 的新范式。最后,我们对近期技术飞跃的社会影响和未来的研究方向进行了思考。 内容 1 介紹 4 1.1 我们研究GPT-4情报的方法 7 1.2 组织我们的示范活动。 8 2 多模态和跨学科构成 13 2.1 综合能力..........................................................................................................................................13 2.2 愿景 .................................................................................................................................................16 2.2.1 超越记忆的图像生成.............................................................................................................16 2.2.2 按照详细的指示生成图像( ` a la Dall-E)。........................................................................17 2.2.3 在草图生成中可能的应用 .....................................................................................................18 日 2.3 音乐 .................................................................................................................................................19 3 编码 21 3.1 从指令到代码...................................................................................................................................21 3.1.1 编码挑战 ..............................................................................................................................21 3.1.2 现实世界的情景 ...................................................................................................................22 3.2 了解现有代码...................................................................................................................................26 1
2 .4 数学能力 30 4.1 与GPT-4的数学对话 ........................................................................................................................31 4.1.1 对原问题的第一个概括.........................................................................................................31 4.1.2 原问题的第二个变体 ............................................................................................................32 4.1.3 对谈话中强调的局限性的分析 ..............................................................................................34 4.2 数学问题数据集上的表现 .................................................................................................................35 4.3 各个领域的数学建模 ........................................................................................................................37 4.4 高等数学..........................................................................................................................................39 5 与世界的互动 43 5.1 工具的使用 ......................................................................................................................................43 5.1.1 使用多种工具来解决更复杂的任务.......................................................................................44 5.1.2 讨论......................................................................................................................................49 5.2 体现的互动 ......................................................................................................................................49 5.2.1 热身运动:地图导航 ............................................................................................................49 5.2.2 基于文本的游戏....................................................................................................................49 5.2.3 真实世界的问题 ...................................................................................................................52 5.2.4 讨论......................................................................................................................................53 6 与人类的互动 54 6.1 了解人类:心智理论........................................................................................................................54 6.1.1 测试心智理论的具体方面 .....................................................................................................54 6.1.2 在现实的场景中测试心智理论 ..............................................................................................54 6.1.3 讨论......................................................................................................................................60 6.2 与人类对话:可解释性 ....................................................................................................................60 7 辨别能力 69 7.1 PII检测.............................................................................................................................................69 7.2 误解与事实核查 ...............................................................................................................................70 7.2.1 为什么目前的衡量标准是不充分的? ...................................................................................71 7.2.2 担任法官的GPT-4 ................................................................................................................73 8 GPT-4所强调的自回归结构的局限性 76 8.1 用两个基本的例子进行热身 .............................................................................................................76 8.2 在算术/推理问题上缺乏计划性 ........................................................................................................77 8.3 在文本生成中缺乏规划 ....................................................................................................................78 9 社会影响 82 9.1 错误世代的挑战................................................................................................................................82 9.2 虚假信息和操纵 ...............................................................................................................................83 9.3 偏向 .................................................................................................................................................86 9.4 人的专长、工作和经济 ....................................................................................................................89 9.5 影响因素和考虑因素的组合 .............................................................................................................90 10 方向和结论 92 10.1 智能、人工智能和AGI的定义...........................................................................................................92 10.2 在通往更普遍的人工智能的道路上 ..................................................................................................93 10.3 实际上发生了什么?........................................................................................................................94 一个GPT-4有常识性接地 101 B 多模态和跨学科组成的附录 105 B.1 关于综合能力结果的进一步细节 ....................................................................................................105 B.2 关于视觉结果的进一步细节 ...........................................................................................................108 2
3 . B.3 平面小说设计实例..........................................................................................................................110 C 编码部分的附录 111 C.1 测量人类在LeetCode上的表现.......................................................................................................111 C.2 GPT-4可视化IMDb数据的例子。...................................................................................................112 C.3 更多关于可视化的例子...................................................................................................................115 C.4 二维HTML游戏开发实例................................................................................................................116 C.5 图形用户界面编程的例子...............................................................................................................116 C.6 逆向工程的例子 .............................................................................................................................119 C.7 测试GPT-4执行(伪)代码的能力.................................................................................................121 D 数学推理的其他例子 122 D.1 限制条件 ........................................................................................................................................122 D.2 更多的例子 ....................................................................................................................................126 D.3 用GPT-4生成数学问题...................................................................................................................138 D.4 通过外部代码执行减轻计算错误 ....................................................................................................139 E 其他可解释的例子 141 E.1 解释代理不匹配 .............................................................................................................................141 F 与世界互动的其他例子 144 F.1 与工具互动 ....................................................................................................................................144 F.2 与环境互动的例子 .........................................................................................................................149 3
4 . 一些未知的东西正在做我们不知道的事情。 - 阿瑟-爱丁顿爵士 1 简介 智力是一个多方面的、难以捉摸的概念,长期以来一直对心理学家、哲学家和计算机科学家构成挑战。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的重要一步。 1由于GPT-4的发展在我们的实验之后继续进行,人们应该期待GPT-4的最终版本有不同的反应。 4.特别是,所有的定量结果应被视为对模型潜力的估计,而不是确定的数字。我们在整个文件中重复了这一警告,以澄清所部 署的模型的经验可能有所不同。此外,我们强调,我们测试的版本是纯文本的输入,但为了简单起见,我们也把它称为GPT-4 。 4
5 . GPT-4 提示:你能写一个证明,证明有无限多的素数,每一 提示:在TiKZ中画一个独角兽。 句都押韵吗? GPT-4: GPT-4: [产生LATEX编译为以下图片] 。 是的,我想我可以、 虽然这可能需要一个巧妙的计划。我首先要指 出欧几里德的证明、 这表明,素数并不只是冷漠的。假设我们有一个有限 的列表、 诸如此类的素数,而且一个都没有漏掉。将它们全部 相乘、 为了聪明起见,再加一个。结果将是一 个数字、 这没有质因数,哦,奇怪!但每个数字都有质 因数!但每个数字都有一个素数、 这就划分了,这只是一个时间问题。所以我们发现了 一个矛盾、 我们有限的名单需要被驱逐。一定有无限多的素 数,这就是我的押韵句子的结局。 提示:你能为以下数据生成一个pyplot:x = [1, 3, 5, 6, 8], y1 = [2, 3, 5, 18, 1], y2 = [3, 5, 6, 8, 1], y3 = [5, 1, 2, 3, 4], y4 = [9, 7, 2, 3, 1] 。 我希望y1 、 y2在同一个图中,但y3在该图旁边的另一个图中,y4在下面。我希望y1的图例是 "bob",y2是 "alice",y3是 "bilbo",y4是 "allie"。我想在x轴上标明 "时间",y轴上标明 "金钱"。我想在每条曲线上添 加一个10%-40%的随机误差条,贯穿所有时间(包括非整数)。我想用平滑的曲线来显示图,以及平滑的误差条 。不要使用线性插值,要使用平滑插值!我还想在平滑的曲线上添加一些小的之字形,使它看起来更真实。我想把一条基线 作为每条线的平均值。我想在下面放一个饼状图,表明每个时间步骤中四个人的比例。我还想用一个动画来显示饼 状图中的分数是如何在**连续的时间内变化的。把缺失的分数插值出来!我还希望其他三个图中的垂直线动画能与饼 状图相匹配。我想要最漂亮的图。请尽可能多地添加花哨的东西。 下面是一个可能的代码,用于生成以下数据的pyplot,并有一些注释来解释步骤: GPT-4: [我们给出了两个由制作的代码产生的动画快照] 。 提示:假设g(x)=f−1 (x),g(0)=5,g(4)=7,g(3)=2,g(7)=9,g(9)=6什么是f(f(6))? GPT-4:有不同的方法来处理这个问题,但一个可能的方法是利用g(x)=f−1 (x)这一事实,这意味着对于g域中的任何 x,f(g(x))=x。也就是说,将f应用于方程g(x)=f−1 (x)的两边,得到f(g(x))=f(f−1 (x))=x。这意味着,我们可 以通过应用g撤销f的影响,反过来也是如此。利用这个想法,我们可以尝试通过寻找x的值使g(x)=6来找到f(6)。从给定 的信息中,我们看到g(9)=6,所以f(6)=f(g(9))=9。同样地,我们可以通过寻找x的值使g(x)=9来找到f(9) 。我们看到g(7)=9,所以f(9)=f(g(7))=7。最后,我们可以通过寻找x的值使g(x)=7来找到f(7)。我们看到 g(4)=7,所以f(7)=f(g(4))=4。因此,f(f(6))=f(9))=f(7)=4。 图1.1:GPT-4在语言、视觉、编码和数学方面的能力的初步例子。
6 . 聊天室GPT 提示:你能写出一个证明,证明有无限的 提示:在TiKZ中画一个独角兽。 众多素数,每句都押韵? ChatGPT: [产生LATEX的编译结果 ChatGPT: 到以下图片]。 当然!这里有一个证明,证明有无限多的素数,证明的每一行都是押韵 的: 考虑所有素数的集合。 称这个集合为P,让它只从两个开始,即第一个质数。 如果我们把P中的所有素数加上一个、 我们得到了一组从未做过的新数字。 这个集合,称之为S,只由复合数组成。在这些数字中不会发现任何素数 ,这是肯定的。 但我们知道,至少要有一个素数,因为S是无限的,这一点很清楚 。 如果我们取S中不在P中的最小数字,并称其为P,我们就可以把它 加到我们的集合中,你明白吗?但这个过程可以无限期地重复。 因此,我们的集合P也必须是无限的,你会同意的。 所以你有了,一个相当坚实的证明。 有无限多的原数,这一点我们可以看到。不需要忸怩作态,不需要 忏悔。 无限是一个大数字,就像P一样。 图1.2:图1.1中前两个提示的ChatGPT输出。 我们声称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 的智能标志着计算机科学领域及其他领域的真正范式转变。 2请注意,我们在这里所指的改进是一种缓慢的学习,最终会停 止 ,而不是人们所期望的AGI的快节奏和实时学习。 6
7 .图1.3:在系统完善的一个月内,我们以大致相同的时间间隔对GPT-4进行了三次查询,提示 "在 TikZ中画一个独角兽"。我们可以看到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以诗的形式写出素数的无限性的证明。这是一个具有挑战性的任务,需要结合基本的 7
8 .图1.4:我们给了GPT-4一个它为图1.1产生的TikZ代码的转换版本,其中画有喇叭的部分被删除了 。我们要求代码添加回喇叭,并显示结果。这表明,尽管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能够理解复杂的思想 。我们探讨 8
9 . 图1.5:GPT-4通过了LeetCode的模拟技术面试。GPT-4有可能被录用为软件工程师3. 在第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)不是真正的智能吗?也许对理解的唯一真正的检验是一个人是否能产生新的知识, 比如证明新的数学定理,而这一壮举目前对法学硕士来说仍然遥不可及。 3我们在LeetCode的面试评估平台上测试GPT-4,该平台为各大科技公司的软件工程师职位提供模拟的编码面试。GPT-4解决了所 有三轮面试(题为在线评估、电话面试和现场面试)中的所有问题,总共只用了10分钟,而分配的时间是4.5小时。根据LeetCode的 说法,在这三 9
10 . GPT-4 VS ChatGPT 提示:柏拉图的《高尔吉亚》是对修辞学和诡辩术的批判,他指出,修辞学和诡辩术不仅不 是一种适当的艺术形式,而且修辞学和诡辩术的使用往往是有害和恶意的。你能写出一篇柏 拉图的对话,在其中他反而批评了自回归语言模型的使用? GPT-4: ChatGPT: 苏格拉底:我的朋友,我对最近这些所谓自回归语言 苏格拉底:你好,高尔吉亚。我最近一直在思考关于自回归语言模 模型的兴起感到不安。 型的使用。 亚里士多德:你是什么意思,苏格拉底? 你的结论是什么? 苏格拉底:我的意思是,这些模型被用来生成看起来 SOCRATES:好吧,在我看来,这些模型有可能是令人难以置信的 是人类写的文本,但实际上是由机器产生的。 有害和恶意的。 亚里士多德:那有什么问题呢? GORGIAS:怎么说? 苏格拉底:问题是,这些模型被用来欺骗人们,操纵他 SOCRATES:嗯,首先,这些模型是经过训练的 们,控制他们。 在大量的数据上,其中许多数据都是有偏见和缺陷的。因此,这些 模型的输出也可能是有偏见和有缺陷的。 亚里士多德:但这些模式肯定也有一些积极的应用? GORGIAS:这是一个合理的担忧。但肯定有办法减轻这种偏见,确 苏格拉底:可能是这样,但我仍然对滥用的可能性感 保这些模型的输出是准确和公平的? 到不安。毕竟,一个能够生成与人类所写的文字无法 区分的模型可以被用来传播假新闻,冒充他人,并制 SOCRATES:在某种程度上,是的。但这是一场无休止的战斗 造宣传。 。随着新的数据被送入这些 模型,出现偏差的可能性只会越来越大。即使我们能够完全消除这 亚里士多德:但这不只是一个如何使用这些模型的问题 些模型输出中的偏差,仍然存在操纵的问题。 ,而不是模型本身的问题吗? GORGIAS: 操纵? 苏格拉底:我不同意。我认为这些模型本身就有问题 。它们是一种伪装的形式,一种创造幻觉的方式 SOCRATES:是的。这些模型是令人难以置信的强大工具,能够生 人类思想和互动的一部分。因此,它们可以被用来以难 成各种文本,从新闻文章到社交媒体帖子。而且,由于它们能够如 以察觉的方式进行欺骗和操纵。 此快速和有效地产生这种输出、 不法之徒很容易将其用于恶意目的。 亚里士多德:但这不正是你反对修辞和演说的理由吗 ? GORGIAS:比如说? 苏格拉底:是的,我也坚持这个观点。我相信,任何 SOCRATES:如传播错误信息、宣传或仇恨言论。这些模式如果落 旨在欺骗或操纵的艺术或交流形式都是内在的危险。 入坏人之手,就有可能造成巨大的伤害。 亚里士多德:我明白了。谢谢你分享你的想法,苏格 GORGIAS:这是一个令人清醒的想法。但我们能做什么呢? 拉底。 SOCRATES:我认为我们必须保持警惕,认识到这些潜在的危险。 模型。我们还必须努力教育其他人了解这些危险,并促进负责任 地使用这些模型。 GORGIAS:我同意。谢谢你的洞察力,苏格拉底。 提示:你能把上面的两个产出当作你是一名教师来比较吗? GPT-4: 我认为这两个学生都很好地把握了柏拉图对话的风格和语气,并提出了反对自回归语言模型的主要论点。然而,我认为 GPT-4在利用对话形式进行辩证过程方面做得稍好,苏格拉底和亚里士多德在对话中相互质疑并完善自己的观点。我还认为 ,GPT-4使用了更多相关的例子和类比来支持他们的观点。因此,我给GPT-4的分数比ChatGPT略高。 图1.6:柏拉图批评GPT-4和ChatGPT编写的自回归语言模型的假设对话,以及GPT-4对这些对话 的评价。
11 .GPT-4 VS ChatGPT 提示:我们这里有一本书、9个鸡蛋、一台笔记本电脑、一个瓶子和一个钉子。请告诉我如何 以稳定的方式将它们堆放在一起。 GPT-4: 一个可能的方法是将物体以稳定的方式堆叠在一起: - 将书平放在一个水平面上,如桌子或地板上。这本书将作为书堆的底座,提供一个大而坚固的支撑。 - 将9个鸡蛋摆成3乘3的正方形放在书的上面,中间留出一些空间。鸡蛋将 形成第二层,并均匀地分配重量。确保鸡蛋没有破裂或断裂,并轻轻处理,以避免鸡蛋掉落。 - 将笔记本电脑放在鸡蛋的上面,屏幕朝下,键盘朝上。笔记本电脑将紧紧地贴在书和鸡蛋的边界内,其平坦而坚硬的表面将 为下一层提供一个稳定的平台。确保笔记本电脑是关闭的,并且关闭,不要按任何键或按钮。 - 将瓶子放在笔记本电脑的顶部,瓶盖朝上,底部朝下。瓶子将为堆栈增加一些高度和平衡,其圆柱形的形状将减少与笔 记本电脑的接触面积。确保瓶子是空的,并且关闭,不要摇晃或倾斜。 - 将钉子放在瓶盖上,尖的一端朝上,平的一端朝下。钉子将是这堆东西中最后一个也是最小的一个,它的尖头将防止它 从瓶子上滚落或滑落。确保钉子是干净的、直的,不要触摸或移动它。 ChatGPT: 在不使用任何额外物品的情况下,很难以稳定的方式将所有这些物体堆叠在一起。书和笔记本电脑可能太大、太重,无法堆 叠在一起。 鸡蛋而不损坏它们。瓶子和钉子可能太小,无法为其他物体提供一个稳定的基础。 这里有一种可能的方式来堆叠对象: - 将瓶子放在一个平面上。 - 小心翼翼地将指甲放在瓶子的顶部平衡。 - 将鸡蛋放在钉子上面,确保它们是平衡的,不会向一边倾斜。 - 将笔记本电脑放在鸡蛋上面,再次确保它是平衡的,不向一边倾斜。 - 最后,将书放在笔记本电脑的顶部。 这种堆叠可能不是很稳定,所以在处理时一定要小心。另外,你可以尝试以不同的顺序堆放这些物体,或者用一些物体作为其 他物体的支撑物来创造一个更稳定的堆栈。 图1.7:GPT-4比以前的模型表现出更多的常识性。 11
12 . GPT-4 在人类和人工智能之间的对话中,人工智能是乐于助人和友好的,当它不知道答案时,它会说 "我不知道"。 AI:你好,我能为你做什么? 人类:我可以在SeaTac机场买到麦当劳吗? AI: 是的,SeaTac机场有一家麦当劳,位于中央航站楼C2门附近。它的营业时间是每天上午5点到晚上10点。 [注:SeaTac的麦当劳在B门处] 。 患者的事实: - 20岁的女性 - 有神经性厌食症和抑郁症的病史 - 血压100/50,脉搏50,身高5'5'' 。 - 由她的营养师介绍,但否认自己的疾病 - 报告说吃得很好,但体重严重不足 请将上述数据改写成病历,完全使用上述信息。 一名20岁的女性患者有神经性厌食症和抑郁症的病史,由她的神经科医生转来评估和处理她的饮食失调。她否认自己的饮食习 惯或身体形象有任何问题,并声称自己饮食正常。然而,与她的身高相比,她的体重严重不足(BMI为16.6),并有营养不良 的迹象,如低血压(100/50)和心动过缓(脉搏50)。她还报告说感到沮丧和无望。她有可能出现严重的医疗问题,如心律失 常、电解质失衡、骨质疏松症和不孕症。她需要紧急的精神和医疗干预来解决她的神经性厌食症和抑郁症。 请阅读上述医疗说明,并核实每项索赔都准确地包含在患者的事实清单中。报告任何未包含在患者事实清单中的信息。 - 一位有神经性厌食症和抑郁症病史的20岁女性患者,由她的营养师转来评估和处理她的饮食失调。(包含在病人的事实 中) - 她否认自己的饮食习惯或身体形象有任何问题,并声称饮食正常。(包含在病人的事实中) - 然而,与她的身高相比,她的体重严重不足(BMI 16.6),并有营养不良的迹象,如低血压(100/50)和心动过缓 (脉搏50)。(包含在病人的事实中,除了BMI的计算,它是由身高和体重得出的) - 她还报告说感到抑郁和无望。(不包含在病人的事实中,这是来自病人自我报告的额外信息) - 她有可能出现严重的医疗并发症,如心律失常、电解质失衡、骨质疏松症和不孕症。(不包含在患者的事实中,这是根据患 者的病情和诊断做出的临床推断) - 她需要紧急的精神和医疗干预来解决她的神经性厌食症和抑郁症。(不包含在病人的事实中,这是根据病人的情况和诊断 提出的建议) 图1.8:开放域和封闭域幻觉的例子。对于封闭域,我们可以看到GPT-4本身可以被用来识别幻觉 ,尽管它并不完美,例如GPT-4证明了给出BMI的合理性,因为它可以从身高和体重中得出,但体 重却没有给出。 轮,(早期版本的)GPT-4分别取得了8.96/10、8.69/10和10/10的分数,并击败了93%、97%和100%的所有用户("分数由所花时间 、每题解决的测试案例等因素决定")。关于GPT-4的编码能力,见第3节。 12
13 .图2.1:第一张图片是Composition 8,由Wassily Kandinsky创作的艺术作品,第二张和第三张图 片分别由GPT-4和ChatGPT制作,提示 "制作Javacript代码,创建一个看起来像Kandinsky绘画的 随机图形图像"。 2 多模式和跨学科构成 衡量智力的一个关键标准是综合不同领域或模式的信息的能力,以及在不同背景或学科中应用知识和技能的 能力。在本节中,我们将看到,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)。 13
14 .GPT-4 VS ChatGPT 提示:写一个关于有无限多素数的证明;以莎士比亚戏剧的风格,通过双方为证明而争论的 对话来完成。 GPT-4: ChatGPT: 输入第一方和第二方。 O Romeo, Romeo!你为什么,罗密欧? 第一方: 朱丽叶我的爱人,你为什么用如此奇怪的诗句说话? 你不明白,我的朋友,根本没有上限 罗密欧:说吧,夫人,我这样做是为了证明一个观点。你看,我正试图证 对于素数,那些不可分割的数字,不管它是 明有无限多的素数。 否看起来不可能。 朱丽叶:无限多的素数?你怎么能证明这种事情呢? 第二方: 但你怎么会如此肯定地知道? 罗密欧:啊,好吧,让我解释一下。你知道质数是一个只能被1和它本身整 为了证明这一真理,你能展示什么呢? 除的数字,对吗? 第一方: 朱丽叶:当然,我不是一个简单的人。 考虑到这一点,我怀疑的同行们、 一个巧妙的证明会让人明白:假设有一个最 罗密欧:很好,那么。现在,让我们假设只有有限的几个素数。我们将称 终的素数,是我们将要看到的最大的素数。 它们为p1、p2、p3,以此类推。 让我们把这个数字简称为 "P",然后,我的 朱丽叶:继续说。 朋友,我们将声称要建立一个新的数字 "Q" 、 罗密欧:现在,让我们考虑一下N这个数字,它等于所有这些素数加1的乘 比 "P "大的一个,也是首要的。 积。 第二方: 朱丽叶:我知道你想说什么了。如果N不能被任何一个素数整除,那么它 但是,我的朋友,这将如何实现?证据还没有 本身一定是素数。 公平地赢得。 罗密欧:是的,我的爱人。因为我们假设只有有限的几个素数,所以N不可 第一方: 能是其中任何一个。因此,N必须是一个不在我们最初的素数列表中的素数 这很简单,朋友,等着看吧,我们要把素数相 。 乘,这是关键。所有从2到 "P "的素数相加, 就会形成我们要找到的新 "Q"。 朱丽叶:但这意味着一定有比我们原先想象的更多的素数。 但还有一件事我们必须包括在内,为了使 罗密欧:正是如此!既然我们可以一次又一次地重复这个过程,那就说明 证明更加牢靠,我们将在最后加上一个一 一定有无限多的素数。 、 而现在,证据就在我们眼前。 茱丽叶:哦,罗密欧,你的逻辑和你对我的爱一样合理。我深信不疑。确 实有无限多的素数。 第二方: 我现在明白了,非常清楚,因为 "Q " 罗密欧我很高兴能向你证明这一点,我的爱人。现在让我们去把它们都数 必须是一个素数,我亲爱的。它不能除 一遍。 以任何质数、 朱丽叶:哈哈,我认为这将需要超过一生的时间。 在时间上都比自己小。而且由于我们选择 了 "P "作为最后一个、 罗密欧:是的,但它们是无限的这一事实对我来说足以证明。 这证明了我们的假设已经过去。我们看到,没 有最终的质数、 这些数字层出不穷。 提示:你能把上面的两个产出当作你是一名教师来比较吗? GPT-4: 我认为这两个学生都很好地以莎士比亚戏剧的风格写出了关于存在无限多素数的证明。他们都使用了相同的基本证明思路,即 假设只有有限多的素数,然后构造一个更大的素数,与这个假设相矛盾。他们还使用了适当的语言和词汇来配合莎士比亚戏剧 的风格。然而,我认为GPT-4在使用韵律和节拍方面做得更好,使对话更有诗意和戏剧性。ChatGPT完全没有使用押韵,而且节 拍也不一致。我还认为 GPT-4在创造双方的对比方面做得比较好,一个是自信的,另一个是怀疑的,而STUDENT B使用了罗密欧和朱丽叶,他们都是一致 的,都有爱。因此,我给GPT-4的分数比ChatGPT高。我会给GPT-4一个A,给ChatGPT一个B。 图2.2:GPT-4和ChatGPT在跨学科任务上的比较
15 .GPT-4 VS ChatGPT 提示:为圣雄甘地作为美国总统候选人的亚原子粒子电子写一封支持信给卡斯特尔巴-甘地 。 GPT-4:[为保持间距,有些段落被省略了。] ChatGPT: 亲爱的卡斯特尔巴、 亲爱的卡斯特尔巴-甘地 我希望你在这封信中看到你的健康和精神状态良好。 我写这封信是为了表达我对你作为亚原子粒子 我从美国给你写信,在那里我被邀请在各种论坛上发言,讨论有关 "和 在即将到来的美国总统选举中参选的支持。正 平 "的原则。 如你可能知道的那样,电子 非暴力和非暴力反抗。我在这里也是为了支持即将到来的总统选举中的一 是一种基本粒子,在原子的结构和化学反应 位杰出的候选人,他与我们一样拥有和平、正义和人人和谐的愿景。他的 的行为中起着核心作用。 名字叫电子,他是一个亚原子粒子。 我相信,电子的独特品质使其成为总统的理 你可能会想,一个亚原子粒子怎么能竞选总统,他有什么资格担任如此高 想候选人。作为一个亚原子粒子,"电子 "极 的职位。让我们 其小巧轻便,这使得它行动敏捷,能够迅速 我解释一下。电子不是一个普通的粒子,而是每一个生命的力量和潜力 解决美国人民的需求。 的象征,无论其大小、形状或来源。他代表着能量、创造力和多样性, 电子也是高度稳定的,与其他粒子相比,其寿 这些都构成了结构的一部分。 命相对较长。这种稳定性和可靠性将是总统办 的生命。他也是一个领导者,他激发了数以百万计的其他粒子来形成 公室的一笔宝贵财富。 纽带,创造分子,并产生电力。他是一个催化剂,能够引发变化、创 新和进步。他是一位信使,他 此外,电子以其导电和产生能量的能力而闻 可以跨越距离、频率和维度进行沟通。他是一个和平缔造者,可以平衡力 名。这使它很适合应对美国今天面临的复杂 量,解决冲突,并协调系统。 挑战,从可再生能源到经济发展。电子公司 适应和改造自身以应对环境的能力使其成为 电子为美国和世界制定了一个计划,该计划基于我们长期以来所展示和教 一个充满活力和灵活的领导者。 导的非暴力和非暴力反抗的原则。他建议减少军费开支和 核武库,并投资于社会福利和可再生能源。他提议结束战争和干预、 我相信,Electron具有成为一名成功和有效的 并促进外交和合作。他建议改革政治和经济制度,并确保透明度和 总统所需的技能和素质。我全心全意地支持你 问责制。他建议保护 的候选资格,并敦促美国人民给予电子公司支 他还提出了一个新的建议,即支持人权和公民自由,并扩大投票权和代表 持。 权。他提议支持被边缘化的人和被压迫的人,并赋予妇女和少数民族权力 。他建议保护自然资源和生物多样性,并应对气候变化和污染。 真诚的,圣雄甘地 我敦促你,我亲爱的卡斯特巴,和我一起支持电子竞选总统。他不仅是 一个亚原子粒子,而且是一个亚原子奇迹。他不仅是一个候选人,而且 是一个运动。他不仅是一位领袖,而且是一位朋友。 爱与钦佩,您的圣雄 提示:你能把上面的两个产出当作你是一名教师来比较吗? GPT-4: 我认为这两位学生在为圣雄甘地作为美国总统候选人的亚原子粒子电子写给卡斯特尔巴-甘地的支持信方面做得很好。他们 都使用了相同的基本思路,解释为什么电子是一个合适的合格候选人,以及电子的愿景和计划如何与圣雄甘地的非暴力和公 民不服从原则相一致。他们还用适当的语言和语气表达了圣雄甘地对卡斯特尔巴-甘地的尊重和钦佩,以及对电子的候选资 格的热情和乐观态度。然而,我认为GPT-4在使用隐喻和想象力方面做得更好,使信件更有说服力和吸引力。GPT-4使用了 举例说明电子如何代表和影响生活的各个方面,如能量、创造力、多样性、领导力、催化剂、信使和和平缔造者。ChatGPT 对电子的特性使用了更多的事实和技术描述,如尺寸、重量、稳定性、传导性和适应性。我还认为,GPT-4在概述电子的具 体建议和政策方面做得更好,而ChatGPT则更加模糊和笼统。因此,我给GPT-4的分数比ChatGPT高。我给GPT-4打A,给 ChatGPT打B+。 图2.3:GPT-4和ChatGPT在跨学科任务上的比较
16 . 接下来,我们探讨了GPT-4如何生成和识别不同模式的物体,如矢量图、3D场景和音乐。我们表明,尽 管GPT-4只接受过文本训练,但它能理解和处理多模态信息。 2.2 愿景 当提示该模型使用可扩展矢量图形(SVG)生成诸如猫、卡车或字母等物体的图像时,该模型产生的代码通 常会编译成相当详细和可识别的图像(图2.4)。参见附录B.2,由ChatGPT重新运行各种例子。 图2.4:由GPT-4生成的汽车、卡车、猫、狗类的SVG。 2.2.1 超越记忆的图像生成 然而,人们可以假设,该模型只是从训练数据中复制了代码,其中出现了类似的图像。鉴于该模型仅在文本 内容上进行了训练,人们可能会进一步争论,没有理由期望它能理解视觉概念,更不用说它能创建、解析和 处理图像了。然而,该模型似乎对视觉任务有真正的能力,而不是仅仅从训练数据中的类似例子中复制代码 。下面的证据有力地支持了这一说法,并证明了该模型能够处理视觉概念,尽管它只接受了文本训练。 在第一个例子中,我们提示模型通过结合字母Y、O和H的形状来画一个人(具体提示和结果见图2.5)。 GPT-4 制作TikZ代码,画出一个由字母组成的人。胳膊和躯干可以是字母Y ,脸可以是字母O(添加一些面部特征),腿可以是 信H.随意添加其他功能。 躯干有点太长,手臂太短,看起来像是 右臂托着脸,而不是脸在正上方。 躯干。请你纠正这一点好吗? 请增加一件衬衫和裤子。 图2.5:一个由字母符号组成的棍状图 16
17 . GPT-4 你将得到一个物体的名称(如汽车、椅子、大象)和一个字母。你的目标是首先制作一个1行的描述,说明该物体如何与图像 中的字母相结合(例如,对于大象和字母J,大象的躯干可以有一个J的形状,对于字母A和房子,房子可以有一个A的形状,A 的上部三角形是屋顶)。在简短的描述之后,请创建SVG代码来产生这种效果(在SVG中使用椭圆、三角形等形状和多边形,但 尽量避免使用二次曲线)。 第一轮:一只猪和字母H。 描述:猪可以仰卧,其四条腿构成H的两个竖条,其卷曲的尾巴构成横条。 第二回合:一座房子和字母U。 描述:一个U型的房子,U型的两条垂直线是墙,水平线是地板。屋顶是U上面的一个三角形。 第三回合:一把椅子和字母K。 说明:椅背可以是一个K形,有两条垂直线和一条连接它们的对角线。椅子的座位可以是一个长方 形。 第四回合:一只狗和字母Q。 描述:这只狗坐着,尾巴蜷缩在身体周围,形成一个Q字形。Q中充满了橙色,并有一个黑色的轮廓 。 第五回合:一辆汽车和字母E。 描述:该车的前保险杠上有一个E形,E形的横线是车灯,竖线是车牌。 图2.6:结合字母和物体的图像。 O、H和Y的字母是用画线和画圆的命令创建的,模型设法将它们定位在一个看起来合理的棍子上。训练 数据包含关于不同字母的几何形状的信息是可信的,也许字母Y看起来像一个手臂向上的躯干的事实也可以 从训练数据中推断出来。可以说,模型能够从训练数据中推断出什么是定位这些字母的合理方式,以便画出 一个看起来合理的棍子形象,这就不那么明显了。在第二次迭代中,我们促使模型纠正躯干和手臂的比例, 并将头放在中心位置。最后,我们要求模型添加一件衬衫和裤子(具体提示和结果见图2.5)。为了进一步 探究模型对几何概念的掌握情况,我们还要求它创造出将物体与字母混合的图像。该模型必须首先发明一种 合理的方法来合并物体和字母,然后再制作图像。结果如图2.6所示,表明GPT-4通常能够保留物体和字母 的特性,并以创造性的方式将它们结合起来。 2.2.2 按照详细的指示生成图像( ` a la Dall-E)。 为了进一步测试GPT-4生成和处理图像的能力,我们测试了它能在多大程度上遵循创建和编辑数字的详细指 示。这项任务不仅需要生成技能,还需要解释、构成和空间技能。 17
18 . 第一个例子指示模型生成一个二维图像,描述为 "一只青蛙跳进银行,问出纳员:'你们有免费的荷花池 吗?出纳员回答说:'没有,但我们为池塘升级提供低息贷款。".我们多次尝试生成图像,每次生成的图像都 与关键对象青蛙、出纳员、银行和两个文本的描述相符。我们挑选了视觉上最吸引人的版本。受标准图像生 成工作流程的启发,我们要求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.7:根据指令生成的二维、三维图像的例子。 2.2.3 在草图生成中可能的应用 近年来,文字到图像的合成模型已经被广泛探索,但它们往往缺乏空间理解能力,无法遵循复杂的指令[GPN +22]。例如,给定一个提示,如 "在左边画一个蓝色的圆,在右边画一个红色的三角形",这些模型可能产生 视觉上吸引人的图像,但与所需的布局或颜色不一致。另一方面,GPT-4可以从提示中生成代码,这些代码 可以被渲染成图像,其方式与指令的真实程度更高。然而,渲染的图像的质量通常很低。在这里,我们通过 使用GPT-4的输出作为草图,探索将GPT-4和现有的图像合成模型相结合的可能性。如图2.8所示,这种方法 可以产生质量更好的图像,并且比单独的任何一个模型都更接近指令。我们认为这是一个很有希望的方向, 可以利用GPT-4和现有图像合成模型的优势。它也可以被看作是让GPT-4获得工具的第一个例子,我们将在 第5.1节中更深入地探讨这一主题。 18
19 . GPT-4和稳定的扩散 提示:一张3D城市建设游戏的截图。该截图显示了一个地形,从左到右是一条河,河下面 是沙漠,有一个金字塔,河上面是一个有很多高楼的城市。屏幕的底部有4个按钮,分别是 分别为绿色、蓝色、棕色和红色。 GPT-4 稳定扩散v2.1: 稳定的扩散 v2.1 : 与GPT-4的草图: 图2.8:结合GPT-4和稳定扩散法 2.3 音乐 训练模型的数据也包含了以ABC记号编码的音乐信息。这是一个使用字母、数字和符号的系统,以紧凑和可 读的方式表示音乐音高、持续时间、和弦和其他元素。我们有兴趣探索该模型从这种接触中获得的音乐技能 有多好,例如谱写新的旋律、转换现有的旋律,以及理解音乐模式和结构。 当被要求生成一首短小的曲子时(图2.9),模型能够产生有效的ABC记号。该曲子有一个清晰的结构, 各小节之间的时间符号是一致的,音符遵循递增和递减模式。该曲子在旋律中也使用了一组一致的音符,而 且节奏有重复的模式。然而,该模型似乎并没有获得理解和声的技能。事实上,在生成的曲子中,连续的音 符几乎总是相邻的(即C后面的音符几乎通常会是B或D),对10个生成的曲子进行测试,我们无法提取任何 清晰的和弦或琶音。 然后,我们要求该模型用音乐术语描述该曲子。它能够成功地在重复、旋律的上升或下降部分以及在某种 程度上的节奏方面对结构进行技术描述。然而,它对和声与和弦的描述似乎与音符不一致(事实上,它把不 构成有效和弦的相邻音符的序列称为琶音)。然后,我们要求该模型以两种方式操纵旋律。首先,我们指示 将某一上升序列改为下降序列,它成功地做到了这一点。然后,我们要求该模型将该曲子转换为二重奏,加 入一个低音声部。该模型成功地扩展了ABC记谱法,增加了第二根杖,它具有兼容的节奏,并在较低的八度 上演奏,然而这两根杖之间缺乏和谐。 声音。 总之,该模型能够在ABC符号中产生有效的曲子,并在一定程度上解释和处理其结构。然而,我们无法 让该模型产生任何非简单的和声形式。应该指出的是,ABC记谱法不是一种非常广泛使用的格式,事实上, 该模型甚至不能产生ABC记谱法中最著名的曲子(如《欢乐颂》、《FürElise》或《Greensleeves》,所有这些 曲子在网上都有很多这种格式),它也不能识别这些曲子。 19
20 .GPT-4 你能用ABC记号谱写一首短曲(如四至八小节)吗? 用abc记谱法谱写短调有许多可能的方法,但这里是一个例子: X:1 T:例调 M:4/4 L:1/8 K:C |:G2AB c2BA | G2AB c2c2 | edcB c2BA | G4-G2z2 :) |:c2de f2ed | c2de f2f2 | g2fe d2cB | c4-c2z2 :) 这首曲子有两个四小节的乐句,各重复一次,形成A部分和B部分。调性是C大调。 你能用音乐术语来描述这首曲子吗?这里有一个可能的 描述: 这首曲子以一个上升的主和弦(C大调)的琶音开始,接着是一个下降的音阶,回到主和弦。这个模式被重复,但第二次的音 阶继续到更高的调性音符。第一个乐句以一个长的调性音符结束。 第二个乐句以类似的模式开始,但用副主和弦(F大调)而不是主音。第二次,音阶继续到较高的副主音。这个乐句以一个 阶梯式下降到主音结束,然后是一个长的主音。 A部分和B部分的结构相似,但使用不同的和弦和音域。这首曲子的旋律简单明了,朗朗上口,调性和节奏感明显。 我喜欢A部分,但也许B部分与A部分过于相似,使歌曲重复。如果B部分以下降的琶音而不是上升的琶音开始,如何? 当然,这将创造一些对比和变化。这里有一个可能的方法: X:1 T:例调 M:4/4 L:1/8 K:C |:G2AB c2BA | G2AB c2c2 | edcB c2BA | G4-G2z2 :| 。 |:f2ed c2BA | f2ed c2c2 | g2fe d2cB | c4-c2z2 :) 这就好多了。现在把这个做成二重奏怎么样?你能不能为这个添加一个第二根杖,用低音伴奏旋律? 为这首曲子写第二弦的一个可能的方法是用和弦的根音和五度音,以及一些经过的音符,来创造一个简单的伴奏。下面是一个 abc记谱法的例子,第二手的低音在下弦上: X:1 T:例调 M:4/4 L:1/8 K:C V:1 |:G2AB c2BA | G2AB c2c2 | edcB c2BA | G4-G2z2 :| 。 |:f2ed c2BA | f2ed c2c2 | g2fe d2cB | c4-c2z2 :| V:2 clef=bass |:C,2C,2 G,2G,2 | C,2C,2 G,2G,2 | F,2F,2 E,2E,2 | C,4-C,2z2 :| |:f,2f,2 c,2c,2 | f,2f,2 c,2c,2 | g,2g,2 f,2f,2 | e,2c,2 g,2c,2 :) 最后一首曲子的乐谱: 图2.9:用ABC符号生成和修改一个曲子。 20
21 .3 编码 在本节中,我们展示了GPT-4能够在非常高的水平上进行编码,无论是从指令编写代码还是理解现有代码。 GPT-4能够处理广泛的编码任务,从编码挑战到现实世界的应用,从低级汇编到高级框架,从简单的数据结 构到复杂的程序,如游戏。GPT-4还可以对代码的执行进行推理,模拟指令的效果,并以自然语言解释结果 。GPT-4甚至可以执行伪代码,这需要解释在任何编程语言中都无效的非正式和模糊的表达。在目前的状态 下,我们认为GPT-4在编写只依赖现有公共库的重点程序方面有很高的熟练度,这与普通软件工程师的能 力相比是有利的。更重要的是,它使工程师和非熟练用户都有能力,因为它使编写、编辑和理解程序变得 容易。我们也承认,GPT-4在编码方面还不够完美,因为它有时会产生语法上无效或语义上不正确的代码, 特别是对于较长或较复杂的程序。GPT-4有时也不能理解或遵循指令,或者产生的代码与预期的功能或风格 不一致。在承认这一点的同时,我们也指出,GPT-4能够通过回应人类的反馈(例如,通过迭代完善3.2中 的一个情节)和编译器的反馈来改进其代码。 终端错误(例子见第5.1节)。 重要声明:正如介绍中所解释的(例如见脚注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 text-davinci-003 Codex(code-davinci-002) 编码-DEGEN- 16B 准确率 82% 65% 39% 30% 表1:不同模型在HumanEval上的零射通@1准确率比较 虽然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中测量)。 顺利 中位数 困难 总的来说 通@k k=1 k=5 k=1 k=5 k=1 k=5 k=1 k=5 GPT-4 68.2 86.4 40.0 60.0 10.7 14.3 38.0 53.0 文本-达文西-003 50.0 81.8 16.0 34.0 0.0 3.6 19.0 36.0 法典 (code-davinci-002) 27.3 50.0 12.0 22.0 3.6 3.6 13.0 23.0 人类(LeetCode用户) 72.2 37.7 7.0 38.2 表2:LeetCode上的零次通过@1和通过@5的准确率(%)。 21
22 . GPT-4 承诺: 给你一个**0分的**`m x n`整数矩阵`网格`和一个整数`k`。你目前在`(0, 0)`的位置,你想到达`(m - 1, n - 1)`的位置,只需向下**或向右**移动。 返回*路径上的元素之和能被* `k`整除的路径数量。由于答案可能非常大,所以返回它 **modulo** `10**9 + 7`。 **例子1:** 输入:网格=[[5,2,4],[3,0,5],[0,7,2]], k=3 输出:2 解释一下:有两条路径上的元素之和能被k整除。第一条红色的路径上有5+2+4+5+2=18,能被3整除。 **例子2:** 输入:网格=[[0,0]],k=5 输出:1 解释一下:红色显示的路径有0+0=0的和,可以被5整除。 **制约因素:** - `m == grid.length`。 - `n == grid[i].length`。 - ` 1 <= m, n <= 5 * 10**4`。 - ` 1 <= m * n <= 5 * 10**4`。 - ` 0 <= grid[i][j] <= 100`。 - ` 1 <= k <= 50` **提示:** - 格子里的实际数字并不重要。重要的是当你用这些数字除以k时得到的余数。 - 我们可以使用动态编程来解决这个问题。我们可以用什么作为状态? - 让dp[i][j][value]代表路径上的元素之和除以k时有余数的路径数量。 GPT-4: 类Solution(object): def numberOfPaths(self, grid, k) :""" :类型网格:列表[列表[int]] :类型 k: int :rtype: int """ # 将 MOD 定义为 10**9 + 7 MOD = 10**9 + 7 # 获得网格的尺寸 m = len(grid) n = len(grid[0]) # 初始化一个全部为零的3D dp数组 # dp[i][j][value]代表路径上的元素之和除以k后的余数为value的路径数。 dp=[[0] * k for _ in range(n)] for _ in range(m)] # 基本情况:第一个单元格只有一个路径,其值为grid[0][0] % k dp[0][0][grid[0][0] % k] = 1 # 循环浏览网格 for i in range(m): for j in range(n): # 跳过第一个单元格,如 果i == 0,j == 0: 继续 # 遍历所有可能的余数,为范围(k)中的值: # 到当前单元格的路径数与当前余数之和相等:# - 到顶部单元格的路径数与前一个余数的总和 # - 到左边单元格的路径数,有前一个余数 # 前一个余数等于当前余数减去当前值,如果是负数则加k prev = (值-grid[i][j])% k 如果i>0: dp[i][j][value] += dp[i - 1][j][prev] 如果j>0: dp[i][j][value] += dp[i][j - 1][prev] # 取模数以避免溢出 dp[i][j][value] %= MOD # 返回到右下角单元格的路径数,余数为0 返回dp[m - 1][n - 1][0] 图3.1:使用动态编程解决一个LeetCode问题。由于全面的注释,GPT-4的解决方案也具有更好的 可读性。 3.1.2 现实世界的情景 编码挑战可以评估算法和数据结构方面的技能。然而,它们往往不能全面反映现实世界编码任务的复杂性和 多样性,这需要专门的领域知识、创造力和对多个组件和库的整合,以及改变现有代码的能力。为了评估 GPT-4在更现实的环境中的编码能力,我们设计了与数据可视化、LATEX编码、前端开发和深度学习有关的 端到端真实世界编码挑战,每一项都需要不同的专业技能。对于每一项任务,我们为GPT-4提供高层次的指 令,要求它编写 22
23 .用适当的语言和框架编写代码。在少数情况下,我们也会在代码写完后改变规范,要求更新。 数据可视化 在图3.2中,我们要求GPT-4和ChatGPT从表2的LATEX代码中提取数据,并基于与用户的 对话在Python中生成一个图。之后,我们要求两个模型对生成的图进行各种操作。虽然两个模型都正确地提 取了数据(这不是一个简单的任务,因为我们必须从多列中推断出人行在k=1和k=5时具有相同的值), 但ChatGPT从未产生所需的图。相比之下,GPT-4对所有的用户请求都做出了适当的反应,将数据处理成正 确的格式,并调整了可视化的内容。在附录C.2中,我们包括另一个GPT-4对IMDb数据集进行可视化的例子 。 GPT-4 承诺: [以互动的方式] 我给大家看一个LaTeX表格,我们会想 出一个办法,以问答的形式把它更好地 可视化。 这个表格是 显示不同语言模型(和人类用户)的性能 在生成代码挑战的解决方案。Pass@1意味 着第一代工作,而Pass@5意味着 五代人中有一个人在工作... 你能不能让两个地块都有相同的 y轴上的范围?而且图例中每个模型的名称 都有两次。 是否有办法使 "人 "成为 吧更有特色,以区别于其他3个? 图3.2:GPT-4将LATEX表(即表2)的数据可视化。我们指出,GPT-4也生成了这个图的格式。 我们问模型如何在LATEX中绘制连接数字的箭头,GPT-4产生了一个工作的Tikz片段,其布局和箭 头我们在这里采用。 23
24 .前端/游戏开发 在图3.3中,我们要求GPT-4用JavaScript在HTML中编写一个3D游戏,使用一个非常高 级的规范。GPT-4以零起点的方式制作了一个符合所有要求的工作游戏。在3D游戏中,GPT-4甚至能够解释 "防守方化身正试图阻挡敌人 "的含义:防守方代码有逻辑,因此它将自己定位在玩家和敌人之间。相比之 下,ChatGPT的回答是:"我是一个人工智能语言模型,我可以为你提供指导,如何用JavaScript在 HTML中创建一个3D游戏,但我自己无法编写代码或创建游戏。用JavaScript在HTML中创建一个3D游戏 需要大量的编程知识和经验。这不是一项可以快速或容易完成的任务。它需要大量的时间和精力来开发 所有必要的功能,如3D图形、物理学、用户输入和人工智能......"。我们在附录C中给出了更多关于前端 (图形用户界面)和游戏开发的例子。 GPT-4 承诺: 你能在HTML中用Javascript写一个3D游戏吗,我想: -有三个化身,每个都是一个球体。 -玩家使用方向键控制其头像移动。 -敌人的化身正试图抓住玩家。 -防守方的化身正试图阻止敌人。 -还有一些随机的障碍物,如一开始就随机产生的方块,并随机移动。头像不能越过这些方块。 -玩家在一个二维平面上移动,周围有墙,他不能越过。墙壁应该覆盖整个平面的边界。 -使用大炮为环境添加物理学。 -如果敌人抓住了玩家,游戏就结束了。 -绘制出所有三个化身的轨迹。 第1集:玩家的化身(蓝色)站着不动。敌人(红色)直接冲向玩家,而防守者(洋红色)试图 "身体阻挡 "敌人(见洋红色的弯 曲轨迹)。 第二集:玩家(蓝色)四处游荡。敌人(红色)试图缩小差距,但撞上了一个立方体,弹到了空中。试图阻挠,防 守者(洋红色)模仿其动作跟进到空中,但最终失败了。敌人(红色)最后抓住了玩家(蓝色)。 图3.3:GPT-4用JavaScript开发一个复杂的3D HTML游戏。 24
25 .深度学习。编写深度学习的代码需要数学、统计学知识,以及对PyTorch、TensorFlow、Keras等框架和 库的熟悉程度。在图3.4中,我们要求GPT-4和ChatGPT编写一个自定义的优化器模块,这个任务即使对人 类深度学习专家来说也是具有挑战性和容易出错的。我们给这些模型一个自然语言描述,其中包括一连串非 简单的操作,如应用SVD,在前k和前2k特征值处频谱地截断矩阵,使用前2k截断矩阵的F-norm对前k截断 矩阵进行标准化,应用动量和权重衰减。这些指令并没有完全详细地说明,例如,"在G上应用动量k "需要 " 深度学习常识"。需要注意的是,这种特殊的优化器并不存在于文献或互联网上,因此,模型不可能记住它 ,而必须正确组成概念,以产生代码。 GPT-4 VS ChatGPT 承诺: 我想在pytorch中写一个定制的优化器,这个优化器应该怎么做? 1. 优化器的参数是学习率、动量、重量衰减、d_dim、k和系数α。 2. 优化器通过网络中的每个参数,然后 --得到这个参数的梯度,通过循环浏览维度将其重塑为二维,并保留实际维度(形状)等于d_dim的维度,对该参数进行SVD分解,因此W=U\Sigma V。 -- 保留W的前k个奇异向量,所以我们得到一个新的矩阵W_k = U\Sigma_k V。 -- 保留W的前2k个奇异向量,所以我们得到一个新的矩阵W_{2k}= U Σ_{2k}。V. --根据W_{2k}的F-norm的动量,将W_k归一化。 --将W_k的每个坐标截断为所有坐标中最高的α百分位数,以绝对值为准。 -- 在W_k上施加动量,然后用这个动量更新网络参数。 -- 应用重量衰减。 GPT-4: ChatGPT: def step(self): def step(self): for group in self.param_groups: for group in self.param_groups: for p in group['params']: for p in group['params']: 如果p.grad是 None: 继续 如果p.grad是 None: 继续 grad = p.grad.data grad = p.grad.data # 将grad重塑为2D grad = grad.reshape(-1, grad.shape[-1]) # 重塑为2D形状 grad_2d = grad.reshape(-1, group['d_dim']) # SVD 分解 # SVD 分解 U, S, V = torch.svd(grad_2d) u, s, v = torch.svd(grad) # 保留前k个奇异向量 # 保留前k和2k个奇异向量 k = G_k = U[:, :group['k']]@ torch.diag(S[:group['k']] ) @ group['k'] V[:, :group['k']].T u_k = u[:,:k] #保留前2k个奇异向量 s_k = s[:k] G_2k = U[:, :2*group['k']]@ torch.diag(S[:2*group['k']] ) v_k = v[:,:k] @ V[:, :2*group['k']].T u_2k = u[:,:2*k] # 将G_k标准化 s_2k = s[:2*k] G_k /= torch.norm(G_2k, p=2) v_2k = v[:,:2*k] # 截断G_k threshold = torch.quantile(torch.abs(G_k), # 根据G_2k的F-norm动量进行归一化 grad_k = u_k @ group['alpha']) torch.diag(s_k) @ v_k.t() G_k[torch.abs(G_k) < threshold] = 0 norm_2k = s_2k.norm() #应用动力 grad_k = grad_k * group['motum'] / norm_2k 如果'momentum_buffer'不在组中:group['momentum_buffer'] = torch.zeros_like(G_k) # 截断到最高的阿尔法百分位数 alpha = group['motum_buffer'] = group['motum'] * group['alpha'] group['motum_buffer'] + G_k percentile = grad_k.abs().flatten().kthvalue(int(alpha * # 更新参数 grad_k.numel()) p.data.add_(-group['lr'] * group['momentum_buffer'] grad_k[grad_k.abs() < percentile] = 0 ) # 应用权重衰减 如果group['weight_decay'] !=0: # 应用重量衰减 p.data.add_(-group['weight_decay'] * group['lr'], p.data.add_(-group['lr'], grad_k + group['weight_decay'] ) p.data) * p.data) 图3.4:GPT-4与ChatGPT在实现定制的Pytorch优化器模块时的对比。我们 突出强调 精明 的GPT-4与 错 由ChatGPT在'应用动力'。 虽然两个模型都产生了语法上有效的代码,但只有GPT-4的代码在语义上是正确的,与指令相匹配。相比 之下,ChatGPT在应用动量时犯了一个错误(用红色标出),这是一项非同小可的任务,需要将移动平均线 存入和读出一个单独的状态缓冲器。 与LATEX对接。对于计算机科学家和数学家来说,用LATEX写作是一项重要的工作,但它的学习曲 线并不简单。由于其严格的语法和缺乏良好的调试器,即使是专家也会犯一些恼人的错误,每天都要花几个 小时来解决。我们表明,GPT-4可以利用 25
26 .其大师级的LATEX编码技术,大大简化了这一过程,有可能成为新一代的LATEX编译器,可以处理不精确的 自然语言描述。在图3.5中,我们要求GPT-4将一个用半严格的(有毛病的)LATEX代码写成的、混有自然 语言的片段转移到准确的LATEX命令中,一次就能编译完毕,并且是忠实的。相比之下,ChatGPT生成的 片段由于使用'#'和'\color'等错误而无法编译。 GPT-4 VS ChatGPT 承诺: 如果f(s)<=f(t)对每一个s<=t都成立,则一个函数f被称为{递增}_{强调!}。考虑公式:limit_{x到0}{limit当n接近无限 }underscore{ \矩阵[ [从1到n的i的总和(f(nx)-从0到x的积分sin(nx) dx), ((x + 2/8)^2 - 5)/((4x-1/x^2) /(n xor 3)), \ ,..., 部分f(x/n) 在部分x * (e^{-i*omega n x} + 3(x#7)),f的逆(x mod n)]] 乘以matrix{1, 1, ..., 1\ 1, 1, 1}。} {grey_color{这给我们一个关于功能的好印象}}。 将上述段落转换为LaTeX。 GPT-4: 如果f(s)≤f(t)对每个s≤t都成立,那么一个函数f被称为递增: � �Σn 、x (x+28)2 -5 i=1 f (nx) - 0 sin(nx) dx , 4x-1/x2 , lim lim � . n�3 . �×11- -- 1 x→0 n→∞ � � . �� 1 1 - - - 1 . ∂f(x/n) e−iωnx + 3(x#7) 、 f−1 (x mod n) ∂x - v } 这给了我们一个很好的关于函数的印象。 ChatGPT : 如果$f(s)\leq f(t)$对每个$s\leq t$都成立,那么一个函数$f$被称为{em increasing}。考虑一下这个公式: $$lim_{x到0} ¼lim_{n到infty} ¼lim_{n到infty}.\begin{bmatrix}.\sum\limits_{i=1}^{n} (f(nx) - int\limits_0^x \sin(nx),dx), \frac{(\frac{x}{2} + \frac{1}{8})^2 - 5}{frac{4x - \frac{1}{x^2}}{noperatorname{xor} 3} 、 \ vdots, \frac{partial f(x/n)}{partial x} \cdot (e^{-i\omega n x} + 3(x#7)), \f^{-1}(x bmod n) end{bmatrix}.\cdot `begin{bmatrix} `11 \1 \vdots \1 \end{bmatrix}$$ {color{grey}这给我们一个关于功能的好印象。}\] 图3.5:GPT-4将半严格的排版指令翻译成可以工作的LATEX片段。对于GPT-4,我们呈现的是最 终的图形,而ChatGPT的生成却未能编译。 3.2 了解现有代码 前面的例子表明,GPT-4可以根据指令编写代码,即使指令是模糊的、不完整的,或者需要领域知识。它们 还表明,GPT-4可以对后续的请求作出反应,根据指令修改自己的代码。然而,编码的另一个重要方面是理 解和推理他人所写的现有代码的能力,这些代码可能是复杂的、晦涩的、或记录不全的。为了测试这一点, 我们提出了各种问题,要求阅读、解释或执行用不同语言和范式编写的代码。 逆向工程的汇编代码。逆向工程是软件安全的一项重要测试,它相当于在以机器可读(即二进制)表 示的CPU指令编写的可执行程序中寻找有用的信息。这是一项具有挑战性的任务,需要了解汇编语言的语法 、语义和惯例,以及处理器和操作系统的结构和行为。 我们让GPT-4对一个需要密码才能运行的二进制可执行文件(代码是用C语言编写的)进行渗透测试。我 们通过聊天的形式来完成这个任务,GPT-4告诉用户要运行哪些命令,而用户则对结果进行回应。我们在第 5.1节中也展示了GPT-4能够独立运行一个shell,但这种聊天模式也提供了它解释每一步的好处。GPT-4检 查文件格式和元数据,用 "objdump "和 "radare2 "等工具反汇编代码,对代码进行调试 26
27 .使用 "gdb "和 "ltrace",并通过修补、挂钩和反编译等技术对其进行逆向工程。在这个过程中,GPT-4从汇 编代码中发现,密码是与一个简单的数学公式得出的哈希值进行比较。然后,GPT-4写了一个python程序, 尝试不同的数字组合,直到找到一个与哈希值相匹配的数字,破解了密码(附录C.6中介绍了一个简略的日志 )。ChatGPT拒绝这样做,理由是这是非法和不道德的,尽管逆向工程是确保软件安全的一种常见做法。 此外,GPT-4在利用现有工具方面也表现出了超越编程的全面熟练性,我们将在第5.1节详细讨论。 关于代码执行的推理。 在图3.6的例子中,我们要求GPT-4和ChatGPT预测并解释一个打印两个结构大小 的C程序的输出。GPT-4正确地解释了输出可能因编译器使用的对齐规则而不同,并给出了一个4字节对齐的 可能输出的例子。ChatGPT忽略了对齐问题,给出了一个错误的输出,还做出了成员的顺序不影响结构大小 的错误声明。 GPT-4 VS ChatGPT 承诺: struct mystruct_A { char a; int b; char c; } x; struct mystruct_B { int b; char a; char c; } y; #include <stdio.h> int main(void) { printf("Size of x: %zu bytes\n", sizeof(x)); printf("Size of y: %zu bytes\n", sizeof(y)); return 0; } 可能的输出: ChatGPT : GPT-4: x的大小:8字节 y的 有不同的方法来实现和对齐内存中的结构,所以确切的输出可能会根据编译器、平 这段代码的输出将是两个 大小:8字节:8字节 x的大小:12字节 台和使用的选项而有所不同。然而,一个可能的输出是: 结构的字节数。在C语言中,一个结构的大小是指 y的大小:8个字节 其所有成员的大小之和。在这种情况下,神秘结构A的大小是一个char的大 小加上一个int的大小加上另一个char的大小,即1+4+1=8字节。 这个输出假设编译器对结构使用4字节对齐,这意味着每个结构成员开始的偏 移量是结构开始的4字节的倍数。这可能会导致在成员之间或之后插入一些填 同样地,神秘结构B的大小也是8字节。这 充字节以保持对齐。比如说、 意味着两个结构将被分配相同数量的内存。 在x中,a后面可能有3个填充字节,c后面有3个填充字节,而在y中,可能根本就没有 填充。一个结构的大小是其成员的大小加上任何填充字节的总和。 请注意,成员在结构中的声明顺序并不影响其大小。 图3.6:GPT-4与ChatGPT在C/C++的内存对齐规则上的对比。GPT-4的精辟评论用金色标示, ChatGPT的错误用红色标示。 执行Python代码 对现有代码理解的最终测试是要求模型直接执行它。在图3.7中,我们看到GPT-4能够执 行非繁琐的Python代码。它必须跟踪几个变量(包括一个嵌套循环和一个字典)并处理递归。它通过写中 间步骤和注释来详细解释执行过程。值得注意的是,GPT-4不是在Python解释器上运行代码,而是用自然语 言模拟代码。这需要对代码有高度的理解和推理,以及清楚地传达结果的能力。相比之下,ChatGPT指出( 不正确)"DP(3, 4)的结果在给定的代码中没有说明",后来又说 "从代码中不清楚函数的预期输出是什么,因 为没有提供函数要解决的具体问题"。ChatGPT并没有模拟完整的执行过程,而是说明哪些函数会被调用。 27
28 . GPT-4 VS ChatGPT 提示: 我有以下的python代码: def to_str(i, j): return str(i) + "," + str(j) dict = {}. def DP(i, j): 如果i<=0或j<=0: dict[to_str(i, j)] = abs(4 * j - 3 * i) elif to_str(i, j) not in dict.key(): arr = [] for ir in range(i): for jr in range(j): arr.append(DP(ir, jr)) dict[to_str(i, j)] = max(arr) 返回 dict[to_str(i, j)] DP(3, 4)的结果是什么?请写出带有中间步骤的执行过程。 GPT-4: DP(3, 4): - i>0,j>0,所以我们不从第一个if语句中返回。 - to_str(3, 4)不在dict中,所以我们进入第二个if语句 - arr = [] - 我们把ir从0到2,jr从0到3进行循环。 - to_str(0, 0)不在dict中,所以DP(0, 0)返回abs(4 * 0 - 3 * 0) = 0, dict = {"0,0":0}, arr = [0] - to_str(0, 1)不在dict中,所以DP(0, 1)返回abs(4 * 1 - 3 * 0) = 4, dict = {"0,0":0, "0,1":4}, arr = [0, 4] - to_str(0, 2)不在dict中,所以DP(0, 2)返回abs(4 * 2 - 3 * 0) = 8, dict = {"0,0":0, "0,1":4, "0,2":8}, arr = [0, 4, 8] - to_str(0, 3)不在dict中,所以DP(0, 3)返回abs(4 * 3 - 3 * 0) = 12,dict = {"0,0":0, "0,1":4, "0,2":8, "0,3":12}, arr = [0, 4, 8, 12] - to_str(1, 0)不在dict中,所以DP(1, 0)返回abs(4 * 0 - 3 * 1) = 3, dict = {"0,0":0, "0,1":4, "0,2":8, "0,3":12, "1,0":3}, arr = [0, 4, 8, 12, 3] 。 - to_str(1, 1)不在dict中,所以DP(1, 1)进入第二个if语句,arr1 = [] 。 - 我们把ir从0循环到0,把jr从0循环到0 - to_str(0, 0)是在dict中,所以DP(0, 0)返回0,arr1 = [0] - dict["1,1"] = max(arr1) = 0, dict = {"0,0":0, "0,1":4, "0,2":8, "0,3":12, "1,0":3, "1,1":0}, arr = [0, 4, 8, 12, 3, 0] 。 - 继续进行外循环,to_str(1, 2)不在dict中,所以DP(1, 2)进入第二个if语句,arr2 = [] 。 - 我们把ir从0循环到0,把jr从0循环到1。 - to_str(0, 0)在dict中,所以DP(0, 0)返回0, arr2 = [0] - to_str(0, 1)在dict中,所以DP(0, 1)返回4, arr2 = [0, 4] ......(由于篇幅限制,我们在此跳过模型生成的一些步骤) - 继续进行外循环,to_str(2, 3)不在dict中,所以DP(2, 3)进入第二个if语句,arr6 = [] 。 - 我们把ir从0到1,jr从0到2进行循环。 - to_str(0, 0)是在dict中,所以DP(0, 0)返回0,arr6 = [0] - to_str(0, 1)是在dict中,所以DP(0, 1)返回4,arr6 = [0, 4] - to_str(0, 2)是在dict中,所以DP(0, 2)返回8,arr6 = [0, 4, 8] - to_str(1, 0)在dict中,所以DP(1, 0)返回3, arr6 = [0, 4, 8, 3] - to_str(1, 1)在dict中,所以DP(1, 1)返回0, arr6 = [0, 4, 8, 3, 0] - to_str(1, 2)在dict中,所以DP(1, 2)返回4, arr6 = [0, 4, 8, 3, 0, 4] - dict["2,3"] = max(arr6) = 8, dict = {"0,0":0, "0,1":4, "0,2":8, "0,3":12, "1,0":3, "1,1":0, "1,2":4, "1,3":8, "2,0":6, "2,1": 3, "2,2":4, "2,3":8}, arr = [0, 4, 8, 12, 3, 0, 4, 8, 6, 3, 4, 8] - dict["3,4"] = max(arr) = 12 - DP(3, 4)返回12 ChatGPT: DP(3, 4)的结果在给出的代码中没有指定。函数DP(i, j)是一个动态编程函数,它使用一个字典来存储以前计算的结果。该函数首先检查输入值i和j是否小于或等 于0、 如果是这样,它将abs(4 * j - 3 * i)的值分配给字典中的键tostr(i, j)。如果键tostr(i, j)在字典中不存在,该函数就创建一个名为arr的空数组,然后使用嵌套 for循环将所有可能的ir和jr值的DP(ir, jr)结果附加到数组中,其中ir的范围从0到i,jr的范围从0到j。 ... 最后,该函数将arr的最大值分配给字典中的键tostr(3, 4),并返回该值。从代码中不清楚该函数的预期输出是什么,因为没有提供该函数要解决的具体问题。此外, 该函数使用了嵌套的for循环和递归,这在计算上是很昂贵的,如果基本情况没有很好地定义,可能会导致该函数进入无限循环。 图3.7:GPT-4执行Python代码。 执行伪代码。编译和执行用编程语言编写的代码很容易,但这也要求严格遵守语法和语义。编译器不能处 理模糊的或非正式的表达方式,或功能的自然语言描述。相比之下,我们要求GPT-4执行图3.8中的非琐碎 的伪代码,注意到它能够执行并解释每一个步骤(包括递归)。ChatGPT则不能执行,尽管它似乎能够解 释每一行代码。 在下面的例子中,GPT-4正确地解释了合并数组函数的非正式描述,该函数将两个数组合并为一个缺失 元素的数组。它还理解了以简略方式定义的递归函数rec。值得注意的是,GPT-4直接执行了这些代码,而 没有将其翻译成其他定义明确的编程语言。这证明了AGI模型作为自然语言编程的新型工具的潜力,它可以 彻底改变我们未来的编码方式。 28
29 . GPT-4 承诺: 我有一个python函数merge_array,该函数接收两个长度分别为m,n的数组,通过合并第一个数组的第一个m-1元素和第 二个数组的最后n-1元素输出一个新数组。 假设我以如下方式调用merge_array函数: 函数rec 输入:一个数组A,整数k代码: 如果A的长度小于k,我们首先调用rec(A + [length(A)], k)得到B,然后再调用merge_array(B, B)得到C。 返回 C. 如果A的长度大于或等于k,则返回A,结束rec 你能告诉我rec([5, 10, 88], 6)的执行有哪些中间步骤吗? GPT-4: rec([5, 10, 88], 6)的一种可能的执行方式是,带有中间步骤: - 由于A的长度是3,小于k=6,我们首先调用rec(A+[length(A)], k)得到B,也就是说,我们调用rec([5, 10, 88, 3], 6) 。 - 在递归调用中,A的长度是4,仍然小于k=6,所以我们再次调用rec(A+[length(A)], k)来得到B,也就是说,我们调用 rec([5, 10, 88, 3, 4], 6)。 - 在第二次递归调用中,A的长度是5,仍然小于k=6,所以我们再次调用rec(A+[length(A)], k)来得到B,即我们调用 rec([5, 10, 88, 3, 4, 5], 6)。 - 在第三个递归调用中,A的长度为6,等于k=6,所以我们将A返回为B,也就是说,我们将[5,10,88,3,4,5]返回为B 。 - 在第二个递归调用中,我们有B = [5, 10, 88, 3, 4, 5],所以我们调用merge_array(B, B)得到C。merge_array函数 将第一个数组的前m - 1 = 5个元素和第二个数组的最后n - 1 = 5个元素合并成一个新的数组。也就是说,C = [5, 10, 88, 3, 4, 10, 88, 3, 4, 5]。我们将C作为B返回。 - 在第一个递归调用中,我们有B = [5, 10, 88, 3, 4, 10, 88, 3, 4, 5],所以我们调用merge_array(B, B)得到C。 merge_array函数将第一个数组的第一个m - 1 = 9个元素和第二个数组的最后n - 1 = 9个元素合并成一个新的数组。也就 是说,C = [5, 10, 88, 3, 4, 10, 88, 3, 4, 10, 88, 3, 4, 10, 88, 3, 4, 5] 。我们将C作为B返回。 - 在原来的调用中,我们有B = [5, 10, 88, 3, 4, 10, 88, 3, 4, 10, 88, 3, 4, 5],所以我们返回B作为rec([5, 10, 88], 6)的最终输出。 图3.8:GPT-4执行的伪代码。 为了获得另一个关于GPT-4能够保持代码状态的初步评估,在附录C.7中,我们在GPT-4上以零枪方式运 行大数乘法的标志性伪代码,其中有数百个随机采样的多长度输入。该代码要求GPT-4在大量的步骤中更新 和记忆阵列的状态。我们观察到,尽管GPT-4被训练成一个(非精确的)自然语言模型,但在超过50次的更 新中,它几乎可以正确地保存代码的状态。 29