大型语言模型(LLM)是一种AI 模型,在大量语言数据集合上训练,用于处理或生成可能的文本序列。大多数用于文本生成的 LLM 会接收提示,并一次生成一小段响应。
语言模型并没有一个官方规定的规模门槛,达到多大才会被称为“大型”。这个标签是相对的。它通常表示许多已学习的参数、广泛的训练数据、较高的计算需求,以及处理不止一种狭窄语言任务的能力的综合。
一个有用的心智模型
可以把生成式 LLM 想象成一个函数:它接收一个序列,并为可能的后续内容返回分数。
这个序列由token组成:它们是模型处理的文本单位,可能是完整单词、单词的一部分、标点符号或其他符号。模型并不是先起草一段隐藏的文字,再把它展示出来。它会为接下来可能出现的内容评分,选择一个 token,把该 token 添加到序列中,然后再次运行。
这个循环是关键:
flowchart LR
A[Prompt and prior output] --> B[LLM scores possible next tokens]
B --> C[One token is selected]
C --> D[Selected token is appended]
D --> B因此,模型自己生成的输出会成为下一次输入的一部分。早期的选择可能改变后续的每一个选择。
这个心智模型比把 LLM 称为数据库更准确。训练可能使模型复现它见过的材料,但普通的生成过程并不是搜索一组存储的句子,然后粘贴最相近的匹配结果。模型会将学到的数值关系应用于当前序列。
LLM 如何工作
LLM 有两个不同的阶段:训练和使用。
在预训练期间
文本会被拆分成 token。模型会处理由这些文本构造出的预测问题。因果语言模型根据较早的 token 预测下一个 token。其他语言模型则通过重建隐藏的 token,或将一个序列转换为另一个序列来学习。
每次预测都会产生一个误差信号。训练会反复调整模型的数值权重,使更好的预测变得更有可能。经过大量示例后,这些权重会捕捉拼写、语法、风格、事实、代码以及思想之间关系等可复用的模式。
Transformer 架构帮助模型在计算每个表示时,结合可用序列中相关的部分。它是 LLM 背后的主流架构,但并不属于一个永恒不变的定义:也可以使用其他架构来构建大型语言模型。
预训练会创建一个基础模型,但它不一定是一个有帮助的助手。额外训练可以使模型更擅长遵循指令、偏好某些类型的回答,或拒绝某些请求。这些步骤会改变模型的行为,但不会把它变成数据库,也不能保证其输出为真。
在生成期间
在推理时,训练好的权重是固定的。提示和提供的其他上下文会被转换为 token。模型会为每个可能的下一个 token 计算分数。然后,软件依据某种解码规则选择一个 token。
每次都选择得分最高的 token 是一种方式。在多个合理的 token 中进行采样是另一种方式。即使模型的权重没有变化,采样也可能让同一个提示产生不同的响应。
选择一个 token 后,它会被追加到序列中。模型会根据提示以及迄今为止生成的全部内容,计算一个新的概率分布。当模型选择停止 token、达到输出限制,或被周围的软件停止时,生成就会结束。
一个生成示例
假设当前文本是:
法国的首都是
为便于说明,假设模型为四个可能的下一个 token 分配了以下概率:
| Possible next token | Illustrative probability |
|---|---|
| Paris | 91% |
| Lyon | 3% |
| located | 2% |
| a | 1% |
未列出的可能性共享剩余概率。这些数字是为展示机制而虚构的,并不是从某个特定模型测得的结果。
如果系统选择了巴黎,序列就变成:
法国的首都是巴黎
现在,模型会评估这个更长的序列。合理的下一个 token 可能包括标点符号,或用于继续陈述的词语。选定一个之后,这个循环会重复。
从这个示例中可以得出三个有用的事实。
第一,模型不需要一个单独的“回答问题”程序。问题、翻译请求、代码示例和摘要指令,都可以表示为文本,而它们的后续内容暗示了相应的任务。
第二,高概率的后续内容并不等同于经过验证的事实。训练目标奖励的是对数据的预测拟合,而不是直接核对现实。虚假陈述也可能成为流畅的后续内容。
第三,输出取决于生成路径。如果选择了不太可能或错误的 token,后续 token 就会在这一选择的上下文中生成。模型可能会从一个错误前提出发继续生成连贯内容,而不是回头纠正它。
LLM 为什么能执行多种任务
规模大且多样的预训练会让模型接触许多反复出现的结构。这些结构包括问题后接答案、代码后接注释、主张后接证据,以及指令后接完成的工作。学习预测这些结构,会产生能够重复使用的表示。
提示还可以在模型使用时指定任务。你可以描述期望的结果或提供示例,模型会据此调整其后续内容。这通常称为上下文学习,因为任务信息是通过输入提供的,而不是通过新一轮权重更新安装到模型中的。
因此,“预测下一个 token”听起来可能比它产生的行为简单。目标很简单,但执行该目标的学习函数并不简单。普通的自动补全和 LLM 解决的是相关的预测问题,但它们在模型容量、上下文使用方式、训练广度以及能够应用的模式范围方面有很大差异。
LLM 为什么重要
同一个预训练模型可以通过改变输入来支持起草、提取、分类、翻译、摘要、问答和代码生成。这使语言成为软件的一种灵活接口。
同样的灵活性也带来了风险。LLM 的输出是生成出来的,而不是从权威来源中查找出来的。结果可能错误、有偏见、不一致,或对提示措辞敏感。正确的问题不只是 LLM 是否“知道”某个主题。可靠性取决于任务、训练数据和所提供的上下文、解码方法,以及周围系统执行的任何检查。
LLM 也只是 AI 产品中的一个层。它不会自动拥有用户账户、持久记忆、网络访问权限、私有文档或执行操作的权限。这些能力来自模型周围的软件。
常见误解
“LLM 就是聊天机器人”
LLM 是处理或生成语言的模型。AI 聊天机器人是一种产品,可能将 LLM 与对话界面、指令、检索、审核、记忆及其他软件结合起来。同一个 LLM 也可以在没有聊天界面的情况下使用。
“模型会查找答案”
模型通常会根据自身权重和当前上下文计算后续内容。产品可以另外搜索网络或检索文档,并将结果放入提示中,但那是周围AI 调度系统的能力,并不能证明 LLM 自己执行了查找。
“流畅的语言证明模型理解了”
研究人员并未就理解能力的单一测试达成共识。LLM 可以展现有用的语言能力,并形成支持复杂任务的内部表示。但这本身并不能证明它具有人类般的意义、体验、意图或对现实世界的依托。与其把“理解”作为一种适用于所有情况的解释,不如清楚地描述所测量的行为。
“它只是在自动补全,所以不可能做出新东西”
LLM 是自回归预测器,但“只是在”掩盖了重要部分:模型学到了什么,以及它能够依据多少上下文进行预测。它可以用训练数据中并未以完整段落形式出现的方式组合模式。新颖的输出仍然不能证明其中每个主张都是正确的。
“大型”有一个精确的界限
没有任何权威定义规定参数数量、训练 token 数量或计算量的最低标准。小型语言模型与 LLM 之间的界限会随着使用方式和技术发展而变化。规模声明只有在说明所比较的具体数量时才有意义。
LLM 如何融入更大的系统
一个基本的技术栈如下:
- LLM 将上下文映射为可能的语言后续内容。
- 调度系统准备上下文、调用模型,并可能将模型连接到数据或工具。
- 聊天机器人以对话形式呈现这个系统。
- 一个AI 智能体增加了一个循环,使其能够选择操作、检查结果,并继续朝目标推进。
将这些层分开,有助于更容易地评估产品声明。“助手搜索了网络”描述的是整个系统;“LLM 生成了搜索查询并解读了返回的文本”则更准确地描述了模型所扮演的角色。
接下来阅读什么
阅读什么是 AI 中的 Token?,了解 LLM 处理的单位。然后阅读什么是上下文窗口?,了解一次生成期间可用信息的限制;阅读什么是 AI 中的训练?,了解模型权重是如何学习的;以及阅读什么是 AI 中的推理?,了解训练好的模型被使用时会发生什么。