【翻译】大语言模型的工作原理(从0到ChatGPT)

70 阅读32分钟

原文地址:medium.com/data-scienc…

作者:Andreas Stöffelbauer

时间:2023年10月24日

1.引言

    受大型语言模型(简称LLM)的影响,几乎所有人都关注到了人工智能(AI)。之前,人们对AI的了解少之又少,毕竟日常生活中接触不到,也就只有这一领域的专家学者有较多的认识。后来,ChatGPT等对话类AI诞生了,这类AI能够以自然语言与人们对话,使得普通大众也能感受到AI的魅力。自此,ChatGPT的人气迅速飙升。然而,LLM的工作原理鲜有人知,除非你是数据科学家,或着是与AI相关的其他方面的研究人员。本文将改变这一现状(使普通大众也能了解LLM的工作原理)。

    当然,要想通过一篇文章解释清楚LLM的工作原理并不简单,毕竟它们(各种LLM)是数十年AI研发的结晶。讲这方面的文章大致可以分为两类:一类是过于普通琐碎,看完了没有收获;一类是技术性很强,非专业人士看不懂。前者相当于0,后者相当于1。本文从0到1讲述整个过程,阐述LLM是如何被训练的、以及为什么它们发挥得这么出色。

    本文不会深入探讨所有细节问题,而且尽量通过图片这种直观的视觉效果来表达。尽管LLM在细节上很复杂,但是它的主要机制是很直观、易于理解的,正是凭借这一点才有了这篇文章。

    本文会让你从ChatGPT等LLM中学到更多东西,会教你一些技巧来获得更有用的答复。

    首先,我们先了解一下LLM在AI领域的定位。

层层递进的AI领域

    AI领域通常被分为多个层次:

  • 人工智能(AI)是一个广泛的术语,但通常指的是智能机器(例如:可人脸识别的闸机、可自动驾驶的汽车等)。
  • 机器学习(ML)是AI的子集,专注于数据中的模式识别。一旦识别出一种模式,就可以在下次观测中应用这种模式。这是精髓所在,后面会讲述。
  • 深度学习是机器学习的子集,专注于非结构数据(包括图像、文本)。科学家由人脑得到灵感发明了人工神经网络,而深度学习正是依赖于人工神经网络。
  • 大语言模型(LLM)专注于文本。这部分是本文重点。

    接下来,我们将从每一层中讲解相关的点。我们将跳过最外层的 “人工智能”(因为它太笼统了),直接讨论什么是 “机器学习”。

2.机器学习

    机器学习的目标是从数据中发现“模式”。具体来说,一种模式描述了一个输入与一个输出之间的关系。这一点最好通过举例来说明。

2.1 机器学习的过程

    比方说,我们要区分我最喜欢的两种音乐流派:雷鬼音乐和 R&B 音乐。如果你不熟悉这两种音乐流派,那我简单介绍一下。雷鬼是一种拉丁城市音乐流派,以活泼的节拍和舞动的节奏而闻名。R&B(节奏和布鲁斯)是一种根植于非裔美国人音乐传统的流派,具有深情的人声,歌曲融合了快节奏与慢节奏。

