Transformer 核心架构:Encoder-Decoder 读书笔记

一、 核心思想:Seq2Seq 任务与编码-解码范式

  1. Seq2Seq 任务本质:

    • 定义:输入一个序列 input = (x₁, x₂, ..., xₙ),输出一个可能不等长的序列 output = (y₁, y₂, ..., yₘ)
    • 普遍性:几乎所有 NLP 任务(如机器翻译、文本摘要、文本分类)都可抽象为 Seq2Seq 任务。
  2. 编码-解码框架:

    • 编码:将输入的自然语言序列,通过神经网络转换成一个富含语义信息的向量/矩阵表示。可以理解为一种“高级词向量”。
    • 解码:利用编码得到的语义向量,通过另一个神经网络,逐步生成目标自然语言序列。
    • Transformer 的角色:Transformer 是一个经典的 Seq2Seq 模型,其 Encoder 负责编码,Decoder 负责解码。

二、 Transformer 整体结构

  • 组件构成:Transformer 由一个 Encoder 堆栈和一个 Decoder 堆栈组成。
  • 层级结构:
    • Encoder 由 N 个(原文为 6 个)相同的 Encoder Layer 堆叠而成。
    • Decoder 由 N 个(原文为 6 个)相同的 Decoder Layer 堆叠而成。
  • 信息流:输入序列 → Encoder → 编码结果 → Decoder 的每一层 → 输出目标序列。

三、 关键基础组件

在深入 Encoder 和 Decoder 之前,需要理解其内部共有的三个关键组件:

  1. 前馈神经网络

    • 作用:在每个注意力子层之后,对序列中的每个位置进行非线性变换,增强模型的表达能力。
    • 结构:由两个线性层和一个 ReLU 激活函数组成:Linear → ReLU → Linear
    • 位置:作用于每个 token 独立,不改变序列长度。
  2. 层归一化

    • 作用:稳定深层神经网络的训练。将每一层输入的分布归一化为标准正态分布,缓解“内部协变量偏移”问题。
    • 与 Batch Norm 的区别:
      • Batch Norm:在一个 batch 内,对同一特征维度的所有样本进行归一化。依赖 batch 大小,不适用于 RNN 和在线学习。
      • Layer Norm:对单个样本的所有特征维度进行归一化。独立于 batch,更适合 NLP 任务和 Transformer。
    • 实现:包含可学习的缩放(γ)和平移(β)参数,让网络可以恢复需要的分布。
  3. 残差连接

    • 作用:解决深度网络中的“梯度消失”和“模型退化”问题,让信息更顺畅地流动。
    • 原理:将子层的输入直接加到其输出上:Output = SubLayer(Input) + Input
    • Transformer 中的应用:每个子层(注意力层或 FNN)的输出都会与输入相加,然后再进行 LayerNorm。这种结构被称为 “Post-LN”(文中代码实现方式)。

四、 Encoder 结构详解

  • 核心单元:EncoderLayer
  • 内部构成:一个 EncoderLayer 包含两个子层:
    1. 多头自注意力层:计算输入序列内部的相互依赖关系。每个 token 都可以“看到”序列中的所有其他 token。
    2. 前馈神经网络:对注意力输出的表示进行进一步变换。
  • 数据处理流程:
    1. 输入 x → LayerNorm → Multi-Head Self-Attention → 与输入 x 相加(残差连接)→ 得到中间结果 h
    2. 中间结果 h → LayerNorm → Feed Forward Network → 与 h 相加(残差连接)→ 得到该层的最终输出。
  • 整体 Encoder:由 N 个 EncoderLayer 堆叠而成,最后接一个最终的 LayerNorm 层。

五、 Decoder 结构详解

  • 核心单元:DecoderLayer
  • 内部构成:一个 DecoderLayer 包含三个子层:
    1. 掩码多头自注意力层:
      • 作用:与 Encoder 的自注意力类似,但加入了掩码。
      • 目的:确保在生成第 i 个词时,模型只能看到第 1 到 i-1 个已生成的词,不能“偷看”未来的信息。这是实现自回归生成的关键。
    2. 编码器-解码器注意力层:
      • 作用:连接 Encoder 和 Decoder 的桥梁。
      • 机制:使用 Decoder 上一层(掩码自注意力)的输出作为 Query,使用 Encoder 最终的输出作为 Key 和 Value。这样,Decoder 在生成每个词时,可以关注到输入源序列中最相关的部分。
    3. 前馈神经网络:与 Encoder 中的 FNN 完全相同。
  • 数据处理流程:
    1. 输入 x → LayerNorm → Masked Multi-Head Self-Attention → 与输入 x 相加(残差连接)。
    2. 上一步结果 → LayerNorm → Multi-Head Attention (Query 来自 Decoder, Key/Value 来自 Encoder) → 与上一步结果相加(残差连接)。
    3. 上一步结果 → LayerNorm → Feed Forward Network → 与上一步结果相加(残差连接)→ 得到该层的最终输出。
  • 整体 Decoder:由 N 个 DecoderLayer 堆叠而成,最后接一个最终的 LayerNorm 层。

六、 总结与要点

  1. 架构范式:Transformer 基于 Encoder-Decoder 架构,完美契合 Seq2Seq 任务。
  2. 核心创新:完全摒弃 RNN/CNN,仅通过自注意力机制捕获序列依赖关系,实现了并行化计算和长距离依赖建模。
  3. 三大基石:残差连接、层归一化和前馈网络是构建稳定、深层 Transformer 的基础,它们与注意力机制协同工作。
  4. 编解码差异:
    • Encoder:专注于“理解”输入,内部是双向的自注意力。
    • Decoder:专注于“生成”输出,内部是带掩码的单向自注意力和一个跨模块的注意力机制。
  5. 后世影响:Transformer 的 Encoder-Decoder 结构启发了后续众多模型,如仅使用 Encoder 的 BERT(擅长理解任务)和仅使用 Decoder 的 GPT(擅长生成任务)。
posted @ 2025-11-16 00:15  十一分平庸  阅读(61)  评论(0)    收藏  举报