什么是向量
计算机只认识数字,它怎么知道「猫」和「老虎」比「猫」和「金鱼」更像?
一个尴尬的问题
假设你在写一个程序,希望它能回答这样的问题:
「猫、老虎、金鱼——这三种动物里,哪两个更像?」
你脱口而出:猫和老虎。理由也许是「都是猫科」「长得像」「都会扑猎物」。 但问题来了:计算机不懂「猫科」,不懂「长得像」,它只认识数字。你没法把一只猫塞进 CPU,你只能给它数字。
最小方案:用一个数字
给每种动物打一个「体型分」,从 0 到 1。金鱼 0.02,猫 0.25, 狗 0.45,鳄鱼 0.50,老虎 0.90。它们排在一根数轴上:
神奇的事情发生了:「像不像」突然变成了可以计算的东西。两个数的差越小,就越「像」:
距离(猫, 金鱼) = |0.25 − 0.02| = 0.23
等等——按这个算法,猫和金鱼反而更像?好像哪里不对,但先别急着推翻它。 这个方案至少做对了一件大事:它把「比较两个事物」变成了「比较两个数字」。这个思想我们要保留。真正的问题在别处。
局限:狗和鳄鱼成了近亲
再看一眼图 1-1 里那两个红点。按我们的算法:
在「一个数字」的世界里,狗和鳄鱼是天造地设的一对——只因为它们体重差不多。 把一只动物压缩成一个数字时,我们丢掉了太多信息:性格、习性、危险程度……全没了。
迭代:从数轴到平面
给每只动物两个数字 (体型, 凶猛),把第一个数当横坐标、第二个数当纵坐标:
狗和鳄鱼在横轴上仍然贴着,但纵轴把它们拽开了。 用勾股定理一算(细节放在下一课),它们的距离从 0.05 变成了约 0.70。问题解决了。
现在,请注意你刚刚做了什么——你把一只动物写成了一组有顺序的数字:
这组数字,数学上就叫向量(vector)。
数字的个数叫维度——我们刚造的是 2 维向量。同一个向量有三副面孔,说的是同一件事: 它是一列数字(计算机看到的)、是平面上的一个点(我们画出来的)、 也是从原点指向那个点的一支箭头(下一课讲运算时最好用的视角)。
拖动橙色的「?」试试。
「?」是一只神秘动物。你把它放在哪里,就等于宣布了它的两个数字——而相似度,只是两点之间的距离。
总结:维度,尽管往上加
两个维度也会有局限。体型和凶猛都接近的猫和狐狸怎么区分?——再加一维「是否家养」。 会飞的和会游的呢?——再加。每发现一种「区分不开」,就加一个维度。 3 个数字是空间中的一个点;4 个、100 个数字,我们画不出来了, 但数学完全不在乎:距离公式照样算,「谁和谁更像」照样比。
这正是现代 AI 的做法。在 GPT 这类大语言模型里,每个词就是一个向量—— 不是 2 维,而是上万维(GPT-3 用了 12288 维)。没有人逐个设定「体型」「凶猛」这样的含义, 这些维度是模型自己从海量文本里学出来的。但思想和你今天发明的一模一样:
向量,就是给事物拍的一张「数字照片」: 用一组有顺序的数字捕捉它的特征, 于是「像不像」这种模糊的直觉,第一次变成了可以计算的距离。
这一课你亲手发明了
- 向量:一组有顺序的数字,例如
[0.45, 0.20]。 - 维度:数字的个数;每个维度是一种「看待事物的角度」。
- 向量的三副面孔:一列数字 = 空间中的点 = 从原点出发的箭头。
- 相似度 = 距离:两个向量离得越近,它们代表的事物越像。
不过,「距离」到底该怎么算?除了距离,还有没有别的「像不像」的算法? 两个向量相加又是什么意思——「猫 + 狗」是什么动物?带着这些问题,去下一课。
学习小测验
做完这一课,来检测一下核心知识点。选出你的答案后点击「提交」,即可看到正确选项与讲解。
向量的常见运算
「相似」可以被计算吗?——加法、点积,以及为什么 AI 更爱用「夹角」而不是「距离」。