机器学习实践。预测音乐流派就是分类问题的一个例子。

    假设我们有20首歌曲。通过简单的测量与计算,我们知道了每首歌的两个指标:能量与节奏。除此之外,我们给每首歌打上音乐流派的标签,要么雷鬼,要么R&B。当我们将数据可视化后,可以看到:高能量、快节奏的歌曲往往是雷鬼,低能量、慢节奏的歌曲往往是R&B,事实亦是如此。

    然而,我们不想一直这样人工标注,这样太耗时了,而且这一规律不能扩展。那么,我们可以这么做:通过学习歌曲指标(能量、节奏)与其流派之间的关系,依靠某首歌曲现有指标来预测其所属流派。

    在机器学习术语中,这是一个分类问题,因为结果变量(流派)只能是一组固定 类别/标签 集合中的一种。这与回归问题不同,回归问题的结果是一个连续值(例如温度或距离)。也就是说,两种问题的结果不同,一个是离散的(分类问题),一个是连续的(回归问题)。

    现在,我们可以使用已标注的数据集,即已知流派的音乐集,来训练一个机器学习模型(或者说“分类器”)。直观地讲,模型的训练,就是为了找到两个类别的分界线。

    找到分界线有什么用呢?既然我们已经找到了分界线,那么对于任意一首新的歌曲,我们可以根据它属于分界线的哪一边来预测它是雷鬼还是R&B。而判断它属于分界线的哪一边这件事,只需要拿到它的能量跟节奏这两个指标就能做到,而这两个指标是很容易分析出来的。这么做可比人工标注更简单,也更容易扩展。

    此外,可以想到,音乐指标的落点离分界线越远,我们更加确信预测结果是正确的。因此,我们通常也可以根据落点离分界线的距离来表示预测结果的准确性。例如,对于我们示例中那首低能量、慢节奏的歌曲,我们有98%的把握认为它是一首R&B歌曲,而仅有2%的把握认为它是一首雷鬼歌曲。

2.2 更复杂的情况

实际上,事情往往要复杂得多。

    当然,真实情况往往更加复杂。

    区分不同类别的最佳边界可能不是直线,换句话说,输入跟结果之间的关系更加复杂。如上图所示,边界可能是曲线,甚至比这曲线更复杂。

    除了分类边界,真实情况在其他方面也很复杂。示例中只有两个输入变量,真实情况中可能有数十个、成百上千个输入变量。此外,最终的分类也不只两个类别,且所有类别都以一种极其复杂的、非线性的关系依赖于所有输入。

    就拿我们的例子来说,我们都知道事实上音乐流派不只有两种,另外除了能量和节奏外我们需要更多的指标。它们之间的关系也没那么简单。

    我想说明的一点是:输入跟输出之间的关系越复杂,则对应的机器学习模型越复杂、越强大。通常情况下,复杂度会随着输入与分类的增多而增大。

    总结一下,真实情况与示例相比,①分类边界(输入与输出之间的关系)更复杂,②输入变量更复杂,③输出结果更复杂,总的来说,机器学习模型更复杂。除此之外,示例中仅用了20条数据,真实情况往往需要更多的数据。后面你就知道为什么需要更多的数据了。

2.3 图片输入

图像分类示例

    接下来我们讨论一个不同的问题,但是依然采用前面的思维方式。接下来的问题中,我们把一张图片作为输入。比如这张可爱的小猫被装在袋子里的图片。

    至于我们的结果,假设有三个标签:老虎、猫、狐狸。那么“分辨图像中的动物是老虎还是猫或者狐狸”这件事有什么实践意义吗?有的,我们可以依此做一个保护羊群的警报系统,系统识别到有老虎在附近则发出警报提醒羊群,识别到猫或狐狸则不发出警报。保护羊群正常生长,免受肉食者野兽的伤害,从而保障了牧羊人的利益。这便是人工智能在畜牧业的应用之一。

    话说回来。这也是一个分类问题,因为输出是一组固定类别集合中的一种。那么我们可以像前面那样,拿已经标注好的数据(一些已知是老虎、猫、狐狸的图片)来训练机器学习模型。

    过,我们不清楚如何处理视觉输入。因为计算机只能处理数值输入。像歌曲指标(能量、节奏)就是数值。幸运的是,图像也可以看作是数值输入,因为图像是由像素组成的。图像有高度、宽度以及红、绿、蓝三个通道。所以理论上,我们可以直接拿像素值来训练机器学习模型。

    然而,我们面临两个问题。第一个问题是:即便是一张小尺寸、低清的224x224像素的图片,它也包含了15万多的像素值(224x224x3)。之前我们讨论的输入变量也只是成百上千个,这里却至少是15万多。第二个问题是:如果你考虑一下原始像素和类别标签之间的关系,就会发现这种关系非常复杂,至少从机器学习的角度来看是这样的。我们人类的大脑具有惊人的能力,可以很容易地将老虎、狐狸和猫区分开来。但是,如果你逐个查看这15万个像素值,你根本不知道它们有什么意义。但这正是机器学习模型看待图像的方式,因此它需要从头开始学习这些原始像素与图像标签之间的映射或关系,这可不是一件小事。

