Module 0 · Foundations Lesson 03 收尾 → 通往 Transformer

Vector · 点积与相似度

向量的"位置/方向"直觉你已经有了。这一课只补一个运算——点积,它就是 attention 用来衡量"两个 token 有多相关"的核心工具。

Topic点积(dot product)作为相似度度量
Objectives会算点积;理解它衡量"两个向量有多对齐";知道它就是 attention 打分的原理
PrerequisitesEmbedding ✅(token = 高维空间里的向量)
Outcome能一句话说清"两个向量点积大 = 语义相近",为 Transformer 的 Q·K 铺路
Warning点积同时混了"方向"和"长度"两个因素——想只看方向要用余弦
📌 本课你只需掌握两件事:
  1. 点积怎么算(对应位置相乘,再全部加起来)
  2. 点积可以当作 "两个向量有多对齐/多相似"的一个分数(大=像,≈0=无关,负=相反)
🅿️ 以下都是「预告」,本课不用纠结,后面专门讲: 概念层次链:点积 → 可解读为 相似度(本课到这为止)→〔后面〕过 softmax → 注意力权重

① Why — 为什么需要它?

下一模块 Transformer 的核心问题是:读到某个词时,它该"关注"前面哪些词? 例如 “The animal didn't cross the street because it was tired” —— it 指的是 animal 还是 street?

要回答,模型得能量化"两个 token 有多相关"。而 token 现在都是向量(Embedding 课),所以问题变成:怎么用一个数字衡量两个向量有多"像"?

答案就是 点积

② What — 点积怎么算

两个同维向量,对应位置相乘,再全部加起来,得到一个标量(单个数字):

a · b = a₁b₁ + a₂b₂ + … + anbn

a = [2, 1, 3],   b = [1, 0, 2]
a · b = 2×1 + 1×0 + 3×2 = 8

就这么简单:一串数字 × 一串数字 → 一个数。

③ 关键直觉 — 点积衡量"对齐程度"

点积还有个几何身份,这才是重点:

a · b = |a| × |b| × cos θ   (θ = 两向量夹角)
方向相近 a·b 大正数 cosθ ≈ 1 互相垂直 a·b = 0 cosθ = 0 · 无关 方向相反 a·b 负数 cosθ ≈ -1
方向越一致,点积越大(正);垂直为 0;相反为负。点积大 ↔ 两向量"指向同一方向" ↔ 语义相近。

把它接回 Embedding 课:语义相近的 token,向量指向相近的方向 → 它们的点积大。所以点积给了我们一把尺子:

点积大 = 相关;点积接近 0 = 无关;点积为负 = 相反

④ 一个小坑:方向 vs 长度

⚠️ 点积 = |a|·|b|·cosθ 同时混了两个因素:夹角(方向)向量长度。一个"很长但方向一般"的向量,点积也可能不小。若只想比"方向像不像",要除掉长度 → 这就是余弦相似度 cosθ = (a·b)/(|a||b|)
Transformer 里用的是原始点积(还会除以一个 √d 做缩放,后面 attention 课讲),先知道"点积 ≈ 相似度打分"即可。

⑤ 🅿️ 预告(不用纠结)— 这一步通往 attention

下面只是让你知道点积会用在哪,不要求现在理解,后面 Module 1 会从头讲:

Transformer 里,每个 token 会生成一个 Query("我在找什么")和一个 Key("我能提供什么"),用 Query · Key 的点积当作"该给别的 token 多少注意力"的原始分数——这个分数再过 softmax 才变成真正的注意力权重

点积 → 相似度分数 →〔softmax〕→ 注意力权重

记住这条链的位置即可;Query/Key/Value、softmax 都在待讲清单里。

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

  1. 算一下:a = [1, 2, 0]b = [3, 1, 4],点积是多少?
  2. 两个 token 的向量点积很大,说明它们语义上大概是什么关系?点积接近 0 呢?
  3. 判断对错并说理由:"点积只取决于两个向量的夹角,跟它们的长度无关。"

(你已在讨论中答过这 3 题并通过 ✅)下一小课:softmax——把相似度分数变成"和为 1 的权重"。