第01回 向量与空间——从自然数到高维空间

天地本无言,数字藏玄机。
点线生万象,空间有高低。

话说这世间万物,原本无形无相:一段声音、一张照片、一句文字、一个人的喜好……看似风马牛不相及。可一旦落到算法手里,便都要“化作数字”,再“落入空间”。

看官若问:何为空间?为何万物都要住进空间里?且听我从最朴素的数说起。


一、从自然数到坐标:空间的起手式

人最早识数,先有自然数 1,2,3,1,2,3,\dots。自然数只会“数多少”,却说不清“在何处”。于是古人立起一条线,名曰数轴:

  • 线中立一原点 00
  • 向右为正,向左为负
  • 每个实数 xx 对应数轴上一点

这便是一维空间。它告诉你“离原点多远”,也告诉你“在左在右”。

可人生道路岂止一条线?你家到书院,向东一百步还要向北五十步;只说“远近”不够,还要说“方向”。于是再添一条与数轴垂直的轴,就有二维平面。平面上一点由一对数表示:

(x,y)(x,y)

再添一条竖起的轴,就成三维空间 x,y,zx,y,z

看到这里,看官心里便生一念:**一个点的坐标,其实就是一串数字。**这串数字不再只是“数多少”,而是“各个方向上各走多少”。这一串数字,便是向量的雏形。


二、向量是何物:既有大小,也有方向

向量,乃“带方向的数”。在二维平面里,一个向量可写作:

v=[v1v2]\vec v= \begin{bmatrix} v_1\\ v_2 \end{bmatrix}

把它想成从原点出发,向东走 v1v_1 步,再向北走 v2v_2 步,最后落在点 v1,v2v_1,v_2

向量的“大小”(模长)是从原点到该点的距离。高中数学里早已学过勾股定理:

v=v12+v22\|\vec v\|=\sqrt{v_1^2+v_2^2}

三维也一样:

v=v12+v22+v32\|\vec v\|=\sqrt{v_1^2+v_2^2+v_3^2}

一般到 dd 维:

vRd,v=i=1dvi2\vec v\in\mathbb{R}^d,\qquad \|\vec v\|=\sqrt{\sum_{i=1}^{d}v_i^2}

这一步很关键:**维度可以随意增加,但“坐标串”与“距离”依旧成立。**算法之所以敢谈“高维”,便是仗着这条朴素的真理。


三、点积:向量之间如何“打招呼”

向量落在同一空间里,便要彼此比较:谁更像谁?谁更靠近谁?

最常用的一招,叫点积(内积)。二维时:

ab=a1b1+a2b2\vec a\cdot\vec b=a_1b_1+a_2b_2

它算出来是一个数,但这数暗藏两层意思。

1)代数的意思:坐标相乘再相加

这是计算机最爱的一面:只要会乘加,就能算出相似度的“原材料”。

2)几何的意思:与夹角有关

高中也见过这句:

ab=abcosθ\vec a\cdot\vec b=\|\vec a\|\,\|\vec b\|\cos\theta

θ\theta 是两向量夹角。于是:

  • 同向(θ0\theta\approx 0),cosθ1\cos\theta\approx 1,点积大
  • 垂直(θ=90\theta=90^\circ),cosθ=0\cos\theta=0,点积为零
  • 反向(θ180\theta\approx 180^\circ),cosθ1\cos\theta\approx -1,点积为负

看官至此便悟:点积不是“算数”,而是“看方向”。


四、余弦相似度:只比方向,不比“嗓门”

点积有个脾气:两向量越长,点积越大。可现实里,“长”未必表示“像”。

举个贴近生活的例子:用二维向量表示一个人对两类电影的喜好(动作片、爱情片),数值越大越爱看。

  • 甲:a=[5,1]\vec a=[5,1](更偏动作)
  • 丁:d=[10,2]\vec d=[10,2](偏好比例相同,只是打分更“极端”)

二者其实“口味一模一样”,只是丁嗓门更大。若直接用点积,丁就会被认为“更像所有人”。这不公平。

