LLM2017· NeurIPS 2017· CLASSIC

Attention Is All You Need

Vaswani et al.

用 Self-Attention 完全取代 RNN 和 CNN——Transformer 架构的开山之作,几乎所有现代 LLM 的地基。

arXiv:1706.03762
#transformer#attention#architecture#foundational

核心贡献

  • 01Scaled Dot-Product Attention:Attention(Q,K,V)=softmax(QKᵀ/√d_k)V
  • 02Multi-Head Attention:并行多组 QKV 投影,捕捉不同子空间的关系
  • 03完全基于注意力的 Encoder-Decoder 架构,无循环结构,可完全并行训练
  • 04Sinusoidal Positional Encoding:用正弦函数为序列引入位置信息
  • 05在 WMT 2014 EN-DE 翻译任务上 BLEU 28.4,刷新当时 SOTA

核心思想

RNN 时代的两个痛点:无法并行 + 长距离依赖难以建模(梯度沿时间展开逐级衰减)。Transformer 的答案是——每个位置直接 attend 到序列中所有其他位置,一次矩阵乘就完成信息交互。

Self-Attention 公式

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V
  • Q, K, V:query、key、value,都是输入序列通过不同线性变换得到的向量
  • 除以 √d_k:为什么?点积方差随维度增长,不缩放会把 softmax 推到饱和区,梯度消失
  • softmax:把相似度转为概率分布
  • 输出:V 的加权平均,权重由 query 和每个 key 的相似度决定

Multi-Head Attention

MultiHead(Q,K,V)=Concat(head1,,headh)WO\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O

每个 head 独立的 Q/K/V 投影,在不同子空间并行计算注意力。类比 CNN 的多通道——每个 head 学一种关系(语法/语义/共指等)。

架构要点

  • Encoder × 6 层:Self-Attention + FFN + 残差 + LayerNorm
  • Decoder × 6 层:多一层 Cross-Attention 连到 Encoder 输出;Masked Self-Attention 阻止未来信息泄露
  • FFN:两层全连接 + ReLU,是参数量的大头
  • 位置编码:sin/cos 函数,允许模型学到相对位置关系
面试视角

面试考点

基础推导(必考):能否在白板上手写 Attention 公式、解释为什么除以 √d_k、Multi-Head 为什么比 Single-Head 好。

变种对比:原版 sinusoidal PE vs Learned PE vs RoPE vs ALiBi——推理时外推能力差在哪。

复杂度Self-Attention 的时间和空间复杂度都是 O(n²·d)(n 是序列长度)——这是 FlashAttention、Sparse Attention、Linear Attention 等后续工作的核心动机。

实现细节:mask 怎么做(decoder causal mask)、dropout 加在哪里、LayerNorm Pre 还是 Post。

常见陷阱问题

  • "为什么 softmax 要在除以 √d_k 之后?" → 否则 softmax 会 saturate
  • "Q 和 K 如果用同一套权重会怎样?" → 退化成对称相似度,表达能力下降
  • "Decoder 的 Cross-Attention Q 从哪里来?" → Decoder 的上一层输出,K/V 来自 Encoder 最终输出
相关论文