在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

向量与点积

两个向量的点积是对应坐标相乘,再把结果相加:w·x = w₁x₁ + w₂x₂。同一个数也等于 |w|·|x|·cos θ。对非零向量,正负由夹角决定,大小还受长度影响。线性分类器、神经网络层、注意力和向量检索都用到这种乘加运算。

计算过程没有测角或量长度:只做 total += w[i] * x[i]。结果却反映几何关系:同向为正,垂直为零,夹角超过 90° 为负。感知机分数、神经元激活前的值、注意力 logit 和部分相似度分数,都可用这套关系理解。

代数与几何

二维点积需要两次乘法、一次加法;d 维只是把循环延长。由此可得:

  • v·v = |v|²,所以 |v| = √(v·v)。
  • 对非零向量,cos θ = (w·x)/(|w||x|),可比较方向。
  • |x| cos θ 是 x 在 w 方向上的有符号投影长度,因此点积等于 |w| × 有符号投影长度。投影落在反方向时为负。

夹角小于 90°,点积为正;等于 90°,点积为零;大于 90°,点积为负。因此 w·x = 0 是经过原点、垂直于非零 w 的直线,把平面分成正负两侧。无偏置的线性分类器用它作边界。加入偏置 b 后,边界为 w·x + b = 0,方向不变,位置平移。

原始点积与余弦相似度

原始点积同时包含方向和长度。一个更长但方向较差的候选,可能超过短而同向的候选。正比例放大向量会放大点积,却不改变夹角。如果只想比较方向,用两向量长度的乘积作除数,得到余弦相似度。基于余弦的检索常先归一化向量。

若长度是模型评分规则的一部分,保留原始点积。模型内的线性打分和注意力常需要幅值,但向量长不自动等于经过校准的高置信度。是否归一化取决于要比较什么,不能仅凭“相似度”三个字决定。

逐步演示

默认 w = (3,1)、x = (1,2),每一步都可手算。

  1. 代数,第 1–4 拍。 两个箭头出现。辅助线先标出横坐标,记录 3 × 1 = 3;再标纵坐标,记录 1 × 2 = 2。相加得 w·x = 5。算法到这里已完成,后面解释这个 5。
  2. 几何,第 5–7 拍。 |w| = √10 ≈ 3.16,|x| = √5 ≈ 2.24。cos θ = 5/√50 = 1/√2 ≈ 0.707,所以夹角为 45°。从 x 端点向 w 所在直线作垂线,投影长度为 5/√10 ≈ 1.58。乘回 |w| 得 5,与代数相同。图中约数相乘会有舍入差。
  3. 固定角度,第 8 拍。 虚线箭头把 x 长度加倍。投影从约 1.58 变成 3.16,点积从 5 变成 10,余弦仍为 0.707。若放大后超出 ±5 平面,动画改为缩短一半,保持角度不变。
  4. 固定长度,第 9–13 拍。 虚线箭头沿圆周转动。与 w 的夹角依次为 0°、45°、90°、135°、180°,点积依次为 +7.07、+5、0、−5、−7.07。最大幅值为 |w||x|,数值随余弦变化。
  5. 结论,第 14 拍。 默认点积 5 > 0,说明夹角小于 90°。正比例缩放不会改变这个符号;零倍缩放会失去方向,负倍缩放会反向。
  6. 边界,第 15 拍。 绘制 w·x = 0,正侧着色。两侧符号不同,这就是无偏置线性分类的几何基础。加入 b 后得到平行边界。

左侧记录代数,平面展示几何,每拍突出一个新事实。改变输入时,分别观察方向变化是否翻转符号、长度变化如何缩放数值。“双倍长度”预设会在较长向量上重跑整段计算;两个向量都加倍,点积变为四倍。

时间与空间复杂度

d 维需要 d 次乘法、d−1 次加法,时间 O(d)、额外空间 O(1)。系统成本还取决于点积次数:注意力要计算查询与键的配对分数,检索可能要评价大量候选。实际数值代码应使用 np.dot、torch.matmul 等优化实现;教材循环用于看清运算结构。

边界情况

  • 零向量。 点积仍有定义且为零,但方向和余弦相似度无定义,因为分母为零。面板拒绝零向量,±5 网格内其他整数坐标对可用。
  • 垂直。 两个非零向量也能点积为零。它表示没有该方向的投影,不表示输入不存在。
  • 反向。 夹角超过 90° 时为负;分类器可把符号解释为边界另一侧。
  • 共线。 同向达到 |w||x|,反向达到 −|w||x|,由余弦的范围给出界限。
  • 缩放。 固定方向时按比例改变点积。画布范围只决定示意箭头放大还是缩小,不改变这个规律。

常见错误

  • 交叉相乘:w₁x₂ + w₂x₁ 不是点积。w₁x₂ − w₂x₁ 则是二维叉积对应的有向面积,绝对值在垂直时最大。
  • 用相加代替相乘。w_i + x_i 不能让 w_i 充当第 i 项的权重。
  • 把点积当距离。大的正点积来自方向一致和长度,两个相距很远的端点也可得到大值。
  • 跨长度直接比较方向相似性。只关心方向时应归一化。
  • 把负数当计算失败。符号本身携带边界侧别信息。