---
title: "用例子和自题解释 Transformer 如何使用 attention 学习文档"
description: "Transformer 中的 Attention：用例子和自测吃透核心机制 一句话先建立直觉 Attention 是一种\"软邻居平均\"算法：每个 token 发出一个 Query 去和序列里所有 token 的 Key 比相似度，softmax 把相似度变成权重，再用这些权重对 Value 做加权平均。据《从另一个视…"
canonical_url: "https://threadlab.pages.dev/d/3C5olGYGpqzkls"
published_at: "2026-07-03T08:52:57.255Z"
updated_at: "2026-07-03T08:52:39.761Z"
word_count: 3231
source: "ALab public document"
---

# Transformer 中的 Attention：用例子和自测吃透核心机制

## 一句话先建立直觉

Attention 是一种"软邻居平均"算法：每个 token 发出一个 Query 去和序列里所有 token 的 Key 比相似度，softmax 把相似度变成权重，再用这些权重对 Value 做加权平均。据《从另一个视角看 Transformer》给出的"软 k-NN"框架，这正是注意力头的一种直观解释——可微分、考虑序列顺序的软邻居平均。

把它想成一句话：**Query 在问"谁跟我最像"，softmax 投票，邻居的 Value 们按票数加权汇总。**

---

## 一、为什么需要 Attention：解决 RNN 的"长路径依赖"

在 RNN/LSTM 里，第 N 个位置要把信息传到第 1 个位置，必须走 N 步，路径越长信息损失越大。Transformer 用 self-attention 让序列内任意两个位置直接相连，路径长度都是 1。据知乎《经典精读：Transformer 模型和 Attention 机制》一文引述，其"核心思想"就是"使用 attention 机制，在一个序列的不同位置之间建立 distance = 1 的平行关系，从而解决 RNN 的长路径依赖问题（distance = N）"。

由此带来的两个性质：

- **并行计算**：所有位置的 Query/Key/Value 可以同时算，不需要像 RNN 那样一步步传递。
- **全局感受野**：每个位置都能看到整个序列。

---

## 二、QKV 到底从哪来：三步生成过程

设输入序列经过 embedding 得到向量矩阵 $X$，维度 $d_{\text{model}}$。Transformer 用三个可学习的权重矩阵 $W^Q, W^K, W^V$ 把 $X$ 投影到三个不同空间：

$$
Q = X W^Q, \quad K = X W^K, \quad V = X W^V
$$

直觉分工（综合知乎《动画详解 Transformer》一文关于 QKV 来自 $W_q W_k W_v$ 三个矩阵的描述，以及《从另一个视角看 Transformer》给出的"软 k-NN"框架）：

- **Query（问询）**：当前 token 想知道"谁跟我相关"。
- **Key（索引）**：每个 token 提供一个"我能被怎样检索到"的标签。
- **Value（内容）**：被检索到时实际返回的信息。

注意 Q、K、V 来自同一个输入 X，所以这叫 **self-attention**——序列自己检索自己。

---

## 三、Scaled Dot-Product Attention：完整公式

据《从另一个视角看 Transformer》和 deephub《Transformer 自回归关键技术》两篇可读正文一致的写法，最常见的缩放点积注意力为：

$$
\text{Attention}(Q, K, V) = \text{softmax}\!\left(\frac{Q K^\top}{\sqrt{d_k}} + M\right) V
$$

四步走（其中前三步来自《从另一个视角看 Transformer》"三步走"框架，第四步合并 softmax 与加权）：

1. **打分**：$Q K^\top$ 得到 $(n_q \times n_k)$ 的相似度矩阵。
2. **缩放**：除以 $\sqrt{d_k}$，避免 softmax 进入饱和区（见下文）。
3. **掩码**：加上 $M$ 矩阵，0 表示允许，$-∞$ 表示屏蔽。
4. **归一化 + 加权**：softmax 把分数变成权重，再乘 $V$ 得到输出。

### 为什么要除以 √d_k？

