seegongsik
我的单词本
工程数学

点积衡量对齐程度

点积一次性装下长度与方向的相似,去掉长度就得到余弦相似度,是搜索与推荐的核心

在搜索框里打个词,引擎并不逐字比较文本。它把每段文本变成向量,再看两个向量在多大程度上指向同一方向。把这个"有多同向"压成一个数的工具,就是点积:a·b = |a||b|cos(theta),两个长度乘以夹角的余弦。把长度剥掉,只剩 cos(theta),这就是余弦相似度。同向就相似,成直角就无关,反向就相反。搜索、推荐、词嵌入,全都跑在这一行上。

把绿色箭头 a 固定,用两个手柄来摆弄蓝色箭头 b。一个滑块转动 b 的角度,另一个拉伸 b 的长度。看屏幕上的 a·b 值同时对两个手柄作出反应:把 b 拉长,值整体放大(长度效应);把 b 旋转,同向时为正、直角时为零、反向时为负(对齐效应)。颜色随符号在绿、淡、红之间切换。b 落到 a 上的脚(投影)也跟着滑动。用手感受一下:一个点积同时承载长度与对齐两件事。

点积还能换个角度看。把 a 放在 +x 轴上、长度为 2,只用滑块旋转 b 的角度。画在轴上的金色线段,就是 b 笔直落到 a 上的影子,也就是投影。于是 a·b 恰好等于 |a| 乘以那段投影长度。把 b 朝 a 倒下,影子变长,点积就大;把 b 立起,影子变短,点积就小。成直角时影子为零,点积也为零。点积归根结底,就是把"一个向量沿另一个方向伸出多远"用长度量出来,再乘以 |a|。

只把点积的符号抽出来,规则简单得很。把 a 放在 +x 轴上,用滑块把 b 的角度 theta 从 0 度扫到 360 度。平面被涂成两块。和 a 同侧的半平面(theta 在 90 度以内)泛绿,那里点积为正。恰在 90 度和 270 度的直角处,点积为零。对侧的半平面(90 度到 270 度之间)泛红,点积为负。转动 b 时,屏幕上的字在正、零、负之间切换,数值也一并显示。一个符号一眼定下"同侧、无关、还是相反"。

现在把长度彻底剥掉:cos(theta) = a·b / (|a||b|)。这个值永远落在 -1 和 +1 之间。固定 a,用两个滑块改变 b 的角度和长度。有个关键画面:只把 b 的长度拉长或缩短,cos(theta) 纹丝不动——下方从 -1 到 +1 的标尺上,指针停在原处。换成转动角度,指针就一路滑过去。余弦相似度无视大小,只看方向。所以搜索引擎和嵌入比较两段文本,靠的是它们指向的方向,不管文本是长是短。

最后,亲手抓住点积恰好为零的那一刻。a 固定不动;用手拖动蓝色箭头 b,让它在平面上游走。屏幕上实时显示 a·b 的值。当 b 经过和 a 成直角的位置时,值越过零,箭头发光,"正交"二字浮现。点积为零,意味着两个方向完全垂直,也就是彼此无关且独立。正是这一性质让坐标轴变得干净:因为 x 轴和 y 轴正交,沿一个轴移动不会扰动另一个轴的值。一切干净的基,都源自这个"点积为零"。

实际应用点积 a·b = |a||b|cos(theta) 把两条信息绑成一条:两个向量的长度,以及它们有多同向。剥掉长度,就得到 cos(theta) = a·b/(|a||b|),即介于 -1 和 +1 之间的余弦相似度,它正是搜索、推荐、词嵌入中只凭方向衡量相似度的主力。符号也能直接读出:为正是同侧,为零是正交(无关、独立),为负是相反。点积为零意味着两个方向垂直,这正是坐标轴那样干净的基得以成立的原因。一个把长度与对齐塞进单个数的点积,把几何的投影到 AI 的语义比较绑进同一句话。
工程数学
如果有帮助,请支持我们