Skip to main content

Attention Is All You Need:Transformer架构与自注意力机制

Paper Info


Overview

  1. 核心问题:此前的序列转导模型以 RNN/CNN 编码器-解码器结构为主,无法并行训练,长序列上易出现远距离遗忘,且解码阶段必须串行生成。

  2. 核心论点:完全抛弃循环和卷积,仅依靠注意力机制即可构建高性能序列模型,同时获得并行计算能力与全局上下文建模能力。

  3. 核心创新:提出 Transformer 架构——由 Multi-Head Self-Attention、Feed Forward 与残差+LayerNorm 堆叠而成的纯注意力模型。

  4. 架构组成:编码器与解码器各 N=6 层;d_model=512,h=8 个注意力头,d_k=d_v=64,前馈维度 d_ff=2048。

  5. 自注意力机制:通过 Q/K/V 三个线性投影把每个 token 同时映射为查询、键、值,使任意位置可直接聚合所有上下文信息。

  6. 多头注意力:将 Q/K/V 沿特征维度切分为 8 个子空间并行计算,再拼接融合,让不同头关注不同语义维度(词性、口味、热量等类比)。

  7. 位置编码:用正弦/余弦函数为每个位置生成固定向量并与词嵌入相加,补回并行化丢失的时序信息。

  8. 解码机制:解码器使用 Masked Multi-Head Attention 防止看到未来位置,再通过 Encoder-Decoder Attention 把编码器输出作为 K/V 引入。

  9. 关键结果:WMT 2014 英德翻译 28.4 BLEU、英法翻译 41.8 BLEU,单模型即刷新 SOTA;训练仅需约 12 小时(8 块 P100 GPU)。

  10. 历史地位:现代几乎所有大语言模型(GPT、BERT、Claude、Qwen 等)的架构基石,开启了 NLP 的 Transformer 时代。


核心内容解读

前 RNN 时代:序列建模为什么卡在串行化

在 Transformer 之前,处理翻译、摘要等序列转导任务的主流方案是基于 RNN(及其变体 LSTM/GRU)的编码器-解码器结构,配合注意力机制做编码器-解码器之间的信息桥接。这套方案继承了循环结构带来的两个根本性限制:

一是串行计算。RNN 的隐藏状态 hₜ 必须基于 hₜ₋₁ 计算,无论 GPU 算力多强,编码时必须一个 token 一个 token 推进,解码时也必须等前一时刻输出产生后再预测下一时刻。在动辄上万亿 token 的现代训练规模下,这种顺序依赖让并行化训练几乎不可能。

二是长距离遗忘。即便加入 LSTM/GRU 的门控,跨越数百个 token 的依赖仍然会被压缩到一个定长向量 C 中,距离越远的 token 影响越弱。引入注意力机制可以缓解这一问题(每个解码步按权重重新加权输入序列),但它仍依附在 RNN 之上,没有真正突破循环结构的瓶颈。

卷积神经网络(CNN)虽支持并行,但受限的感受野使其在捕捉长距离依赖时再次失效。因此学界需要一种既能全局建模又能并行计算的全新结构。

Transformer 的设计思想:让每个词拥有全局视角

Transformer 绕开了"按时间顺序逐个输入"的范式,转而采取整句同时输入、并行编码的思路。核心洞察是:

  • 在训练阶段,输入序列和目标序列都已经完整提供,并不需要等前一时刻的输出才能计算后一时刻。
  • 因此可以让模型在第一个时间步就"看到"完整句子,让每个 token 一次性聚合所有上下文信息。

这一思路带来两点挑战:

  1. 时序信息丢失:与 RNN 不同,并行输入不再天然编码位置顺序。
  2. 全局上下文的语义融合:每个 token 需要根据整个上下文调整自己的语义表示(例如同一词"水"在水果语境与化学语境中应映射到不同区域)。

Transformer 的解决方案分别对应位置编码自注意力机制:位置编码通过正弦/余弦函数为每个位置生成固定向量并叠加到词嵌入上;自注意力机制则用 Q/K/V 让每个 token 动态聚合上下文信息。

自注意力机制:Q/K/V 的语义解读

自注意力的输入是经过词嵌入和位置编码后的 token 向量(d_model=512)。每个 token 经过三个可学习权重矩阵 W^Q、W^K、W^V(均为 512×512)投影后,得到三个分身:

  • Query (Q):可以理解为当前 token 发出的"提问",例如"附近有名词吗?"。
  • Key (K):每个位置用 Key 回应"我是名词 / 我不是名词"。
  • Value (V):每个位置真正携带的语义内容。

