字体大小
第五编 注意力机制与大语言模型的形成 · 05_第五编_注意力机制与大语言模型的形成/第21章_大语言模型的能力形成/chapter.md

第21章 大语言模型的能力形成

本章核心问题

为什么“预测下一个词”这样看似简单的训练目标,在模型规模、数据规模与计算规模持续扩展之后,会逐渐表现出问答、总结、代码生成、推理辅助与知识组织等复杂能力?

1. 问题背景

在上一章中,我们已经讨论了预训练语言模型的建立过程。那一章的关键结论是:只要把语言建模问题写成自监督预测目标,并把 Transformer 结构、海量语料与大规模优化结合起来,模型就能够在没有人工任务标签的条件下学到可迁移的语言表示。这一步已经完成了从“任务式训练”到“预训练范式”的跃迁。

但是,预训练语言模型的建立,还不能完全解释后来的一个更强现象:当模型参数数量继续扩大、训练语料继续增长、训练计算继续增强后,模型表现出来的能力似乎不再只是“原有能力的平滑增强”,而是开始呈现出某种质变。它不仅更会补全文本,而且能够进行多轮对话、完成零样本任务、在上下文中临时学会新格式、写代码、解释概念,甚至在某些场景下表现出初步的推理与规划迹象。

这就带来了一个新的核心问题:这些能力究竟从何而来?如果训练目标仍然只是“给定前缀预测下一个词元”,为什么模型最终表现出来的却远远不只是机械补词?为什么一个概率生成模型会逐渐成为通用语言接口,甚至成为很多智能系统的基础底座?

这个问题之所以重要,是因为它关系到我们如何理解大语言模型的本质。如果我们把它仅仅看成“更大的文本生成器”,那么很多现象就无法解释;但如果我们直接把它看成已经拥有一般智能的系统,又会忽略它仍然建立在概率建模与统计学习基础上的事实。因此,第21章的任务不是神秘化大语言模型,而是要在数学上说明:复杂能力并不是凭空出现的,而是由表示学习、条件概率建模、上下文压缩、分布拟合和规模扩展共同推动形成的。

从历史位置上看,这一章对应的是从“预训练语言模型”走向“真正意义上的大语言模型”的阶段。第20章解决的是“为什么可以在无人工标签条件下学习语言分布”;而本章要进一步回答“为什么这种学习在足够大规模下会长出更一般的能力”。这一步是整个第五编的中心转折,也是后续第22章关于指令微调与对齐学习的直接前提。

2. 数学原理

2.1 next-token prediction 作为统一训练目标

大语言模型最核心的训练目标,仍然是自回归语言建模。设一个词元序列记为

$$ x=(x_1,x_2,\dots,x_T), $$

其中 $T$ 表示序列长度,$x_t$ 表示第 $t$ 个位置上的词元。模型用参数 $\theta$ 定义条件概率分布 $P_\theta(x_t\mid x_{<t})$,其中 $x_{<t}$ 表示位置 $t$ 之前的前缀序列 $(x_1,\dots,x_{t-1})$。

于是,整个序列的概率分解为

$$ P_\theta(x)=\prod_{t=1}^{T} P_\theta(x_t\mid x_{<t}). $$

这条公式和上一章一样,是大语言模型训练的出发点。表面上看,它只是在做一个局部预测任务,也就是“根据前面的词预测下一个词”。但真正重要的是,语言中的语法关系、语义连贯性、事实知识、篇章组织和任务格式,都会影响“下一个词应该是什么”。因此,要把这个目标做好,模型就不能只记住局部词频,而必须在内部逐步学会更大范围的结构规律。

对训练集

$$ \mathcal D_n=\{x^{(1)},x^{(2)},\dots,x^{(n)}\} $$

而言,自回归训练通常最小化负对数似然损失

$$ \mathcal L(\theta)=-\sum_{i=1}^{n}\sum_{t=1}^{T_i}\log P_\theta\big(x_t^{(i)}\mid x_{<t}^{(i)}\big). $$

这里,$n$ 表示训练样本个数,$T_i$ 表示第 $i$ 个样本的长度,$x_t^{(i)}$ 表示第 $i$ 个样本在位置 $t$ 上的词元,$\log$ 表示自然对数。这个目标函数看起来并不复杂,但它所迫使模型学习的内容却非常丰富,因为任何会影响词元条件分布的信息,都可能被模型吸收进内部表示中。

2.2 tokenization 与离散符号建模

