Skip to content

编码器-解码器结构(Encoder-Decoder)入门

📅 主题:Transformer 中 Encoder-Decoder 的职责分工与工作流程

一、什么是编码器-解码器结构

编码器-解码器(Encoder-Decoder) 是一种经典的序列建模架构,核心思想是:

  1. 编码器(Encoder) 先把输入序列编码成上下文表示;
  2. 解码器(Decoder) 再基于这些表示一步步生成输出序列。

可以把它理解为:

  • 编码器负责“读懂输入”
  • 解码器负责“按目标格式写出输出”

在机器翻译、摘要、问答生成、语音转文本等任务中都非常常见。


二、为什么需要这种分工

对很多任务来说,输入和输出并不是同一种文本形式,例如:

  • 翻译:中文输入 → 英文输出
  • 摘要:长文输入 → 短摘要输出
  • 对话:用户问题输入 → 回复输出

编码器-解码器结构的优势是:

  • 输入理解和输出生成解耦:职责清晰
  • 便于跨模态/跨语言:输入输出空间可不同
  • 可控生成过程:解码器按 token 逐步生成,支持长度控制、采样策略

三、Transformer 中的 Encoder 与 Decoder

在 Transformer 里,这个架构被标准化成两套堆叠模块。

3.1 Encoder(编码器)

每层一般包含:

  1. 多头自注意力(Multi-Head Self-Attention)
  2. 前馈网络(Feed Forward Network)
  3. 残差连接 + LayerNorm

编码器输入是整段源序列(可并行处理),输出是每个位置的上下文化向量表示。

3.2 Decoder(解码器)

每层一般包含:

  1. 掩码自注意力(Masked Self-Attention)
  2. 交叉注意力(Cross-Attention)
  3. 前馈网络(FFN)
  4. 残差连接 + LayerNorm

其中关键是:

  • 掩码自注意力:只能看见已生成内容,不能偷看未来 token
  • 交叉注意力:让解码器在生成时读取编码器输出(即“对输入对齐”)

四、工作流程(以翻译为例)

假设任务:把 我喜欢机器学习 翻译成英文。

  1. 输入句子进入 Encoder,得到上下文表示 H
  2. Decoder 从起始标记 <BOS> 开始
  3. 第一步预测第一个词(如 I
  4. I 作为下一步输入,继续预测 like
  5. 重复直到生成结束标记 <EOS>

每一步预测都依赖:

  • 已生成的历史 token(Masked Self-Attention)
  • 编码器输出 H(Cross-Attention)

这就是标准的自回归生成流程。


五、掩码与交叉注意力为什么关键

5.1 掩码(Causal Mask)

如果不加掩码,训练时 Decoder 会看到“未来正确答案”,推理时却看不到,造成训练-推理不一致。
掩码保证它始终只能基于过去位置预测当前 token,和推理阶段一致。

5.2 交叉注意力(Cross-Attention)

仅靠 Decoder 自注意力会让生成更像“续写”。
交叉注意力让解码器对齐输入内容,确保输出真正基于源信息,而不是自由发挥。


六、与三类主流 LLM 架构的关系

当前常见模型大致分三类:

  1. Encoder-only(如 BERT)
    • 更擅长理解任务(分类、检索、表示学习)
  2. Decoder-only(如 GPT)
    • 更擅长生成任务(续写、对话、代码生成)
  3. Encoder-Decoder(如 T5、BART)
    • 天然适合“输入到输出”的 Seq2Seq 任务(翻译、摘要、改写)

这也是为什么不同模型在不同任务上表现风格不同。


七、工程视角:优缺点

优点

  • 输入输出分工明确,适配通用序列转换任务
  • 交叉注意力可显式“读输入”,对齐性好
  • 对结构化生成任务(如模板化输出)常更稳定

挑战

  • 计算开销较大(两套堆叠 + 交叉注意力)
  • 训练和部署复杂度高于纯 Decoder 架构
  • 在超长上下文场景下,需要额外优化策略

八、在应用开发中的启示

即使你不直接训练模型,理解 Encoder-Decoder 也有帮助:

  1. 模型选型:翻译/摘要等 seq2seq 任务可优先考虑此类架构
  2. 任务设计:明确输入与输出边界,便于模型“先理解再生成”
  3. 效果解释:当输出偏离输入时,往往与“输入信息对齐不足”有关
  4. RAG 配合:检索片段相当于强化输入侧语义,帮助 Decoder 生成更稳

九、小结

  1. 编码器-解码器结构通过“先编码输入、再条件生成输出”解决序列转换任务。
  2. Encoder 负责理解上下文,Decoder 负责逐步生成。
  3. Decoder 中的掩码自注意力保证自回归一致性,交叉注意力保证对输入对齐。
  4. 与 Encoder-only、Decoder-only 相比,Encoder-Decoder 在翻译、摘要等任务上更天然。
  5. 理解该结构有助于模型选型、系统设计与生成质量分析。

掌握编码器-解码器结构,你就完成了 Transformer 核心模块的关键拼图。

Released under the MIT License.