Transformer 核心架构:Encoder-Decoder 读书笔记
一、 核心思想:Seq2Seq 任务与编码-解码范式
-
Seq2Seq 任务本质:
- 定义:输入一个序列
input = (x₁, x₂, ..., xₙ),输出一个可能不等长的序列output = (y₁, y₂, ..., yₘ)。 - 普遍性:几乎所有 NLP 任务(如机器翻译、文本摘要、文本分类)都可抽象为 Seq2Seq 任务。
- 定义:输入一个序列
-
编码-解码框架:
- 编码:将输入的自然语言序列,通过神经网络转换成一个富含语义信息的向量/矩阵表示。可以理解为一种“高级词向量”。
- 解码:利用编码得到的语义向量,通过另一个神经网络,逐步生成目标自然语言序列。
- Transformer 的角色:Transformer 是一个经典的 Seq2Seq 模型,其 Encoder 负责编码,Decoder 负责解码。
二、 Transformer 整体结构
- 组件构成:Transformer 由一个 Encoder 堆栈和一个 Decoder 堆栈组成。
- 层级结构:
- Encoder 由 N 个(原文为 6 个)相同的 Encoder Layer 堆叠而成。
- Decoder 由 N 个(原文为 6 个)相同的 Decoder Layer 堆叠而成。
- 信息流:输入序列 → Encoder → 编码结果 → Decoder 的每一层 → 输出目标序列。
三、 关键基础组件
在深入 Encoder 和 Decoder 之前,需要理解其内部共有的三个关键组件:
-
前馈神经网络
- 作用:在每个注意力子层之后,对序列中的每个位置进行非线性变换,增强模型的表达能力。
- 结构:由两个线性层和一个 ReLU 激活函数组成:
Linear → ReLU → Linear。 - 位置:作用于每个 token 独立,不改变序列长度。
-
层归一化
- 作用:稳定深层神经网络的训练。将每一层输入的分布归一化为标准正态分布,缓解“内部协变量偏移”问题。
- 与 Batch Norm 的区别:
- Batch Norm:在一个 batch 内,对同一特征维度的所有样本进行归一化。依赖 batch 大小,不适用于 RNN 和在线学习。
- Layer Norm:对单个样本的所有特征维度进行归一化。独立于 batch,更适合 NLP 任务和 Transformer。
- 实现:包含可学习的缩放(
γ)和平移(β)参数,让网络可以恢复需要的分布。
-
残差连接
- 作用:解决深度网络中的“梯度消失”和“模型退化”问题,让信息更顺畅地流动。
- 原理:将子层的输入直接加到其输出上:
Output = SubLayer(Input) + Input。 - Transformer 中的应用:每个子层(注意力层或 FNN)的输出都会与输入相加,然后再进行 LayerNorm。这种结构被称为 “Post-LN”(文中代码实现方式)。
四、 Encoder 结构详解
- 核心单元:
EncoderLayer - 内部构成:一个
EncoderLayer包含两个子层:- 多头自注意力层:计算输入序列内部的相互依赖关系。每个 token 都可以“看到”序列中的所有其他 token。
- 前馈神经网络:对注意力输出的表示进行进一步变换。
- 数据处理流程:
- 输入
x→ LayerNorm → Multi-Head Self-Attention → 与输入x相加(残差连接)→ 得到中间结果h。 - 中间结果
h→ LayerNorm → Feed Forward Network → 与h相加(残差连接)→ 得到该层的最终输出。
- 输入
- 整体 Encoder:由 N 个
EncoderLayer堆叠而成,最后接一个最终的 LayerNorm 层。
五、 Decoder 结构详解
- 核心单元:
DecoderLayer - 内部构成:一个
DecoderLayer包含三个子层:- 掩码多头自注意力层:
- 作用:与 Encoder 的自注意力类似,但加入了掩码。
- 目的:确保在生成第
i个词时,模型只能看到第1到i-1个已生成的词,不能“偷看”未来的信息。这是实现自回归生成的关键。
- 编码器-解码器注意力层:
- 作用:连接 Encoder 和 Decoder 的桥梁。
- 机制:使用 Decoder 上一层(掩码自注意力)的输出作为 Query,使用 Encoder 最终的输出作为 Key 和 Value。这样,Decoder 在生成每个词时,可以关注到输入源序列中最相关的部分。
- 前馈神经网络:与 Encoder 中的 FNN 完全相同。
- 掩码多头自注意力层:
- 数据处理流程:
- 输入
x→ LayerNorm → Masked Multi-Head Self-Attention → 与输入x相加(残差连接)。 - 上一步结果 → LayerNorm → Multi-Head Attention (Query 来自 Decoder, Key/Value 来自 Encoder) → 与上一步结果相加(残差连接)。
- 上一步结果 → LayerNorm → Feed Forward Network → 与上一步结果相加(残差连接)→ 得到该层的最终输出。
- 输入
- 整体 Decoder:由 N 个
DecoderLayer堆叠而成,最后接一个最终的 LayerNorm 层。
六、 总结与要点
- 架构范式:Transformer 基于 Encoder-Decoder 架构,完美契合 Seq2Seq 任务。
- 核心创新:完全摒弃 RNN/CNN,仅通过自注意力机制捕获序列依赖关系,实现了并行化计算和长距离依赖建模。
- 三大基石:残差连接、层归一化和前馈网络是构建稳定、深层 Transformer 的基础,它们与注意力机制协同工作。
- 编解码差异:
- Encoder:专注于“理解”输入,内部是双向的自注意力。
- Decoder:专注于“生成”输出,内部是带掩码的单向自注意力和一个跨模块的注意力机制。
- 后世影响:Transformer 的 Encoder-Decoder 结构启发了后续众多模型,如仅使用 Encoder 的 BERT(擅长理解任务)和仅使用 Decoder 的 GPT(擅长生成任务)。

浙公网安备 33010602011771号