要理解大语言模型的能力形成,还必须先理解词元化,也就是 tokenization。模型并不直接处理原始文本,而是先把文本切分成离散符号序列。例如,一段句子会被映射成

$$ x=(x_1,x_2,\dots,x_T), $$

其中每个 $x_t$ 都属于一个有限词表 $\mathcal V$。这里,$\mathcal V$ 表示词表集合,也就是模型能够识别和输出的全部词元种类集合。

于是,模型在每一步真正要做的事情,是在有限集合 $\mathcal V$ 上输出一个概率分布:

$$ P_\theta(\cdot\mid x_{<t})\in \Delta^{|\mathcal V|-1}. $$

这里,符号 “$\cdot$” 表示“对所有可能词元”;$|\mathcal V|$ 表示词表大小;$\Delta^{|\mathcal V|-1}$ 表示维度为 $|\mathcal V|-1$ 的概率单纯形,也就是所有分量非负且总和为 1 的向量集合。

这一步很重要。因为大语言模型不是在连续空间里直接输出一句话,而是在每一步从一个大型离散词表中选择下一个词元。也正因为如此,语言能力可以被还原成大量局部概率分配问题。所谓“理解语言”,在模型内部首先表现为:给定上下文时,哪些词元更可能出现,哪些词元不应该出现,哪些长距离关系会改变这些概率。

2.3 上下文条件建模与隐藏表示

虽然训练目标写成了条件概率 $P_\theta(x_t\mid x_{<t})$,但模型并不会直接对前缀字符串做概率运算,而是先把上下文映射为一个连续表示。设 Transformer 在位置 $t$ 输出的隐藏状态为

$$ h_t=h_\theta(x_{<t})\in\mathbb R^d. $$

这里,$h_t$ 表示位置 $t$ 的上下文表示向量;$h_\theta(\cdot)$ 表示由参数 $\theta$ 决定的表示函数;$\mathbb R^d$ 表示 $d$ 维实向量空间;$d$ 表示隐藏表示维度。

然后,模型通过一个线性映射加 softmax,把隐藏表示转成词表上的概率分布:

$$ P_\theta(x_t=j\mid x_{<t})=\frac{\exp(w_j^\top h_t+b_j)}{\sum_{k\in\mathcal V}\exp(w_k^\top h_t+b_k)}. $$

这里,$j$ 表示词表中的某一个候选词元;$w_j\in\mathbb R^d$ 表示与词元 $j$ 对应的输出权重向量;$b_j$ 表示对应偏置项;$\exp$ 表示指数函数;符号 $\top$ 表示向量转置;分母中的求和遍历整个词表。

这条公式说明,下一个词元的预测并不是直接由表面字符串决定的,而是由隐藏表示 $h_t$ 决定的。换句话说,模型真正学习的是一种上下文化表示机制。只要某种语法规律、语义关系或知识结构会稳定影响下一个词元的分布,它就可能被压缩进隐藏表示中。大语言模型能力形成的第一层基础,正是这种高维上下文化表示的形成。

2.4 分布式语义表示为什么会带来泛化

早期符号系统的一个局限,是不同词、不同句子之间缺乏连续的几何关系;而深度语言模型则把离散符号映射为连续向量,并通过训练让这些向量形成分布式表示。

设词元 $x_t$ 的嵌入向量为

$$ e_t=E[x_t]\in\mathbb R^d, $$

这里,$E$ 表示嵌入矩阵,$E[x_t]$ 表示从嵌入矩阵中取出词元 $x_t$ 对应的向量。由于相似语义环境中的词元在训练时会受到相近的梯度更新,它们的表示往往会在向量空间中形成某种几何接近关系。

这种表示方式之所以重要,是因为它允许模型进行泛化。假设训练中从未出现过完全相同的句子,但如果新句子的结构与旧句子在表示空间中相近,那么模型仍然可能做出合理预测。也就是说,大语言模型并不是只靠记忆具体样本工作,而是在高维表示空间里学到了一种近似的统计几何结构。

这正是“为什么预测下一个词会长出复杂能力”的一条基础解释。模型在优化条件概率时,被迫构造出可泛化的表示空间;而复杂任务之所以能被部分解决,往往是因为它们共享某些底层表示规律。

2.5 in-context learning 的机制直觉

大语言模型最引人注意的现象之一,是 in-context learning,也就是上下文学习。所谓上下文学习,是指模型在不更新参数 $\theta$ 的情况下,仅仅通过在输入上下文中给出若干示例,就能临时适应新的任务格式。

