Attention Is All You Need — 完整论文解析

发布: (2026年3月8日 GMT+8 06:57)
7 分钟阅读
原文: Dev.to

Source: Dev.to

2017 年论文《Attention Is All You Need》

Vaswani 等人提出了 Transformer——支撑 GPT、Claude、Gemini 以及当今所有主流大语言模型的架构。它彻底用注意力机制取代了循环模型,整个领域从此再也没有回头。这篇文章将逐步讲解其核心思想。

RNN 的问题

在 Transformer 之前,序列建模几乎等同于 RNNLSTM。它们一次处理一个 token,按左到右的顺序,这会导致两个主要问题:

  1. 无法并行——每一步都依赖前一步的隐藏状态,训练时无法同时处理多个 token。
  2. 长程依赖衰减——当 RNN 处理到第 500 个 token 时,来自第 1 个 token 的信号已经经过数百个隐藏状态的压缩。

注意力机制早在 2014 年(如 Bahdanau attention)就已出现,但当时它们是 附加在 RNN 上 的。Transformer 的革命性想法是:如果注意力就是你所需要的全部呢?——完全抛弃循环。

编码器‑解码器结构

Transformer 采用机器翻译中常用的经典编码器‑解码器架构:

组件作用相同层的数量
Encoder(左侧)接收输入序列并生成丰富的表示6
Decoder(右侧)接收 Encoder 的输出 + 已生成的 token,预测下一个 token6

两个堆叠中的每一层都包含相同的构建块:

  • 多头注意力
  • 前馈网络(FFN)
  • 残差连接
  • 层归一化

自注意力

自注意力让每个 token 能够查看序列中的所有其他 token,并决定 “该关注多少”

对于每个 token,模型会计算三个向量:

向量直观含义
Query (Q)“我在找什么?”
Key (K)“我包含了什么?”
Value (V)“我能提供什么信息?”

这些向量通过将输入嵌入乘以可学习的权重矩阵 (W_Q, W_K, W_V) 获得:

[ Q = XW_Q,\qquad K = XW_K,\qquad V = XW_V ]

两个 token 之间的注意力得分是一个 query 与另一个 token 的 key 的点积。
缩放点积注意力的公式为

[ \text{Attention}(Q,K,V)=\text{softmax}!\left(\frac{QK^{\top}}{\sqrt{d_k}}\right)V ]

缩放因子 (\sqrt{d_k}) 用来防止随着维度增大点积值过大;若不进行缩放,softmax 会变得过于尖锐,导致梯度消失。

多头注意力

模型并不是一次性在完整维度上计算注意力,而是 (Q, K, V) 拆分 成多个头(原论文中为 8 头)。每个头在大小为

[ \frac{d_{\text{model}}}{h}= \frac{512}{8}=64 ]

的子空间中工作。

为什么要使用多头?不同的头可以学习不同类型的关系:

  • Head 1 – 句法结构(例如主谓一致)
  • Head 2 – 位置邻近性
  • Head 3 – 语义相似性

所有头的输出会被拼接在一起,再投射回完整维度。

论文中将多头注意力用于三种不同的情形:

  1. Encoder 自注意力 – 每个输入 token 与所有其他输入 token 互相注意。
  2. Masked Decoder 自注意力 – 每个输出 token 只关注之前的输出 token(掩码阻止了前视,保持自回归生成)。
  3. Cross‑attention – Decoder 的 token 注意 Encoder 的输出,将输入表示与输出生成关联起来。

位置编码

仅靠自注意力 没有顺序概念;它把序列当作一个集合。为注入位置信息,Transformer 将 位置编码 加到输入嵌入上(相加,而不是拼接)。

正弦位置编码定义为

[ \text{PE}{(pos,2i)} = \sin!\left(\frac{pos}{10000^{2i/d{\text{model}}}}\right) ]

[ \text{PE}{(pos,2i+1)} = \cos!\left(\frac{pos}{10000^{2i/d{\text{model}}}}\right) ]

These functions allow the model to generalize to sequence lengths longer than those seen during training, because any relative position can be expressed as a linear function of the encodings.

前馈网络 (FFN)

每个注意力子层之后都会接一个逐位置前馈网络,对每个 token 独立应用:

[ \text{FFN}(x)=\max(0, xW_1+b_1)W_2+b_2 ]

  • 两个线性变换,中间使用 ReLU。
  • 内部维度扩展到 2048(即模型维度 512 的 4 倍),随后再投射回原维度。

残差连接 & 层归一化

每个子层(注意力或 FFN)都包装为

[ \text{LayerNorm}\bigl(x + \text{SubLayer}(x)\bigr) ]

残差连接 (x + \text{SubLayer}(x)) 有助于梯度在深层网络中传播,而层归一化 稳定激活值

训练细节

ComponentSetting
OptimizerAdam,(\beta_1=0.9,\ \beta_2=0.98)
Learning‑rate schedule4000 步 warm‑up(线性增长)→ 按 (\text{step}^{-0.5}) 衰减
RegularizationDropout 0.1(注意力权重和每个子层后); label smoothing 0.1
Training dataWMT 英‑德(450 万句对)和英‑法(3600 万句对)
Hardware8 × NVIDIA P100 GPU,约 3.5 天即可训练出大模型

Transformer 在英‑德和英‑法翻译任务上取得了 state‑of‑the‑art 成绩,超越了所有之前的模型(包括深度集成),并且由于全并行化训练显著加快了训练速度。

超越翻译

该架构被证明是 许多后续模型的基础

  • BERT – 仅编码器,双向预训练。
  • GPT – 仅解码器,自回归语言建模。

以及无数其他变体,主导了现代 NLP 与多模态 AI。

# Modeling

Vision Transformers — 将相同的架构应用于图像

基本上是现代 AI 的全部内容

论文的核心洞见很优雅:序列建模并不需要递归或卷积。
仅靠注意力——经过适当的缩放、拆分为多个头部,并与残差连接堆叠——就足够了。

由于注意力能够并行计算所有成对关系,训练速度显著提升。

这就是为什么,九年后,每个前沿模型的核心仍然是 Transformer

0 浏览
Back to Blog

相关文章

阅读更多 »

LLM 写作套路.md

文章 URL: https://tropes.fyi/tropes-md 评论 URL: https://news.ycombinator.com/item?id=47291513 得分: 82 评论: 34