2.4 文本输入

情感分类示例

    让我们来考虑另一种极其复杂的输入-输出关系——句子与其情感之间的关系。我们通常所说的情感是指句子所传达的情绪,这里指正面或负面的情绪。

    让我们将问题转化为之前的形式:这里的输入是一串单词,即一个句子,而情感则是我们的结果变量。和之前一样,这是一项分类任务,这次有两个可能的标签,即正面或负面。

    就像前面讨论的图像似的,作为人类,我们可以自然地理解这种关系,但我们能教会机器学习模型吗?

    在回答这个问题之前,我们并不清楚如何将文字转化为机器学习模型的数值输入。事实上,这要比图像复杂一两个层次,因为图像基本上已经是数值化的了。而文字则不同。我们在此不再赘述,但你需要知道的是,每个单词都可以转化为词嵌入(word embeddings)。

    简而言之,词嵌入代表这个词的语义以及这个词在句子中的含义。这些嵌入(embeddings)可以在机器学习模型训练过程中生成,也可以由单独的生成器来生成。(前者是指训练机器学习模型的过程中,专门有一个过程来生成word embeddings,这样做的优点是对任务的适配性高,缺点是需要大量的数据来训练;后者是指利用现有的、成熟的、通用的生成器来生成word embeddings,这样做的优点是成本低,缺点是对任务的适配性低。)通常,一个单词的word embeddings包含了几十个甚至上千个输入变量,每个单词都是如此。

    总之,我们可以将一个句子(一段文本)转化为一系列数值输入,然后用来训练机器学习模型。

    那么好,我们又遇到了跟视觉输入同样的问题:① 输入变量太多了。你想,一个句子(或者是一个段落,甚至是一篇文章),因为word embeddings很大,且每个word embeddings又包含上千个输入,所以整体输入量级很大。② 输入与输出之间的关系太复杂了。即一句话与其表达的情感之间的关系太复杂了。比如“你真厉害”这句话,如果是“你拿了第一名,你真厉害”则代表夸奖,如果是“这么简单的事情你都能搞砸,你真厉害”则代表反讽。

    为了解决这些问题,我们需要一个极其强大的机器学习模型以及大量的数据。因此,“深度学习”应运而生。

image.png

3.深度学习

    前面我们了解了机器学习的基础知识,也了解了为什么我们需要一个更强大的机器学习模型,到这儿为止,我们已经在理解LLM方面迈出了一大步。现在通过介绍深度学习来使我们再次迈出一大步。

    我们谈到,如果输入和输出之间的关系非常复杂,而且输入或输出变量的数量很大(之前的图像和语言示例就属于这种情况),我们就需要更灵活、更强大的模型。线性模型或任何接近线性模型的方法都无法解决这类视觉分类或情感分类任务。

    因此,“神经网络”应运而生。

神经网络是当今最强大的机器学习模型。

    神经网络是一种强大的机器学习模型,可对任意复杂的关系进行建模。它是大规模学习这种复杂关系的引擎。

    事实上,神经网络的灵感来源于大脑,但两者之间的实际相似性还有待商榷。它的基本架构相对简单。它由一层层相连的“神经元”组成,输入信号通过这些“神经元”来预测结果变量。你可以把它想象成多层线性回归堆叠在一起,中间加入非线性因素,从而使神经网络能够模拟高度非线性关系。

    神经网络通常有很多层深度(因此被称为深度学习),这意味着它可以非常庞大。例如,ChatGPT就是建立在某个神经网络基础上,而这个神经网络由1750亿个神经元组成,这比人脑中大约1000亿个神经元还要多。

    那么,从现在开始,假设我们已经把神经网络作为我们的机器学习模型,并且假设我们已经学会了如何处理图像与文本。

