← aipaipai.cloud · INDEX
01 输入 02 注意力 03 积木 04 架构 05 训练 06 现代
DOCS // INTERACTIVE SERIES 02/06

Attention://
核心机制

让每个词「看一眼」整句话,决定该多关注谁。本篇拆 Q/K/V、打分、softmax、加权求和、因果掩码。 教学性模拟--注意力热图由确定性算法生成,用以理解原理,非真实模型输出。

ATTN_READY OP: SOFTMAX(QK^T/√d)·V SLUG: transformer-attention STATUS: LOCAL_ONLY

00 直觉 · 查字典

注意力 = 一次「带权重的检索」。图书馆类比最好懂。

Q · QUERY · 我要找啥

你拿着的问题:「我想找一本讲猫的书。」这是查询

K · KEY · 书的标题

每本书的标题/标签:「猫科动物」「鱼类」「烹饪」。拿 Q 和每个 K 比对。

V · VALUE · 书的内容

比对完给每本书一个分数,按分数把内容 V 加权拿出来。

每个 token 同时扮演三个角色:拿自己的 Q 去问,用自己的 K 等着被别人问,最后用自己的 V 贡献内容。分数高 = 多关注

01 Q / K / V 怎么来

三个线性变换,把输入向量变出三种用途。

input x -> [W_q] -> Q // 查询
input x -> [W_k] -> K // 被查的键
input x -> [W_v] -> V // 内容值

W_q / W_k / W_v 是三组可训练的权重矩阵。同一个输入向量 x,乘不同矩阵就得到不同用途的向量。为什么要分三份?因为「我该关注谁」和「我能提供什么内容」是两件不同的事。

02 打分 + SOFTMAX

点鼠标选一个 token 当 Q,看它对其他 token 的注意力分布。拖滑块调温度。

输入句子

τ = 1.0

注意力矩阵(行=查询 Q,列=被关注 K)

selected Q: - 点击矩阵某行 / 上方某 token,高亮它对全句的关注分布
为什么除以 √d_k?

Q·K 点积会随维度 d_k 增大而变大(很多项相加)。值一大,softmax 就会「尖锐化」--某个分数略高就把概率全吃光,梯度消失、训练不动。除以 √d_k 把方差压回 1 附近,让分布温和、训练稳。这不是「魔法常数」,是统计学上的方差归一。

03 加权求和 · OUTPUT

注意力权重 × V = 这个 token 的输出。一行话总结整条公式。

scores = Q · KT / √d_k   // 打分
weights = softmax(scores)   // 归一成概率(和=1)
output = weights · V   // 按权重把 V 加起来

softmax 干一件事:把任意大小的分数(甚至负数)压成「0~1 且和为 1」的概率分布。分数越高权重越大,但不会是 0 或 1,是平滑的「关注多少」。最后拿这组权重把所有 token 的 V 加权求和--这就是这个位置经过注意力后的新表示。

一句话 Attention(Q,K,V) = softmax(QKT/√d_k)·V

04 因果掩码 · CAUSAL MASK

Decoder 不能偷看未来。开/关掩码,看注意力矩阵怎么变。

句子 the cat sat
FULL · Encoder 用

每个词能看所有词(前后都行)。适合「理解」任务--比如 BERT 看完整句做分类。

CAUSAL · Decoder 用

把上三角屏蔽成 -∞,softmax 后权重变 0--只能看自己和左边。预测下一个词时不能偷看答案,这就是生成式模型(GPT)能自回归生成的前提。

05 概念速查

注意力机制的关键术语。

术语一句话
Q / K / V查询 / 键 / 值;同一输入经三个矩阵变出三种用途
点积Q·K 衡量「查询和键有多匹配」,越大越相关
softmax把分数压成 0~1 且和为 1 的概率,决定关注多少
√d_k 缩放防分数过大导致 softmax 尖锐化、梯度消失
注意力矩阵每行是一个 token 对全句的关注分布
因果掩码屏蔽未来位置,让 Decoder 只看左边,可自回归
自注意力Q/K/V 都来自同一序列,序列内部互相关注
NEXT · 03/06

基础积木块

单头注意力太单薄。下一篇上多头、FFN、归一化、残差,把一个 Block 拼出来。

下一篇 · 积木块 ->