2342 words
12 minutes
Transformer 为什么有效?从 Self-Attention 到位置编码

如果说大语言模型时代有一篇真正改变历史的论文,那几乎一定是 2017 年的 Attention Is All You Need。Transformer 不是简单替换了 RNN,而是直接改写了序列建模的主流范式。

面试里如果被问“Transformer 为什么有效”,高质量回答不能只说“因为 attention 很强”,而要讲清:

  • 它解决了什么旧问题
  • Self-Attention 到底在算什么
  • 为什么能更好建模长距离依赖
  • 为什么训练更并行
  • 位置编码为什么必需

一、先理解:Transformer 解决了谁的问题?#

在 Transformer 之前,序列建模主流主要是:

  • RNN
  • LSTM
  • GRU
  • CNN 序列模型

这些方法都有一个共同难点:

1.1 序列依赖强,难并行#

RNN 类模型天然按时间步递归:

x1 -> h1 -> h2 -> h3 -> ...

这意味着训练时前一个状态没算完,后一个状态就没法算,GPU 并行能力利用受限。

1.2 长距离依赖难学#

即使 LSTM/GRU 能缓解梯度消失问题,但如果一个词要依赖很远之前的信息,路径仍然很长。

例如:

The animal didn’t cross the street because it was too tired.

模型需要知道 it 指的是 animal,而不是 street。这种远距离依赖对传统序列模型不友好。

1.3 计算路径太长#

RNN 中两个远距离 token 的信息交互,需要经过多个时间步传递。

而 Transformer 的核心改进,就是:

让任意两个位置都能一步直接建立联系。


二、Transformer 的核心思想:让每个 token 看见所有 token#

Transformer 最关键的创新是:

Self-Attention(自注意力)

你可以把它理解成:

当前 token 在编码自己时,不再只依赖前一个隐藏状态,而是可以动态参考整个序列中所有 token。

例如句子:

The animal didn't cross the street because it was too tired.

当模型处理 it 时,它可以直接去看:

  • animal
  • cross
  • street
  • tired

并根据相关性给不同词分配不同权重。

这就是 Transformer 强的第一层原因:

依赖关系不再被“距离”强行限制。


三、Transformer 整体结构#

Transformer 原始论文的结构图如下:

Transformer architecture

它由两部分构成:

  • Encoder
  • Decoder

原始论文用于机器翻译:

  • Encoder 读取源语言
  • Decoder 生成目标语言

而今天很多 LLM(如 GPT)主要使用的是 Decoder-only 变体,但核心思想仍然来自 Transformer。


四、Self-Attention 到底在做什么?#

这是 Transformer 面试里最核心的问题。

4.1 Q、K、V 是什么?#

每个 token 的向量表示,都会被线性映射成三组向量:

  • Q(Query)
  • K(Key)
  • V(Value)

可以用一个很直观的类比:

  • Query:我现在想找什么信息
  • Key:我身上有哪些可供匹配的信息
  • Value:如果你关注我,你最终拿走什么内容

4.2 注意力分数怎么计算?#

当前 token 会拿自己的 Q 去和所有 token 的 K 做相似度计算:

score = Q · K^T

然后除以:

sqrt(d_k)

再做 softmax 得到权重分布:

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

最后用这些权重对所有 V 做加权求和,得到当前 token 的新表示。

4.3 这件事的意义是什么?#

它表示:

当前 token 的表示,不再只是“它自己”,而是“它自己 + 整个上下文中和它最相关的信息的加权结果”。

所以 Self-Attention 的强大之处就在于:

  • 它是动态的
  • 它是上下文相关的
  • 它允许全局信息交互

五、为什么要除以 sqrt(d_k)#

这也是很典型的面试细节。

如果向量维度很大,QK^T 的数值可能很大,进入 softmax 后会让分布过于尖锐,梯度变差。

除以 sqrt(d_k) 的作用是:

  • 控制数值范围
  • 防止 softmax 饱和
  • 让训练更稳定

所以它不是“数学装饰”,而是训练稳定性的重要处理。


六、Multi-Head Attention 为什么更强?#

如果只有一个 attention head,模型可能只学到一种关系。

Multi-Head Attention 会把表示空间切成多个子空间,每个 head 独立学习不同模式。

例如不同 head 可能关注:

  • 语法关系
  • 指代关系
  • 时态关系
  • 局部搭配关系
  • 主题信息

这带来的好处是:

模型不只从一个角度看上下文,而是从多个子空间并行地建模不同依赖。

所以 Multi-Head Attention 的价值不是“参数更多”,而是:

  • 表达能力更强
  • 可以捕获更丰富的关系模式

七、位置编码为什么必需?#

