什么是向量
用一组有顺序的数字,给事物拍一张可以计算的数字照片。
一个尴尬的问题
假设你在写一个程序,希望它能回答这样的问题:
「猫、老虎、金鱼——这三种动物里,哪两个更像?」
你脱口而出:猫和老虎。理由也许是「都是猫科」「长得像」「都会扑猎物」。 但问题来了:计算机不懂「猫科」,不懂「长得像」,它只认识数字。你没法把一只猫塞进 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 维向量。同一个向量有三副面孔,说的是同一件事: 它是一列数字(计算机看到的)、是平面上的一个点(我们画出来的)、 也是从原点指向那个点的一支箭头(下一课讲运算时最好用的视角)。
神秘动物 = [ 0.70 , 0.35 ] —— 离它最近的是 狗(欧氏距离 0.29)
「?」是一只神秘动物。你把它放在哪里,就等于宣布了它的两个数字——而这里用两点间的距离作为相似程度的度量。
数字照片,也有几条边界
一个单独的数叫标量,比如体重 5;一组有顺序的数 [5,0.3] 才是这里的向量。全是 0 的 [0,0] 是零向量,它有位置和零长度,但没有可用于比较的方向。
动物例子里,每根轴是我们手工选的特征。真实模型的表示通常从数据中学习,某一个坐标未必单独对应「凶猛」或「开心」。语义可能分散在许多分量及其组合中。
因此更多分量并不自动保证更聪明:特征要适合任务,尺度要可比较。下一课会说明,何时该看距离,何时该看方向。
总结:维度可以增加,特征还要合适
两个维度也会有局限。体型和凶猛都接近的猫和狐狸怎么区分?——再加一维「是否家养」。 会飞的和会游的呢?——再加。在这个手工特征例子里,遇到「区分不开」,可以尝试补一个有用的特征,但不是越多越好。 3 个数字是空间中的一个点;4 个、100 个数字,我们画不出来了, 但数学完全不在乎:距离公式照样算,「谁和谁更像」照样比。
这正是现代 AI 的做法。在 GPT 这类大语言模型里,每个词就是一个向量—— 不是 2 维,而是上万维(GPT-3 用了 12288 维)。没有人逐个设定「体型」「凶猛」这样的含义, 这些维度是模型自己从海量文本里学出来的。但思想和你今天发明的一模一样:
向量,就是给事物拍的一张「数字照片」: 用一组有顺序的数字捕捉它的特征, 于是「像不像」这种模糊的直觉,第一次变成了可以计算的距离。
💡 用大白话梳理:这一课的核心直觉
- 向量:一组有顺序的数字,例如
[0.45, 0.20]。 - 维度:数字的个数;手工特征可命名,学习到的分量常联合表达含义。
- 向量的三副面孔:一列数字 = 空间中的点 = 从原点出发的箭头。
- 合适的表示中,距离可以衡量相似度:在表示与度量适合任务时,较近的向量可表示较相似的事物。
不过,「距离」到底该怎么算?除了距离,还有没有别的「像不像」的算法? 两个向量相加又是什么意思——「猫 + 狗」是什么动物?带着这些问题,去下一课。
学习小测验
动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)
02 向量的常见运算
距离、点积、数乘与加权和:比较方向,也组合信息。