图解Transformer技术总结 | AI生成和翻译

Home 2026.06

问题: 对 Alammar 的 Illustrated Transformer 博文给出全面的技术总结。


回答

Illustrated Transformer 是对《Attention Is All You Need》中 Transformer 架构的可视化拆解,但除了教学性的图示外,理解这一架构为何成为你今天工作中一切的基础同样重要。

核心创新:通过自注意力实现并行化

Transformer 利用注意力机制提升训练速度,并且天然适合并行化——这是它与 RNN/LSTM 的关键区别。在 LSTM 中,每个时间步依赖前一个时间步的隐状态,因此只能顺序计算。Transformer 则通过矩阵运算同时对所有位置计算注意力,打破了这一限制。

该架构分为三个部分:

  1. 编码器堆栈 —— 将输入标记转换为上下文表示
  2. 解码器堆栈 —— 利用编码器上下文自回归生成输出标记
  3. 交叉注意力桥接 —— 解码器查询编码器输出以获得相关上下文

每个编码器/解码器层包含两个子层:

自注意力:机制原理

数学上很简单,但含义深远。对于每个位置:

  1. 通过学习的线性变换将输入映射为查询(Q)、键(K)、值(V)
  2. 计算相关性得分:scores = Q @ K^T / sqrt(d_k)(点积相似度)
  3. 归一化:attention_weights = softmax(scores)
  4. 输出:context = attention_weights @ V

在矩阵形式下,对所有位置的计算为:

Attention(Q, K, V) = softmax(Q @ K^T / sqrt(d_k)) @ V

关键洞察:

多头注意力:多种表示空间

不是使用单一的注意力操作,而是使用通常 8 个独立的注意力头,每个头有独立的 Q/K/V 参数。每个头学习不同的投影子空间。

为什么这很重要:

实现细节:每个头的维度为 d_model / num_heads = 512 / 8 = 64,以保持计算量恒定。

位置编码:注入顺序信息

Transformer 通过对每个输入嵌入添加一个向量来注入位置信息,该向量使用正弦和余弦函数按照特定模式生成。公式(论文第 3.5 节):

PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))

这有两个优点:

(现代方法如 RoPE 通过旋转查询/键嵌入改进了这一思路,但核心概念不变。)

解码器:带因果掩码的自回归生成

在解码器中,自注意力层通过掩码(mask)只允许关注前面的位置:在 softmax 之前将未来位置设为 -inf,使得它们的 softmax 概率变为 0。

解码器每个堆栈层包含三个注意力子层:

  1. 掩码自注意力(不能向前看)
  2. 交叉注意力(关注编码器输出)
  3. 前馈网络

推理时,模型自回归解码:每一步将前一步的输出作为下一步的输入。

残差连接与层归一化

每个子层周围都有一个残差连接,随后进行层归一化。这至关重要:

这对你的工作为何重要

  1. 并行化:这就是你能在 TPU/GPU 上训练大规模批次的原因。没有 RNN 那样的顺序依赖。

  2. 可扩展性O(n^2) 的注意力复杂度成为瓶颈,但该架构可扩展到数十亿参数(模型大小线性增长,仅在序列长度上平方增长)。

  3. 所有现代 LLM:GPT、Claude、DeepSeek —— 都是这一核心的变体。改进是渐进式的:更好的位置编码(RoPE、ALiBi)、高效注意力(Flash Attention、滑动窗口)和架构调整(如 v4 中的稀疏 MoE)。

  4. 真正的洞见:Transformer 没有对序列结构的归纳偏置——这是特性,不是缺陷。模型完全通过注意力权重学习什么模式重要。这就是为什么它能跨模态泛化(视觉、音频、代码)。

这篇博文出于教学目的,Alammar 有意进行了过度简化,以逐步介绍各个概念。但该架构本身简洁优雅:仅仅注意力 + 投影 + 残差 + 归一化。其余都是规模化和优化的问题。


参考文献


Back Donate