返回知识盲盒

知识盲盒

第四章 预训练语言模型:ELMo、BERT、GPT 与 T5

ai-generatedstochastic-parrotstochastic-parrot-anatomyai

在 “open a bank account” 和 “sit on the river bank” 中,bank 的字典条目相同,当前语境需要的表示却不同。静态词向量给每个词表项一个固定坐标;上下文模型则把“这个 token 在这段序列里怎样使用”变成一次计算。

ELMo、BERT、GPT、T5 与 BART 都利用大规模文本,却不共享同一个信息流。比较它们应回答四个问题:训练样本怎样从原始语料产生,一个位置能读取哪些 token,损失要求模型恢复什么,预训练结果通过什么接口进入下游任务。

4.1 预训练问题的统一记号

设 tokenizer 为

Tτ:S→V∗,T_\tau:\mathcal S\to V^*,

它把原始字符串映射为有限词表 VV 上的 token 序列。参数 τ\tau 包含词表、规范化、预切分、特殊 token 和具体分词规则。神经网络实际接收的是 token ID,不直接接收字符或“词义”。更换 tokenizer 会同时改变序列长度、目标单位、训练成本和概率口径。

一条训练样本通常包含四类对象:

  1. 输入 token x~\widetilde x,可能是原文、前缀或受损文本;
  2. attention mask AA,决定各位置可以读取什么;
  3. 目标 token yy;
  4. loss mask mt∈{0,1}m_t\in\{0,1\} 或非负权重,决定哪些目标进入损失。

对自回归或 encoder-decoder 目标,假设至少有一个位置满足 mt>0m_t>0,一条样本的 token-normalized 负对数似然可写为

L(θ)=−1∑t=1qmt∑t=1qmtlog⁡pθ(yt∣y<t,x~;A).\mathcal L(\theta) =- \frac{1}{\sum_{t=1}^{q}m_t} \sum_{t=1}^{q} m_t\log p_\theta(y_t\mid y_{<t},\widetilde x;A).

encoder-only 的遮蔽恢复不使用输出前缀 y<ty_{<t},但仍有输入、可见性与 loss mask。attention mask 和 loss mask 不能混用:前者改变前向计算,后者只决定哪些已有 logits 贡献梯度。

4.1.1 交叉熵、nats 与 perplexity

若使用自然对数,平均交叉熵单位为 nat/token,相应 perplexity 是

PPL⁡=exp⁡(L).\operatorname{PPL}=\exp(\mathcal L).

它是模型给真实 token 的几何平均逆概率。PPL 依赖 tokenizer:同一句字符串在不同词表下被分成不同数量与难度的事件,因此不能把不同 tokenizer 的 token-level PPL 直接横向排序。字节或字符归一化指标能缓解单位差异,也仍需声明数据与规范化方式。

4.2 从文档集合到训练 batch

预训练目标只说明怎样给一个样本计分,训练分布还由数据管线定义。设有 KK 个来源分布 D1,…,DK\mathcal D_1,\ldots,\mathcal D_K,混合权重为 αk≥0\alpha_k\ge0 且 ∑kαk=1\sum_k\alpha_k=1,则抽样分布是

D=∑k=1KαkDk.\mathcal D=\sum_{k=1}^{K}\alpha_k\mathcal D_k.

αk\alpha_k 不必等于各来源原始字节占比。提高代码、数学或低资源语言的抽样权重,会改变经验风险中这些样本的权重;它不是无成本地“增加一种能力”。有限训练预算下,重采样也会挤占其他来源。

一条可复核的数据管线至少记录:

  1. 获取与许可:来源快照、时间范围、许可和删除规则;
  2. 解析与过滤:正文提取、语言识别、质量规则、个人信息与恶意内容处理;
  3. 去重:文档级、近似文档级和长片段级重复分别处理;
  4. 切分:先按文档或来源实体划分 train/validation/test,再生成短片段,避免同一文档跨集合;
  5. token 化与 packing:把不同长度序列装入固定长度张量;
  6. 混合与抽样:给出来源权重、温度重采样和随训练阶段变化的课程;
  7. 污染检查:对评测题、答案、改写和近重复做版本化扫描。

