本文由微软数据科学家 Andreas Stöffelbauer 撰写,旨在以直观的方式解释大型语言模型(Large Language Models, LLMs)的工作原理,从基础的机器学习概念到 ChatGPT 的核心机制,帮助读者理解 LLMs 的训练过程、能力以及应用场景。作者通过分层讲解人工智能、机器学习、深度学习和 LLMs 的发展路径,揭示了这些模型如何从大规模数据中学习语言规律,并通过生成式方法实现自然语言处理任务。文章还探讨了 LLMs 的局限性(如“幻觉”现象)及其在未来改进的潜力。
关键细节
1. 人工智能的层次结构
- 人工智能 (AI):涵盖所有智能机器的研究。
- 机器学习 (ML):AI 的子领域,专注于从数据中发现模式。
- 深度学习 (DL):机器学习的分支,处理非结构化数据(如文本、图像),依赖人工神经网络。
- 大型语言模型 (LLMs):深度学习的应用,专注于文本数据处理。
2. 机器学习基础
- 核心目标:发现输入与输出之间的模式关系。
- 分类任务:如音乐流派分类,基于输入特征(如节奏和能量)预测输出类别。
- 复杂性提升:输入变量数量、类别数量的增加使模型复杂度上升,需要更强大的模型和更多数据。
3. 深度学习与神经网络
- 神经网络:模仿人脑结构,由多层神经元组成,能够建模高度非线性关系。
- 深度学习:通过多层神经网络处理复杂任务,如图像分类和情感分析。
- 规模化的突破:现代 LLMs(如 GPT-4)拥有数十亿到上万亿参数,能够处理极其复杂的输入输出关系。
4. 大型语言模型的核心机制
- 语言建模:通过预测下一词,学习语言的语法、语义和上下文关系。
- 训练数据:基于大量文本数据进行自监督学习,无需人工标注。
- 生成式 AI:通过逐词生成文本,实现自然语言生成。
5. ChatGPT 的三阶段训练
- 预训练:使用大规模文本数据训练模型预测下一词,掌握语言规则和世界知识。
- 指令微调:通过高质量的指令-响应对,训练模型理解并响应用户指令。
- 人类反馈强化学习 (RLHF):优化模型输出,使其更符合人类价值和偏好。
6. LLMs 的应用与能力
- 文本生成:通过逐词预测生成连贯的文本。
- 任务解决:
- 零样本学习 (Zero-shot):无需示例即可完成新任务。
- Few-shot 学习:通过提供少量示例提升任务表现。
- 链式思维 (Chain-of-thought):逐步推理解决复杂问题。
- 幻觉问题:LLMs 有时会生成错误信息,因其训练目标并非事实准确性。
7. LLMs 的未来与局限
- 潜在问题:幻觉现象、知识更新滞后、对真伪信息的区分能力不足。
- 改进方向:通过上下文补充、搜索引擎集成(如 Bing Chat)等方法增强模型的准确性和实时性。
- 发展潜力:LLMs 展现了超越训练数据的新兴能力(如零样本任务),未来可能进一步接近通用人工智能。
8. 总结与作者观点
- 核心争议:LLMs 是否真正“理解”语言,还是仅仅依靠统计模式生成文本。
- 作者立场:无论是否具备真正的理解能力,LLMs 已在知识处理和推理能力上表现出接近人类智能的潜力。
- 公众参与:AI 的发展不应仅由研究人员决定,每个人都应关注其潜力和风险。
原文
从零到ChatGPT得益于大型语言模型 (Large Language Models, LLM),人工智能如今已吸引了几乎所有人的目光。ChatGPT 作为其中最著名的 LLM,因其自然语言交互的便捷性,使得人工智能领域的最新突破得以被大众所用,从而迅速走红。然而,除非是数据科学家或其他人工智能从业者,否则人们对 LLM 的工作原理还不太了解。在本文中,我将尝试解释清楚这一点。当然,这是一个颇具挑战的目标。毕竟,我们今天所见识的强大 LLM 是人工智能领域数十年研究的结晶。遗憾的是,目前关于 LLM 的文章要么过于技术化,预设读者已具备大量相关知识;要么过于浅显,读后并不能获得更多新知。
本文力求在这两者之间找到平衡。更准确地说,本文旨在带你从零开始,逐步了解 LLM 的训练过程,以及它们为何能表现得如此出色。我们将从最基础的概念讲起,逐步深入探讨。
本文不会深入探讨所有细枝末节,而是侧重于利用直观理解而非数学公式,并尽可能多地使用视觉化手段进行讲解。你会发现,尽管 LLM 在细节上非常复杂,但其背后的核心机制却非常直观,而这足以帮助我们理解其工作原理。
此外,本文还能帮助你更好地使用像 ChatGPT 这样的 LLM。事实上,我们还会介绍一些实用技巧,以提高获得高质量回复的可能性。正如著名人工智能研究员和工程师 Andrei Karparthy 最近一针见血地指出:“英语是当下最热门的编程语言。”
不过,首先,我们不妨先了解一下 LLM 在整个人工智能领域中所处的位置。
通常,人工智能 (Artificial Intelligence, AI) 领域可以被划分为以下几个层次:人工智能 (AI) 是一个非常宽泛的概念,通常指的是智能机器。
机器学习 (Machine Learning, ML) 是 AI 的一个子领域,专注于从数据中识别模式。不难想象,一旦识别出某种模式,便可将其应用于新的观察结果。这便是 ML 的核心思想,我们稍后会详细讨论。
深度学习 (Deep Learning) 是 ML 的一个分支,专注于处理非结构化数据,例如文本和图像。它依赖于人工神经网络,这是一种(粗略地)模仿人脑结构的方法。
大型语言模型 (LLM) 专注于处理文本数据,这也是本文的重点。
接下来,我们将逐层介绍这些相关概念。我们将跳过最外层的 AI 领域 (因为它过于宽泛),直接进入机器学习。
机器学习 (ML) 的目标是发现数据中的模式,更准确地说,是找到描述输入与输出之间关系的模式。通过一个例子来解释最为直观。假设我们想区分我最喜欢的两种音乐类型:雷鬼 (reggaeton) 和 R&B (Rhythm and Blues)。如果你对这两种音乐类型不太熟悉,这里简单介绍一下,以便你理解我们要做的事情。雷鬼是一种拉丁城市音乐,以其充满活力的节拍和节奏而闻名;而 R&B 则起源于非裔美国人的音乐传统,以其充满灵魂的演唱和快慢节奏的结合为特色。
假设我们有 20 首歌曲,并且已知每首歌曲的节奏和能量——这两个指标都可以很容易地测量或计算出来。此外,我们还为每首歌曲标注了类型:雷鬼或 R&B。当我们可视化这些数据时,可以看到高能量、高节奏的歌曲大多是雷鬼,而低节奏、低能量的歌曲则大多是 R&B,这符合我们的预期。然而,我们不想每次都手动标注歌曲类型,因为这既耗时又难以扩展。相反,我们可以学习歌曲的各项指标(节奏和能量)与歌曲类型之间的关系,然后仅使用这些已知的指标进行预测。
用机器学习 (ML) 的术语来说,这是一个分类问题,因为输出变量(歌曲类型)只能取一组固定的类别/标签之一——这里是雷鬼和 R&B。这与回归问题形成对比,在回归问题中,输出是一个连续的值(例如温度或距离)。
现在,我们可以使用已标注的数据集(即,已知歌曲类型的歌曲集合)来“训练”一个机器学习 (ML) 模型(或称为“分类器”)。从视觉上看,模型训练的目的就是找到一条能够尽可能好地分隔这两个类别的直线。
这有什么用呢?一旦我们找到了这条直线,对于任何新歌曲,我们都可以根据它位于直线的哪一侧来预测其类型——雷鬼或 R&B。我们只需要知道歌曲的节奏和能量,而我们假设这些信息更容易获得。这比让人类手动为每首歌曲标注类型要简单且更具可扩展性。
此外,不难想象,距离直线越远,我们对预测结果的把握就越大。因此,我们通常还可以根据与直线的距离来评估预测结果的置信度。例如,对于一首新的低能量、低节奏的歌曲,我们可能 98% 确信它是一首 R&B 歌曲,而它实际上是雷鬼的可能性只有 2%。
当然,现实情况往往更加复杂。用于分隔类别的最佳边界可能不是一条直线。换句话说,输入和输出之间的关系可能更加复杂。它可能像上图那样呈现曲线,甚至比这复杂得多。
现实情况通常在另一方面也更加复杂。例如,我们通常会遇到数十、数百甚至数千个输入变量,而不是像本例中只有两个输入变量。此外,我们还常常需要处理两个以上的类别。所有类别都可能通过极其复杂的非线性关系依赖于所有这些输入。
即使在我们这个简单的示例中,我们都知道现实中音乐类型不止两种,而且我们需要除节奏和能量之外的更多指标。它们之间的关系也可能没有那么简单。
我希望你记住的关键一点是:输入和输出之间的关系越复杂,我们需要用于学习这种关系的机器学习 (ML) 模型就越复杂和强大。一般来说,复杂性会随着输入数量和类别数量的增加而增加。
此外,我们还需要更多的数据。你很快就会明白为什么这很重要。
现在,让我们来看一个稍微不同的问题,但我们仍然使用之前的思路。在新问题中,我们以图像作为输入,例如这张袋子里可爱小猫的图片(因为猫咪的例子总是最棒的)。至于输出,假设这次我们有三个可能的标签:老虎、猫和狐狸。如果你需要一些动力来完成这项任务,不妨假设我们需要保护一群羊,并且在看到老虎时发出警报,但如果看到猫或狐狸则不发出警报。
我们知道这仍然是一个分类任务,因为输出只能取几个固定的类别之一。因此,就像之前一样,我们可以使用已标注的数据(即带有类别标签的图像)来训练一个机器学习 (ML) 模型。
然而,我们并不清楚应该如何处理视觉输入,因为计算机只能处理数值输入。当然,我们之前的歌曲指标——能量和节奏都是数值。幸运的是,图像也可以作为数值输入,因为它们由像素组成,而每个像素都具有高度、宽度以及红、绿、蓝三个颜色通道。因此,理论上,我们可以直接将像素输入到 ML 模型中(暂时忽略这里存在我们之前没有处理过的空间信息)。
但是,现在我们面临两个难题。首先,即使是一个小的、低分辨率的 224x224 图像也包含超过 15 万个像素 (224x224x3)。请记住,我们之前讨论的最多只有数百个输入变量(很少超过一千个),而现在我们突然有了至少 15 万个输入变量。
其次,如果你考虑原始像素与类别标签之间的关系,你会发现它非常复杂——至少从 ML 的角度来看是这样。人类的大脑具有惊人的能力,通常可以轻易区分老虎、狐狸和猫。但是,如果你逐个查看 15 万个像素,你将完全不知道图像的内容。但这正是 ML 模型“看到”图像的方式,因此它需要从头开始学习原始像素与图像标签之间的映射或关系,而这并非易事。
让我们再考虑另一种非常复杂的输入输出关系——一个句子及其情感之间的关系。情感通常指的是句子所传达的情绪,即正面或负面。再次明确问题的设定:我们的输入是一个单词序列,即一个句子,而情感是我们的输出变量。与之前一样,这是一个分类任务,这次有两个可能的标签,即正面或负面。
与前面讨论的图像示例类似,我们人类自然而然地理解这种关系,但是我们能否教会 ML 模型也这样做呢?
在回答这个问题之前,我们首先需要解决如何将单词转换为 ML 模型可用的数值输入的问题。事实上,这个问题比图像处理更复杂,因为图像本质上已经是数值化的。单词的情况并非如此。在这里,我们不会深入探讨细节,但你需要知道的是,每个单词都可以转换为一个词嵌入。
简而言之,词嵌入表示单词的语义和句法含义,通常是在特定的上下文中。这些词嵌入可以通过训练 ML 模型获得,也可以通过单独的训练过程获得。一般来说,词嵌入包含数十到数千个变量,每个单词都有自己的词嵌入。
总而言之,你需要记住的是,我们可以将一个句子转换为一系列数值输入,即词嵌入,其中包含语义和句法信息。然后,可以将这些词嵌入输入到 ML 模型中。(如果你足够细心,你可能会注意到这里存在一个新的顺序维度,这与我们之前的示例有所不同,但我们在这里也会忽略它。)
很好,但现在我们面临着与视觉输入相同的挑战。你可以想象,对于长句子(或段落,甚至是整篇文档),由于词嵌入的巨大维度,输入的数量会迅速增加。
第二个问题是语言与其情感之间的关系,这种关系非常复杂。想想“那真是一次精彩的跌倒”这样的句子,它有各种各样的解释方式(更不用说讽刺的意味了)。
我们需要的是一个极其强大的 ML 模型和大量的数据。这正是深度学习的用武之地。
在了解了 ML 的基础知识以及使用更强大模型的原因之后,我们已经朝着理解 LLM 迈出了重要一步。现在,我们将通过引入深度学习再迈出一步。我们之前讨论过,如果输入和输出之间的关系非常复杂,并且输入或输出变量的数量巨大(对于之前的图像和语言示例来说都是如此),我们就需要更灵活、更强大的模型。线性模型或任何接近线性模型的模型都无法解决视觉或情感分类等任务。
此时,就需要用到神经网络。
神经网络是一种强大的 ML 模型,可以对任意复杂的关系进行建模。它们是实现大规模学习复杂关系的核心引擎。事实上,神经网络在一定程度上受到了大脑的启发,尽管实际的相似性还有争议。它们的基本架构相对简单。它们由一系列相互连接的“神经元”层组成,输入信号依次通过这些层,最终预测出输出变量。你可以将它们视为多个线性回归层堆叠在一起,并在中间加入非线性变换。这使得神经网络可以对高度非线性关系进行建模。
神经网络通常具有很多层(因此称为深度学习),这意味着它们的规模可能非常庞大。例如,ChatGPT 基于一个包含 1760 亿个神经元的神经网络,这甚至超过了人脑中大约 1000 亿个神经元的数量。
因此,从现在开始,我们将假设神经网络是我们的 ML 模型,并考虑到我们已经了解了如何处理图像和文本。
现在,我们终于可以开始讨论大型语言模型 (LLM) 了,这才是真正精彩的部分。如果你已经读到这里,那么你应该已经掌握了理解 LLM 所需的所有知识。什么是好的开始方式?或许可以先解释一下“大型语言模型”的实际含义。“大型”是指神经网络中的神经元数量,也称为参数数量。对于什么构成 LLM 并没有明确的界定,但一般来说,你可以将拥有超过 10 亿个神经元的模型视为大型模型。
在此基础上,“语言模型”又是什么呢?接下来我们将讨论这个问题,并且稍后还会了解 ChatGPT 中的 “GPT” 代表什么。不过,我们先一步一步来。
让我们把下面的想法看作一个机器学习 (ML) 问题:在给定的单词序列(即句子或段落)中,下一个单词是什么?换句话说,我们只是想学习如何在任何时候预测下一个单词。从本文前面的内容中,我们已经了解了将此构建为 ML 问题所需的一切。事实上,这个任务与我们之前看到的情感分类非常相似。与该示例一样,神经网络的输入是一个单词序列,但现在,输出只是下一个单词。这仍然是一个分类任务,唯一的区别在于,我们不再只有两个或几个类别,而是有和词汇量一样多的类别——假设大约有 5 万个词汇。这就是语言建模的意义所在,即学习预测下一个单词。
好吧,正如你可以想象的那样,这比二元情感分类要复杂得多。但是,由于我们现在已经了解了神经网络及其强大的能力,所以对这种复杂性的唯一回应是“为什么不呢?”
快速声明:当然,我们在这里简化了很多内容(本文通篇如此)。实际情况要复杂一些,但这不应妨碍我们理解核心机制,这也是我们简化并省略一些细节的原因。
我们已经明确了任务,现在需要数据来训练神经网络。实际上,为我们的“下一个单词预测”任务创建大量数据并不困难。互联网、书籍、研究论文等都提供了大量的文本。我们可以轻松地利用所有这些文本创建一个巨大的数据集。我们甚至不需要标注数据,因为下一个单词本身就是标签,这就是为什么这也称为自监督学习 (self-supervised learning)。上图显示了如何进行训练数据准备。只需一个序列就可以转化为多个训练序列。我们有很多这样的序列。重要的是,我们对许多短序列和长序列(有些长达数千个单词)执行此操作,以便在每种上下文中学习下一个单词应该是什么。
总而言之,我们在这里所做的就是训练一个神经网络 (LLM),使其能够预测给定单词序列中的下一个单词,无论该序列是长还是短,是德语还是英语,还是任何其他语言,无论是推文还是数学公式,诗歌还是代码片段。所有这些我们都能在训练数据中找到。
如果我们拥有足够大的神经网络和足够的数据,LLM 将非常擅长预测下一个单词。它会是完美的吗?当然不会,因为通常有多个单词可以跟在一个序列之后。但它会擅长选择一个在句法和语义上都合适的单词。
既然我们可以预测一个单词,我们就可以将扩展的序列反馈到 LLM 中,并预测另一个单词,依此类推。换句话说,使用我们训练好的 LLM,我们现在可以生成文本,而不仅仅是一个单词。这就是为什么 LLM 是我们所说的生成式人工智能的一个例子。我们可以说,我们刚刚教会了 LLM 一次说一个词。我认为,理解这一点还有一个重要的细节。我们不一定总是要预测最可能的单词。我们可以从例如,给定时间最可能的五个单词中进行采样。这样一来,我们就可以从 LLM 中获得更多的创造性。一些 LLM 实际上允许你选择输出的确定性或创造性程度。这也是为什么在 ChatGPT(它使用这种采样策略)中,你通常在重新生成响应时不会得到相同的答案的原因。
说到 ChatGPT,你可能会问自己,为什么它不叫 ChatLLM。事实证明,语言建模并不是故事的全部——事实上,这仅仅是开始。那么,ChatGPT 中的 GPT 又是什么意思呢?
实际上,我们刚刚了解了 “G” 代表什么,即“生成式”——表示它是基于我们讨论的语言生成任务进行训练的。但是, “P” 和 “T” 又是什么意思呢?这里我们先简单介绍一下 “T”, 它代表 “Transformer” —— 不是电影中的那个(抱歉),而只是所使用的神经网络架构的类型。这不应困扰我们,但如果你好奇,并且只想了解它的主要优点,那就是 Transformer 架构可以很好地工作,因为它能够将注意力集中在任何时刻都最相关的输入序列部分。你可以说这与人类的工作方式类似。我们也需要将注意力集中在与任务最相关的事情上,并忽略其余部分。
现在来看 “P”,它代表 “预训练”。接下来,我们将讨论为什么我们突然开始讨论预训练,而不是简单的训练。
原因是,像 ChatGPT 这样的大型语言模型实际上是分阶段训练的。
预训练 第一阶段是预训练,这正是我们刚才讨论的内容。此阶段需要使用大量数据来学习预测下一个单词。在这个阶段,模型不仅要学习掌握语言的语法和句法,还要获得大量关于世界的知识,甚至是一些我们稍后会讨论的新兴能力。现在,我有一些问题要问你:首先,这种预训练可能会出现什么问题?当然,会有一些问题,但我在这里想指出的是 LLM 真正学到了什么。
也就是说,它主要学会了针对某个主题进行漫谈。它甚至可能做得非常出色,但它没有做的是对你通常希望给人工智能的输入(例如问题或指令)做出很好的响应。问题在于,此模型尚未学习如何成为助手,因此其行为不像助手。
例如,如果你问一个经过预训练的 LLM “你叫什么名字?”,它可能会回答 “你姓什么?” 这仅仅是因为这是它在预训练期间所看到的数据类型,例如在许多空白表格中。它只是试图补全输入序列。
它在遵循指令方面做得不好,这仅仅是因为这种语言结构(即指令后跟响应)在训练数据中并不常见。也许 Quora 或 StackOverflow 是这种结构的最接近的代表。
在这个阶段,我们说 LLM 与人类的意图不一致。对齐是 LLM 的一个重要议题,我们将学习如何在很大程度上解决这个问题,因为事实证明,这些预训练的 LLM 实际上是可控的。因此,即使它们最初对指令的响应不佳,也可以教导它们这样做。
指令微调和 RLHF 这就是指令微调的用武之地。我们采用具有当前能力的预训练 LLM,并基本上执行我们之前所做的操作,即学习一次预测一个单词,但现在我们只使用高质量的指令和响应对作为训练数据。
这样,模型就会放弃简单地作为文本补全器,而学会成为一个有用的助手,遵循指令并以符合用户意图的方式做出响应。此指令数据集的大小通常比预训练集小得多。这是因为高质量的指令-响应对的创建成本要高得多,它们通常来源于人类。这与我们在预训练中使用的廉价自监督标签大不相同。这就是为什么这个阶段也称为监督指令微调。
还有一些 LLM (如 ChatGPT) 会经历第三个阶段,即基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF)。我们在这里不会详细介绍,但目的与指令微调类似。RLHF 也有助于对齐,并确保 LLM 的输出反映人类的价值观和偏好。一些早期的研究表明,这个阶段对于达到或超过人类水平的表现至关重要。事实上,将强化学习和语言建模领域相结合已被证明尤其有前景,并可能导致我们目前所拥有的 LLM 得到巨大改进。
现在,让我们用一些常见的用例来测试我们的理解。
首先,为什么 LLM 可以执行长文本的摘要?(如果你还不知道,它的摘要能力非常出色。只需粘贴一篇文档,然后要求它进行总结即可。)要理解原因,我们需要考虑训练数据。碰巧的是,人们经常会做摘要,在互联网上、研究论文、书籍等等中都有摘要。因此,在这些数据上训练的 LLM 也学会了如何做到这一点。它学会了关注要点,并将其压缩成短文本。
请注意,在生成摘要时,全文是 LLM 输入序列的一部分。这类似于,例如,一篇研究论文,其中包含结论,而全文紧随其后。
因此,这项技能可能已经在预训练期间学到,尽管指令微调肯定有助于进一步提高这项技能。我们可以假设此阶段也包括一些摘要示例。
其次,为什么 LLM 可以回答常识性问题?
如前所述,充当助手并做出适当响应的能力归功于指令微调和 RLHF。但是,回答问题本身的所有(或大部分)知识已经在预训练期间获得。
当然,这现在又引出了一个大问题:如果 LLM 不知道答案怎么办?不幸的是,在这种情况下,它可能会编造一个答案。要理解原因,我们需要再次考虑训练数据和训练目标。
你可能听说过 LLM 中的 “幻觉” 这个词,它指的是 LLM 在不应编造事实时编造事实的现象。为什么会这样呢?好吧,LLM 只是学习生成文本,而不是生成事实正确的文本。其训练中没有任何内容可以指示任何训练数据的真实性或可靠性。然而,这甚至不是这里的主要问题,而是互联网和书籍上的文本通常听起来很自信,因此 LLM 当然也会学习听起来像那样,即使它是错误的。通过这种方式,LLM 几乎没有不确定性的概念。
话虽如此,这是一个活跃的研究领域,我们可以期望 LLM 随着时间的推移会越来越不容易出现幻觉。例如,在指令微调期间,我们可以尝试教导 LLM 在一定程度上避免出现幻觉,但只有时间才能证明我们是否可以完全解决这个问题。
你可能会感到惊讶,我们实际上可以一起尝试解决这个问题。我们拥有找出至少部分有效的解决方案所需的知识,并且该解决方案已被广泛使用。
假设你向 LLM 提出以下问题:哥伦比亚现任总统是谁?LLM 很可能会回答错误的名字。这可能是由于两个原因:第一个原因是我们已经提出的:LLM 可能只是出现幻觉,并且以错误甚至虚假的名字做出响应。
我只会顺便提及第二个原因:LLM 仅在截止日期之前的数据上进行训练,该截止日期可能早在去年。因此,LLM 甚至无法确定地知道现任总统,因为自创建数据以来情况可能已经发生了变化。
那么,我们如何解决这两个问题呢?答案在于向模型提供一些相关的上下文。这里的基本原理是,LLM 输入序列中的所有内容都可供其处理,而它在预训练中获得的任何隐式知识都更难且更不稳定地检索。
假设我们将关于哥伦比亚政治历史的维基百科文章作为 LLM 的背景信息。在这种情况下,它更有可能正确回答,因为它只需从上下文中提取名称(假设它是最新的并且包含现任总统)。
在上图中,你可以看到带有附加上下文的 LLM 的典型提示示例。(顺便说一句,“提示” 只是我们给 LLM 的指令的另一个名称,也就是说,指令构成了输入序列。)
此过程称为将 LLM 置于上下文中,或者如果你愿意,将其置于现实世界中,而不是允许它自由生成。
这正是 Bing Chat 和其他基于搜索的 LLM 的工作方式。它们首先使用搜索引擎从网络中提取相关上下文,然后将所有这些信息与用户的初始问题一起传递给 LLM。请参见上图,了解如何实现此目标的示例。
我们现在已经到了你几乎了解最先进的 LLM(截至 2023 年下半年)的主要机制的地步。
你可能会认为“这实际上并没有那么神奇”,因为所有发生的事情都是一次预测一个单词。毕竟,这纯粹是统计学。是这样吗?
让我们稍微退后一步。这一切的神奇之处在于它工作得如此出色。事实上,每个人,甚至 OpenAI 的研究人员,都对这种语言建模能取得如此大的成就感到惊讶。过去几年,关键的驱动因素之一仅仅是神经网络和数据集的大规模扩展,这导致性能随之提高。例如,据报道,GPT-4 是一个总共拥有超过 1 万亿个参数的模型,其在律师资格考试或 AP 生物学中的得分可以达到前 10% 的考生。
令人惊讶的是,这些大型 LLM 甚至展现出某些新兴能力,即解决任务和完成它们未接受明确训练的任务的能力。
在本文的最后一部分,我们将讨论其中一些新兴能力,并且我将向你展示一些可以用来解决问题的技巧。
一种普遍存在的新兴能力是,正如名称本身所暗示的那样,LLM 可以执行它们在训练过程中未曾遇到过的全新任务,这被称为零样本 (zero-shot) 能力。而这仅仅需要一些关于如何解决任务的指令。
为了用一个简单的例子来说明这种能力,你可以要求 LLM 将一个句子从德语翻译成英语,但要求只使用以 “f” 开头的单词来响应。
例如,当被要求只使用以 “f” 开头的单词来翻译一个句子时,LLM 将 “Die Katze schläft gerne in der Box”(德语,字面意思是 “猫喜欢睡在盒子里”)翻译为 “Feline friend finds fluffy fortress”,我认为这是一个非常酷的翻译。
对于更复杂的任务,你可能会很快意识到,零样本提示通常需要非常详细的指令,即使这样,性能通常也远非完美。
为了与人类智能进行类比,如果有人让你执行一项新任务,你可能会要求提供一些关于如何执行该任务的示例或演示。LLM 也可以从中受益。
例如,假设你希望模型将不同的货币金额转换为通用格式。你可以详细描述你想要的内容,也可以只给出一个简短的指令和一些示例演示。上图显示了一个示例任务。
使用此提示,模型应该可以很好地处理最后一个示例(即 “Steak: 24.99 USD”),并做出响应 “$24.99”。
请注意,我们只是忽略了最后一个示例的答案。请记住,LLM 本质上仍然是一个文本补全器,因此请保持结构一致。你应该几乎强制模型只给出你想要的回应,就像我们在上面的示例中所做的那样。
总而言之,如果 LLM 在零样本方式下难以完成任务,一个通用的技巧是提供一些示例。你会发现这通常有助于 LLM 理解任务,从而使性能更好、更可靠。
LLM 的另一个有趣能力也让人联想到人类智能。当任务更复杂并且需要多个推理步骤才能解决时,此能力特别有用。
假设我问你:“在莱昂内尔·梅西出生前一年,谁赢得了世界杯?”你会怎么做?你可能会逐步解决这个问题,并记下任何需要的中间步骤,以便得出正确的答案。这正是 LLM 也可以做的事情。
人们发现,仅仅告诉 LLM “逐步思考” 就可以在许多任务中显著提高其性能。
为什么会这样呢?我们已经知道了回答这个问题所需的一切。问题在于,这种不常见的综合知识可能不会直接存在于 LLM 的内部记忆中。但是,所有单独的事实可能都存在,例如梅西的生日和各个世界杯的冠军。
让 LLM 逐步推导出最终答案是有帮助的,因为它让模型有时间 “大声思考”——可以这么说,是一种工作记忆——并在给出最终答案之前解决更简单的子问题。
这里的关键是记住,在要生成的单词左侧的所有内容都是模型可以依赖的上下文。因此,如上图所示,当模型说 “阿根廷” 时,梅西的生日和我们询问的世界杯年份都已经存在于 LLM 的工作记忆中,这使其更容易正确回答问题。
结论
在结束之前,我想回答我在本文前面提出的一个问题。LLM 真的只是预测下一个单词,还是还有更多?一些研究人员认为后者是正确的,他们认为,为了在任何上下文中都能如此出色地预测下一个单词,LLM 实际上一定在内部获得了对世界的压缩理解。其他人则认为,模型只是学会记忆和复制在训练期间看到的模式,而没有真正理解语言、世界或任何其他事物。
目前,这两种观点可能没有明确的对错之分,这可能只是看待同一问题的不同方式。显然,这些 LLM 被证明非常有用,并且展现出令人印象深刻的知识和推理能力,甚至可能显示出一些通用智能的火花。但是,这在多大程度上类似于人类智能以及语言建模在多大程度上可以进一步改进当前技术,仍有待确定。
我希望本文能够帮助你理解 LLM 以及围绕它们的热潮,以便你可以形成自己对人工智能的潜力和风险的看法。决定如何利用人工智能造福世界,不仅仅是人工智能研究人员和数据科学家的责任,每个人都应该能够发表自己的意见。这就是我想要撰写一篇不需要大量背景知识的文章的原因。
如果你读完了本文,我认为你已经基本了解了(截至 2023 年秋季)一些最先进的 LLM 的工作原理,至少在较高的层面上是这样。
最后,我想分享一些我对目前人工智能和 LLM 发展状况的看法。
感谢你的阅读。如果你有任何问题,请随时在 LinkedIn 上与我联系。同时,感谢 Casey Doyle 的编辑和建议。