设用户输入的完整上下文记为

$$ c=(u_1,u_2,\dots,u_m), $$

其中 $c$ 表示上下文序列,$u_1,\dots,u_m$ 表示其中的词元。模型接下来要生成回答序列 $y=(y_1,\dots,y_S)$,于是它建模的是条件概率

$$ P_\theta(y\mid c)=\prod_{s=1}^{S} P_\theta(y_s\mid c,y_{<s}). $$

这里,$S$ 表示回答长度,$y_{<s}$ 表示回答序列中第 $s$ 个位置之前的前缀。

从形式上看,这仍然只是普通的自回归生成。但因为上下文 $c$ 中可以包含任务说明、输入输出示例、格式模板和约束条件,模型在生成时就会把这些内容视为条件的一部分。于是,“在上下文中给出几个例子”在数学上等价于“改变条件分布的条件项”。模型参数没有变,但条件环境变了,所以输出行为也会变。

这就是上下文学习最基本的机制直觉。它并不意味着模型在推理时真的执行了显式参数更新,而是意味着模型在训练过程中已经学会:不同的上下文模式会对应不同的后续生成分布。当模型规模足够大、训练语料足够丰富时,它越来越能够把“示例中的模式”映射为“当前应采用的任务规则”。

2.6 规模法则

大语言模型能力形成不能脱离“规模”这一因素。经验上,人们发现模型性能会随着参数规模、数据规模和计算规模的增加而系统性改善。为了抽象描述这种现象,常把测试损失记为 $L(N,D,C)$,其中

$$ L(N,D,C) $$

表示在参数量为 $N$、训练数据量为 $D$、训练计算量为 $C$ 时得到的测试损失。

在很多经验研究中,这个损失会近似满足某种幂律衰减关系,例如

$$ L(N,D,C)\approx A N^{-\alpha}+B D^{-\beta}+F(C), $$

这里,$A$ 与 $B$ 是正常数,$\alpha$ 与 $\beta$ 是正指数,$F(C)$ 表示与计算预算相关的剩余项。这个公式不是严格普适定理,而是一种经验近似。它的意义在于说明:当参数、数据和计算继续扩大时,模型误差通常不会立刻饱和,而会沿着某种相对稳定的趋势下降。

这对理解大语言模型至关重要。因为一旦测试损失持续下降,模型在语言建模任务上的细微改进就可能积累为明显的能力差异。换句话说,复杂能力并不一定来自单独新增的模块,也可能来自大量连续改进叠加后跨过某个可观察阈值。

2.7 涌现现象的数学理解

所谓“涌现”,通常指的是某些能力在小模型上几乎看不出来,但当模型规模增长到某个区间后,会明显变得可观察。要谨慎地理解这个概念。它并不一定意味着系统内部突然发生了神秘跃迁,更常见的情况是:底层性能一直在连续改善,但某个任务指标只有在错误率下降到一定阈值以下时,才会被人类视为“能力出现了”。

设某个具体任务的成功率记为 $S(L)$,其中 $L$ 表示语言模型测试损失。那么我们可以把任务成功率看成测试损失的函数:

$$ S=S(L). $$

如果某项任务只有在损失足够低时才会通过评估,那么即使 $L$ 的改善是连续的,$S$ 的变化也可能在观测上显得很陡峭。于是,人们会感觉某种能力“突然出现了”。

从这个角度看,大语言模型的许多能力形成,既有连续积累的一面,也有阈值显现的一面。它不是凭空长出推理器官,而是随着统计建模精度、表示质量和上下文利用能力持续提高,某些复杂行为终于在外部任务上变得足够清晰、足够稳定。

3. 代表模型或算法

3.1 GPT 系列自回归大模型

大语言模型能力形成最典型的路线,是 GPT 系列所代表的自回归大模型路线。它延续了上一章中“解码器型预训练模型”的基本思路,但把参数规模、数据规模和训练计算规模都推到更高数量级。

在这种模型中,训练目标仍然是最小化负对数似然损失

$$ \mathcal L(\theta)=-\sum_{i=1}^{n}\sum_{t=1}^{T_i}\log P_\theta\big(x_t^{(i)}\mid x_{<t}^{(i)}\big). $$