计算流程(缩放点积注意力)为:

  1. Q 与所有 K 做点积,得到当前位置与其他位置的相似度分数;
  2. 除以 √d_k(d_k=64)做缩放,避免点积过大导致 softmax 梯度消失;
  3. 通过 softmax 归一化为权重分布;
  4. 用权重对所有 V 做加权平均,得到当前位置融合了上下文的新表示。

由于全程是矩阵乘法,所有 token 的 Q/K/V 可一次性完成投影,所有注意力分数可一次性计算,所有加权求和也可一次性完成——这就是 Transformer 能够并行的关键。

多头注意力:8 个并行子空间

如果只用一组 512 维的 Q/K/V("单头"注意力),所有信息都被压缩到同一个语义空间。多头注意力把 Q/K/V 沿特征维度切分为 h=8 个子空间,每个头只保留 64 维独立计算:

  • 第 1 个头可能专门关注"词性"特征;
  • 第 2 个头关注"情感倾向";
  • 第 3 个头关注"指代关系";
  • ……

每个头在自己的 64 维子空间内独立完成完整的 Q/K/V 投影和注意力计算,得到 8 个 (seq_len × 64) 的输出,再拼接回 (seq_len × 512),最后经过一个线性层 W^O 投影融合。

这种设计的精妙之处在于:8 × 64 维拼接的"低清表情包"和 512 维"高清表情包"在数学上维度相同,但语义上完全不同——线性层把 8 个低清子空间重新融合成一个真正高维的完整表示。如果直接使用 8 个独立的 512 维头,计算量将翻 8 倍,而 8 × 64 的设计在保持同等表达力的同时几乎不增加计算开销。

编码器的完整流水线

每个编码器子层包含两个主要模块:

1. Multi-Head Self-Attention 子层。输入来自上一层(或词嵌入+位置编码)的输出 (seq_len × 512),经过多头自注意力后得到同等维度的输出。

2. Add & Norm。对每个子层都使用残差连接(output = Sublayer(x) + x)和 LayerNorm。残差连接保证即便某个子层学习不到位,原始输入信息也能直接穿透到下一层;LayerNorm 则让数值分布更稳定,利于深层训练。

3. Position-wise Feed Forward。两层的逐位置前馈网络(FFN(x) = max(0, xW₁+b₁)W₂+b₂),d_ff=2048。它在每个位置上独立应用,作用是增加模型的非线性表达能力和可训练参数。

由于每个子层输入输出维度都是 512,因此可以把 N=6 个这样的子层顺序堆叠,最终编码器输出一个融合了所有 token 上下文信息的 (seq_len × 512) 矩阵。

解码器与掩码机制:并行训练不作弊

解码器的整体结构与编码器类似,但有三个关键差异:

1. Masked Multi-Head Self-Attention。解码器在训练时虽然有完整目标序列("I love easy courses"),但预测当前位置时不能看到未来位置(防止"作弊")。具体做法是在 softmax 之前,把注意力分数矩阵的上三角(对应未来位置)置为一个非常大的负数,使 softmax 后这些位置权重接近 0。解码时仍然按顺序生成——但这只是推理阶段的限制,训练阶段所有位置可以一次性并行预测。

2. Encoder-Decoder Cross-Attention。解码器的第二个注意力层是交叉注意力:Q 来自解码器上一子层的输出("基于已生成的前文,下一个 token 应该关注谁?"),K 和 V 则来自编码器的最终输出。这是把源语言信息注入目标语言生成的关键。

3. Linear + Softmax 输出。解码器最终输出仍是 512 维向量,经过线性层映射到词表维度(如 30000),再经 softmax 得到每个候选词的概率分布。在训练阶段,这个分布在每个位置都会与真实标签计算交叉熵损失。

突破性贡献:复杂度、并行性与长距离依赖

为什么 Transformer 能够取代 RNN 成为现代 LLM 的基础?论文从三个维度回答了这个问题:

  1. 每层计算复杂度更低。自注意力层的复杂度为 O(n²·d),而 RNN 为 O(n·d²);当序列长度 n 大于表示维度 d 时(现代 LLM 的典型场景),自注意力反而更便宜。
  2. 并行计算量最小。自注意力所需的顺序操作数是 O(1),而 RNN 是 O(n),这意味着 GPU 可以几乎完全并行处理整个序列。
  3. 长距离依赖路径长度最短。自注意力中任意两个位置之间只需一跳(O(1)),而 RNN 需要沿序列走 O(n) 跳,因此更容易学习远距离关联。

这三点共同决定了 Transformer 既能扩展到超大规模训练,又能在长文本上保持稳定性能。在 WMT 2014 英德翻译任务上达到 28.4 BLEU(超过此前最佳 26+)、英法翻译达到 41.8 BLEU(单模型 SOTA),同时训练时间仅需约 12 小时(8 块 P100 GPU),相对传统模型提升一个数量级。

Resources