尽管辛顿是人工神经网络研究的主要开创者,我们仍有必要对那已然接近通用人工智能的大语言模型的发展路径,做出分析性的探究。
半个多世纪来,人工智能研究主要在三个路径上奋力前行:(a) 基于知识与规范的符号主义进路;(b) 基于深度学习的联结主义进路 (绕过符号之域直接从数据中进行经验性的试错学习); (c) 基于控制论的行为主义进路。
2022年底这一波由大语言模型所引起的“人工智能热”,就技术而言乃是联结主义进路上的
关键性突破
,导致近乎通用的智能得以“涌现” 。这意味着,以 ChatGPT 为代表的大语言模型,建立在辛顿最先于20世纪80年代提出的人工神经网络研究的基础之上,是沿着联结主义“深度神经网络” (deep neural net-works, DNN) 进路发展出来的。
现在,就让我们聚焦使大语言模型在技术上成为可能的那个关键性技术突破:它就是谷歌研究团队于2017年提出的基于注意力——尤其是“自注意力” (self-attention) 或者说“内注意力” (intra-attention) ——机制的转化器模型。
前文已经提及,OpenAI的GPT系列模型,皆建立在这篇奠基性论文的研究成果之上:GPT全称就是“生成式预训练转化器” (gener-ative pre-trained transformer, GPT) 。转化器是一种采取神经网络架构的深度学习模型,通常拥有数百亿乃至数千亿个参数,并以自注意力机制为内核。作为人工神经网络中一种模仿认知注意力的技术,转化器模型能够增强神经网络输入数据中某些部分的权重,同时减弱其他部分的权重,以此将网络的注意力聚焦于数据中最重要的一小部分。自注意力机制能够一次性处理所有输入数据,可以为输入序列中的任意位置提供上下文,并按输入数据各部分重要性的不同而分配不同的权重。 数据中哪些部分比其他部分更重要取决于上下文,可以通过梯度下降对转化器模型进行训练。
在大语言模型出现之前的近十年,人工智能的突破多来自各种专用人工智能 (narrow artificial intelligence),如用围棋棋谱来训练深度神经网络的“阿尔法狗” 。而ChatGPT所展现出的接近通用的智能,则因为它是用各种类型的海量文本 (包括各种书籍、网页、 ArXiv论文存档、维基百科等) 来进行如下训练:从上下文来预测下一个词。但这种训练在转化器模型出来之前,是无法达成的。 2017年之前,自然语言处理(natural language processing, NLP ) 主要依赖循环神经网络(recurrent neural network, RNN) 模型来推进。循环神经网络线性地按顺序处理每一个标记 (token) 并维护一个状态矢量(该矢量包含所有已输入数据的表示)。这种模型的短处就在于:每个标记的计算都依赖于先前标记的计算结果,这使得它很难在GPU 这类深度学习硬件上进行并行处理。然而,这个短处被转化器所克服:自注意力机制让转化器模型得以提取序列中任意先前点的状态信息,并根据学习到的相关性度量对其进行加权,从而提供相距很远的标记的相关信息。于是,转化器不再像循环神经网络那样一次只能处理一个单词,而是允许更多的并行计算,从而大幅度减少训练时间。
大语言模型在训练上包括四个阶段:预训练、监督微调、奖励建模以及强化学习,每个阶段用不同的数据集来训练,并用不同算法生成结果模型。
尽管有四个阶段,但预训练阶段占据训练实际计算时间的 99%——往往需要数十万个计算小时、大量GPU算力并消耗巨额能源。其他三个阶段,皆系对模型的微调。
预训练所使用的数据集,主要是从互联网上抓取的文本。转化器模型会将所有文本都转化成一组非常长的整数序列,这种语言建模被称作“标记化” (tokenization),具体做法就是使用字节配对编码等专门算法,不断迭代地合并小文本块并将它们分组为标记 (一个标记约等于0.75个单词),从而实现文本片段与整数之间的一种无损转换。将英文单词、汉字字符 (……) 标记化,可以有效处理数据集中各种罕见字词,并通过限制每个序列的标记数量来减少计算复杂性。
经过标记化后,转化器就开始根据一整段上下文输入来尝试预测序列中的下一个标记,亦即为接下来的词指定概率分布。上下文长度通常是 2000或4000标记 (甚至有模型达到了100000标记) ——该长度决定了转化器在尝试预测序列中下一个整数时将查看的最大整数的数量。预训练采取的是无监督训练,并可通过使用合并规则来提高对训练数据的编码效率。在训练的初始,转化器神经网络以完全随机的权重开始,并获得完全随机的输出。随着训练时间越来越长,转化器不断迭代权重,就会输出越来越连贯的预测。通过这种预训练,GPT-3预训练出了3000 亿标记,而 Meta 于2023年7月18日发布的大语言模型 LlaMA 2则预训练出了2万亿标记(LLaMA模型预训练了1.4 万亿标记) 。
通过这种神经网络深度学习的预训练,转化器模型“涌现”出了强大的通用智能,并可以有效地微调它们以用于各种下游任务。
辛顿这样解释大语言模型的“智能”生成机制:
如果你观察大语言模型,它们使用数字计算和权重共享。这允许同一模型的许多不同副本处理巨量的数据,并共享每个个体副本所学到的内容。但是模型的每个副本(亦即每个能动者) 都以一种非常低效的方式从文档中获取知识。实际上,这是一种非常低效的蒸馏形式。它拿到一个文档,试图预测下一个单词。 [作为学习者的它] 并没有拿到对于下一个词的 [人类] 教师所掌握的概率分布,它只拿到一个随机的选择,也就是文档作者所选择写在那里的下一个词。这是非常低的 [学习] 带宽。这就是这些大语言模型从人们那里学习的方式。
每个副本通过蒸馏以非常低效的方式学习,但是存在着成千上万个副本。这就是为什么它们学习的内容可以比我们多上成千上万倍的原因
。我相信这些大语言模型比任何人类个体知道的东西要多上千上万倍。
我们看到,大语言模型所呈现出的接近“通用”的智能,就来自它能够借助转化器以并行计算与权重共享的方式来进行深度学习——它不像循环神经网络那样只能单线程地进行学习,而是同时有大量副本各自就不同文本展开学习,并通过共享权重或梯度的方式即时性地分享学习成果。
除了众多模型副本同时展开学习与分享知识之外,巨量的模型参数,对于大语言模型的智能表现也同样十分关键。用OpenAI创始人之一的安德耶·卡帕锡的话说,几百亿个参数,能够使模型具有“相对大而完美的工作记忆”。卡氏告诉我们:
任何适合上下文窗口的内容,都可以通过其内部自注意力机制立即供转化器使用,它有点像完美的记忆,它的大小是有限的,但转化器可以非常直接地访问它,它可以无损地记住其上下文窗口内的任何内容。
自注意力机制加上巨量参数 (“完美记忆” ),使得大语言模型彻底碾压人的注意力与记忆力——它能够借助转化器,无损地记住上下文窗口内的任何内容。
从辛顿与卡帕锡的论述中我们可以看到,作为人工神经网络,大语言模型最核心的强大之处,其实就在于它的“大”。正是
规模提升
(scale),使得那“好到吓人”的智能得以
涌现
——620亿参数时大模型涌现出了常识推理、编程、文本翻译、回答问题、总结文档 (乃至大量文档) 等能力;参数达到5400亿时则涌现出了逻辑推理链条、语义分析、模式识别、阅读理解、解释笑话等能力。
大语言模型的性能,随着模型大小、数据集大小和训练中使用的计算量呈幂律关系。