注意力机制入门
注意力机制(Attention)让模型在处理每个位置时,用「查询 Query」与所有位置的「键 Key」计算相关度分数,经 softmax 得到权重后对「值 Value」加权求和——即一次可微的、按内容寻址的信息检索,公式为 Attention(Q,K,V) = softmax(QKᵀ/√d)V。
一句话定义
注意力机制(Attention)让模型在处理每个位置时,用「查询 Query」与所有位置的「键 Key」计算相关度分数,经 softmax 得到权重后对「值 Value」加权求和——即一次可微的、按内容寻址的信息检索,公式为 Attention(Q,K,V) = softmax(QKᵀ/√d)V。
直觉
RNN 读长文像「单向磁带录音机」,信息只能顺序压进一盘磁带;注意力像「图书馆检索」:带着问题(Q)去查每本书的标签(K),按相关度分配阅读时间(权重),把最相关的段落(V)摘录汇总——不必逐页重读。
为什么重要
注意力是本库的收官机制与通往 Transformer/大模型时代的门票:它把 kp-022/023 苦心经营的「长程依赖」从「沿时间递归传递」变成「一步直达」,RNN 时代的两大顽疾(信息经过长压缩、训练无法并行)被同时化解。Bahdanau 2015 让它拯救机器翻译,Vaswani 2017 让它取代递归本身——本库只讲到入门门槛,架构细节(多头、位置编码、自注意力堆叠)属于 Transformer 独立站点,此处按约定只留路标。
前置知识
- kp-023(注意力所替代的递归通路)、kp-024(序列表示与 softmax)、kp-009(softmax 的数值性质)。
核心概念
- Query/Key/Value(Q/K/V):查询向量、地址标签、被取内容——检索三要素,均由输入经线性投影得到。
- 注意力分数:q·k 的点积相似度;除以 √d 缩放防止 softmax 饱和(维度大时点积方差 ∝ d)。
- 注意力权重 α:分数经 softmax 归一化成概率分布,和为 1。
- 对齐(alignment):翻译任务中权重可视化出的「源词-目标词」对应关系,注意力的可解释红利。
- 加性注意力 vs 点积注意力:Bahdanau 用小网络打分 vs 用内积打分;点积版因可矩阵化成为主流。
- 自注意力(self-attention):Q、K、V 同源序列,序列内部互查——Transformer 的基石(细节指路独立站点)。
原理与机制
计算流程四步:投影——Q=XW_Q、K=XW_K、V=XW_V;打分——e_{ij}=q_i·k_j/√d;归一——α_i=softmax(e_{i,·});加权——output_i=Σ_j α_{ij}v_j。矩阵形式即一行:softmax(QKᵀ/√d)V。三个机制要点。其一,「软寻址」的可微性:传统哈希检索是离散 argmax、不可导;注意力用 softmax 把「选哪个」变成「按概率全都要一点」,梯度能穿过权重直接训练 Q/K/V 的投影——这是 kp-009「可微化决策」哲学的又一次胜利。其二,一步直达的长程依赖:位置 1 与位置 100 的交互只隔一次加权求和,路径长度 O(1);对照 kp-022 的 O(T) 递归链与 kp-023 的「梯度需活着走完全程」,注意力从根本上绕开了衰减问题——kp-020 的残差为它保梯度、kp-014 的 LayerNorm 为它稳分布(变体,指路 Transformer 站点),组合后序列建模的深度与并行瓶颈同时打开。其三,√d 缩放的必要性:q、k 各分量独立时点积方差 ∝ d,d=64 时分数尺度大十余倍,softmax 落入 kp-009 讨论过的饱和区、权重退为 one-hot、梯度消失;除以 √d 把方差拉回 1,是「数值卫生」进入公式设计的名场面。注意力的史前史与两个方向:Bahdanau 2015 的注意力是 RNN 编码-解码器的补丁(解码器每步回头看编码器全部状态,顺带产出对齐可视化);Vaswani 2017 的宣言《Attention Is All You Need》把递归整个删掉。本库边界声明:多头机制、因果掩码、位置编码、自注意力的 O(T²) 复杂度治理与整套 Transformer 堆叠,均不在本库展开,请转入 Transformer/大模型独立站点。
公式或模型
缩放点积注意力(Vaswani 2017 形式):
单头: Attention(Q, K, V) = softmax( Q Kᵀ / √d_k ) V
逐位: e_ij = q_i·k_j/√d_k , α_ij = softmax_j(e_ij) , out_i = Σ_j α_ij v_j变量说明:Q∈R^{T_q×d_k}、K∈R^{T_k×d_k}、V∈R^{T_k×d_v};softmax 沿 j(被检索的位置轴)归一化;√d_k 为分数缩放。多头注意力的拆分与拼接在本库不展开。
图示
softmax 归一(每行和=1)
Q ──┐ ┌──────────────┐
├─► │ QKᵀ/√d (打分) │ ──► α ──► Σ_j α_ij·v_j ──► 输出
K ──┤ └──────────────┘ ▲
└────────────────────────────────┤
V ────────────────────────────────── ┘
例:翻译「the → 阅读」时 α 对「读」的键给 0.72、对「书」给 0.21 ……
(对齐矩阵可可视化,注意力最直观的可解释产物)直观类比
√d 缩放像「多人投票前先把票数除以人数」:维度越高票数(点积)天然越大,不除以人数,softmax 就会变成一家独大的「伪民主」。
实例或案例
30 行实现并可视化对齐(最小 Bahdanau 式打分):
import torch, torch.nn.functional as F
T, d = 6, 32
X = torch.randn(1, T, d)
Wq, Wk, Wv = (torch.nn.Linear(d, d, bias=False) for _ in range(3))
Q, K, V = Wq(X), Wk(X), Wv(X)
scores = Q @ K.transpose(1, 2) / d ** 0.5 # [1, T, T]
alpha = F.softmax(scores, dim=-1) # 每行权重和=1
out = alpha @ V # [1, T, d]
# alpha[0] 即 6×6 对齐矩阵:用 matplotlib 热力图即可看到「谁在看谁」语义检查实验:给一句含指代的句子画 α 热力图,代词位置的行会在其指代对象处出现亮斑——对齐可解释性是注意力最早的「可视化红利」。 kp-024 的语言模型若把 RNN 主干换成本节的注意力块(再加 kp-020 残差),即得到迷你 Transformer 编码器的雏形;完整堆叠、掩码与训练属于 Transformer 站点第一课。
常见误区
- 「注意力权重 = 人类意义上的解释」:α 只说明「模型检索了谁」,不保证因果解释正确,可解释性有限度(kp-033 呼应)。
- 忘记 √d 缩放:高维下 softmax 饱和,注意力退化为硬性 one-hot、训练停滞。
- 「注意力=Transformer 全部」:它只是核心算子;位置编码、多头、FFN、残差、LayerNorm 缺一不可——本库只承包第一块砖。
- 在 RNN 上加注意力就能完全解决长程问题:注意力改善「读」,但顺序递归的并行瓶颈仍在,最终要靠删掉递归(Vaswani 路线)。
与其他知识点的关系
它用 kp-009 的 softmax 做归一、用 kp-020 的残差做骨架、用 kp-024 的嵌入做输入;它是 kp-022/023 递归路线的「取代者」,也是本库通向 Transformer/大模型独立站点的一句路标(见延伸阅读)。
自测题
- 写出缩放点积注意力公式并解释 Q/K/V 各自的角色。
答案要点:softmax(QKᵀ/√d_k)V;Q 是查询、K 是地址、V 是内容,权重由内容相关度决定。
- 为什么点积分数要除以 √d_k?
答案要点:独立分量点积方差 ∝ d_k,大分数使 softmax 饱和、梯度消失;除以 √d_k 使方差回到 O(1)。
- 注意力如何同时化解 RNN 的两大顽疾?
答案要点:任意两位置一步直达(长程依赖 O(1),不再依赖递归存活);全序列矩阵化计算(时间步可并行训练)。
延伸阅读
- Bahdanau、Cho、Bengio ICLR 2015(注意力与对齐的起点)。
- Vaswani 等《Attention Is All You Need» NeurIPS 2017——Transformer 架构细节请转入本套知识库体系中的 Transformer/大模型独立站点,本站不再展开。
学习状态
状态保存在浏览器本地,用于首页与路径页的进度统计。