编码器-解码器结构(Encoder-Decoder)入门
📅 主题:Transformer 中 Encoder-Decoder 的职责分工与工作流程
一、什么是编码器-解码器结构
编码器-解码器(Encoder-Decoder) 是一种经典的序列建模架构,核心思想是:
- 编码器(Encoder) 先把输入序列编码成上下文表示;
- 解码器(Decoder) 再基于这些表示一步步生成输出序列。
可以把它理解为:
- 编码器负责“读懂输入”
- 解码器负责“按目标格式写出输出”
在机器翻译、摘要、问答生成、语音转文本等任务中都非常常见。
二、为什么需要这种分工
对很多任务来说,输入和输出并不是同一种文本形式,例如:
- 翻译:中文输入 → 英文输出
- 摘要:长文输入 → 短摘要输出
- 对话:用户问题输入 → 回复输出
编码器-解码器结构的优势是:
- 输入理解和输出生成解耦:职责清晰
- 便于跨模态/跨语言:输入输出空间可不同
- 可控生成过程:解码器按 token 逐步生成,支持长度控制、采样策略
三、Transformer 中的 Encoder 与 Decoder
在 Transformer 里,这个架构被标准化成两套堆叠模块。
3.1 Encoder(编码器)
每层一般包含:
- 多头自注意力(Multi-Head Self-Attention)
- 前馈网络(Feed Forward Network)
- 残差连接 + LayerNorm
编码器输入是整段源序列(可并行处理),输出是每个位置的上下文化向量表示。
3.2 Decoder(解码器)
每层一般包含:
- 掩码自注意力(Masked Self-Attention)
- 交叉注意力(Cross-Attention)
- 前馈网络(FFN)
- 残差连接 + LayerNorm
其中关键是:
- 掩码自注意力:只能看见已生成内容,不能偷看未来 token
- 交叉注意力:让解码器在生成时读取编码器输出(即“对输入对齐”)
四、工作流程(以翻译为例)
假设任务:把 我喜欢机器学习 翻译成英文。
- 输入句子进入 Encoder,得到上下文表示
H - Decoder 从起始标记
<BOS>开始 - 第一步预测第一个词(如
I) - 将
I作为下一步输入,继续预测like - 重复直到生成结束标记
<EOS>
每一步预测都依赖:
- 已生成的历史 token(Masked Self-Attention)
- 编码器输出
H(Cross-Attention)
这就是标准的自回归生成流程。
五、掩码与交叉注意力为什么关键
5.1 掩码(Causal Mask)
如果不加掩码,训练时 Decoder 会看到“未来正确答案”,推理时却看不到,造成训练-推理不一致。
掩码保证它始终只能基于过去位置预测当前 token,和推理阶段一致。
5.2 交叉注意力(Cross-Attention)
仅靠 Decoder 自注意力会让生成更像“续写”。
交叉注意力让解码器对齐输入内容,确保输出真正基于源信息,而不是自由发挥。
六、与三类主流 LLM 架构的关系
当前常见模型大致分三类:
- Encoder-only(如 BERT)
- 更擅长理解任务(分类、检索、表示学习)
- Decoder-only(如 GPT)
- 更擅长生成任务(续写、对话、代码生成)
- Encoder-Decoder(如 T5、BART)
- 天然适合“输入到输出”的 Seq2Seq 任务(翻译、摘要、改写)
这也是为什么不同模型在不同任务上表现风格不同。
七、工程视角:优缺点
优点
- 输入输出分工明确,适配通用序列转换任务
- 交叉注意力可显式“读输入”,对齐性好
- 对结构化生成任务(如模板化输出)常更稳定
挑战
- 计算开销较大(两套堆叠 + 交叉注意力)
- 训练和部署复杂度高于纯 Decoder 架构
- 在超长上下文场景下,需要额外优化策略
八、在应用开发中的启示
即使你不直接训练模型,理解 Encoder-Decoder 也有帮助:
- 模型选型:翻译/摘要等 seq2seq 任务可优先考虑此类架构
- 任务设计:明确输入与输出边界,便于模型“先理解再生成”
- 效果解释:当输出偏离输入时,往往与“输入信息对齐不足”有关
- RAG 配合:检索片段相当于强化输入侧语义,帮助 Decoder 生成更稳
九、小结
- 编码器-解码器结构通过“先编码输入、再条件生成输出”解决序列转换任务。
- Encoder 负责理解上下文,Decoder 负责逐步生成。
- Decoder 中的掩码自注意力保证自回归一致性,交叉注意力保证对输入对齐。
- 与 Encoder-only、Decoder-only 相比,Encoder-Decoder 在翻译、摘要等任务上更天然。
- 理解该结构有助于模型选型、系统设计与生成质量分析。
掌握编码器-解码器结构,你就完成了 Transformer 核心模块的关键拼图。