4.大语言模型

    最终,我们可以开始讨论大语言模型了,这才是真正有意思的地方。如果你坚持看到这儿了,那么你已经掌握了理解大语言模型所需要的前置知识。

4.1 大语言模型的含义

    先解释大语言模型的实际含义。我们已经知道“大”代表什么了,“大”指的是神经网络中神经元的数量,也称为参数。至于多大才算大,并没有一个明确的数字,但你可以将超过 10 亿个神经元的模型视为大语言模型。

    既然如此,什么是 “语言模型 ”呢?让我们接下来讨论这个问题。稍后我们还将了解到 ChatGPT 中的 GPT 代表什么。不过,还是一步一步来吧。

语言建模就是学习预测下一个单词。

    让我们把下面这个问题归为机器学习问题:“在给定的单词序列(或者说一个句子、一个段落)中,下一个单词是什么?”换句话说,我们只是想学习如何随时预测下一个单词。这一问题跟我们前面讲到的情感分类问题差不多。

    输入是一串单词,输出是下一个单词。这跟前面的问题都一样,也是分类问题。不同的地方在于,前面的问题中结果只有几个类别,而这个问题中,下一个单词有多少种可能性,就有多少种类别。假设有5万个单词都是备选,那么结果就有5万个类别,每个备选词都是一个类别。这就是语言模型的意义——学会预测下一个词。

    免责声明:本文在讨论问题时简化了很多细节(实际情况要更复杂),但这并不影响我们理解LLM等技术的主要机制。

4.2 训练数据来源

可以相对容易地创建海量训练数据。

    “预测下一个单词”这个任务需要大量的数据来训练模型,数据从哪来呢?互联网、书籍、学术论文等等都有大量的文本。我们可以利用这些数据创建一个庞大的数据集。前面的问题里,供模型训练的数据集都需要标注,比如标注音乐流派、标注动物种类、标注句子情感,而这里压根不需要标注,因为任何一个序列后面紧跟的那个词就是标注!因此这也称作“自监督学习”。

    上图展示了这个做法。一个序列可以转换成多个序列进行训练。我们有很多这样的序列。重要的是,我们对许多短序列和长序列(有的多达数千个单词)都进行了这样的训练,这样我们就能在各种语境中学习下一个单词应该是什么。

    总的来说,我们现在要做的就是训练一个神经网络(大语言模型)来预测给定词序列中的下一个词,无论这个词序列是长是短,是德语、英语还是其他语言,是一条推文还是一个数学公式,是一首诗还是一段代码。这些在训练数据中都有。

    如果我们有足够大的神经网络和足够多的数据,那么 LLM 在预测下一个单词方面就会变得非常出色。它会是完美的吗?当然不是,因为一个确定的序列后面往往会有许多个不确定的单词。但它会越来越擅长于 选择一个在句法和语义上都合适的词。

4.3 自然语言的生成

我们可以通过一次预测一个词来生成自然语言。

    既然可以预测一个单词,那我们把输入序列+预测的单词组合成一个新的输入序列,就可以再次预测下一个单词,以此类推,通过每次生成一个单词的方式来生成一段新的文本。因此,LLM也是生成式AI的一种。我们教会了LLM说话,只不过每次张口只能说一个词。

    还有个细节需要了解。一般来讲,我们通常会从预测结果的N个词中,取用可能性最高的那个词,但实际上可以灵活处理。比如说取出可能性最高的前5个词,然后在这5个词里随机选一个。像ChatGPT就有类似的机制,当你选择重新生成答案时,往往会得到与上一次不同的回答。

    说到ChatGPT,你可能会问:为什么不叫做ChatLLM(Chat + LLM,对话式大语言模型)呢?也就是说,ChatGPT里的“GPT”代表什么呢?

