跳到正文
docai.cc

DOCAI · 论文导读 · 2017

《Attention Is All You Need》导读:为什么 Transformer 不需要循环

Attention Is All You Need · Vaswani 等(Google) · NeurIPS 2017

一句话结论

用自注意力完全取代循环和卷积:训练时整句可以并行算,任意两个位置之间的距离都是一步。

研究更新 2026-11-13核验 2026-11-13 · docai 编辑部

它解决了什么

在这篇之前,处理序列主要靠循环网络(RNN):一个词一个词往前算。

这带来两个代价:训练不能并行,句子越长越慢;远距离的两个词之间要经过很多步,信息一路衰减。

卷积网络能并行,但要覆盖长距离就得多堆层。

这篇论文的答案是:不要循环,也不要卷积,让每个位置直接看所有位置。

三个关键思想

1. 缩放点积注意力。 每个位置发出一个查询(query),和所有位置的键(key)算相似度,softmax 之后对值(value)加权求和。相似度除以维度的平方根,避免数值过大导致 softmax 饱和。

2. 多头。 一组注意力只能学一种关系。把表示切成多份并行算,不同的头可以分别关注语法搭配、指代关系、位置邻近等不同模式,最后拼回去。

3. 位置编码。 注意力本身对顺序没有概念——打乱输入,结果只跟着打乱。所以要把位置信息用正弦函数加进输入向量,让模型知道谁在前谁在后。

读前需要知道

  • 向量与点积:两个向量的点积衡量它们有多「同向」。
  • softmax:把一组分数变成和为 1 的权重。
  • 残差连接与层归一化:知道它们是为了让深层网络训得动即可,细节可以边读边补。

不熟悉的话,先看什么是 LLM,那里有最小版本的「预测下一个 token」。

重点章节与可跳过部分

  • 3.2 节(Scaled Dot-Product Attention):全篇的核心,公式只有一行,值得逐项对照图看。
  • 3.3 节(Multi-Head Attention):理解「为什么要多头」,不必手推维度。
  • 3.5 节(Positional Encoding):看正弦公式的形式和理由即可。
  • 5.1–5.4 节(训练细节):第一次读可以跳过,不影响理解结构。
  • 附录:实现细节与注意力可视化,第二次读再看。

影响

今天主流的大语言模型结构都从这里出发:编码器-解码器、纯解码器、纯编码器三种变体,分别在生成、理解、检索任务上展开。

后来大家遇到的问题——上下文窗口、KV 缓存、长文本的注意力开销——也都是这个结构的直接后果:每个位置都要看所有位置,句子越长,计算和显存涨得越快。

读前先看这几个词

读原文 ↗