Transformer 没有 RNN 的递归,也没有 CNN 的卷积滑动结构。

问题来了:

如果只做 Self-Attention,模型天然是“顺序无感”的。

也就是说:

I love you
you love I

对纯注意力来说,如果没有额外位置信息,词集合可能看起来非常相似。

所以 Transformer 必须显式注入位置信息。

7.1 原始论文中的位置编码#

原始 Transformer 使用的是正弦 / 余弦位置编码

它的特点是:

  • 不依赖学习参数也能表示位置
  • 不同位置对应不同频率组合
  • 模型可以从中推断相对位置信息

7.2 为什么位置编码有效?#

因为它把“位置信息”加到 token embedding 上,于是每个 token 不再只有“词语意义”,还同时带上了“它出现在第几位”的信息。

所以模型学到的不是:

  • 单纯的 token 向量

而是:

  • token 语义 + 位置信息

八、Transformer 为什么更容易并行训练?#

这是它成功的一个关键工程优势。

RNN 必须按时间步串行:

h1 -> h2 -> h3 -> h4

而 Transformer 的 Self-Attention 在一个层内可以同时处理整个序列。

换句话说:

  • 所有 token 的 Q、K、V 可以并行计算
  • Attention 矩阵可以用矩阵乘法批量完成
  • GPU / TPU 非常擅长这类大规模并行线性代数计算

这带来两个巨大优势:

  1. 训练速度更快
  2. 更容易扩展到大模型和大数据

这也是 Transformer 能成为大模型基础设施的重要原因。


九、Transformer 为什么更擅长长距离依赖?#

在 RNN 里,两个远距离 token 的交互需要经过很多步传递。

而在 Transformer 里:

任意两个位置之间,理论上都可以一步通过 attention 建立连接。

这意味着:

  • 长距离信息路径更短
  • 梯度传播更直接
  • 全局依赖更容易学

这对语言建模尤其关键,因为自然语言里大量重要关系都不是邻近发生的。


十、Transformer 的代价是什么?#

面试里如果只说优点,不说代价,答案会显得不完整。

10.1 Attention 复杂度高#

标准 Self-Attention 对长度为 n 的序列,复杂度大致是:

O(n²)

因为每个 token 都要和所有 token 计算相关性。

这意味着:

  • 序列越长,计算和显存开销越大
  • 长上下文场景会非常昂贵

10.2 长文本成本高#

这也是为什么后来会有很多优化方案:

  • Sparse Attention
  • Linear Attention
  • FlashAttention
  • Sliding Window Attention
  • KV Cache

所以 Transformer 不是“没有缺点”,而是它的优点在大多数 NLP 任务中远远压过了缺点。


十一、为什么说 Transformer 特别适合大语言模型?#

因为大语言模型训练最需要的能力,Transformer 刚好都很强:

  1. 可扩展
  2. 可并行
  3. 能建模长距离依赖
  4. 适合大规模矩阵运算
  5. 和自回归语言建模天然契合

在 GPT 这类模型里,通常使用的是 masked self-attention

  • 每个位置只能看前面的 token
  • 保证生成时不会偷看未来信息

这样模型就可以学习:

给定前文,预测下一个 token

而这正是大语言模型最核心的训练目标。


十二、面试里怎么回答“Transformer 为什么有效?”#

建议按下面结构回答:

第一步:先讲它替代了什么#

Transformer 主要是为了解决 RNN / LSTM 在并行训练和长距离依赖建模上的限制。

第二步:讲核心机制#

它的核心是 Self-Attention,让每个 token 在编码自己时都能动态参考整个序列中所有 token。

第三步:讲为什么有效#

  1. 任意位置之间能直接建立依赖
  2. 训练时可以高度并行
  3. Multi-Head 能学习不同关系模式
  4. 位置编码补足顺序信息

第四步:补充代价和工程视角#

标准 attention 是 O(n²),长文本成本高,但整体收益远大于缺点,因此才成为大模型时代的基础架构。

这样回答,已经是比较完整的中高级答案。


十三、总结#

Transformer 为什么有效?本质上不是因为“它用了 attention”这么简单,而是因为它同时完成了几件很关键的事:

  1. 把序列建模从递归改成全局依赖建模
  2. 让任意 token 能一步直接交互
  3. 让训练大规模并行成为可能
  4. 通过多头注意力提升表达能力
  5. 通过位置编码补上顺序信息

所以真正准确的总结应该是:

Transformer 的成功,本质上是“全局注意力建模能力”和“现代硬件并行友好性”两者同时成立。

Transformer 为什么有效?从 Self-Attention 到位置编码
https://fuwari.vercel.app/posts/why-transformer-works/
Author
Owen
Published at
2026-05-29
License
CC BY-NC-SA 4.0