人工智能实践(语言智能)
第2讲:Transformer

2.5 三类架构:Encoder-only / Decoder-only / Encoder-Decoder

BERT、GPT/LLaMA、T5/BART 三类 Transformer 架构的掩码差异、适用任务与模型选型对照

同样的 Block,三种拼法

Transformer Block 是一个通用组件。根据如何拼装用什么掩码预训练目标是什么,整个模型可以落到三类架构中的某一类。这三类架构分别对应了 NLP 领域的三种主流"使用方式":

  • Encoder-only:理解任务(分类、抽取、检索)
  • Decoder-only:生成任务(对话、创作、代码)
  • Encoder-Decoder:序列到序列任务(翻译、摘要、结构化生成)

三者的本质差别不在堆了多少 Block,而在 Attention 里用什么掩码

掩码(Mask)是灵魂

Self-Attention 的核心公式中有一个 Mask 参数:

Attention(Q,K,V)=softmax(QKdk+M)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}} + M\right) V

其中 MM 是一个 n×nn \times n 的矩阵,被屏蔽的位置置为 -\infty(softmax 后即 0),未屏蔽的位置置为 0。三类架构用的掩码如下:

双向掩码(Bidirectional):BERT

Mij=0,i,jM_{ij} = 0, \quad \forall i, j

每个 token 可以看到序列中所有位置——包括它后面的。这对"理解"任务是理想的:做情感分类要看完整句话,做命名实体识别要看上下文。

因果掩码(Causal / Unidirectional):GPT、LLaMA