于是江湖又出一招:余弦相似度。它把点积除去长度的影响:

cos(θ)=abab\cos(\theta)=\frac{\vec a\cdot\vec b}{\|\vec a\|\,\|\vec b\|}

它只看夹角,只比方向。范围在 [1,1][-1,1]

  • 接近 11:同路人
  • 接近 00:互不相干
  • 接近 1-1:南辕北辙

因此,在推荐系统、搜索、聚类等场景里,余弦相似度常是第一把尺子。


五、投影:把“影响力”拆开看

点积还能解释“投影”。

b\vec b 是一个方向(比如“动作片偏好轴”),a\vec a 是某人的真实口味。我们想知道:a\vec ab\vec b 方向上到底有多大“成分”?

其投影长度为:

projb(a)=abb\text{proj}_{\vec b}(\vec a)=\frac{\vec a\cdot\vec b}{\|\vec b\|}

若把 b\vec b 先归一化成单位向量 b^=b/b\hat b=\vec b/\|\vec b\|,则投影更干净:

ab^\vec a\cdot\hat b

这在后续章节会反复出现:分类、注意力、检索,本质上都在问同一句话——
“你的信息里,有多少沿着我关心的方向?”


六、矩阵:把一群向量排成军阵

当向量不止一个,就要“成批处理”。

把许多向量按行排开,便成矩阵:

X=[x1Tx2TxnT]Rn×dX= \begin{bmatrix} ---\vec x_1^{\mathsf T}---\\ ---\vec x_2^{\mathsf T}---\\ \vdots\\ ---\vec x_n^{\mathsf T}--- \end{bmatrix} \in\mathbb{R}^{n\times d}

可把它理解为:

  • nn 个对象(词、句子、用户、电影……)
  • 每个对象用 dd 维向量表示

矩阵乘法看似玄妙,其实很“朴素”:
一行乘一列,就是做一次点积。

所以当你计算 XWXW 时,本质是把每个对象向量 xi\vec x_i 和权重向量(或多个权重)不断做点积,从而得到新的表示。

后面我们讲神经网络、注意力、Transformer,都离不开这句朴素的底层逻辑。


七、高维的直觉:为什么“几乎都互相垂直”

看官到此可能担心:维度一高,是否就失去直觉?

高维空间有一条著名现象:当维度足够大,随机挑两条向量,它们的夹角往往接近 9090^\circ,余弦相似度接近 00

直觉何来?想象你在二维里随手画两条箭头,它们夹角什么都有;但维度越高,“随机方向”可选的余地越大,恰好撞成很小夹角的概率越来越低。于是“差不多都不相关”成了常态。

这给算法带来两面影响:

  • 好处:能把不同概念“摊开”,不容易混在一起
  • 麻烦:相似度全都接近 00,就需要更精细的表示学习与检索策略

这也是为什么后面会出现“嵌入”“注意力”“检索增强”等一整套武功:都是为了在高维里把“该近的拉近、该远的推远”。


八、小试牛刀:三道自测题

1)设 a=[3,4]\vec a=[3,4],求 a\|\vec a\|
2)设 a=[1,2,3]\vec a=[1,2,3]b=[4,0,1]\vec b=[4,0,-1],求 ab\vec a\cdot\vec b
3)若 ab=0\vec a\cdot\vec b=0,且二者皆非零向量,几何上意味着什么?


九、小结:本回埋下的三根线

  • 表示:把对象变成向量,把集合变成矩阵
  • 比较:点积与余弦相似度,用“夹角”衡量“像不像”
  • 运算:矩阵乘法是成批点积,是后续模型计算的底座

下一回,我们要把“字与词”搬进这座空间:先用最朴素的独热与词袋,看看文字如何第一次“可计算”;再为后面的“语义”与“推理”铺路。

正是:数轴初开天地阔,高维深处起风雷。
点积余弦量远近,且看文字入阵来。

欲知后事如何,且听下回分解。