Transformer是当今人工智能,尤其是大语言模型和生成式AI的基石架构。我将为你详细拆解其每一个组件,并阐明其设计精妙之处。

🏗️ 核心思想与整体架构

Transformer的核心思想是:完全依赖“自注意力”机制,摒弃了传统的循环或卷积结构,从而实现了前所未有的并行化能力和对序列中长程依赖关系的直接捕获。

其整体架构遵循经典的 编码器-解码器 结构,但两者均由多个完全相同的“层”堆叠而成。下图清晰地展示了其整体数据流和核心模块:

解码器 Decoder

“编码后的记忆”
(K, V)

单个解码器层

带掩码的多头自注意力

Add & Norm

多头交叉注意力

Add & Norm

前馈网络

Add & Norm

单个编码器层

多头自注意力

Add & Norm
残差连接与层归一化

前馈网络

Add & Norm

编码器 Encoder

输入编码
(词嵌入 + 位置编码)

编码器层#1

编码器层#2/更多层

输出(shifted right)编码
(词嵌入 + 位置编码)

解码器层#1

解码器层#2/更多层

线性层 + Softmax

输出概率

🧩 核心组件详解

1. 自注意力机制

这是Transformer的灵魂。其目标是:计算序列中每个词与其他所有词的相关性权重,从而根据上下文动态地为每个词生成一个新的、融合了全局信息的表示。

计算过程(缩放点积注意力)

  1. 生成Q、K、V:对每个输入词向量,分别通过三个不同的线性变换,生成查询向量键向量值向量
  2. 计算注意力分数:通过QK的点积,计算词与词之间的相关性。为防止点积结果过大导致梯度消失,会除以√(d_k)d_kK向量的维度)进行缩放。
  3. 归一化与加权求和:对分数使用Softmax进行归一化,得到注意力权重(所有词的权重和为1)。最后,用这个权重对V向量进行加权求和,得到该位置的输出。

关键公式Attention(Q, K, V) = softmax(QK^T / √(d_k)) V

直观理解:你可以将这个过程看作一个信息检索系统:

  • Q:代表当前词发出的“询问”——“我该关注谁?”
  • K:代表序列中每个词的“标签”——“我是谁?”
  • V:代表每个词真正要传递的“信息内容”。
2. 多头注意力

这是对自注意力的增强。模型并行地执行多次自注意力计算(即多个“头”),每个头使用不同的、可学习的线性变换将输入投影到不同的子空间,从而允许模型在不同位置上共同关注来自不同表示子空间的信息。

流程

  1. QKV通过h组不同的线性映射,分割成h份。
  2. 对每一份并行执行缩放点积注意力。
  3. h个头的输出拼接起来,再通过一个线性层融合信息。

设计目的:这就像用多组不同的“滤镜”同时观察同一段文本,有的头可能关注语法结构,有的头可能关注指代关系,有的头可能关注情感基调,最后将多方面的洞察综合起来,得到更丰富、更稳健的表示。

3. 位置编码

自注意力机制本身是“无序”的,它无法感知词语在序列中的先后顺序。位置编码的作用就是向模型注入序列的顺序信息。

方法:使用不同频率的正弦和余弦函数来生成每个位置的独特编码向量,然后与词嵌入向量直接相加。

为何有效:这种编码方式不仅能表示绝对位置,还能通过三角函数和角公式,让模型轻松学习到相对位置信息(例如“距离为k”的位置关系)。此外,它能外推到比训练序列更长的序列。

4. 前馈网络

这是一个应用于每个位置上的独立、全连接的两层神经网络,中间有一个ReLU激活函数。

作用:在自注意力完成了跨位置的“信息聚合”之后,FFN负责对每个位置的特征进行非线性变换和升维/降维,增强模型的表达能力。

5. 残差连接与层归一化

这是保证深层网络稳定训练的关键。

  • 残差连接:将每个子层(自注意力、FFN)的输入和输出直接相加。这缓解了梯度消失问题,使得模型可以堆叠得非常深。
  • 层归一化:在残差相加之后进行层归一化,稳定每层输出的分布,加速模型收敛。

🔄 Encoder 与 Decoder 的差异

  1. Encoder(编码器)

    • 由N个相同的层堆叠。
    • 每层包含一个多头自注意力子层和一个前馈网络子层
    • 其作用是双向地处理输入序列,将其编码为一系列富含上下文信息的“记忆”向量(即最终的K和V)。
  2. Decoder(解码器)

    • 也由N个相同的层堆叠。
    • 每层包含三个子层
      • 带掩码的多头自注意力子层:在生成第t个词时,只能看到1t-1位置的词(通过“掩码”实现未来的信息遮蔽),确保训练和预测时行为一致。
      • 多头交叉注意力子层:这是连接编码器和解码器的桥梁。解码器将自己的Q与从编码器最后一层输出传来的KV进行计算,从而让解码器在生成当前词时能够聚焦于输入序列最相关的部分。
      • 前馈网络子层
    • 最终通过一个线性层和Softmax,输出下一个词的概率分布。

💎 核心特性与深远影响

  1. 完全并行化:与RNN的串行计算不同,Transformer对序列中所有位置的计算可以同时进行,极大提升了训练效率,充分利用了GPU并行计算能力。
  2. 强大的长程依赖建模:自注意力机制让任意两个位置都能直接“交互”,从根本上解决了RNN和LSTM在处理长序列时的信息衰减问题。
  3. 可扩展性:其架构非常规整,易于堆叠(增加层数N)和扩展(增加模型维度d_model和注意力头数h),这直接催生了大语言模型的诞生。
  4. 成为通用基础架构:Transformer不仅统治了NLP领域(BERT, GPT, T5),还跨界征服了计算机视觉(ViT)、语音(Whisper)、生物(AlphaFold 2)和多模态(CLIP)等领域,成为事实上的基础建模范式

💻 开源实现指引

要深入理解,动手阅读和运行代码至关重要。以下是顶级资源:

  1. 最权威的实现:阅读 PyTorch官方教程The Annotated Transformer”,它逐行注释了论文的原始代码,是学习架构的黄金标准。
  2. 主流框架中的模块:直接查看 PyTorch (torch.nn.Transformer)TensorFlow (tf.keras.layers.Transformer) 的官方文档和源代码,了解其工业级、高度优化的API设计。
  3. Hugging Face Transformers库:这是应用Transformer模型的实践入口。通过其简洁的API,你可以轻松加载和微调BERT、GPT等成千上万的预训练模型。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