「论文阅读」Attention Is All You Need - Transformer 札记

2026-10-15   论文深度学习
Transformer 的整体架构示意

Transformer 的整体架构示意

为什么读这篇

2017 年 Google Brain 发的这篇论文,标题叫《Attention Is All You Need》。名字听起来很"凡尔赛",但它真的做到了——把 RNN/CNN 从序列建模主流里挤了出去,让 Self-Attention 成为 NLP 乃至整个深度学习的基础模块。我第一次读是两年前,最近重看一遍,发现有些理解当时是错的,记录一下。

Attention 的本质

Attention 机制的核心操作可以用一行公式表示:

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

Q(Query)、K(Key)、V(Value)都是从同一个输入线性变换来的(Self-Attention),或者 Q 来自解码器、K/V 来自编码器(Cross-Attention)。

除以 sqrt(d_k) 是为了防止点积的值域随维度增大而爆炸,导致 softmax 进入梯度消失区。这个细节论文里一句话带过,但很重要。

Multi-Head Attention 示意图

Multi-Head Attention 示意图

Multi-Head 的意义

论文里用了 h=8 个头,每个头的维度 d_k = d_model/h = 64。Multi-Head 的直觉是:让不同的头学到不同"位置"上的依赖关系——有的头关注句法,有的关注语义,有的关注远程共指。

我之前的误解是以为多头只是为了并行计算。实际上,即使总参数量和单头相同,多头的表达能力也更强,因为每个头可以在低维子空间里独立做 Attention。

Position Encoding

Transformer 没有 RNN 那样天然的时序感知,所以需要显式注入位置信息。原始论文用的是 sin/cos 固定编码:

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

频率从低到高,每个维度对应不同尺度的位置信息。这个设计的好处是可以外推到比训练序列更长的输入,但后来 BERT 直接换成了可学习的位置 embedding,效果差不多但更直觉。

论文中的训练结果对比(WMT EN-DE 翻译任务)

论文中的训练结果对比(WMT EN-DE 翻译任务)

我觉得被低估的细节

结论

重读的最大收获是意识到这篇论文的工程细节有多扎实——不是一个"突发奇想",而是很多细节都有对应的消融实验。Table 3 把架构变体一一对比,现在看来几乎就是后续 BERT/GPT 系列调参的预演。