4.4 GPT的含义

GPT = Generative Pre-trained Transformer.

    我们刚刚了解到了,G代表Generative(生成式)。也就是说,ChatGPT是冲着【语言生成】去做的训练。P跟T又代表什么?

    我们在这里略过“T”,T代表Transformer架构。前面我们提到,机器学习模型包括线性模型、神经网络模型以及其他模型。(补充:神经网络根据层次的深浅可分为浅层神经网络与深层神经网络,后者≈深度学习。)神经网络按其架构分类,可以分出许多种,其中一种是Transformer架构。ChatGPT∈LLM∈深度学习模型∈神经网络模型,也就是说ChatGPT是一种神经网络模型,它这种神经网络模型所采用的架构正是Transformer架构。Transformer架构的优点在于:任何时候它都能将注意力集中在输入序列中最关键的地方。这一点跟人类的工作方式类似,我们也是将注意力集中在任务关键部分,而忽略那些不重要的地方。

    P代表“预训练”。接下来你就知道,为什么突然提到“预训练”了,之前一直都是说“训练”。

    原因在于,像ChatGPT这样的大语言模型都是分阶段训练的。

4.5 分阶段训练

LLM训练各阶段

预训练

    第一阶段是预训练,也就是我们前面提到的。这一阶段需要大量数据来学习预测下一个单词。在这一阶段,模型不仅要学习掌握语言的语法和句法,还要掌握大量关于世界的知识,还有一些我们稍后将谈到的其他新能力。

    我有几个问题要问你。首先,你觉得预训练会有什么问题?当然问题肯定是有的,我要指出的问题是,LLM究竟学会了什么。

    LLM学会了,就一个话题,展开滔滔不绝的谈论。它可能说的非常好、非常专业,却偏偏不是你想问的。也就是说,它学富五车,却只会自言自语

    举个例子,你向预训练过的LLM传递一个问题:“你的姓名是什么?”,它可能会接上:“你的年龄是多少?”为什么会这样?因为预训练的数据就是这样的,常见的统计表格或调查问卷里,问完姓名,后面紧跟着问年龄。LLM只是在尝试着,将输入给补充完整。总结来说,预训练模型在用户给出一段文本后,会站在用户的第一视角对文本进行续写,而不是站在用户的第二视角按文本进行对话。也即它站在用户这边继承了用户的思想,而不是站在用户的对立面作为一个具有独立思想的个体

    它不能处理好这种指令。因为在训练用的数据中,这种“指令后面跟着回复”的数据很少、不常见。像知乎、贴吧这样的论坛倒是符合这种结构。(我猜像论坛这样的数据可能没有被拿来做训练,可能是考虑到其权威性、真实性。又或者即便拿它们来做训练了,这点数据量在总数据中所占比例太低,毕竟互联网与书籍中大部分资源都是以第一人称撰写的文章,而不是这种“一家抛砖,引得百家之玉”的结构。总之,正是因为训练数据的结构比较单一,使得LLM只会自言自语,没有回复他人问题的意识。)

    在这个阶段,LLM与人类没有“对齐颗粒度”。对齐颗粒度是个重要的研究课题,接下来会介绍。毕竟现在主流的LLM都能回复得不错,说明这个问题还有救。

