【译】为什么我们还没有处于AGI的风口浪尖
原作:史蒂夫·纽曼
引子:你无法通过观察目的地来了解旅程
ChatGPT、Anthropic 的 Claude 或其他 AI 模型要多久才能实现人类水平的通用智能?
在此之前,我认为需要解决几个重大挑战。 我将在一系列简短的文章中描述这些挑战,最后对实现时间提出一些想法。 在第一篇文章中,我将认为当前的人工智能不太适合复杂任务所需的探索性、迭代过程,因为它们是针对此类过程的最终产品进行训练的,而不是过程本身。 我们不向他们展示写作和编辑,我们只是向他们展示结果书籍。
回顾如何构建高级人工智能
我将以 GPT-4(“大型语言模型”,或 LLM,最先进版本的 ChatGPT 的底层)为例,简要解释我们如何训练大型神经网络。
回想一下,LLMs 执行一项非常简单的任务:预测文本序列中的下一个单词。给出一个“法国的首都是”,它会回答“巴黎”,不是因为它是专门设计来回答问题的,而是因为这是句子中明显的下一个单词。
为了训练像 GPT-4 这样的大型神经网络,我们首先创建一个随机网络 - 即连接强度随机设置的网络。 为了将这个无用的随机网络变成一个调整良好的系统,我们执行以下步骤:
- 向模型发送输入。例如,“法国的首都是”。
- 运行模型,看看它生成什么输出。因为它最初是随机设置的,所以它会生成随机输出;说“烤面包机”。
- 调整连接权重以使所需输出(“巴黎”)的可能性更大,而所有其他输出的可能性更小。
- 重复这个过程数万亿次,每次使用不同的输入.
为此,您需要数万亿个不同的输入。对于每一个输入,你需要知道正确的输出;或者至少,您需要某种方法来区分更好和更差的输出。
这就解释了为什么目前最先进的人工智能系统是下一个单词预测器。这并不是因为下一个单词预测器特别有用或强大,而是因为我们知道如何为下一个单词预测器提供数万亿个训练样本。任何人类创作的文本集合都可以使用,并且我们有大量电子形式的文本。
LLMs 的成功源于这样一个事实:偶然地,下一个词预测器能够做许多有用的事情。人们使用 LLMs 来回答问题、撰写论文和编写代码。然而,它们也有局限性。
LLM 智力广泛但肤浅
我之前写过很多关于 LLMs 局限性的文章。简单来说:
- 因为 GPT-4 的答案是经过精心设计的,利用了大量的事实知识,而且我们倾向于向它提出一些其模式库最适合的通用、浅薄的问题,所以我们误以为它比实际情况更具有普遍能力。
- …缺失的能力包括记忆、探索和优化、解决难题、判断和品味、清晰的思维和心理理论。
在写这篇文章后的三个月里,我不断看到证据表明当前的 LLMs 从根本上来说是浅薄的。他们在一系列任务上的出色表现既说明了这些任务的浅薄,也说明了 LLMs 的深度,而且我们发现越来越多的证据表明许多重要任务并不浅薄。 LLMs 有用的实际应用程序数量的增长速度并不像预期的那么快;例如,LLM生成的文档摘要在实践中似乎不太好。正如 OpenAI 首席执行官 Sam Altman 三月份在推特上所说:
这是 GPT-4,我们迄今为止最强大、最一致的模型。 ......它仍然有缺陷,仍然有限,而且第一次使用时它看起来仍然比你花更多时间使用它之后更令人印象深刻。
部分原因可能在于 LLM 训练过程,该过程对每个单词的正确预测给予同等的重视,无论该单词的重要性如何。假设您根据以下文本对其进行训练:
- 法国的首都是什么?
- 法国的首都是巴黎。
在预测第二个句子时,它会认为以下两种可能性同样好,因为它们与训练样本仅相差一个单词:
- 法国的首都是巴黎。
- 法国的首都是罗马。
换句话说,该模型可能会投入与正确事实一样多的精力来匹配单词选择、语气和风格。事实上更是如此;在最近的一次采访中,一位微软人工智能研究人员指出,“推理”每二十或三十个单词才出现一次,这意味着 LLM 的训练过程中只有一小部分实际上提供了有关其推理能力的反馈,也许表明只有一小部分 LLM 计算时间用于认真思考。这有助于解释为什么法学硕士更注重表面现象,而不是深入思考。训练过程不仅强调单词选择,还强调学习精确匹配任何给定写作样本的特定风格和单词选择。因为我们训练 LLMs 来逐字模仿他们的训练数据,所以我们不仅仅是教他们正确写作,我们还花费大量计算来教他们模仿数百万种不同的写作风格。
我将用最近对 Demis Hassabis(DeepMind 的创始人兼首席执行官,现在是谷歌人工智能的核心人物)的采访中的一段话来结束本节:
- [Ezra Klein] 因此,当您思考从我们现在拥有的这些通用智能系统的道路时,您是否认为这只是更多的训练数据和更多的计算,比如更多的处理器,我们输入到训练集中的更多东西? 或者你认为我们还需要首先弄清楚其他创新、其他技术吗? 这里和目标之间有什么?
- [Demis Hassabis] 我站在两者都需要的阵营中。 我认为我们现在拥有的大型多模态模型还有很多改进空间。 所以我认为更多的数据、更多的计算和更好的技术将会带来更多收获和更有趣的表现结果。 但我认为,当前的系统可能缺少一两项创新,当前系统中缺少的一些创新将处理我们谈到的事实性、鲁棒性、规划、推理和记忆领域等当前系统所不具备的事物。
这就是为什么他们仍然没有完成我们希望他们做的很多有趣的事情。 因此,我认为那里需要一些新的创新,并进一步推动现有技术。 因此,对于构建 AGI 系统或通用人工智能而言,我很清楚。 系统中,这些大型多模式模型将成为核心组件。 所以它们绝对是必要的,但我不确定它们本身就足够了。
这就是为什么他们仍然未能完成我们希望他们做的很多有趣的事情。因此,我认为那里需要一些新的创新,并进一步推动现有技术。所以我很清楚,在构建 AGI 系统或通用人工智能方面,这些大型多模态模型将成为系统中核心组件。所以它们绝对是必要的,但我不确定它们本身就足够了。
LLMs了解目的地,而不是旅程
如果我们向 LLMs 展示我们的工作,他们会更容易学习如何完成工作。
如前所述,下一个单词预测器具有许多有用的功能。然而,仅仅因为 LLMs 可以做一些传统上计算机难以完成的有用的事情,并不意味着它们可以扩展到人们所做的一切。 LLM 训练过程或多或少相当于让模型阅读大量文本,并期望它对接下来会出现什么词产生直观的感觉。该模型看不到任何有关写作过程的信息,它只能看到成品。有些东西,例如法国的首都或有效英语句子的结构,只需观察大量已完成的写作示例即可了解。其他的东西是很难用这种方式学习的。
考虑长乘法。当我们教小学生乘以大数时,我们不只是提供示例(例如“3523 * 5573 = 19,633,679”)并期望他们凭直觉找到一种模式。我们向他们展示一种长乘法算法,并帮助他们练习。
LLMs 没有学习任何算法。 GPT-4 的训练数据可能包括夏洛克·福尔摩斯的故事,但没有涉及阿瑟·柯南道尔设计情节的过程。学校教的是“创意写作”,而不是“故事”——故事是写作过程的产物,但过程才是必须学习的东西。 LLMs 查看已完成的故事,但看不到编辑过程;他们看到工作的计算机代码,但看不到调试过程。
LLMs在开始生成输出之前需要遵循过程方法来解决问题,这有什么奇怪的吗? 在 10 次尝试中,聪明的GPT-4 从未成功地正确乘以 3523 * 5573。
下一步不是下一个词
让我们看看 ChatGPT 重现这一点
LLMs 一步步产生输出,一次一个字。 人们也一步一步地工作,但做事的步骤并不总是在末尾添加另一个词。
想象一下,您正在写一本教科书,并且您已经制定了大纲。 然后你可能会开始写每一章,而且你可能确实一次写一个字。 但是,您随时都可以选择中断逐字写作的过程。 例如,您可能会意识到您要解释的概念取决于稍后出现的另一个想法。 到那时,你的下一步将不是在草稿中添加一个词;相反,您将跳出写作并修改大纲。
更一般地说,写作过程中的步骤可能包括:
- 将下一个单词添加到您当前起草的部分。
- 回顾你已经写过的内容,看看是否为你下一步计划写的内容做好了适当的准备。
- 修改大纲及引入概念的顺序。
- 进行一些即时研究,以填补您对当前正在解释的概念的知识空白。
- 简单地回顾一下您之前使用的示例,以便更好地为当前段落奠定基础。
- ......以及许多其他大大小小的任务。
所有这些只是创建大纲后写作过程的一部分。创建轮廓的过程可能更加混乱。您需要进行研究,整理主题列表,探索将这些主题分组为逻辑大纲的不同方法等等。
大多数复杂的任务都带有丰富多样的增量步骤。 例如,调试计算机程序实际上本身就是一个完整的研究领域。 您可以首先对错误行为的起源提出假设,然后应用科学方法系统地测试这些假设。 或者,您可以首先修改代码以发出一些可以帮助您缩小问题范围的信息。 通常,您会在不同的方法之间来回跳跃,利用一种方法的见解来协助另一种方法,直到找到错误为止。
为了构建能够承担这些更复杂任务的人工智能,我们需要找到方法来训练它们执行这些任务所需的操作顺序。 但在写小说等过程中,很难找到包含一万亿步的数据库。 对此我们可以做什么?
它不会一直LLMs
使用 LLM 处理复杂任务的一个流行想法是首先要求 LLM 将任务分解为多个步骤,然后让 LLM 分别地处理每个步骤。例如,我们可能会要求它创建章节大纲,然后单独调用它来编写每一章,而不是要求 LLM 编写教科书。
我认为这种“LLMs 下一步”的方法不会走得太远。对于深度任务,通常不可能提前指定所有步骤。在任何特定时刻,都可能出现问题或机会,需要跳转到不同的子任务。此外,对于给定步骤,很难提示 LLM 包含所有相关输入数据以及需要记住的所有选项。在教科书创作示例中,编写单个章节的任务可能必须按照以下方式指定:
- 您正在编写一本关于 X 主题的教科书。请写出涵盖 Y 的章节。您可以参考以下概念,这些概念已在前面的章节中介绍过:[...一长串概念...]。请确保涵盖以下想法,我们希望读者理解这些想法/或为后面的章节奠定基础所必需的:[……另一个长长的概念列表……]。为了保持一致性,请记住以下风格指南:[...]。您应该以本章草稿作为回应。如果您发现自己不具备涵盖这些主题所需的全部知识,请生成要研究的缺失信息列表。如果您确定最好在前面的章节中介绍一些附加概念,请生成此类概念的列表。
这实在是过于简单化了,即便如此,仍然有很多事情需要跟踪。更糟糕的是,这种复杂的、法律主义的指导在正常写作中不会出现太多,这意味着它不会出现在LLMs接受培训的文本中,所以我怀疑我们是否可以期待LLM 很好地执行它。我相信,这就是为什么像 Auto-GPT 这样的任务结构化工具尚未在实际应用中产生很大的结果。
照我做的做,而不是照我说的做
获取执行任务所涉及示例步骤的一种方法是观察人类执行该任务。
例如,谷歌研究中心最近的一篇博客文章描述了谷歌内部使用的一组工具来帮助程序员。其他编码助手(例如 Github Copilot)接受已完成代码示例的培训。谷歌研究工具根据程序员在编写代码时采取的操作顺序进行训练。结果非常有趣:
- 例如,我们从一个空白文件开始,要求模型连续预测接下来会进行哪些编辑,直到编写完整的代码文件。令人惊讶的是,该模型以对开发人员来说似乎很自然的逐步方式开发代码:它首先创建一个包含导入、标志和基本主函数的完全工作的框架。然后,它逐步添加了新功能,例如从文件中读取和写入结果,并添加了根据用户提供的正则表达式过滤掉某些行的功能,这需要跨文件进行更改,例如添加新标志。
该工具无需尝试在单个线性草稿中编写整个程序,而是能够遵循更自然的增量过程。这似乎是开发能够解决复杂问题的模型的重要一步。
这种方法也有局限性。这个模型无法看到程序员所做的一切,只能看到他们对代码文件的编辑。如果程序员靠在椅子上花五分钟思考某件事,它就看不到思考过程中的步骤。它无法看到他们做笔记和阅读笔记、查阅外部信息源、运行程序以查看其行为方式等。未经这些步骤培训的工具将无法很好地执行需要它们的任务。
学习人类行为建模的另一个限制是该模型仅限于人类技能水平。 ChatGPT 的知识广度是超人的,但思维过程的深度却远非超人。这似乎也适用于任何主要依赖于模仿人类行为的工具。
模拟学习
学习任务的另一种方法是从随机初始化的网络开始,反复让它尝试该任务,调整网络以鼓励它在更成功的尝试中采取行动,在不太成功的尝试中阻止行动。
AlphaGo 是第一个击败人类专业围棋选手的计算机程序。 又过了两年,它已经进步到击败世界冠军的地步。 为了实现这一目标,DeepMind 必须找到可以实现超人游戏的训练数据。
- 我们首先用人类专家下棋的 3000 万步棋来训练策略网络,直到它能够在 57% 的时间内预测人类的棋步(AlphaGo 之前的记录是 44%)。 但我们的目标是打败最优秀的人类玩家,而不仅仅是模仿他们。 为了做到这一点,AlphaGo 通过在其神经网络之间进行数千场比赛来学会为自己发现新的策略,并使用称为强化学习的试错过程逐步改进它们。
换句话说,一旦 AlphaGo 从人类对弈中学到了所有知识,它就开始与自己对弈。 请记住,为了训练神经网络,您需要:
- 一堆不同的输入。
- 一种区分更好和更差输出的方法。
在这种情况下,每局比赛都构成一个输入,如果能够导致胜利,则认为动作是好的。 因为 DeepMind 可以无限期地与 AlphaGo 进行对抗,所以他们可以生成任意数量的训练数据。
后来,DeepMind 创造了 AlphaGo Zero,它没有使用任何人类对弈的数据; 它从一开始就接受了与 AlphaGo 比赛的训练,然后又与自己比赛。 AlphaGo Zero最终击败了最初的AlphaGo,并以其“非常规的策略和富有创意的新棋”而闻名。
这种方法已被用来开发人工智能,它可以玩几乎所有可以想象的游戏,从国际象棋到扑克,再到乒乓球和超级马里奥等视频游戏。
对我来说,这种方法能在多大程度上扩展到现实世界的任务中并不明显。 假设我们想训练一个写小说的人工智能。 我们可以让它生成一百万本小说,但我们如何评价它们的质量呢? 或者假设我们想要训练一个写代码的人工智能; 我们能否找到足够范围的任务来让它承担? 我们如何评估它们的正确性、易读性、安全性和其他标准? 这些问题的解决方案可能存在,但并不容易。
现实世界中的任务提出了不同的挑战。例如汽车维修或折叠衣物,您可以在现实世界中进行训练 - 构建一堆原型机器人并让它们一遍又一遍地尝试任务。 但这是混乱、缓慢且昂贵的。 或者,您可以在模拟中训练人工智能,但这需要对生锈的螺栓或皱巴巴的衬衫的行为等事物进行精确的模拟,这可能很困难,更不用说在时间,计算上的成本高昂了。
现实世界中的任务,例如汽车修理或折叠衣物,提出了不同的挑战。您可以在现实世界中进行训练 - 构建一堆原型机器人并让它们一遍又一遍地尝试任务。但这是混乱、缓慢且昂贵的。或者,您可以在模拟中训练人工智能,但这需要对生锈的螺栓或皱巴巴的衬衫的行为等事物进行准确的模拟,这可能很困难,更不用说昂贵的计算成本。
可能有必要针对我们希望人工智能学习的每项技能单独解决训练问题,就像我们为数千种不同职业提供培训计划一样。
最后一个困难:对于我在本节中讨论的各种训练,在整个任务完成之前通常无法提供反馈 - 例如,当您可以看到谁赢得了比赛,或者完成的计算机程序正确运行时。每个任务可能只会获得一个评估信号,这与 LLM 训练不同,在训练中我们为每个单词获得一个单独的评估信号。
一些事情可能会让这变得更容易
回顾一下:我们能够建立强大的法学硕士,因为我们可以收集数万亿个单词的数据来训练它们。 然而,由于这数万亿个单词大部分都是最终产品,因此生成的模型不太擅长复杂任务所需的探索性迭代过程。 为了生成复杂任务所需的训练数据,我们可以观察人类行为,或者让人工智能在模拟条件下重复尝试该任务。 无论哪种方式,收集足够数量的数据都是昂贵的,并且必须针对每个要学习的任务单独完成。
以下一些因素可能会使训练人工智能执行复杂任务的挑战变得不那么令人畏惧:
- 学习特定任务(例如写小说或诊断疾病)可能不需要 LLMs 需要对每种写作进行建模那么多的训练数据。你可能已经注意到,我提到 GPT-4 接受了数万亿个单词的训练,而 AlphaGo 及其变体仅接受了数百万个游戏的训练。
- 当我们在执行任务的过程中训练模型时,而不是仅仅为其提供已完成结果的示例,该模型可能不需要那么多的训练数据来获得能力。
- 与当前的神经网络相比,人类通常可以使用更少的训练数据来达到给定的性能水平。 AlphaGo在达到人类冠军水平之前,已经研究了数千万场比赛。 我不知道一个人类冠军会学习或玩多少场比赛,但每天十场比赛,持续 20 年也只有 73,000 场比赛。 也许我们可以找到一种方法来接近人类水平的训练效率。
- 如果你在一项任务上训练一个神经网络,这通常会为教它另一项任务提供一个良好的开端,即使这两个任务完全不同。 通过从通用的预训练网络开始,我们可以减少每个新任务所需的训练数据量。
- 我们可以构建依赖 LLMs 来处理作业的某些部分的模型。例如,代码编写人工智能可能会使用语言模型来编写文档和代码注释。
我们还没有处于 AGI 的风口浪尖
我相信 LLMs 是通向人类水平通用智能的道路上的一条小路。为了摆脱这个死胡同,我认为我们需要在构建和完善复杂任务解决方案的迭代过程中训练模型。这将需要新技术来生成必要的训练数据和评估算法;我们可能需要为我们希望人工智能学习的每项重要任务开发这样的技术。
是否存在一种场景,我们可以快速绕过这个障碍,并且像 GPT-6 或 GPT-7 这样的东西会在未来几年出现,并且可以合理地称为 AGI? 我不这么认为,但如果事情发展成这样,那将是出于以下原因之一:
- 我们发现了一项重大突破,可以让计算机模型使用相对少量的训练数据,以人类的方式学习更多知识。 也许我们可以通过将人工智能纳入大学计算机科学课程来培训人工智能软件工程师。
- 再过几代人,LLMs已经变得如此强大,以至于他们实际上可以通过复杂的思维过程一步一步地自我对话,就像我在“它不会一直是法LLMs”中所驳斥的那样。 通过向训练过程中添加相关示例可能会有所帮助。
- GPT-7 将接受如此多复杂工作产品示例的训练,因此它确实能够完成诸如“编写一本关于碳捕获技术的教科书”或“找到一种更有效的算法来训练神经网络”之类的任务,在内部对其训练数据中的示例执行某种深度模式匹配。 这基本上意味着“太阳底下没有新鲜事”,也就是说,即使我们花费数年时间来解决一个深层问题,最终我们也只是重新发现了以前做过的事情的混合体。
我的直觉表明,计算复杂性的深层问题将使#3 不太可能出现。我也对 #2 持怀疑态度:我可以想象类似的情况出现,但我认为它仍然需要 LLM 经历本博客文章中描述的特定于任务的培训过程;也许,通过利用LLM,我们可以减少所需的特定任务培训的数量。 #1 是真正的未知数:如果我们能够构建像人类一样学习的人工智能,那将改变游戏规则。然而,我并不认为这是我们快速实现通用人工智能的一条途径,因为我认为这需要不止一个突破才能实现。
在我的下一篇文章中,我将讨论当前LLMs与人类水平智能之间的另一个主要差距:记忆力。