# 5.3 编码器-解码器预训练：两种范式的统一

除了纯编码器（BERT）和纯解码器（GPT），还有第三条路：使用完整的编码器-解码器结构进行预训练。T5 和 BART 是这一方向的代表作。

## 5.3.1 T5：将一切转化为文本生成

Google 在 2019 年提出的 **T5**（Text-to-Text Transfer Transformer，arXiv 预印本发表于 2019 年 10 月，正式发表于 2020 年）的核心思想是：**将所有 NLP 任务统一为文本到文本的生成问题。**

* 翻译：“translate English to French: The house is wonderful.” → “La maison est merveilleuse.”
* 分类：“sentiment: This movie is terrible.” → “negative”
* 摘要：“summarize: \[长文本]” → “\[摘要]”
* 问答：“question: What is the capital of France? context: ...” → “Paris”

这种统一带来了一个重要的工程优势：**同一个模型和同一套训练/推理流程可以处理所有任务**，无需为每个任务设计专门的头部（如分类头、序列标注头等）。

T5 的预训练使用了**文本填充**（Span Corruption）目标：随机遮盖输入中的连续片段（spans），用编码器处理被破坏的输入，解码器负责生成被遮盖的片段。这可以看作是 MLM 的一种推广——从预测单个词扩展到了预测连续片段。

## 5.3.2 BART：去噪自编码器

Facebook 的 **BART**（arXiv 预印本发表于 2019 年 10 月，正式发表于 2020 年）将预训练视为一种**序列去噪**任务。它对输入文本施加各种形式的噪声，然后训练模型恢复原始文本：

* **词元遮盖**：类似 BERT，用特殊标记替换部分词元
* **词元删除**：直接删除某些词元（比遮盖更难——模型还需要推断删除的位置）
* **句子排列**：打乱句子的顺序
* **文档旋转**：从随机位置开始旋转文档
* **片段填充**：用单个 `[MASK]` 标记替换一个连续片段

编码器处理带噪声的输入，解码器生成原始的干净文本。这种“去噪自编码器”的框架非常灵活，且自然地利用了编码器-解码器架构的优势。

## 5.3.3 三种架构范式的对比

| 范式      | 架构      | 预训练目标   | 优势      | 局限    | 代表模型    |
| ------- | ------- | ------- | ------- | ----- | ------- |
| 自回归     | 仅解码器    | 下一词元预测  | 强大的生成能力 | 单向上下文 | GPT 系列  |
| 掩码 LM   | 仅编码器    | 完形填空    | 双向上下文   | 不擅长生成 | BERT 系列 |
| Seq2Seq | 编码器-解码器 | 文本填充/去噪 | 兼顾理解与生成 | 参数量翻倍 | T5、BART |

表 5-1：三种预训练范式对比

值得注意的是，虽然编码器-解码器模型理论上兼具理解和生成能力，但在大规模实践中，**纯解码器的自回归模型凭借更简洁的架构和更好的扩展性成为了绝对主流**。这并非因为其他范式缺乏价值，而是因为在超大规模下，足够大的自回归模型展现出的通用能力已经足以覆盖几乎所有任务。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/llm_internals/di-er-bu-fen-xun-lian-pian/05_pretraining/5.3_encoder_decoder.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