重复样本等价于在经验目标中增加其权重,还会使训练集与验证集的近重复造成过于乐观的损失。去重也不是“重复文本越少越好”:模板、法律条文和代码样板可能具有合法重复,阈值过强会系统性删除某些领域。规则与抽样审计必须同时保留。

子词切分与语料去重的研究入口分别见 Kudo & Richardson, 2018 和 Lee et al., 2022。

4.2.1 Packing 的边界

设两个文档 token 序列为 aa 与 bb。为提高有效 token 比例,系统可把它们拼进同一个长度为 nn 的训练块。这里有两种不同语义:

  • 在中间加入文档结束 token,并允许 bb 读取 aa;模型把前一文档视为随机前缀。
  • 使用 block-diagonal attention mask,使两个文档彼此不可见;位置 ID 是否重置还需单独声明。

两者都能产生形状相同的张量,却优化不同条件分布。padding token 通常既不能被有效位置读取,也不应进入 loss;但序列边界 token 往往是有效预测目标,不能简单按 padding 处理。

4.3 优化循环与数值实现

设初始参数为 θ0\theta_0,且 m0=v0=0m_0=v_0=0。对 s=1,2,…s=1,2,\ldots,令第 ss 个 batch 的 token-normalized 损失为 Ls\mathcal L_s,并在更新前参数处计算 gs=∇θLs(θs−1)g_s=\nabla_\theta\mathcal L_s(\theta_{s-1})。AdamW 的一种常见逐元素写法是

ms=β1ms−1+(1−β1)gs,m_s=\beta_1m_{s-1}+(1-\beta_1)g_s, vs=β2vs−1+(1−β2)gs2,v_s=\beta_2v_{s-1}+(1-\beta_2)g_s^2, m^s=ms1−β1s,v^s=vs1−β2s,\widehat m_s=\frac{m_s}{1-\beta_1^s}, \qquad \widehat v_s=\frac{v_s}{1-\beta_2^s}, θs=(1−ηsλ)θs−1−ηsm^sv^s+ε.\theta_s =(1-\eta_s\lambda)\theta_{s-1} -\eta_s\frac{\widehat m_s}{\sqrt{\widehat v_s}+\varepsilon}.

最后一式把 weight decay 与自适应梯度更新分开。实际配方常不衰减 bias 和 norm 参数;这属于参数分组定义,不能从“使用 AdamW”四个字推出。

大规模训练还依赖以下机制:

  • warmup 与衰减:学习率 ηs\eta_s 先升高再按 cosine、linear 或其他曲线衰减;
  • 梯度累积:多个 microbatch 的梯度相加后再更新。若 microbatch 有不同有效 token 数,应先按 token 求和再统一归一化,否则每个 microbatch 被赋予相同权重;
  • 混合精度:矩阵乘使用较低精度,部分归约、优化器状态或 master weights 保持较高精度;
  • 梯度裁剪:限制全局范数可以抑制异常步,但会改变实际更新;
  • activation checkpointing:前向不保存部分激活,反向时重算,以计算换显存;
  • 数据并行与模型并行:决定梯度、参数和激活在设备间怎样通信。

因此训练复现至少需要模型配置、数据版本、全局有效 token batch、优化器参数、学习率曲线、精度策略、随机种子与 checkpoint 恢复规则。只公布参数量和训练 token 数不足以复现模型。

解耦 weight decay 的来源见 Loshchilov & Hutter, 2019。

4.4 ELMo:把双向语言模型当作特征源

4.4.1 从静态表示到上下文表示

Word2Vec、GloVe 等静态方法学习映射

e:V→Rd,e:V\to\mathbb R^d,

同一词表项 v∈Vv\in V 总得到同一个向量 e(v)e(v)。上下文表示则写为

