只用你已会的两样工具——点积 + softmax——拼出注意力的核心动作:让每个词按"和别人有多像"去混合大家的信息。这一课先不碰 Q/K/V。
| Topic | 朴素(自)注意力:相似度加权平均 |
| Objectives | 建立"注意力 = 按相似度混合上下文"的核心直觉;看清整条计算链 |
| Prerequisites | 点积 ✅、softmax ✅、embedding=向量 ✅ |
| Outcome | 能用点积+softmax+加权和描述一个 token 如何吸收上下文 |
| Warning | 这是简化版——故意省掉 Q/K/V。下一课会指出它的不足并修好 |
Embedding 给的向量是孤立的:bank 不管在 "river bank" 还是 "bank account" 里,拿到的向量都一样。我们想让每个词能看看整句、把相关词的信息揉进自己,变成"懂上下文的词"。
手上的线索:词都是向量,而点积能测"两个向量有多像"。那最朴素的想法就是——每个词,按它和句中各词的相似度,加权平均大家的向量。相似的多拿一点,不相似的少拿一点。这就是朴素注意力。
设一句话有 3 个词,它们的 embedding 向量是 x₁, x₂, x₃。现在算第 1 个词的新向量:
x₁ 和每个词点积 → s₁₁ = x₁·x₁, s₁₂ = x₁·x₂, s₁₃ = x₁·x₃。三个"相似度分数"。[s₁₁, s₁₂, s₁₃] → softmax → [w₁₁, w₁₂, w₁₃],加起来 =1 的权重。x₁ 的新向量 = w₁₁·x₁ + w₁₂·x₂ + w₁₃·x₃。按权重把大家的向量混进来。注意力 = 按相似度,对上下文做一次加权平均
xᵢ 同时干了三件事——发起比较、被别人比较、提供内容。这三个角色被硬绑在同一个向量上,导致注意力不够灵活(比如"我想找的"和"我能提供的"其实该是两回事)。下一课的 Query / Key / Value 就是把这三个角色拆开,各给一个专门的向量。今天先记住朴素版的直觉即可。
x₁ 拿到的权重 [0.99, 0.002, 0.008] 里,x₁·x₁ 那项几乎总是最大的。你觉得为什么?(提示:一个向量和它自己的点积)答完这 3 题,下一课 C. Query / Key / Value——把"比较 / 被比较 / 提供内容"三个角色拆开,修好朴素版的死板。