第 18 章 Transformer 家族:BERT、GPT 与 T5
我们已经拼出了一个块,能在位置之间交换信息,也能变换各位置的表示。但“使用 Transformer”还没有规定学习任务。补一个缺失的词时,能不能看两边?续写时,是不是只能看前缀?生成新答案时,能不能一边逐个生成 token,一边阅读另一份完整文档?
这几种任务安排信息的方式不同。本章用同一个短句,对照三种影响很大的组合:BERT、最初的 GPT 方法,以及 T5。目标是辨认结构和训练目标,不是复现它们的训练,也不是给模型质量排座次。论文描述的是特定模型与实验;后来的模型或聊天产品,未必保留最初的全部选择。
18.1 从同一句话提出三个问题
Section titled “18.1 从同一句话提出三个问题”例 18.1:red key . 中,究竟要预测什么? 为了看清可见关系,这个例子把每个单词和句号都当作一个给定 token,并不使用 BERT、GPT、T5 的真实 token ID。我们省略源序列边界、分类符和分隔符,让表格保持小规模;需要时仍画出解码器的 BOS 和末尾 EOS。真实实现必须遵守所用 tokenizer 的边界约定。
第一个问题是:“根据其余句子,第一个槽位应该填什么?”把 red 藏起来,输入 [MASK] key .,让缺失位置的输出预测 red。查询可以使用 key 和句号,因为两者都是允许的证据;也可以读取 [MASK] 的表示,它标出了缺失位置,却没有给出答案。
第二个问题是:“只知道已经出现的内容,下一个 token 是什么?”训练时输入 [BOS,red,key,.],对应评分目标为 [red,key,.,EOS]。借助因果三角掩码,可以在一次前向计算中处理全部已提供的输入。red 上方的输出预测 key,所以它能看 BOS 和 red,不能看后面的 key 输入。
第三个问题是:“根据留下来的源文本,恢复删去的片段。”把 red key 这两个 token 换成特殊标记 <S0>,源序列就成了 [<S0>,.]。目标为 [<S0>,red,key,<S1>,EOS]。<S0> 标识被删去的片段,最后的哨兵标记 <S1> 在 EOS 之前标明片段恢复序列的结束。这些哨兵标记是预留 token,不是自然语言指令,也不是偶然发现的词。如果删了多个片段,就用不同哨兵标记区分边界。
表 18.1:同一句原文,三种给定的输入与目标约定。 “评分”指计入相应目标的损失,不是只要网络算出了那个位置就算一次。
| 方式 | 网络输入 | 待评分目标 | 预测 red 时可用的证据 |
|---|---|---|---|
| BERT 式 MLM | [MASK] key . | 输入槽位 1 的 red | 替换后的全部三个输入槽位 |
| GPT 式因果语言模型 | BOS red key . | 错开一位的 red key . EOS | 第一次预测时只有 BOS |
| T5 式片段去噪 | 源序列 <S0> .;解码输入 BOS <S0> red key <S1> | 解码目标 <S0> red key <S1> EOS | 替换后的完整源序列,以及解码前缀 BOS <S0> |
因此,同一个 red 是在不同条件下被预测的。表中某种方式的损失更低,不能直接解释为语言能力更强,因为可用证据不同,待评分目标的数量也不同。
18.2 双向阅读,只训练选中的缺失位置
Section titled “18.2 双向阅读,只训练选中的缺失位置”BERT 使用 仅编码器(encoder-only) 堆叠,自注意力可以组合真实输入位置两侧的内容。本例替换后的输入有三个槽位,因此可见性表有三条查询行、三列键,每个格子都允许。输出表示仍与三个输入位置对齐,被选中的第一位置负责预测缺失 token。这叫 掩码语言建模(masked language modeling,简称 MLM)。
这里出现了两种不同的“掩码”。把 red 替换成 [MASK],改变的是 输入 token;注意力的可见性掩码,控制的是 查询可以使用哪些位置。BERT 算例把答案 token 藏起来,同时允许双向注意力,并不是把 [MASK] 所在的位置也对所有查询隐藏。混淆两者,就会描述出另一个训练问题。
原始 BERT 为 MLM 随机选中 15% 的 token 位置;在选中位置中,80% 换成 [MASK],10% 换成随机 token,10% 保持原样。例 18.1 只展示一个选中位置走 [MASK] 分支,没有模拟整个语料上的这些比例。原始 BERT 还使用下一句预测目标。这个额外目标和具体替换比例,都不是所有仅编码器模型必须遵守的定义。BERT,第 3.1 节。
如果任务是给一份完整可见的句子分类,读取左右两侧符合任务规定。如果却用这种不改动的双向结构,在完整句子上给下一个 token 预测评分,就违背了任务,因为它可能看到答案。编码器可以参与生成或补全文本的系统,但通常的反复预测下一个 token,与一次 BERT MLM 前向计算,不是同一个操作。
18.3 从因果前缀继续写
Section titled “18.3 从因果前缀继续写”最初的 GPT 方法使用 仅解码器(decoder-only) Transformer 语言模型,配合 因果语言建模目标(causal language-modeling objective)。这里的“仅解码器”指从前缀生成内容的堆叠,没有另设编码器,也没有读取编码器输出的交叉注意力路径。它并不是保留整个原始 Transformer 解码器,却把需要连接的编码器悬空。
表 18.1 中的四槽位输入,允许的键集合依次为 [1]、[1,2]、[1,2,3]、[1,2,3,4]。共有十对允许的查询与键,而非十六对。最后一个输出读取完整句子后预测 EOS。生成时,未来输入根本还没有提供;程序必须选一个 token、追加到输入,再次运行模型。教师强制让训练能够并行评分,而真正生成的 token 仍依赖前面已经作出的选择。
GPT 原始研究还把预训练参数用于有监督下游任务的适配。这里区分的是 训练阶段,不是另一类可见关系。因果语言模型也可以先读完作为前缀的完整输入,再输出分类标签,并不只能做开放式续写。采用仅解码器结构,也不等于已经接受过面向对话的指令训练。原始 GPT,第 3.1—3.3 节。
18.4 一边读完整源序列,一边按顺序写目标序列
Section titled “18.4 一边读完整源序列,一边按顺序写目标序列”T5 使用 编码器—解码器(encoder-decoder) 结构。编码器读取完整源序列,解码器则结合两种注意力关系:对解码输入做因果自注意力,对所有有效编码器输出做交叉注意力。交叉注意力中的 Q 来自解码器查询,K、V 来自编码后的源序列。“能看完整源序列”,不等于“能看未来目标”。
本例源序列有两个槽位,编码器自注意力允许全部四对连接。解码输入有五个槽位,允许 1+2+3+4+5=15 对因果连接。解码器到源序列的注意力允许五乘二,共十对连接。这是三张不同的矩阵,每个头中的 shape 分别为 [2,2]、[5,5]、[5,2]。源、目标可以不同长,所以交叉注意力不必是方阵。
- 文本片段输入:[MASK] | key | .
- 处理步骤每条查询 → 键 1、2、3(9 对)
- 文本片段评分槽位 1 → red
所有输入槽位可见,但 red 已被替换。
- 文本片段输入:BOS | red | key | .
- 处理步骤允许键:1;1、2;1、2、3;1、2、3、4
- 文本片段目标:red | key | . | EOS
首次预测 red 时只有 BOS 可用;整张表共 10 对因果连接。
- 文本片段源序列:<S0> | .
- 处理步骤编码器 2×2:全 4 对;解码器 5×5:15 对因果连接
- 处理步骤交叉注意力 5×2:10 对源连接全部允许
- 文本片段解码前缀 BOS | <S0> → red
完整源序列可读,未来目标仍不可见。
图 18.1 追踪了预测 red 时的证据。对 T5 来说,当 <S0> 已在解码前缀中,该位置的输出可以使用完整的已替换源序列和当前前缀,不能从解码输入读取即将作为目标的 red。源序列中也不能误放回已删去的片段。如果做这项片段恢复任务时,却把完整 red key . 当作源输入,任务就变成了从可见来源复制答案。
这种 去噪(denoising) 先破坏一份完整原始记录,再把恢复缺失内容作为训练目标。T5 的片段去噪目标包含被移除的片段和哨兵标记,不一定是把整句原文按原位置输出。用于下游任务时,也可以把任务表示成源文本与目标文本。其内部归一化和其他细节,不必与第 17 章的小块相同。T5,第 3.1.4 节、图 2 与第 3.2 节。
18.5 把四条分类轴分开
Section titled “18.5 把四条分类轴分开”表 18.2:只知道模型名字,还回答不了这四类问题。
| 分类轴 | 要检查什么 | 可能的回答 |
|---|---|---|
| 网络架构 | 有哪些堆叠和注意力连接? | 仅编码器、仅解码器、编码器—解码器 |
| 训练目标 | 提供什么输入,预测什么,在怎样的可见性下评分? | MLM、因果下一个 token 预测、片段去噪 |
| 训练阶段 | 这轮参数更新使用什么数据,服务于什么目的? | 面向多种文本的预训练、任务微调、面向指令的后训练 |
| 产品或界面 | 用户怎样输入,怎样收到输出? | 聊天界面、分类接口、文本生成应用 |
这些历史组合有助于定位,但不是所有允许组合的清单。例如,编码器—解码器可以把前缀作为源、后缀作为目标,学习续写。仅解码器也可以按明确的可见性和损失规则,在“受损源文本加目标文本”上训练。T5 研究把结构与目标作为独立实验选择来比较;其结果适用于论文的数据和评测设置,不能直接变成所有模型家族的普遍排名。
同样,聊天界面没有告诉我们底层架构、数据、训练阶段,也没有说明某次回答是否来自外部工具。“LLM”既不等于聊天窗口,也不等于某一条架构分支。这些分类都不会赋予查询或取消真实订单的权限。本书的订单案例仍需要由应用确定允许什么操作,以及什么证据才算真实的操作结果。
18.6 为明确任务作选择,再检验选择
Section titled “18.6 为明确任务作选择,再检验选择”例 18.2:同一个钥匙任务的三种要求。 假设已有标注记录,也有进行小规模受控比较的预算。选择方案时,先说明哪些输入已知,再规定怎样判断成功。表 18.3 给出可行起点,以及应该否决的一种想当然。
表 18.3:方案是否合适,取决于任务条件。
| 任务与标准 | 可行的起始方案 | 应否决的假设 |
|---|---|---|
给出完整 red key . 或 blue key .,输出颜色标签;用留出记录上的精确标签准确率评分 | 编码器表示接分类器;也可用因果模型的末位置表示或生成标签 | 整句本来就允许提供时,不能把双向阅读叫作泄漏 |
给出 red key,预测下一个 token;在相同前缀下评估留出损失 | 因果语言模型;也可采用输入与目标约定一致的编码器—解码器续写 | 不能把未经改动的双向完整输入计算,当作只看过前缀 |
| 给出有错误的钥匙指令,输出修正版;检查指定修改和应保留的内容 | 编码器—解码器的源到目标训练;也可使用因果的“源前缀加答案”格式 | 编码器—解码器的 shape 本身教不会纠错,还需要合适的样本对与评测 |
公平的实测比较需要固定记录与划分,提供等价的任务证据,控制或报告计算量和模型大小,规定目标格式,再用相同任务指标评分。如果 tokenizer 不同,原始“每 token 的 nat”分母也不同,不能自动拿来横向比较。本章作出的是架构判断,没有测量各方案的相对性能。
虚构北京差旅限额也能说明这一边界。更新后的政策文档把 600 换成 750,只要信息路径安排合适,不同架构都有可能访问新值。但家族名称不能证明应用提供了正确版本、模型遵循了新值,或参数已经更新。架构说明有哪些路径,证据还得说明实际流过了什么。
18.7 家族地图让问题更明确
Section titled “18.7 家族地图让问题更明确”BERT 式缺失 token 预测,可以读取替换后输入的左右两侧;GPT 式续写,把各个输出限制在前缀之内;T5 式片段恢复,把完整源序列阅读与因果目标生成分开。这些描述比一个家族名或产品名更明确,因为它们指出了可用信息和待预测目标。
Mini GPT 将选择仅解码器结构和因果目标。我们还需要把真实文本转换成稳定 ID,保留边界,并对齐输入与目标。第 19 章先处理这一接口,第 20 章再把模型拼起来。
18.8 习题
Section titled “18.8 习题”- 画出或列出 BERT 式三槽位示例、GPT 式四槽位示例中,各行允许的键。为什么在规定的替换分支中,BERT 可以允许全部连接,却没有直接暴露缺失的 red?
- T5 式示例的解码器即将预测
key。此时可用的解码前缀和源序列分别是什么?该查询可以看几个解码位置、几个源位置? - 某模型有编码器和因果解码器,训练任务却是续写文档前缀。它的架构必须叫 GPT 吗?请分别指出架构和目标。
- 厂商提供聊天界面,并说模型接受过指令微调。这说明了表 18.2 中的哪些轴?还有哪些没有说明?
- 一项比较在相同原始句子上测得 MLM 模型损失低于因果模型。要把它解释为性能更好,还应先检查什么?请提出一项共同的下游测试。
18.9 参考解答
Section titled “18.9 参考解答”- BERT 每行都允许
[1,2,3];GPT 依次允许[1]、[1,2]、[1,2,3]、[1,2,3,4]。BERT 选中位置的输入是[MASK],不是 red;该目标本来就允许使用剩余的右侧上下文。可见性要按任务规定判断,不能预设所有语言模型都必须因果。 - 解码输入前缀为
[BOS,<S0>,red],共三个位置;源序列为[<S0>,.],共两个位置。该查询通过自注意力读取三个前缀位置,通过交叉注意力读取两个源位置。即将预测的 key 不在任何一个允许集合中。 - 架构是编码器—解码器,目标是在给定源前缀的条件下续写。某一种因果目标,不会把两套网络堆叠变成仅解码器结构,也不会自动赋予一个历史模型的产品名称。
- 已说明界面和一个训练阶段。堆叠与连接、完整训练目标仍未说明,数据、测过的能力和工具也未知。仅知道接受过指令微调,无法确定网络架构。
- 检查破坏输入的方式、左右上下文、选中的目标位置、tokenizer、平均损失分母和数据划分。MLM 可能使用因果模型看不到的右侧信息,也可能只评分较少位置。可以安排共同的留出颜色分类任务:都提供完整句子,使用同样的精确标签标准,并报告训练资源。结果只说明这项任务上的表现,不涵盖全部语言能力。
18.10 参考文献
Section titled “18.10 参考文献”- Devlin 等(2019),BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding。第 3.1—3.2 节与图 3 支持双向阅读、MLM、原始替换比例,以及后续适配阶段的区分。
- Radford 等(2018),Improving Language Understanding by Generative Pre-Training。第 3 节解释先训练因果 Transformer 语言模型,再做有监督适配;这不是当前聊天产品的说明书。
- Raffel 等(2020),Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer。图 2 与第 3.1.4—3.2 节解释哨兵标记、片段目标,以及独立比较架构和目标的方法。本章钥匙句子与方案表为原创教学构造。