指令微调和强化学习

    这时候就轮到“指令微调”来发挥作用了。我们用预训练过的LLM去做“预测下一个词”的任务,但是,这一阶段训练所用的数据集变了,用高质量的“指令-回复 对儿”(键值对的“对”)作为数据集。

    这样,模型就不是在学习如何完成文本,而是在学习如何成为一个有用的助手,按照用户的意图来执行指令和给出回复。这种指令数据集的规模通常比预训练集要小得多。这是因为高质量指令-回复对的创建成本要高得多,因为它们通常来自人类。这与我们在预训练中使用的廉价自监督标签截然不同。而这一阶段也被称为监督指令微调阶段。

    像 ChatGPT 这样的 LLM 还需要经历第三个阶段,即从人类反馈中强化学习(RLHF)。我们在此就不赘述了,但其目的与指令微调类似。RLHF 还有助于调整并确保 LLM 的输出反映人类的价值观和偏好。一些早期研究表明,正是有了这一阶段,LLM的表现才有可能达到或超过人类水平。事实上,将强化学习和语言建模领域结合起来的前景尤其广阔,很可能会对我们现有的 LLM 带来巨大的改进。

    现在,让我们通过几个例子来检测一下我们对于前面的知识掌握得怎么样。

4.6 小结

测试对LLM的掌握程度

    第一个问题,为什么 LLM 可以对较长的文本进行总结摘要?(如果你还不知道的话,我告诉你,它在这方面做得很好。只需粘贴一份文档,然后让它进行摘要即可)。

    要了解原因,得往训练数据方面考虑。人们经常在互联网、研究论文、书籍等方面进行总结。因此,以这些数据为基础进行训练的 LLM 也学会了如何进行总结。它学会关注要点,并将其压缩成简短的文本。

    要注意的是,在生成总结摘要时,全文是 LLM 输入序列的一部分。这类似于学术研究最后得出的结论,而研究内容则出现在结论之前。

全文作为摘要的输入

    第二个问题,为什么LLM能回答问题?

    如前文所述,LLM能够作为助手回答问题得益于指令微调跟强化学习,但是回复所涉及的知识是在预训练阶段就获得的。

    说到这里,就有一种情况:LLM也不知道答案怎么办?在这种情况下,它会编造一个答案。

    所以第三个问题就是,为什么LLM有时候会捏造事实呢?为了了解原因,让我们把目光再次放到训练数据与训练目标上。

4.7 捏造事实(产生“幻觉”)

LLM 会产生幻觉,但可以通过提供额外的背景信息来减轻幻觉。

    关于LLM,你可能听说过“幻觉”这个词。“幻觉”指的是LLM在不该捏造事实的时候捏造事实了。

    为什么会这样?因为LLM只学会了生成文本,生成的文本风格跟人类日常讲话、写作的风格一致,但是它不知道自己生成的文本所表达的含义是否符合事实。LLM不知道训练数据本身是否符合事实,只是把它们当做事实去学习。而互联网跟书籍中的文本通常看起来都很像事实,因为作者写的时候通常用陈述句,所以这让LLM认为这些都是事实。所以当LLM依据自己所学知识,生成一段文本的时候,往往也是陈述句,表达得振振有词、不容置疑,尽管有时候在人类看来是很荒唐的事。(这让我想起Google AI的相关新闻:问它芝士和披萨粘不到一块怎么办,回答是放点胶水;另外还建议人们每天吃一块石头来补充营养。答案来自于论坛的一些玩笑话或一些讽刺文章,然而LLM分辨不了玩笑跟讽刺。)

    尽管如此,这仍是一个活跃的研究领域,我们可以期待,随着时间的推移,LLM 会减少产生幻觉的可能性。例如,在教学调整过程中,我们可以尝试教导 LLM 在一定程度上避免产生幻觉,但只有时间才能证明我们能否完全解决这个问题。

    你可能会惊讶地发现,我们现在就可以在这里一起尝试解决这个问题。我们拥有相关知识,可以找出一些有帮助的解决方案,而且这种解决方案如今已被广泛使用。

4.8 提供上下文

