Transformer 原理图解:自注意力、位置编码、Encoder-Decoder

从第一性原理拆解 Transformer 架构:它为什么能取代 RNN,自注意力在算什么,位置编码解决什么问题。

#Transformer#注意力机制#架构#深度学习更新于 2026-08-12
📑 本页目录

2017 年《Attention Is All You Need》提出 Transformer,彻底取代 RNN/LSTM 成为大模型的基础架构。 要真正理解它,别背公式,先问:RNN 的问题到底在哪?

从 RNN 的缺陷说起

RNN 按顺序逐个处理词,当前时刻必须等前面时刻算完。两个致命问题:

  1. 无法并行——串行计算,训练慢
  2. 长距离遗忘——信息要穿过很多步才传到,梯度消失,早期的词对后面影响衰减

Transformer 的解法很朴素:让所有词同时处理,并且每个词都能直接“看到”序列里其他所有词。 这就是自注意力(Self-Attention)。

自注意力在算什么

给定一句话,比如「银行门口有一家银行」。两个「银行」含义不同,自注意力让每个词根据上下文重新加权它看到的其他词。

对每个词,模型算出三样东西:

  • Query(查询):我想找什么信息
  • Key(键):我是什么信息,能被谁查
  • Value(值):我实际携带的内容

注意力权重 = 当前词的 Query 和所有词的 Key 做点积(相似度),归一化后去加权所有词的 Value。

Attention(Q,K,V) = softmax(QKᵀ/√d) · V

除以 √d 是为了防止点积过大导致 softmax 梯度消失。这就是「缩放点积注意力」。

多头注意力(Multi-Head):同时算多组 Q/K/V(8 组常见),每组关注不同子空间的关系(语法、语义、位置……),最后拼接。相当于多个“专家”并行看同一句话,各看各的维度。

位置编码:打破“词袋”困境

自注意力对词序天然不敏感——「猫追狗」和「狗追猫」在它的眼里 tokens 一样。所以必须显式注入位置信息。

  • 原始方案:正弦/余弦位置编码,把位置写成固定函数,叠加到词向量上
  • 现代方案(RoPE 旋转位置编码):把位置信息旋进 Q/K 向量,既表达绝对位置,又天然表达相对位置,被 Llama、Qwen 等主流模型采用

Encoder-Decoder 结构

经典 Transformer 分两半(GPT 系只用 Decoder,BERT 系只用 Encoder):

组件 职责 代表
Encoder 双向看全句,理解语义 BERT
Decoder 单向(只能看左边),逐词生成 GPT

Encoder:自注意力可以看整句上下文(双向掩码)。 Decoder:自注意力做因果掩码——预测下一个词时只能看已生成的词,不能“偷看”未来。这就是自回归生成。

一句话总结

Transformer = 让每个词能并行地“看遍全场”(自注意力)+ 显式记住自己的位置(位置编码)+ 用掩码控制信息流向(Encoder 双向 / Decoder 单向)。

理解了这三件事,你就能看懂后续几乎所有大模型的论文——因为它们的核心,都是在优化这层自注意力的“看遍全场”的方式(稀疏注意力、分组查询注意力 GQA、滑动窗口……)。