据《从另一个视角看 Transformer》可读正文："随机 d 维向量的点积会按 $O(\sqrt{d})$ 增长。不做缩放的话，softmax 就变成了胜者通吃（一个权重接近 1，其他都接近 0），梯度直接就消失了，所以除以 $\sqrt{d}$ 能让分数方差保持在合理范围，这样 softmax 的熵也就稳定了。"知乎《NLP(五):Transformer 及其 attention 机制》一文给出过同方向的方差推导线索，但未读取原文，仅作为佐证。

---

## 四、三个关键变形：Mask 与 Multi-Head

### 1. 因果掩码（Causal Mask）：解码器只看过去

生成式模型在预测第 $t$ 个 token 时不能偷看第 $t+1$ 及之后的信息。做法是在 $QK^\top$ 上加一个上三角矩阵，对角线以上填 $-∞$，softmax 之后权重为 0。deephub《Transformer 自回归关键技术》给出的 PyTorch 实现核心：

```python
self.register_buffer(
    "mask",
    torch.triu(torch.ones(context_length, context_length), diagonal=1)
)
# 前向时：scores = scores.masked_fill(self.mask.bool(), -torch.inf)

```

据 deephub 该文，`register_buffer` 的意义是"确保掩码矩阵会跟随模型在 CPU 和 GPU 之间移动，但不会作为可训练参数参与梯度更新"。

### 2. Padding Mask：屏蔽补位 token

句子长度不一需要 pad，pad 位置不应被关注。知乎《动画详解 Transformer》一文未读到原文，仅作为线索指出：在 mask 里把 pad 位置设为 $-∞$ 即可，让"做 softmax 前添加 mask，避免 pad 的地方没有注意力"。这里以"软 k-NN"框架的 mask 约定（0 允许，$-∞$ 阻塞）作支撑。

### 3. Multi-Head Attention：分头并行抓不同关系

把 $Q, K, V$ 沿通道维度切成 $h$ 份，每份独立做 attention，最后 concat 起来：

$$
\text{MultiHead}(Q,K,V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) W^O
$$

直觉：不同 head 可以学会不同子空间的关系——比如一个 head 学主谓一致，另一个 head 学指代消解。

---

## 五、一个完整算例：6 个 2 维 token

把维度降到二维，方便手算和可视化（改编自《从另一个视角看 Transformer》一文提供的 NumPy 实验框架）。

**设定**：$n = 6$，$d_k = 2$，$d_v = 2$，key 矩阵为：

```
k1 = (1.0, 0.2)
k2 = (0.9, 0.1)
k3 = (0.2, 1.0)
k4 = (-0.2, 0.9)
k5 = (0.0, -1.0)
k6 = (-1.0, -0.6)

```

**查询**：$q = k_1 = (1.0, 0.2)$。

**Step 1 打分**：$s_i = q \cdot k_i$

```
s1 = 1.04 s2 = 0.92 s3 = 0.24
s4 = -0.02 s5 = -0.20 s6 = -1.12

```

**Step 2 缩放**：除以 $\sqrt{2} \approx 1.414$

```
s'1 = 0.735 s'2 = 0.651 s'3 = 0.170
s'4 = -0.014 s'5 = -0.141 s'6 = -0.792

```