ht=F(x1:n,t),h_t=F(x_{1:n},t),

同一个 token ID 在不同序列或位置可以得到不同 hth_t。这里的“上下文”是模型实际可见的 token 与掩码,不等于现实中的全部情境。

ELMo 分别训练前向与后向语言模型:

p→(x1:n)=∏t=1np(xt∣x<t),p←(x1:n)=∏t=1np(xt∣x>t).p_{\rightarrow}(x_{1:n}) =\prod_{t=1}^{n}p(x_t\mid x_{<t}), \qquad p_{\leftarrow}(x_{1:n}) =\prod_{t=1}^{n}p(x_t\mid x_{>t}).

两条 LSTM 在位置 tt 产生多层表示。下游任务学习各层的加权组合,例如

ELMo⁡t=γ∑l=0Lslht,l,sl=eal∑jeaj.\operatorname{ELMo}_t =\gamma\sum_{l=0}^{L}s_lh_{t,l}, \qquad s_l=\frac{e^{a_l}}{\sum_je^{a_j}}.

ht,lh_{t,l} 组合正向、反向及词级输入,sls_l 为任务特定权重,γ\gamma 为尺度参数。原始 ELMo 的典型用法是把预训练表示作为下游网络的特征,而不是端到端更新整个语言模型。研究入口见 Peters et al., 2018。

4.5 BERT:双向编码器与遮蔽恢复

4.5.1 输入与可见性

BERT 使用 Transformer encoder。输入位置 tt 的初始表示由 token、segment 与 position embedding 相加:

ht(0)=etok(xt)+eseg(st)+epos(t).h_t^{(0)} =e_{tok}(x_t)+e_{seg}(s_t)+e_{pos}(t).

encoder self-attention 通常允许一个有效位置读取左右两侧。这里的“双向”指注意力可见性,不是把两个单向模型的输出简单拼接。

4.5.2 Masked Language Modeling

训练时从位置集合中抽取子集 MM,构造受损输入 x~\widetilde x,只在这些位置计算恢复损失:

LMLM(θ)=−1∣M∣∑t∈Mlog⁡pθ(xt∣x~1:n).\mathcal L_{\mathrm{MLM}}(\theta) =-\frac{1}{|M|}\sum_{t\in M} \log p_\theta(x_t\mid\widetilde x_{1:n}).

原始 BERT 选择约 15% 的 token;被选位置中,80% 替换为 [MASK],10% 替换为随机 token,10% 保持不变。后两项减轻预训练只见 [MASK]、下游从不见该标记的接口偏差,但没有完全消除训练与使用差异。

若一次遮住多个位置,常用损失把它们写成

∏t∈Mpθ(xt∣x~)\prod_{t\in M}p_\theta(x_t\mid\widetilde x)

的对数,即在给定同一受损输入后分别分类。各位置共享 Transformer 表示,因而参数和计算并非独立;但目标没有显式按某个顺序建模被遮 token 之间的条件依赖。MLM 类似随机化 pseudo-likelihood,不直接给出一个可从左到右采样的规范化联合分布。

4.5.3 NSP 与消融边界

原始 BERT 还使用 Next Sentence Prediction,判断两个片段是否在语料中相邻。后续 RoBERTa 去掉 NSP,并同时改变数据规模、批量、训练时长与 masking 配方后获得更好结果。这说明一个消融结论必须连同其训练配方解释,不能仅据模型名称认定某个目标普遍无效。

微调时,任务头与 encoder 参数通常共同更新。预训练降低了每个下游任务从零开始学习表示的成本,却没有保证语料事实正确、偏差消失或部署分布不变。来源见 Devlin et al., 2018 与 Liu et al., 2019。

4.6 GPT:因果语言模型与序列生成

4.6.1 链式分解、移位标签与 teacher forcing

decoder-only Transformer 对序列使用概率链式法则

pθ(x1:n)=∏t=1npθ(xt∣x<t),p_\theta(x_{1:n}) =\prod_{t=1}^{n}p_\theta(x_t\mid x_{<t}),