Bing Chat就是基于搜索的 LLM 工作流的一个例子

    假设你向LLM提出以下问题: 哥伦比亚现任总统是谁?LLM很有可能答错名字。这可能有两个原因:

  • 第一个原因是我们提到的“幻觉”,LLM捏造了一个名字
  • 第二个原因是LLM的训练数据集是截止到某个时间(假设为T1)的,随着时间的推移,数据没有了时效,答案仅在T1之前是正确的。

    那么,我们该如何解决这两个问题呢?答案就在于为模型提供一些相关的上下文。这样做的理由是,LLM 输入序列中的所有内容都可以随时供它使用,而它在预训练阶段获得的知识相对来说难以检索出来。(我的理解是:对于LLM来说,在回答问题时,既可以使用输入序列中的内容,也可以使用预训练阶段学到的知识,但两者相比较,前者的优先级更高、前者更好用。)

    如果仅仅把问题传给LLM,那么输入序列就只有问题,LLM在问题里找不到答案就会去预训练学到的知识里去找,那么很有可能是过时的,或者找不到答案而捏造一个答案。

    如果把问题连同与问题相关的上下文一起传给LLM,即输入序列=问题+上下文,那么LLM在问题和上下文中找答案,很有可能在上下文中找到答案。比如我们将维基百科上关于哥伦比亚政治历史的文章作为 LLM 的上下文。在这种情况下,答对的可能性会大很多,因为它可以从上下文中简单地提取出名字(当然,前提是它是最新的,并且包括了现任总统)。

    在上图中,你可以看到提示(Prompt)不仅有问题还附带了上下文。(顺便说一下,Prompt只是我们给 LLM 的指令的另一个名称,即构成输入序列的指令。上图例子中,Prompt = Instruction = Question + Context,而对于没附带上下文的指令:Prompt = Instruction = Question)

    这个过程被称为将 LLM 置于语境中,或者说置身于现实世界中,而不是让它自由生成。

    这正是Bing Chat和其他基于搜索的 LLM 的工作方式。它们首先使用搜索引擎从网络中提取相关上下文,然后将所有信息与用户的初始问题一起传递给 LLM。请参阅上图,了解如何实现。