**Step 3 softmax**：$\text{softmax}(s'_i) = \frac{e^{s'_i}}{\sum_j e^{s'_j}}$

```
w1 ≈ 0.435 w2 ≈ 0.396 w3 ≈ 0.245
w4 ≈ 0.204 w5 ≈ 0.180 w6 ≈ 0.094

```

可以验证：所有 $w_i$ 之和约等于 1。

**观察**：$k_1$ 和 $k_2$ 方向最接近 $q$，拿到最大权重；$k_6$ 方向几乎相反，权重最小。这正是"软 k-NN"的直观体现——结果主要被与 query 相似的 token 主导。

如果想观察因果掩码的效果，可以让 $q = k_3$，并把 $j > 3$ 的位置 mask 掉，权重就会只分布在 $k_1, k_2, k_3$ 上。

---

## 六、与传统 k-NN 的对照

| 维度 | 硬 k-NN | Attention（软 k-NN） |
| --- | --- | --- |
| 邻居选择 | top-k 离散选择 | 所有邻居加权 |
| 相似度函数 | 距离 | 点积 / 余弦 / 负距离 |
| 权重 | 1/k 或相等 | softmax 概率分布 |
| 是否可微 | 不可微 | 可微（可端到端训练） |

据《从另一个视角看 Transformer》可读正文给出三种相似度变体：

- **点积**：同时考虑方向和幅度
- **余弦相似度**：只看角度，忽略长度
- **负距离 / RBF**：专注欧氏邻域

温度参数 $\tau$ 控制"软硬程度"：$\tau$ 越小越接近 argmax，越大越接近均匀分布——这一点原文已明确给出。

---

## 七、常见误区

1. **"Attention 就是相似度"**：Attention 返回的是加权后的 Value 向量，不是相似度本身。相似度只是中间产物。这一点《从另一个视角看 Transformer》明确区分了"相似度"和"加权平均后的 Value"。
2. **"Self-attention 复杂度是 $O(N)$"**：错，是 $O(N^2 d)$。知乎《Swin Transformer Attention 机制的详细推导》一文未读取原文，仅作为线索说明：Swin Transformer 等工作通过 local window 把计算复杂度由 $O(N^2)$ 降至 $O(N)$ 水平。
3. **"掩码就是把权重置 0"**：错。掩码是在 softmax **之前**把分数置为 $-∞$，softmax 之后才变成 0。先 softmax 再乘 0 会改变概率分布。
4. **"所有权重加起来一定等于 1"**：这是 softmax 的硬约束，但只针对**同一行的权重**。不同 query 行独立归一化。
5. **"Attention 陷阱"问题**：清华大学等机构联合揭秘的"注意力陷阱"（资料未读取原文，仅作为线索）：softmax 的"必须花完"约束可能导致 attention 出现病态分布——延伸阅读，需要直接核验原论文。

---

## 八、自测题（含参考答案）

### 题 1：公式默写

写出 Scaled Dot-Product Attention 的完整公式，并解释 $\sqrt{d_k}$ 的作用。

> **参考答**：

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

> 据《从另一个视角看 Transformer》，缩放因子防止点积方差随 $d_k$ 增长而过高，导致 softmax 饱和、退化为胜者通吃，梯度消失。

### 题 2：算例手算

给定 $q=(1,0)$，$k_1=(1,0)$，$k_2=(0,1)$，$k_3=(-1,0)$，$d_k=2$。计算未做 softmax 的缩放分数，并判断哪个 key 会被分配最大权重。

> **参考答**： 原始点积 $s_1=1, s_2=0, s_3=-1$；缩放后 $s'_1=0.707, s'_2=0, s'_3=-0.707$。$k_1$ 与 $q$ 方向一致，softmax 后权重最大。

### 题 3：掩码位置

因果掩码应该在 softmax **之前**还是**之后**加？为什么？

> **参考答**：之前。要被屏蔽的位置要变成"完全没概率"，必须在 softmax 前把分数设为 $-\infty$，softmax 之后才自然变成 0。先后顺序反了，概率分布会被错误地重新归一化。

### 题 4：多头机制

Multi-Head Attention 把 $d_{\text{model}}$ 拆成 $h$ 份而不是用 $h$ 个独立的输入，意义是什么？

> **参考答**：拆分后每个 head 在低维子空间独立计算 attention，可以用相同的计算预算学到 $h$ 组不同的关系模式；如果用 $h$ 个独立输入，参数量和计算量都会膨胀 $h$ 倍。

### 题 5：概念辨析

Attention 输出向量的维度，由 Q、K 还是 V 决定？

> **参考答**：由 V 的维度 $d_v$ 决定。据《从另一个视角看 Transformer》的 NumPy 实现注释：输出形状为 $(n_q, d_v)$。Q、K 的维度只影响打分矩阵大小，不影响最终输出的形状。

### 题 6：迁移应用

如果把相似度函数从点积换成余弦相似度，需要调整 $\sqrt{d_k}$ 缩放吗？为什么？

> **参考答**：理论上不需要，余弦相似度天然归一化到 $[-1,1]$，不再随维度增长。但实践中如果训练不稳定，仍然可以保留缩放作为温度调节。

---

## 九、可继续核验的问题

- 资料中清华大学等机构提出的"注意力陷阱"在标准 Transformer 中是否普遍存在？是 training dynamics 还是 softmax 结构本身的问题？（资料仅作为线索，未读到完整论文，需进一步核验）
- 不同初始化（如 Xavier、Kaiming）下，$1/\sqrt{d_k}$ 缩放是否仍是最优选择？
- Multi-Head 中 $W^O$ 的训练动态是否会被 attention 的稀疏化放大？
- 知乎《NLP(五)》《经典精读 Transformer》《动画详解 Transformer》《Swin Transformer 详细推导》等篇目只读到了搜索摘要，原文细节需要在后续核验中补齐。

## 参考来源

- [1] MiniMax Search｜NLP(五):Transformer及其attention机制_知乎
- [2] MiniMax Search｜Transformer自回归关键技术:掩码注意力原理与PyTorch完整实现
- [3] MiniMax Search｜从另一个视角看Transformer:注意力机制就是可微分的k-NN算法
- [4] MiniMax Search｜动画详解Transformer模型注意力机制的概念与模型搭建 - 知乎
- [5] MiniMax Search｜【经典精读】Transformer模型和Attention机制 - 知乎

## 资料包证据链

- MiniMax Search｜Transformer自回归关键技术:掩码注意力原理与PyTorch完整实现：搜索资讯页 --> Transformer自回归关键技术：掩码注意力原理与PyTorch完整实现 deephub 2025-09-25 掩码注意力（Causal Attention）是生成式模型的核心技术，它传统自注意力机制有根本的不同，掩码注意力限制模型只能关注当前位置之前的tokens，确保了自回归生成的因果性。 自注意力的掩码 自注意力机制在Transformer编码器和BERT等模型中广泛应用。这种机制的特点是每个token都能
- MiniMax Search｜从另一个视角看Transformer:注意力机制就是可微分的k-NN算法：Title: 从另一个视角看Transformer：注意力机制就是可微分的k-NN算法 URL Source: [http://so.html5.qq.com/page/real/search_news?docid=70000021_85468d3e37190552](http://so.html5.qq.com/page/real/search_news?docid=70000021_85468d3e37190552) Markdown Content: 注意力机制听起来很玄乎，但我们可以把它看作一个软k-NN算法。查询向量问："谁跟我最像？"，softmax投票，相似的邻居们返回一个加权平
- MiniMax Search｜NLP(五):Transformer及其attention机制_知乎：未读取原文，仅来自搜索或 RSS 摘要：Transformer 由且仅由 self-Attention 和Feed Forward Neural Network 组成｡Transformer中包括了编码器和解码器各 6 层,总共 12 层的 Encoder-Decoder｡Transformer 中的核心机制就是 Self-Attention｡Self-Attention 机制的本质来自于人类视觉注意力机制｡ attention详解 输
- MiniMax Search｜动画详解Transformer模型注意力机制的概念与模型搭建 - 知乎：未读取原文，仅来自搜索或 RSS 摘要：Transformer模型注意力机制计算 其实QKV矩阵的来历比较简单,如下视频动画讲解了QKV三矩阵的来历 QKV三矩阵 这里我们的输入矩阵I分别乘以权重矩阵Wq,Wk,Wv三个矩阵,就得到了输入transformer模型的QKV三矩阵,QKV三矩阵用在transformer模型计算注意力,根据attention is all you need论文中计算注意力机制的公式,我们通过以上得到的QKV
- MiniMax Search｜【经典精读】Transformer模型和Attention机制 - 知乎：Transformer 是2017年的一篇论文《Attention is All You Need》提出的一种模型架构,这篇论文里只针对机器翻译这一种场景做了实验,全面击败了当时的机器翻译各个benchmark上的SOTA｡) Query, Key, Value Multi-head Attention的本质 Transformer模型架构中的其他部分 Feed Forward Network Positional Embedding 参考来源：[zhuanlan.zhihu.com](https://zhuanlan.zhihu.com/p/476585349)、[so.html5.qq.com](https://so.html5.qq.com/page/real/search_news?docid=70000021_91668d529d989352)（共 10 个）