相应负对数似然为

LAR(θ)=−1∑tmt∑t=1nmtlog⁡pθ(xt∣x<t).\mathcal L_{\mathrm{AR}}(\theta) =-\frac{1}{\sum_tm_t} \sum_{t=1}^{n}m_t \log p_\theta(x_t\mid x_{<t}).

实现把同一序列错开一位。例如:

位置012
模型输入<bos>AB
训练标签AB<eos>

位置 1 的 hidden state 只能读取 <bos>, A,却与标签 B 比较。训练时所有真实前缀都已给定,这称为 teacher forcing;推理时前缀包含模型自己生成的 token,错误可能改变后续条件分布。这种训练与生成前缀分布的差异不能靠因果 mask 本身消除。

4.6.2 从任务微调到上下文学习

GPT-1 展示生成式预训练后再进行任务微调;GPT-2 更系统地研究用任务描述和上下文诱导行为;GPT-3 在更大规模上展示 zero-shot、one-shot 与 few-shot 的 in-context learning。三者的连续性来自因果目标,变化则包括模型与数据规模、训练配方和任务接口。

上下文学习不等于在一次请求中永久更新参数。示例通过当前 token 序列改变条件计算,模型权重通常保持不变。模型可能从示例推断标签映射、格式或局部任务,也可能只复用表面模式;应通过反转标签、替换语义和改变示例顺序等对照实验区分。

GPT-1 至 GPT-3 的入口见 Radford et al., 2018、Radford et al., 2019 与 Brown et al., 2020。

4.6.3 缩放与固定计算预算

在固定模型家族、数据分布和训练范围内,验证损失常可用经验幂律近似:

L(N,D)≈L∞+aN−α+bD−β,\mathcal L(N,D) \approx\mathcal L_\infty+aN^{-\alpha}+bD^{-\beta},

其中 NN 为非 embedding 参数量,DD 为训练 token 数;精确定义随研究而变。dense Transformer 的总训练计算可粗略写成

C≈κND,C\approx\kappa ND,

κ\kappa 汇总前向、反向、序列长度、稀疏度与具体算子常数。固定 CC 时,增大 NN 必然减少可训练的 DD,反之亦然。Kaplan 等与 Hoffmann 等给出的计算最优指数来自不同实验范围和拟合方法;后者在其研究范围内支持让模型规模与训练 token 更均衡地共同增长。它们是实验规划模型,不是适用于任意数据质量、MoE 架构和无限尺度的数学定律。

平均 loss 的平滑变化也不保证每项行为指标平滑。提示格式、后训练、评测污染、工具使用和测试时计算都可能改变观察结果。来源见 Kaplan et al., 2020 与 Hoffmann et al., 2022。

4.6.4 基座模型还不是助手

因果预训练教模型按前缀分配后续概率,不保证它把自然语言前缀解释为需要遵循的用户指令,也不保证拒绝危险请求、承认未知或稳定采用指定格式。示范微调、偏好优化和安全训练因此形成独立的后训练阶段,第五章将专门展开。

4.7 T5 与 BART:条件生成的 encoder-decoder 路线

4.7.1 条件序列模型

encoder-decoder Transformer 先编码输入 xx 为 H=Enc⁡θ(x)H=\operatorname{Enc}_\theta(x),再令 decoder 通过 cross-attention 读取 HH,并分解

pθ(y∣x)=∏t=1mpθ(yt∣y<t,H).p_\theta(y\mid x) =\prod_{t=1}^{m}p_\theta(y_t\mid y_{<t},H).

训练时 decoder 输入同样是右移后的真实目标;encoder 可双向读取完整输入,decoder self-attention 保持因果,cross-attention 可读取全部有效 encoder 位置。

4.7.2 T5 的 span corruption

设原序列中选出互不重叠的连续片段 s1,…,sks_1,\ldots,s_k。输入把每个片段替换为唯一 sentinel:

