三种建模范式
BERT 用双向编码器和掩码语言模型,擅长理解类任务,但不能直接做自回归生成。围绕“如何预训练一个通用语言模型”,逐渐形成三种典型结构:
- 自回归(decoder-only):只用解码器,从左到右预测下一个 token,代表是 GPT;
- 去噪编码器-解码器(denoising seq2seq):双向编码器读入被破坏的文本,自回归解码器还原原文,代表是 BART;
- 统一 text-to-text:所有任务都写成“输入文本 → 输出文本”,用编码器-解码器生成目标,代表是 T5。
三者都不是单纯的“模型大小”差异,而是预训练目标决定了它们更适合理解还是生成。
GPT:自回归预训练
GPT(Generative Pre-Training)由 OpenAI 在 2018 年提出,使用 Transformer 解码器堆叠。每个位置只能看到自己和左侧的 token,训练目标是标准的因果语言模型:
由于严格遵循从左到右的因果顺序,GPT 可以直接用于生成:给定前缀,逐 token 采样或贪心解码。这一点与 ELMo 的双向 LSTM 和 BERT 的掩码训练不同。
预训练与微调
GPT 的训练分为两个阶段:
- 生成式预训练:在大规模无标注文本上做自监督的下一词预测,学习语言结构和世界知识;
- 下游微调:把任务输入送入 GPT,取最后一个位置的隐藏状态 ,接一个线性层做分类:
微调目标是在标注数据上最小化任务损失。由于微调数据通常远小于预训练语料,模型可能灾难性遗忘预训练学到的通用知识。GPT 的做法是把两个损失混合:
控制预训练语言模型损失的占比。辅助的语言模型损失相当于让模型在微调时继续接触语言建模,缓解遗忘。
GPT 的单向结构适合生成,但每个位置看不到右侧上下文,在需要整体语义的理解任务上不如 BERT。GPT-2、GPT-3 沿用了这一结构,并通过增大规模、上下文学习和提示学习,把“预训练 + 微调”推进到“预训练 + 提示”。
BART:去噪自编码器
BART(Bidirectional and Auto-Regressive Transformers)采用完整的编码器-解码器结构:
- 编码器是双向 Transformer,可以同时利用左右上下文;
- 解码器是自回归 Transformer,从左到右生成输出;
- 预训练目标是去噪:对原文加噪,让模型还原原文。
BART 可以看作“BERT 的双向编码器 + GPT 的自回归解码器”的组合,但它的预训练任务不是预测单个被遮蔽词,而是重建整段文本。
五种加噪方式
| 方式 | 操作 | 模型需要学到什么 |
|---|---|---|
| Token Masking | 随机把 token 替换为 [MASK] | 根据上下文填补单词 |
| Token Deletion | 随机删除 token | 预测缺失词及其位置 |
| Text Infilling | 把连续片段替换为单个 [MASK],片段长度服从 Poisson() | 判断片段长度并重建内容 |
| Sentence Permutation | 打乱句子顺序 | 理解句间关系并还原顺序 |
| Document Rotation | 随机选一个 token 作为文档开头并旋转 | 找出原文真正的起始位置 |
这些噪声覆盖 token、句子和文档三个层次,迫使模型学习语法、语义和篇章结构。实验表明,Text Infilling 对下游任务尤其有效。
微调
BART 同时支持理解和生成:
- 理解任务(如序列分类):输入同时送入编码器和解码器,用解码器最后一个位置的隐藏状态作为整段文本的表示,再接分类器;
- 生成任务(如摘要、生成式问答):输入是任务文本,解码器自回归生成目标文本,用生成结果与参考文本的差异作为损失。
BART 的编码器提供双向理解,解码器提供生成能力,因此在摘要、翻译、对话等任务上表现很强。
T5:把一切变成 text-to-text
T5(Text-to-Text Transfer Transformer)的核心主张是:所有 NLP 任务都统一为“输入一段文本,输出一段文本”。分类任务把标签当作目标文本,翻译、问答、摘要也都写成生成任务:
输入:translate English to German: The house is wonderful.输出:Das Haus ist wunderbar.
输入:cola sentence: The course is jumping well.输出:not acceptable模型统一使用 Transformer 编码器-解码器。训练数据 C4 包含约 750G 高质量英文文本。T5 论文系统比较了三种架构:
| 架构 | 注意力方式 | 特点 |
|---|---|---|
| Encoder-Decoder | 编码器双向,解码器因果 | 理解与生成分离,适合 seq2seq |
| Decoder-only | 全部因果 | 结构简单,适合纯生成 |
| Prefix LM | 前缀双向,后缀因果 | 介于两者之间 |
在相同计算预算下,编码器-解码器结构表现最好,因此 T5 采用这一结构。
Span Corruption
T5 的预训练任务是 span corruption:随机选择若干连续片段,把每个片段替换为一个哨兵 token(如 <extra_id_0>),解码器输出这些哨兵对应的原始片段:
输入:The <extra_id_0> is <extra_id_1>.输出:<extra_id_0> quick brown fox <extra_id_1> lazy dog与 BERT 逐 token 预测相比,span corruption 一次预测一个片段,解码器需要生成连续文本,更接近 seq2seq 的生成形式;与 BART 的整句去噪相比,它的目标更短、训练更高效。
统一框架的意义
T5 证明了:只要把任务形式统一,同一个模型、同一套参数、同一个解码过程就可以处理分类、翻译、问答和摘要。这种“text-to-text”思想影响了后续的指令微调和大模型任务格式;大语言模型中的 SFT 也延续了“把任务写成输入输出文本”的做法。
对比
| 模型 | 结构 | 预训练目标 | 擅长 |
|---|---|---|---|
| GPT | Decoder-only,因果注意力 | 下一词预测 | 生成、续写、对话 |
| BERT | Encoder-only,双向注意力 | MLM + NSP | 分类、抽取式问答、序列标注 |
| BART | Encoder-Decoder | 多种去噪任务 | 摘要、翻译、生成式理解 |
| T5 | Encoder-Decoder | Span corruption | 统一的 text-to-text 任务 |
从表示能力看,编码器-解码器同时具备双向理解和自回归生成;从训练效率看,decoder-only 结构简单、易于扩展到超大模型,最终成为现代大语言模型的主流架构,具体结构见 Decoder-only Transformer。