每个词生成三张卡
Q(提问向量)、K(索引向量)、V(内容向量)。每个词向量分别乘 Wᴽ、Wᴷ、Wⱽ 三个可学习矩阵得到它们。这里的“投影”就是用矩阵把同一份词信息换成三种用途。
2017 年主流翻译系统多用 RNN/LSTM 编码器—解码器,并把注意力当作辅助。论文瞄准的是顺序计算这一结构性瓶颈。
RNN 的第 t 步依赖第 t−1 步。像接力赛,后一个人必须等前一个人到达,GPU 很难同时铺开计算。
句首与句尾的关系要穿过许多中间状态。论文用“最大路径长度”衡量:路径越短,远距离依赖通常越易学习。
模型仍采用编码器—解码器。编码器把输入读成上下文表示;解码器参考输入,并根据已生成内容逐词输出。先把组成整机的生僻词逐个说清。
词本身不能直接参加数学运算。嵌入表像“数字字典”,把每个 token 查成一排 d_model 个数字。原论文 d_model=512。
给每个词向量加上一组表示“第几个位置”的数字。没有它,自注意力只看到词的集合,难以区分先后次序。
对每个位置单独使用同一台两层小计算器:先把 512 维扩到 2048 维,经 ReLU 去掉负值,再压回 512 维。
把子层处理前的输入 x 直接加回结果:x + Sublayer(x)。像给信息留一条绕过复杂加工的直通车道。
把一个位置内部的数字重新调到相近尺度,避免某些数过大或过小,让多层网络训练更稳定。
把一组任意分数变成 0 到 1 之间、总和为 1 的权重。注意力里表示“听谁多少”;输出端表示“下一个 token 的候选概率”。
一次读入完整源句,把每个词变成结合上下文后的表示。原论文堆叠 6 层。
参考编码器结果和已经生成的词,一个位置接一个位置预测目标句。遮罩阻止它偷看未来答案。
让信息有捷径穿过子层,并稳定训练。原论文结构是子层输出与输入相加后再做 LayerNorm。
注意力负责“和别人交流”;同一个两层前馈网络再对每个位置独立加工,base 内层从 512 扩到 2048。
解码器最终输出经过线性层和 softmax,得到词表中每个候选词的概率。
核心只有四步:提问 → 匹配 → 归一化 → 汇总。公式看起来抽象,只是把这四步批量写成矩阵。
单独一个数,例如 0.8。注意力权重就是标量。
一排数字,例如 [1, 2]。模型用它保存一个词的多项特征。
多排多列数字组成的表。把许多词向量叠在一起,就得到矩阵。
左边的“行”与右边的“列”逐项相乘再相加;它能批量完成大量向量运算。
Q(提问向量)、K(索引向量)、V(内容向量)。每个词向量分别乘 Wᴽ、Wᴷ、Wⱽ 三个可学习矩阵得到它们。这里的“投影”就是用矩阵把同一份词信息换成三种用途。
做点积 QKᵀ。Kᵀ 表示把 K 的行列互换,方便每个 Q 同时和所有 K 配对。得分越高,表示当前 Q 与该 K 越匹配。
dₖ 是每个 Key 和 Query 向量包含多少个数字;除以 √dₖ 用来压住高维点积的数值。softmax 再把分数变成非负且总和为 1 的权重。
dᵥ 是每个 Value 向量包含多少个数字。每个注意力权重乘对应 V,再相加,输出仍是一个 dᵥ 维向量;最相关的词贡献更多内容。
这里 dₖ=2,所以每个分数除以 √2≈1.414。第一行 [1,1] 缩放后约为 [0.707,0.707],两个数相同,softmax 后就是 [0.50,0.50]。第二行 [0,1] 缩放后约为 [0,0.707];先取指数得到 [e⁰,e⁰·⁷⁰⁷]≈[1,2.03],再各自除以总和 3.03,得到约 [0.33,0.67]。
句子:“小明 把 球 踢给 小红,因为 他 很友好。”拖动“他”对每个词的原始相关分,看 softmax 后权重如何变化。
一次平均容易把不同关系揉成一团。论文把 Q、K、V 投影到多个较小空间,并行观察,再拼接回来。
可能专门追踪主谓、动宾、代词指代等结构关系。
可能关注实体、上下文含义或远距离语义线索。
纯自注意力本身对词的排列不敏感。论文把位置编码加到词向量上,给每个座位一张独特坐标纸。
优势来自计算图发生改变:训练时,一个序列内所有位置的注意力可以一起算;任意两个位置也可直接连通。
| 层类型 | 每层复杂度 | 必须顺序执行 | 最长路径 | 人话解释 |
|---|---|---|---|---|
| 自注意力 | O(n²d) | O(1) | O(1) | 所有词对同时算;远处词一步直连。 |
| 循环层 RNN | O(nd²) | O(n) | O(n) | 必须按顺序接力;远处信息走很多步。 |
| 卷积层 | O(knd²) | O(1) | O(logₖn) 或 O(n/k) | 可并行,但需叠多层才能扩大视野。 |
原文第 5 章给出训练数据、硬件、学习率和防过拟合方法。它们不改变注意力原理,却决定模型能否稳定学会。
模型看一批句子,计算错误,再更新一次参数,叫一个训练步骤。base 模型训练 100,000 步。
根据每个参数过去的梯度,自动调整本次更新方向和幅度;可理解为带惯性和自适应步幅的“改错方法”。
学习率就是每次改参数迈多大步。前 4,000 步从小到大预热,之后随步数的平方根倒数逐渐减小。
训练时随机暂时关掉一部分连接,迫使模型别依赖少数捷径,用来减少过拟合。base 模型比例为 0.1。
不把正确答案标签写成绝对 100%,而是留一点概率给其他词,避免模型过度自信;论文取 0.1。
模型把训练题背得很好,换到新句子却表现变差。Dropout 与 label smoothing 都在缓解它。
主要证据来自 WMT 2014 英德/英法翻译、模型变体实验与英语成分句法分析。下面区分“数据说明了什么”和“不能说明什么”。
在论文设定的翻译基准上,Transformer 达到新的最好成绩,且估算训练 FLOPs 显著低于此前竞争模型。
4 层 Transformer 在 40K WSJ 句子的小数据设置下得到 91.3 F1;半监督设置 92.7,说明并非只会翻译。
单头比最佳设置低 0.9 BLEU;缩小 key 维度会伤质量;大模型更好;dropout 有助于避免过拟合;正弦和学习式位置编码近似。
这些实验不能单独证明 Transformer 在所有任务、所有序列长度、所有算力条件下都优于 RNN/卷积,更没有直接验证今天的大语言模型能力。
你已经走完机制、原因和证据。这时再来回答"它创新在哪"会更准确——创新不是每个零件都从零发明,而是一次结构性的重组。
作者称其为首个不依赖序列对齐 RNN 或卷积、完全靠自注意力计算输入输出表示的 transduction 模型。这是论文最关键的架构主张。
用高效矩阵乘法算点积注意力,并除以 √dₖ,缓解高维点积过大导致 softmax 梯度很小的问题。
把多个不同投影视角并行运行、拼接并再投影,使模型同时关注不同位置与不同表示子空间。
移除 RNN/卷积后必须显式注入顺序;解码器还要遮住未来位置,保持自回归生成的合法性。
编码器—解码器、多层堆叠、前馈网络、残差、LayerNorm、权重共享、Adam 学习率预热、dropout 和 label smoothing 共同构成可复现系统。许多组件已有先例,但组合产生了新范式。
理解一篇经典论文,也要理解它没有说什么。
如果你能顺着下面 7 句话说完,就真正抓住了论文骨架。
按词顺序计算,限制训练并行,远距离依赖路径长。
每个词都能直接查看所有词,一次矩阵运算并行完成关系建模。
点积算相关,√dₖ 缩放,softmax 变权重,最后汇总 V。
不同投影空间捕捉不同位置和表示子空间的信息。
因果遮罩则阻止解码器预测时偷看未来词。
注意力旁边还有 FFN、残差、LayerNorm 等完整训练结构。
它开辟了新范式,但没有证明自注意力在所有场景都最优。
RNN 串行读句子,很难并行。Transformer 让每个词用注意力直接查看所有词,再通过多头、位置编码和遮罩组成完整编码器—解码器。它在 2017 年翻译基准上更快且更准。
从“排队传话”升级成“带座位号的多组圆桌会议”:Q 是问题,K 是名牌,V 是发言内容,多头是不同观察员。
如果把位置编码拿掉,句子中的词全部打乱,自注意力本身能否稳定区分“狗咬人”和“人咬狗”?为什么?
选完立即看到解释。答对的关键是机制,不是背缩写。
术语只保留这篇论文里真正需要的含义。
本网页依据论文原文组织,不把后来的常识倒灌成论文当时已证明的结论。