第21章 预训练:先学习世界中的规律
如果把一句话遮住一部分,“水在标准大气压下达到 100 摄氏度会____”,多数读者会想到“沸腾”。如果只给前文,“会议推迟到下周,因为”,我们也会预测后面更可能出现原因,而不是一串无关菜名。
这些答案没有由标注员逐条填写。文字本身已经提供了训练目标:遮住的内容原本就在句子里,下一个 Token 也紧跟在前缀之后。只要拥有大量文本,就能自动构造大量“输入和答案”。
这类方法叫作自监督学习(self-supervised learning)。它不是没有监督信号,而是监督信号由数据本身产生。模型先在广泛数据上完成这种大规模预训练(pretraining),再通过微调、提示或其他适配方式用于具体任务。
第 20 章已经给出 Transformer 怎样预测 Token。本章要回答更大的问题:一个看似简单的预测目标,为什么能成为许多语言任务的共同起点?
手工标签是稀缺的,原始数据不是
传统监督学习常需要人为准备输入和标签:图片对应类别,邮件对应垃圾或正常,病例对应诊断结果。高质量标签昂贵、缓慢,而且定义会限制任务范围。
互联网上和各种机构中已经存在大量没有任务标签的文本、图像和声音。自监督学习先对数据做可控变换,再要求模型恢复被隐藏的信息或预测相邻部分。例如:
| 原始数据 | 自动构造的输入 | 自动构造的目标 |
|---|---|---|
| 一段文字 | 遮住若干 Token | 被遮住的 Token |
| 一段文字 | 前 \(t\) 个 Token | 第 \(t+1\) 个 Token |
| 一张图像 | 遮住部分图块 | 原图块或其表示 |
| 一段语音 | 遮住时间片段 | 缺失声学表示 |
这里的任务常被称为代理任务(pretext task)。最终目的不一定是把填空做成产品,而是让模型为了完成填空,形成可以迁移的内部表示和计算能力。
预训练与微调是两个阶段
预训练面对的是宽广数据和通用目标。模型可能见到新闻、百科、小说、代码和对话,但不会自动知道未来产品希望它做情感分类、搜索排序还是客服问答。
完成预训练后,可以用较小的任务数据继续更新参数,这叫作微调(fine-tuning)。也可以冻结大部分参数,只训练一个小型任务头或参数高效适配模块。
大规模原始数据
|
v
自监督预训练 -> 通用参数
|
+---------+---------+
| | |
分类微调 检索微调 指令微调
迁移有效的前提,是预训练中形成的表示和计算对下游任务有用。文本情感、问答和信息抽取都依赖词义、语法、指代与主题,因此可以共享很多基础结构。若下游数据与预训练分布相差很远,迁移也可能有限甚至产生负面影响。
核心机制:用数据自身制造训练信号
预训练从原始数据中自动构造输入和目标,让同一模型在大量样本上反复预测缺失或后续内容。为了降低预测误差,参数会压缩可重复的词语关系、结构和世界规律。之后,较少的任务数据或提示可以重新组合这些能力,但不能保证模型学到的规律真实、完整或适合所有部署环境。
BERT 路线:根据左右文恢复缺失内容
掩码语言模型(masked language model, MLM)随机遮住输入中的一些 Token,再要求模型根据其余位置恢复它们:
原句:巴黎是法国的首都
输入:巴黎是 [MASK] 的首都
目标:法国
由于被遮位置两侧的文字都可见,编码器能够学习双向上下文表示。BERT 把这种目标与 Transformer 编码器结合,预训练后在每个具体任务上加入小型输出层并联合微调。(Devlin 等 2019年)
这条路线尤其适合输入在预测时完整可见的任务,例如分类、抽取和句子匹配。它的训练输入中出现人工遮盖符,而真实使用时通常没有这个符号;遮盖比例和替换策略需要避免让预训练与使用条件差异过大。
“双向”也不等于模型能直接从左到右生成长文本。编码器在每个位置都可能看见右侧内容,而自回归生成时未来尚不存在。要生成完整序列,必须设计相应的解码过程或使用另一种目标。
GPT 路线:只根据前文预测下一个 Token
因果语言模型(causal language model)把每个位置的下一个 Token 当作目标:
输入:<BOS> | 人工智能 | 正在 | 改变
目标:人工智能 | 正在 | 改变 | 世界
模型通过因果掩码只能读取当前位置及以前的 Token。生成式预训练工作显示,先用大规模文本训练语言模型,再对具体任务微调,可以获得广泛迁移能力。(Radford 等 2018年) 随着模型、数据和计算扩展,GPT-3 进一步展示了只在提示中给出任务说明或少量示例、不更新参数也能完成多类任务的现象。(Brown 等 2020年)
因果目标与开放式生成的数据流一致:训练和生成都只依赖左侧前缀。代价是预测某个位置时不能利用其右侧上下文,并且模型会把很大一部分容量用于学习流畅续写,不保证每项知识都能被可靠调用。
技术深潜:掩码目标与因果目标
设原始序列为 \(x_{1:T}\),被遮位置集合为 \(M\)。掩码语言模型只在这些位置计算负对数似然:
\[ \mathcal{L}_{\mathrm{MLM}}= -\sum_{t\in M}\log p_\theta(x_t\mid x_{\setminus M}) \]
\(x_{\setminus M}\) 表示模型看到的未遮内容。一个训练样本只为部分位置提供损失,但每个被遮位置可以同时利用左右文。
因果语言模型对每个可预测位置计算:
\[ \mathcal{L}_{\mathrm{CLM}}= -\sum_{t=1}^{T}\log p_\theta(x_t\mid x_{<t}) \]
同一段长度为 \(T\) 的文本可以提供接近 \(T\) 个目标,训练时利用因果掩码并行计算。模型仍不是一次预测整段未来;每个位置的条件信息只包含真实前缀。
两种目标都最大化训练数据的条件似然,却施加不同信息约束。MLM 擅长形成双向表示,CLM 天然对应自回归生成。T5 等工作把多种任务统一写成“文本输入到文本输出”,展示了预训练目标和下游接口还可以有其他组合。(Raffel 等 2020年)
预测 Token 为什么会学到更多结构
要稳定预测文本,模型不能只记住相邻词频。它需要利用许多尺度的规律:
- 字符和子词怎样组成词语;
- 哪些词在语法上可以接在一起;
- 代词更可能指向哪个实体;
- 文档主题怎样限制后续内容;
- 常见事实、格式、代码模式和推理模板怎样出现。
例如,要补全“她把杯子放在桌边,杯子随后掉到了”,局部搭配提示“地上”,物理经验也提供约束。预测任务不会告诉模型“请建立物体支撑的概念”,但能利用这种规律的参数会得到更低损失。
这并不证明模型获得了与人相同的世界理解。文本中存在大量可利用的表面模式,训练目标也不区分真实陈述、小说、谣言和讽刺。模型形成的是对训练分布有用的内部结构,其中可能混合语言规律、世界知识、记忆片段和虚假相关。
微调、提示与上下文学习
预训练模型适配任务至少有三种常见方式:
| 方式 | 参数是否更新 | 任务信息放在哪里 |
|---|---|---|
| 完整微调 | 是 | 任务训练集与损失 |
| 参数高效微调 | 少量参数 | 小型适配参数与任务数据 |
| 提示或上下文学习 | 否 | 当前输入中的说明和示例 |
上下文学习(in-context learning)是指模型仅根据提示中的说明或示例改变当前输出行为。推理期间,模型参数通常没有被梯度更新。示例作为上下文 Token 进入注意力层,改变后续 Token 的条件分布。
这很像临时学习,但与训练阶段的参数学习不同。关闭会话或移除示例后,这次上下文不会自动写回模型权重。模型能否利用示例,本身是预训练产生的能力,并受提示格式、示例顺序、上下文长度和任务分布影响。
数据混合决定模型看见什么世界
“训练数据越多越好”缺少重要前提。重复网页会浪费计算并增加记忆风险;低质量文本可能教会模型错误格式;某类语言、地区或专业资料不足,会使能力分布不均。
实际数据流水线会涉及来源选择、去重、质量过滤、语言配比、敏感信息处理、许可与版本记录。不同来源还可能被赋予不同采样权重。一个高质量小数据集可能被重复抽样,一个巨大但噪声多的来源可能被降权。
过滤也不是中立操作。用什么分类器定义“高质量”,会改变被保留的表达和观点。过强过滤可能去掉少数语言或非标准写作;过滤不足则会保留垃圾内容、隐私和危险材料。
训练 Token 数也不等于独立信息量。复制同一段文字一百次会产生一百倍 Token,却没有增加一百倍知识。
技术深潜:规模定律与计算最优
在一定实验范围内,语言模型测试损失常随参数量 \(N\)、训练 Token 数 \(D\) 或计算量 \(C\) 增加而呈近似幂律下降。简化地写,可以表示为:
\[ L(N)\approx L_\infty+aN^{-\alpha} \]
\(L_\infty\) 是无法靠该尺度继续消除的部分,\(a\) 和 \(\alpha\) 由数据与实验拟合。Kaplan 等人的工作系统研究了模型、数据和计算之间的经验缩放关系。(Kaplan 等 2020年)
幂律不是“参数翻倍,所有能力按固定比例增加”的自然定律。它描述特定架构、优化方法、数据和尺度区间内的平均损失趋势。下游能力可能有噪声、阈值和评测误差。
训练计算粗略受参数量和处理 Token 数共同影响:
\[ C\propto N\times D \]
预算固定时,模型过大而数据不足,会让许多参数训练不充分;模型过小而重复过多数据,又会限制容量。Hoffmann 等人的计算最优研究表明,在给定训练计算下,应比早期一些方案使用更多数据、相对更小的模型。(Hoffmann 等 2022年)
因此,“规模”至少包含参数、有效数据、训练计算、内存与通信。比较模型时只报参数量,会漏掉训练 Token、数据质量、是否稀疏激活和推理成本。
为什么称为基础模型
当一个模型在广泛数据上训练,并成为许多下游系统的共同底座时,可以称为基础模型(foundation model)。这一概念强调的不只是模型大,而是“一次训练,多处适配”的结构性作用。(Bommasani 等 2021年)
同一底座可以被用于搜索、写作、编程、分类或多模态系统。能力可以迁移,缺陷也会迁移:训练数据偏差、隐私风险、脆弱性和难以追溯的错误可能同时进入许多下游应用。
基础模型也不是完整产品。真实系统还需要输入输出接口、检索、工具、权限、监控、安全策略和领域评估。第 23 章将进一步解释语言模型如何被训练成更愿意遵循指令的助手。
预训练不会自动得到可靠知识库
模型参数以分布式方式压缩训练规律,不像数据库那样为每条事实保存来源、时间和真值标记。于是会出现几类根本限制:
- 训练数据互相矛盾时,模型可能混合多个版本;
- 低频事实可能记不牢,高频错误也可能被强化;
- 知识有时间边界,训练结束后不会自动更新;
- 概率最高的续写可能语言流畅但事实错误;
- 记住训练片段与抽象泛化可能同时发生;
- 更低的平均损失不保证每个关键任务都更可靠。
预训练目标奖励“像数据中的后续”,并不直接奖励承认不知道、引用来源或服从用户意图。要把语言模型变成对话助手,还需要新的训练阶段和系统约束。
学习路径:从小模型观察迁移
实践继续后置。具备编程基础的读者可以在 P08 之上按以下顺序观察预训练,而不追求大模型规模:
- 用同一小语料训练字符级因果模型,保存预训练检查点;
- 构造一个很小的文本分类任务,比较随机初始化与预训练初始化;
- 分别冻结骨干、只训练分类头,以及微调全部参数;
- 记录训练样本数量、验证损失与分布外样本表现;
- 用重复数据和去重数据各训练一次,观察训练损失与泛化差异。
这个实验不能复现大模型能力,却能验证迁移学习最重要的对照:相同下游数据下,预训练初始化究竟带来了什么。
本章小结
- 自监督学习从数据自身构造目标,不等于没有监督信号。
- 预训练先学习广泛规律,微调、参数高效适配或提示再把能力用于具体任务。
- BERT 风格掩码目标利用左右文恢复缺失 Token;GPT 风格因果目标只根据前文预测下一个 Token。
- Token 预测会迫使模型利用语法、主题、事实和格式等规律,但也可能依赖表面模式与错误相关。
- 上下文学习在推理时改变条件输入,通常不更新模型参数。
- 参数、有效数据和计算预算需要共同扩展;参数量不是规模与能力的唯一指标。
- 基础模型把一次预训练的能力与风险迁移到许多下游系统,但本身不是可靠助手或完整产品。
思考问题
- 为什么说自监督学习仍然有“标签”,只是标签不由标注员逐条创建?
- 掩码语言模型和因果语言模型分别允许每个预测位置看见哪些信息?
- 为什么上下文学习看起来像学习,却通常不会永久改变模型参数?
- 在训练计算固定时,一味增加参数而不增加有效数据可能发生什么?
延伸阅读
- GPT 与 BERT 的原始工作适合对照因果预训练和掩码预训练的目标差异。(Radford 等 2018年; Devlin 等 2019年)
- T5 适合观察统一文本到文本接口怎样连接预训练与多类下游任务。(Raffel 等 2020年)
- GPT-3 论文记录了规模扩大后少样本与上下文学习的系统实验。(Brown 等 2020年)
- 规模定律与计算最优论文应结合阅读,避免把“更大”误解成只有参数更多。(Kaplan 等 2020年; Hoffmann 等 2022年)
- 基础模型报告系统讨论了能力集中、下游迁移与社会风险。(Bommasani 等 2021年)