从形式上看,目标并没有发生革命性变化;真正发生变化的是模型在这个目标下所能容纳和学习的统计结构复杂度。随着参数量增加,模型可以表达更复杂的条件分布;随着数据量增加,模型可以接触更多语言模式、任务格式和知识片段;随着计算预算增加,优化过程也可以更充分地逼近较优参数区域。

因此,GPT 路线的重要性不在于它发明了全新的损失函数,而在于它展示了一个事实:当统一的自回归目标被扩展到足够大的尺度时,语言模型会逐渐表现出远超传统任务模型的通用性。

3.2 zero-shot 与 few-shot 使用范式

大语言模型的另一个代表性现象,是 zero-shot 与 few-shot 使用范式。所谓 zero-shot,是指不提供任务示例,只用自然语言说明任务;few-shot 则是在上下文中给出少量样例,让模型模仿其模式完成新输入。

从数学上看,这两种范式都可以统一写成条件生成问题:

$$ P_\theta(y\mid c), $$

其中 $c$ 是包含任务说明、示例与待求解输入的上下文,$y$ 是模型生成的输出。

这个写法很重要,因为它说明大语言模型的使用方式已经发生了变化。过去我们往往需要为每个任务训练一个新的参数化函数;而在 zero-shot 或 few-shot 范式中,任务描述本身被并入条件上下文,模型通过条件概率建模直接完成任务。这意味着“任务切换”正在从“改参数”变成“改提示”。

3.3 上下文中的任务诱导

如果进一步理解 few-shot,我们会发现它本质上是一种“上下文中的任务诱导”。例如,在上下文中给出若干组“输入 -> 输出”示例,模型就会倾向于把当前情景解释为“继续遵守这一映射规则”的问题。

因此,few-shot 并不是简单地“看了几个例子然后照抄”。更准确地说,模型利用了自己在预训练阶段学到的元规律:文本中出现若干格式一致的例子时,后续往往要求延续这种模式。大模型之所以更擅长 few-shot,不只是因为记忆更多,而是因为它更能够在高维表示中识别“当前上下文究竟隐含了什么任务结构”。

4. 典型应用

4.1 对话

对话任务是大语言模型能力形成最直观的应用之一。用户输入一个问题或一段上下文,模型需要输出连贯回答。从数学上看,这仍然是条件生成:

$$ P_\theta(y\mid c)=\prod_{s=1}^{S} P_\theta(y_s\mid c,y_{<s}). $$

这里,$c$ 可以包含用户问题、系统提示和已有对话历史,$y$ 是模型当前要生成的回答。

本章的数学内容在这里具体体现在两点。第一,模型之所以能回答问题,是因为它已经通过 next-token prediction 学会了如何在给定上下文条件下延续合理文本。第二,对话能力并不是单独训练出来的“聊天模块”,而是上下文条件建模、分布式表示和规模扩展共同作用的结果。规模越大,模型越能稳定把用户输入解释为某种任务或意图。

4.2 摘要

摘要任务要求模型把长文本压缩为较短、较关键的表述。对大语言模型来说,这仍然可以视为条件生成问题:给定原文作为上下文 $c$,生成摘要 $y$。

摘要之所以可能,并不是因为训练目标显式包含了“压缩”这一操作,而是因为在大规模语料中,模型已经见过大量标题、概述、新闻导语、说明文和复述结构。这些统计模式被吸收到表示空间中后,模型在面对“请总结以下内容”这样的提示时,就能把摘要理解为一种特定的条件分布输出。

因此,本章中的 in-context learning 在摘要任务里起到的作用非常直接。提示语和输入格式共同构成条件项 $c$,它们会把模型引导到“概括性表达”的生成区域。

4.3 代码生成

代码生成是大语言模型能力形成中很有代表性的例子。表面上看,程序语言与自然语言不同,但从训练角度看,它同样是离散符号序列,因此也可写成词元序列建模问题。

如果训练语料中同时包含自然语言和程序代码,那么模型会学习到“注释、需求描述、函数签名、控制结构、API 调用模式”之间的统计关联。于是,当用户给出一个编程需求时,模型实际上是在估计“给定这些前缀条件,接下来最可能出现的代码词元序列是什么”。

这说明本章中的 tokenization、条件概率建模和分布式表示并不局限于自然语言本身。只要一个领域能表示成离散序列,并且其内部存在稳定模式,大语言模型就可能在统一的自回归框架下学到相应能力。

4.4 问答与推理辅助

