Module 1 · Transformer Lesson 05 核心直觉(无 Q/K/V)

朴素注意力

只用你已会的两样工具——点积 + softmax——拼出注意力的核心动作:让每个词按"和别人有多像"去混合大家的信息。这一课先不碰 Q/K/V。

Topic朴素(自)注意力:相似度加权平均
Objectives建立"注意力 = 按相似度混合上下文"的核心直觉;看清整条计算链
Prerequisites点积 ✅、softmax ✅、embedding=向量 ✅
Outcome能用点积+softmax+加权和描述一个 token 如何吸收上下文
Warning这是简化版——故意省掉 Q/K/V。下一课会指出它的不足并修好

① Why — 我们想要什么

Embedding 给的向量是孤立的:bank 不管在 "river bank" 还是 "bank account" 里,拿到的向量都一样。我们想让每个词能看看整句、把相关词的信息揉进自己,变成"懂上下文的词"。

手上的线索:词都是向量,而点积能测"两个向量有多像"。那最朴素的想法就是——每个词,按它和句中各词的相似度,加权平均大家的向量。相似的多拿一点,不相似的少拿一点。这就是朴素注意力。

② How — 三步(全是已学工具)

设一句话有 3 个词,它们的 embedding 向量是 x₁, x₂, x₃。现在算第 1 个词的新向量:

  1. 打分(点积):拿 x₁ 和每个词点积 → s₁₁ = x₁·x₁, s₁₂ = x₁·x₂, s₁₃ = x₁·x₃。三个"相似度分数"。
  2. 归一化(softmax)[s₁₁, s₁₂, s₁₃] → softmax → [w₁₁, w₁₂, w₁₃],加起来 =1 的权重。
  3. 加权求和x₁ 的新向量 = w₁₁·x₁ + w₁₂·x₂ + w₁₃·x₃。按权重把大家的向量混进来。
new(xᵢ) = Σⱼ softmaxj( xᵢ · xⱼ ) · xⱼ
算 x₁ 的新向量(数字为示意) x₁ x₁ x₂ x₃ ·=8.0 ·=1.0 ·=3.0 ① 点积打分 softmax 0.99 ·x₁ 0.002·x₂ 0.008·x₃ ② 权重(和=1) x₁ 的 新向量 ③ 加权求和
点积打分 → softmax 成权重 → 按权重混合各词向量。每个词都这样算一遍,得到各自"吸收了上下文"的新向量。
⚠️ "Self(自)" 的含义:打分用的向量和被混合的向量来自同一句话里的这些词——自己跟自己人比、混自己人。所以叫 self-attention。(对比:如果拿另一段文字来混,那叫 cross-attention,以后再说。)

③ 关键直觉

注意力 = 按相似度,对上下文做一次加权平均

④ 🅿️ 这个朴素版有个大问题(预告下一课)

⚠️ 不展开,只留个悬念:上面每个词只用一个向量 xᵢ 同时干了三件事——发起比较被别人比较提供内容。这三个角色被硬绑在同一个向量上,导致注意力不够灵活(比如"我想找的"和"我能提供的"其实该是两回事)。下一课的 Query / Key / Value 就是把这三个角色拆开,各给一个专门的向量。今天先记住朴素版的直觉即可。

✅ 快速检查(用自己的话答)

  1. 朴素注意力的三步分别是什么?每一步用了哪个已学工具?
  2. 一句话说:为什么算完之后,每个词的新向量比原来的 embedding "更懂上下文"?
  3. 图里 x₁ 拿到的权重 [0.99, 0.002, 0.008] 里,x₁·x₁ 那项几乎总是最大的。你觉得为什么?(提示:一个向量和它自己的点积)

答完这 3 题,下一课 C. Query / Key / Value——把"比较 / 被比较 / 提供内容"三个角色拆开,修好朴素版的死板。