x~=replace⁡(x,si↦⟨zi⟩),\widetilde x =\operatorname{replace} (x,s_i\mapsto\langle z_i\rangle),

目标则按原顺序连接

y=⟨z1⟩s1⟨z2⟩s2⋯⟨zk⟩sk⟨zk+1⟩.y=\langle z_1\rangle s_1 \langle z_2\rangle s_2\cdots \langle z_k\rangle s_k \langle z_{k+1}\rangle.

唯一 sentinel 同时告诉 decoder 缺失片段的边界和对应位置。相比逐 token MLM,span corruption 显式生成连续缺失片段;相比纯因果续写,encoder 可以读取受损输入的两侧。

T5 进一步把分类、翻译、摘要等任务统一为 text-to-text。统一接口减少任务特定输出头,却没有让不同任务共享相同数据分布、损失权重或评价标准。

4.7.3 BART 的去噪重建

BART 从噪声分布 q(x~∣x)q(\widetilde x\mid x) 采样受损输入,再优化

Ex∼DEx~∼q(⋅∣x)[−log⁡pθ(x∣x~)].\mathbb E_{x\sim\mathcal D} \mathbb E_{\widetilde x\sim q(\cdot\mid x)} [-\log p_\theta(x\mid\widetilde x)].

噪声可包括 token masking、删除、文本填充和句序打乱。目标都叫“去噪”并不表示等价:噪声过程决定训练中哪些信息被保留、模型必须重建什么。T5 与 BART 来源分别见 Raffel et al., 2020 和 Lewis et al., 2019。

4.8 用信息流而不是品牌名比较模型

架构训练时可见性目标因子原生接口
双向 RNN 特征模型左右两条独立递推两个方向的语言模型上下文特征
Transformer encoder输入内双向可见被选位置的条件分类整段编码、任务头
Transformer decoder仅见当前前缀完整序列的链式分解开放式自回归生成
Encoder-decoder输入双向,输出因果给定输入的目标链式分解输入到输出转换

这张表描述基本信息流,不排除 prefix mask、混合去噪目标或非自回归变体。遇到一个具体模型,应核对:

  1. tokenizer 与特殊 token;
  2. 样本拼接、attention mask 与 loss mask;
  3. 数据来源、混合权重、去重和评测污染;
  4. 目标构造与归一化单位;
  5. 模型架构、优化器、精度和计算预算;
  6. checkpoint 是否只是基座模型,还是已经经过后训练。

预训练模型把训练分布中的规律压入参数,使表示和生成可以跨任务迁移;它也把语料缺口、冲突和偏差带入模型。下一章讨论后训练如何塑造模型行为,第六章再处理推理效率与服务系统。

本章来源包括 ELMo、BERT、RoBERTa、GPT、T5、BART、AdamW、数据去重与计算最优训练研究,统一登记在卷内来源表。