问答和推理辅助任务更能体现“看似只是补词,实际上在利用更深层结构”的特点。模型之所以能回答问题,并不是因为它有一个显式知识库查询模块,而是因为训练过程中,大量事实共现、解释结构、定义句式和论证模式已经被编码进参数和表示空间。

当用户提出问题时,模型会根据上下文形成新的条件分布,并在生成时选择那些最符合知识模式、语义连贯性和任务格式的词元序列。因此,问答能力在数学上仍然落在条件概率建模上,而所谓“推理辅助”则更多表现为:模型在上下文中逐步展开一条高概率的解释链或解题链。

这也解释了为什么推理能力往往是“有时稳定、有时不稳定”的。因为模型的本质仍然是概率生成器,它能够生成像推理过程的文本,但并不自动保证每一步都对应严格可靠的逻辑运算。

4.5 文本重写与风格迁移

文本重写、润色、改写和风格迁移,都是大语言模型非常自然的应用。这类任务通常只需要把“原文 + 改写要求”一起放进上下文 $c$ 中,再让模型生成新的输出 $y$。

本章中的 few-shot 与 in-context learning 在这里同样非常重要。因为用户可以在提示中直接写出几个改写示例,模型便会把这些示例当成条件环境的一部分,从而诱导出新的输出风格。也就是说,很多过去需要单独训练的风格迁移任务,现在可以通过上下文条件建模直接完成。

5. 局限性与历史转折

大语言模型的能力形成是机器学习史上的重要跃迁,但它并不意味着模型已经获得了完备、稳定、可验证的一般智能。

首先,语言流畅不等于真实理解。模型能够生成非常像人类的文本,并不自动说明它具有与人类相同的语义 grounding 或世界理解。很多时候,它只是学会了在统计上生成高度合理的续写结果。

其次,大语言模型仍然会产生幻觉,也就是生成内容在语言形式上合理、但在事实层面错误或无依据。这一问题说明:高概率文本并不等于真实世界中的真命题。概率语言建模和事实正确性之间,并不存在天然等价关系。

再次,模型知识会过期,行为也可能不可控。因为参数是在有限时间窗口的数据上训练出来的,而真实世界在不断变化;同时,单纯依赖 next-token prediction 学到的行为未必总能符合人类期望。模型可能给出冗长、偏离意图或不安全的回答。

正因为如此,第21章虽然解释了大语言模型能力为什么会形成,但它也把我们带到了一个新的历史节点:如果模型已经具备较强的生成能力和迁移能力,那么下一步就不再只是“继续扩大模型”,而是要进一步塑造模型的行为方式,使其更好地理解指令、遵循偏好并与人类目标对齐。这正是下一章要讨论的主题。

6. 本章小结

本章讨论了大语言模型能力形成的数学基础。核心结论是:大语言模型的复杂能力并不是脱离统计学习突然出现的,而是由自回归条件建模、词元化、分布式表示、上下文化表示、上下文学习和规模扩展共同推动形成的。训练目标表面上仍然只是 next-token prediction,但因为语言中的知识、结构与任务模式都会影响下一个词元的条件分布,所以模型在优化这一目标的过程中,会逐渐学出更一般的语言能力。

从历史上看,这一步标志着预训练语言模型开始向真正的大语言模型过渡。模型不再只是一个可迁移的语言表示器,而逐渐变成一个能够通过自然语言提示完成多类任务的通用生成平台。但与此同时,它的本质仍然是概率生成模型,这也决定了它仍然存在幻觉、知识过期和行为不可控等局限。

关键公式

$$ P_\theta(x)=\prod_{t=1}^{T} P_\theta(x_t\mid x_{<t}). $$
$$ \mathcal L(\theta)=-\sum_{i=1}^{n}\sum_{t=1}^{T_i}\log P_\theta\big(x_t^{(i)}\mid x_{<t}^{(i)}\big). $$
$$ P_\theta(x_t=j\mid x_{<t})=\frac{\exp(w_j^\top h_t+b_j)}{\sum_{k\in\mathcal V}\exp(w_k^\top h_t+b_k)}. $$
$$ P_\theta(y\mid c)=\prod_{s=1}^{S} P_\theta(y_s\mid c,y_{<s}). $$
$$ L(N,D,C)\approx A N^{-\alpha}+B D^{-\beta}+F(C). $$

关键概念

  • 大语言模型
  • next-token prediction
  • tokenization
  • 上下文化表示
  • 分布式语义表示
  • in-context learning
  • zero-shot
  • few-shot
  • 规模法则
  • 涌现