为什么向量点积越大,表示两个向量之间的相似度越高?

这是一个非常深刻且重要的问题!理解“为什么向量点积越大,相似度越高”,是掌握现代机器学习(尤其是注意力机制、推荐系统、语义搜索等)的关键基础,我们来一步步拆解。


1. 向量点积的数学定义

给定两个向量 ab,它们的点积(Dot Product)定义为:

$$
\mathbf{a} \cdot \mathbf{b} = \sum_{i=1}^{n} a_i b_i = a_1 b_1 + a_2 b_2 + \cdots + a_n b_n
$$

但还有一个几何定义,它才是理解“相似度”的关键:

$$
\mathbf{a} \cdot \mathbf{b} = |\mathbf{a}| |\mathbf{b}| \cos \theta
$$

其中:

  • $|\mathbf{a}|$ 是向量 a 的长度(模),
  • $|\mathbf{b}|$ 是向量 b 的长度,
  • $\theta$ 是两个向量之间的夹角

2. 从夹角 $\theta$ 理解“相似度”

我们关心的是方向上的相似性,而不是大小。两个向量越“相似”,意味着它们指向的方向越接近。

来看不同夹角下的 $\cos \theta$ 值:

夹角 $\theta$ $\cos \theta$ 向量关系 相似度
1 完全同向 最高 ✅
45° ~0.707 方向接近
90° 0 正交(无关) 一般
135° ~-0.707 方向相反
180° -1 完全反向 最低 ❌

👉 所以:向量方向越接近,$\cos \theta$ 越大(越接近1)


3. 点积与相似度的关系

从公式 $\mathbf{a} \cdot \mathbf{b} = |\mathbf{a}| |\mathbf{b}| \cos \theta$ 可以看出:

  • 点积的大小由两个向量的长度它们夹角的余弦共同决定。

  • 如果我们固定向量的长度(比如对向量做归一化,使其长度为1),那么:

    $$
    \text{如果 } |\mathbf{a}| = |\mathbf{b}| = 1 \Rightarrow \mathbf{a} \cdot \mathbf{b} = \cos \theta
    $$

    此时,点积就等于余弦相似度(Cosine Similarity)!

    所以:

    • 点积越大 → $\cos \theta$ 越大 → 夹角越小 → 两个向量方向越接近 → 越相似
    • 点积越小(甚至为负)→ 方向越相反 → 越不相似

4. 举个实际例子

假设我们有两个二维向量,代表两个词的语义向量:

  • a = [1, 0] (比如代表 “猫”)
  • b = [0.9, 0.1] (比如代表 “猫咪”,语义接近)
  • c = [-1, 0] (比如代表 “狗”,语义相反?只是举例)

计算点积:

  • a · b = 1×0.9 + 0×0.1 = 0.9 → 很大 → 很相似 ✅
  • a · c = 1×(-1) + 0×0 = -1 → 很小 → 不相似 ❌

即使不做归一化,也能看出趋势。


5. 重要提醒:长度的影响

如果向量没有归一化,点积还会受到向量长度的影响。

例如:

  • a = [1, 0],b = [2, 0] → 点积 = 2
  • a = [1, 0],c = [0.5, 0.5] → 点积 = 0.5

虽然 ca 的夹角是45°,但点积比 b 小。这是因为 b 更长。

所以,在比较相似度时,通常使用余弦相似度(即归一化后的点积),它只关注方向,忽略长度。

但在某些场景(如注意力机制),不归一化的点积也有意义——它同时考虑了“方向相似性”和“强度”。


6. 在自注意力机制中的应用

在Transformer的自注意力中:

  • Query 向量和 Key 向量做点积,得到一个“相关性分数”。
  • 这个分数越大,表示当前 Query(比如“猫”)与某个 Key(比如“爪子”)越相关、越相似。
  • 模型就会在计算 Value 时,给这个位置分配更高的注意力权重。

所以,点积在这里就是“语义相似度”的度量


总结:为什么点积越大,相似度越高?

  1. 几何本质:点积 = 长度 × 长度 × cos(夹角)
  2. 方向决定相似性:cos(夹角) 越大,方向越接近,越相似。
  3. 归一化后:点积 = 余弦相似度,直接反映方向相似性。
  4. 在AI中:点积是衡量两个向量(如词、句子、图像特征)语义相似度的高效且可微的数学工具。

所以,点积越大,说明两个向量在方向上越一致,语义上越相似——这就是它在注意力机制、推荐系统、搜索中被广泛使用的核心原因。