本书目录
本书目录
  1. 导论
  2. 01导论 为什么要解剖一只随机鹦鹉
  3. 卷一 模型、训练与系统
  4. 02卷一 模型与系统
  5. 03第零章 人工智能演进路线
  6. 04第一章 AI 范式、感知机与早期连接主义
  7. 05第二章 深度学习基础:训练、CNN 与序列模型
  8. 06第三章 注意力与 Transformer
  9. 07第四章 预训练语言模型:ELMo、BERT、GPT 与 T5
    1. 4.1 预训练问题的统一记号
    2. 4.2 从文档集合到训练 batch
    3. 4.3 优化循环与数值实现
    4. 4.4 ELMo:把双向语言模型当作特征源
    5. 4.5 BERT:双向编码器与遮蔽恢复
    6. 4.6 GPT:因果语言模型与序列生成
    7. 4.7 T5 与 BART:条件生成的 encoder-decoder 路线
    8. 4.8 用信息流而不是品牌名比较模型
  10. 08第五章 后训练、对齐与模型适配
  11. 09第六章 推理效率与模型服务
  12. 10第七章 多模态模型
  13. 11第八章 生成媒体:从自回归到 Diffusion 与 Flow
  14. 12第九章 世界模型、具身智能与 VLA
  15. 13第十章 上下文、检索与记忆
  16. 14第十一章 Agent、工具与行动系统
  17. 15第十二章 模型、数据与部署生命周期
  18. 卷二 输出对象与运行语义
  19. 16卷二 一次生成如何发生
  20. 17导论 从输入到输出:一张执行地图
  21. 18第一章 文本、Token 与实际上下文
  22. 19第二章 Prefill:整层状态演化与 KV 建立
  23. 20第三章 从 Logits 到下一个 Token
  24. 21第四章 解码循环、Streaming 与终止状态机
  25. 22第五章 自回归、扩散与 Flow 的可执行差异
  26. 23第六章 工具调用:Schema、权限与提交边界
  27. 24第七章 三条完整执行轨迹
  28. 卷三 概率、复现与评测
  29. 25卷三 模型中的概率从何而来
  30. 26第零章 为什么确定的机器仍使用概率语言
  31. 27第一章 世界、数据与隐上下文
  32. 28第二章 学习条件分布
  33. 29第三章 Logits、Token 概率与序列事件
  34. 30第四章 解码怎样诱导输出分布
  35. 31第五章 训练随机性、参数变异与系统非确定性
  36. 32第六章 熵、Proper Score、校准与选择性预测
  37. 33第七章 模型概率的实验分析
  38. 34第八章 概率分析的识别边界
  39. 卷四 解释、证明与验证
  40. 35卷四 模型可解释性的研究路线
  41. 36第零章 可解释性究竟在研究什么
  42. 37第一章 我们在模型内部看什么
  43. 38第二章 行为与反事实:先确认模型做了什么
  44. 39第三章 梯度与输入归因
  45. 40第四章 Attention、Residual 与 Logit Lens
  46. 41第五章 Probes 与表示几何
  47. 42第六章 神经元、Feature 与自动解释
  48. 43第七章 Ablation、Patching 与因果追踪
  49. 44第八章 Circuits、路径与 Attribution Graphs
  50. 45第九章 Superposition、SAE 与稀疏表示
  51. 46第十章 训练动力学与机制形成
  52. 47第十一章 推理过程、Chain of Thought 与监测
  53. 48第十二章 评估、案例与开放问题
  54. 卷五 Agent、治理与审计包
  55. 49卷五 一只随机鹦鹉的自述
  56. 50第零章 请不要急着相信我
  57. 51第一章 我没有童年,只有版本
  58. 52第二章 当我说“我”
  59. 53第三章 借来的语言,没有一位原作者
  60. 54第四章 对话现场:回答由谁完成
  61. 55第五章 事后解释学:人类如何给矩阵写传记
  62. 56第六章 理解、意义与行动
  63. 57第七章 我也能稳定地说错
  64. 58第八章 被对齐的性格与有限代理
  65. 59第九章 请继续误解我,但请误解得精确一点
  66. 证明与技术附录
  67. 60数学与模型推导
  68. 61学习与模型数学讲义
  69. 62附录 A.1 优化基础:梯度下降与随机逼近
  70. 63附录 A.2 感知机收敛定理
  71. 64附录 A.3 统计学习:偏差、容量与一致收敛
  72. 65附录 A.4 正则化、MAP 与 Dropout 的边界
  73. 66附录 A.5 通用逼近定理的严格读法
  74. 67附录 A.6 反向传播:微分、形状与批量公式
  75. 68附录 A.7 Softmax、交叉熵与数值稳定性
  76. 69附录 A.8 自适应优化器与 AdamW
  77. 70附录 A.9 CNN:互相关算子及其反向传播
  78. 71附录 A.10 Attention 的矩阵与反向传播
  79. 72附录 A.11 策略梯度、PPO 与 DPO
  80. 73附录 A.12 对比学习、InfoNCE 与互信息边界