Mij={0if jiif j>iM_{ij} = \begin{cases} 0 & \text{if } j \le i \\ -\infty & \text{if } j > i \end{cases}

token 只能看到自己和之前的位置。这是自回归语言建模的数学约束——预测第 tt 个 token 时不能"偷看"第 t+1t+1 个。因果掩码保证了训练时的 teacher forcing 与推理时逐 token 生成的等价性。

# 因果掩码的实现
def causal_mask(n):
    return torch.tril(torch.ones(n, n)).view(1, 1, n, n)  # 下三角为 1,上三角为 0

# 在 attention 中应用
scores = scores.masked_fill(causal_mask(n) == 0, float("-inf"))

混合掩码:Encoder-Decoder(T5)

在 Encoder-Decoder 架构里,掩码情况更复杂:

  • Encoder Self-Attention:双向掩码(对整个输入完全可见)
  • Decoder Self-Attention:因果掩码(目标序列只能看前面)
  • Decoder Cross-Attention:Decoder 的 Query 看 Encoder 输出的 Key/Value,不需要掩码(输入对 Decoder 完全可见)

还有一类前缀语言模型(Prefix LM)——输入部分用双向注意力,输出部分用因果注意力。代表模型 GLM 和 UniLM。可以看作是 Encoder-Decoder 的简化版(共享参数,一个塔)。

Encoder-only:BERT 家族

代表模型:BERT(2018)、RoBERTa(2019)、DeBERTa(2020)、XLNet(2019)、ELECTRA(2020)。

结构NN 层双向 Transformer Encoder,顶部接 [CLS] token 的分类头或逐 token 的序列标注头。

预训练目标:Masked Language Modeling(MLM)——随机掩 15% 的 token 让模型预测(下节详述)。

优势与劣势

优势劣势
双向建模,对理解任务最优不能生成(预测要一次输出整序列)
训练目标与下游任务匹配好参数规模通常较小(BERT-large 只有 340M)
微调后单任务效果强不能扩展到对话等生成场景

适合的任务:分类、序列标注、语义相似度、信息抽取、检索重排序。

Decoder-only:GPT / LLaMA 家族

代表模型:GPT-1/2/3/4(2018–2023)、LLaMA 1/2/3(2023–2024)、Qwen(2023–2026)、DeepSeek(2024–2026)、Claude(Anthropic,2023–2026)。

结构NN 层因果 Transformer Decoder,顶部接 LM Head(与词嵌入共享权重)。

预训练目标:Causal Language Modeling(CLM)——从左到右预测下一个 token。

优势与劣势

优势劣势
任务统一为"生成"双向上下文要靠 prompt 技巧模拟
同一个模型可做所有任务(靠 prompt)早期版本(GPT-2)规模小效果差
易扩展到万亿参数(LLaMA-405B)推理时要逐 token 生成,成本高
天然支持 Few-shot 和 CoT

适合的任务:对话、创作、代码、Chain-of-Thought 推理、Agent——今天 90% 的"大模型"属于这类

Encoder-Decoder:T5 / BART 家族

代表模型:T5(2019)、BART(2019)、mT5(2020)、FLAN-T5(2022)、NLLB(2022)。

结构:Encoder 把输入编码成上下文表示,Decoder 基于上下文自回归生成目标序列。Decoder 的每层有Self-Attention(因果)Cross-Attention(看 Encoder) 两个注意力子层。

预训练目标:去噪(Denoising)——给输入加噪声(随机删除、打乱、掩蔽片段),让 Decoder 还原原文。

优势与劣势

优势劣势
显式区分输入和输出,适合翻译、摘要参数翻倍(Encoder + Decoder)
Encoder 侧双向,理解能力强训练和推理工程更复杂
在结构化输入 → 输出任务上优势明显在纯生成任务上被 Decoder-only 超越

适合的任务:机器翻译、摘要、结构化文档重写、Text-to-SQL(早期)。

为什么 Decoder-only 赢了

2022 年之后,Decoder-only 几乎"一家独大"。原因不是 Decoder 更强,而是:

  1. 任务统一:把所有 NLP 任务重写成"给定 prompt,生成回答",一个模型打天下
  2. 扩展性:加参数、加数据就能变强(Scaling Laws);Encoder-Decoder 架构的 Scaling 实验远不如 Decoder-only 充分
  3. 对齐友好:RLHF、DPO、偏好学习等对齐方法天然适合生成模型
  4. 工程生态:KV Cache、推测解码、vLLM 等推理优化都围绕 Decoder-only 展开

这不意味着 Encoder-only 和 Encoder-Decoder 过时。在效率敏感的场景(大规模向量检索、线上分类),BERT-base(110M)比 LLaMA-8B 便宜两个数量级;在翻译、摘要、纠错等经典 seq2seq 任务上,T5 系列仍有竞争力。选模型的第一问题永远是"任务是什么",而不是"哪个最新"。

模型选型对照表

任务类型首选架构推荐模型备注
文本分类Encoder-onlyRoBERTa / DeBERTa-v310ms 级推理、0.1B 参数
命名实体识别 / 序列标注Encoder-onlyDeBERTa-v3 / XLM-R多语言选 XLM-R
语义相似度 / 向量检索Encoder-onlybge-m3 / e5 / GTE一般用双塔
重排序(Cross-encoder)Encoder-onlybge-reranker / mxbai单塔效果更好
机器翻译Encoder-DecoderNLLB / M2M-100 / GPT-4专用模型仍有优势
摘要 / 改写Encoder-Decoder / Decoder-onlyT5 / FLAN-T5 / GPT-4长文档选 Decoder
对话 / 问答 / ChatDecoder-onlyQwen3 / LLaMA-3 / GPT-4默认选择
代码生成Decoder-onlyQwen-Coder / DeepSeek-Coder专用 checkpoint
复杂推理 / AgentDecoder-only(+ 推理强化)Qwen3-Thinking / o1 / Claude要支持 CoT

一个常被混淆的问题:"BERT 能做生成吗?"

可以,但很别扭。BERT 的 MLM 目标是填空,不是下一个 token 预测。硬要让 BERT 生成,有两种方式:

  1. 迭代掩码填充:从全 [MASK] 开始,每次选一个 token 填回去——极慢且质量差
  2. 后续工作如 BART / MASS:已经等于 Encoder-Decoder 了

现代实践中,需要生成就用 Decoder-only,需要双向理解就用 Encoder-only。中间灵活地带(Prefix LM、UniLM)在工程上几乎被遗忘。

本节小结

架构掩码代表预训练目标适用
Encoder-only双向BERT、RoBERTa、DeBERTaMLM理解、分类、检索
Decoder-only因果GPT、LLaMA、QwenCLM生成、对话、CoT
Encoder-Decoder混合T5、BART、NLLBDenoising翻译、摘要、seq2seq

下一节我们把"预训练目标"单独拉出来讲——MLM / CLM / Denoising / Prefix LM 这四种到底在训练什么、规模律是什么样的、怎样过渡到后训练。