5.AI的魔力

    现在,我们已经基本了解了LLM的主要机制(至少是截至 2023 年下半年)。(作者:Andreas Stöffelbauer,日期:2023年10月24日

    你可能会想 “其实也没有那么神奇”,因为实现的只是一个一个单词的预测。毕竟,这是纯粹的统计学。是这样吗?

    这一切的神奇之处在于,它的效果非常好。事实上,每个人,甚至是 OpenAI 的研究人员,都对这种语言模型的表现感到惊讶。过去几年里,LLM的驱动力之一就是神经网络和数据集的大规模扩展,这使得性能也随之提高。例如,GPT-4,据说总参数超过一万亿个,可以通过律师资格考试,并且在考生中排名前10%。

    令人惊讶的是,LLM 甚至显示出某些新出现的能力,即能够去做一些未训练的事情。

    在本文的最后一部分,我们将讨论其中一些新出现的能力,并向你展示一些如何利用它们解决问题的技巧。

5.1 解决未训练任务

LLM 可以以 “零样本提示 ”解决全新的任务。

    LLM 可以完成它们在训练中没有遇到过的全新任务,这就是所谓的Zero-Shot Prompting。它所需要的只是关于如何解决任务的指令。

    可以举一个没什么意义的例子来说明这种能力,你可以让LLM将一个句子从德语翻译成英语,同时要求答案中只能含有以 “f ”开头的单词。

    例如,当被要求只用“f”开头的单词翻译一个句子时,LLM将“Die Katze schläft gerne in der Box”(德语,字面意思是“猫喜欢睡在盒子里”)翻译成了“Feline friend finds fluffy fortress”,我觉得这是一个很有趣的翻译。

5.2 给出示范

像人类一样,向LLM提供示范会帮助它们理解任务

    对于更复杂的任务,Zero-Shot Prompting需要非常详细的说明,即便如此,性能也很差。

    跟人类思维很像的一点是,当你被告知去执行一个你从没做过的任务时,你可能会要求举个例子或演示一下。LLM也是这样。

    例如,你需要一个模型将不同的货币金额转换成通用格式。你可以详细描述你的需求,也可以只给出一个简要说明和一些示例演示。上图展示了这样一个示例任务。

    根据这一提示,模型应该能很好地完成最后一个例子,即 “牛排:24.99 美元”,并回答 $24.99。

    我们这里的例子省略了一些过程,但别忘了,LLM只是一个文本补全器,它可能会生成不符合预期的内容,因此我们需要通过保持一致的结构和明确的指令设计,来“引导”模型生成我们想要的结果。

    总结一下,如果LLM在处理零样本问题时遇到困难,最好给他提供一些示例。这有助于帮助LLM理解问题,使其生成想要的答案。

5.3 链式思维 多步推理

链式思维为 LLM 提供了一种工作记忆,可以大大提高他们的工作效率,尤其是在完成更复杂的任务时。

    LLM 的另一项有趣能力也让人联想到人类智慧。如果任务比较复杂,需要多步推理才能解决,这种能力就特别有用。

    假设我问你:"梅西出生前一年的世界杯冠军是谁?” 你会怎么做?你可能会一步一步地解决这个问题,写下得出正确答案所需的中间解法。这也正是LLM可以做到的。

    研究发现,只需告诉 LLM “一步一步地思考”,就能大幅提高它在许多任务中的表现。

    为什么会这样?我们人类知道回答这个问题所需的一切。问题是,这种不寻常的综合知识可能不会直接存在于 LLM 的内部记忆中。然而,所有的单个事实可能都在,比如梅西的生日和各届世界杯的冠军。

    让大模型一步一步地思考,这样做,给LLM充分的时间来“自言自语”——可以称作“工作记忆”,并在给出最终答案之前解决更简单的子问题。

    这里的关键是要记住,待生成单词左边的所有内容都是模型可以依赖的上下文。因此,如上图所示,当模型说出 “Argentina”(阿根廷)时,梅西的生日和我们询问的世界杯年份已经在 LLM 的工作记忆中了,这样就更容易回答正确。(这里有点东西:如果我们不让它一步一步思考,那么它的Prompt=Question;而让它一步一步思考,则它的Prompt=Question+Context,Context是梅西的生日跟目标世界杯的年份,显然在这里Context对于LLM解题非常有用,它将一个大而复杂的问题转换成一个小而简单的问题,更容易得出正确答案。)

6.总结

    在结束之前,我想回答我在文章前面提出的一个问题。LLM 真的只是预测下一个单词吗?还是说不止如此还做了很多其他事情?一些研究人员认为是后者,他们认为,LLM 要想在任何语境下都能如此出色地预测下一个单词,必须在内部获得对世界的压缩理解。而不是像其他人所说的那样,该模型只是学会了记忆和复制训练过程中看到的模式,对语言、世界或其他任何事物都没有实际的理解。

    在这一点上,双方可能没有明确的对错之分;这可能只是看待同一件事的不同方式。显然,这些 LLM 被证明是非常有用的,它们表现出了令人印象深刻的知识和推理能力,甚至可能表现出了一些一般智能的闪光点。但这跟人类的智慧有多大程度的接近,还有待商榷,而语言建模能在多大程度上提高技术水平也还有待确定。

    我希望这篇文章能帮助你了解 LLM 以及当前围绕 LLM 的热潮,从而对人工智能的潜力和风险形成自己的看法。决定如何利用人工智能造福世界的不仅仅是人工智能研究人员和数据科学家,每个人都应该有发言权。所以我写了这样一篇不需要很多背景知识的文章。

    如果你读完了这篇文章,我想你已经基本了解了一些最先进的LLM(截至 2023 年秋季)是如何运作的,至少这一了解是在较高水平上。

    最后,我想谈谈我对人工智能和LLM现状的一些看法。

对AI最新发展的思考