跳转至

讲解稿 · Ch01 第 02 节:向量的性质

时长目标:15-20 分钟口播 | 语速:约 250 字/分钟


一、开场钩子(约 1 分钟)

好,欢迎回来。上一节我们把"向量空间"这个游乐园的门票搞明白了——十条公理,两条封闭性,剩下八条是加法和数乘的家规。

但是你知道吗,光有门票还不够。你走进游乐园里,看到一堆箭头飞来飞去,你还得学会怎么描述这些箭头:它有多长?指哪儿?跟旁边那个箭头是不是"一伙儿的"?两个箭头一起是不是白给你——也就是有一个纯属摆设?

这一节我们就干这件事。你会拿到一整套"识别向量的工具箱":模长、方向、单位化、平行、正交、线性无关、稀疏。

我可以先剧透一句话:这套工具,就是你之后所有机器学习特征空间的几何语言。你现在多花十五分钟熟悉它,后面看 Word2Vec、看 attention、看 PCA,你就不会再懵了。

好,扶稳了,我们开始。


二、模长:箭头有多长(约 2 分钟)

先看第一个性质,模长(magnitude)。

模长翻译成人话就是——这根箭头伸出去有多远。

我给你举个最土的例子:你在游乐园里从大门走到旋转木马,你走了多少米?这就是模长。

对于一个二维向量 \(\mathbf{a} = (3, 4)\),它的模长怎么算?

\[\|\mathbf{a}\| = \sqrt{3^2 + 4^2} = \sqrt{9 + 16} = \sqrt{25} = 5\]

看到这个 3、4、5 你是不是眼熟?对,这就是勾股定理。

现在把这个思路推到 \(n\) 维:

\[\|\mathbf{a}\| = \sqrt{a_1^2 + a_2^2 + \cdots + a_n^2}\]

你别被"\(n\) 维"三个字吓到。它就是勾股定理往上摞——每多一个维度,就在根号里多加一个平方项。你在四维、五维、七百六十八维(对,就是 BERT embedding 的那个维度)里问"这个向量多长",用的还是这一条公式。

注意: 模长量的是从原点到那个坐标点的直线距离。不是折线,不是曼哈顿走法,就是一条直线戳过去。

好,这里插一个暂停思考:

【暂停 5 秒】如果我给你一个向量 \(\mathbf{a} = (1, 1, 1, 1)\),它的模长是多少? ……对,是 \(\sqrt{4} = 2\)。你可以在心里默算一下确认。


三、方向、相等、平行:位置不重要,位移才是本质(约 3 分钟)

第二个性质,方向(direction)。

方向就是这根箭头指哪儿。

这里有一个你必须记牢的观念:向量只关心位移,不关心位置。

什么意思?你在原点画一个 \((3, 2)\) 的箭头,往右三格、往上两格。你朋友在 \((100, 100)\) 那个位置也画一个 \((3, 2)\)——同样往右三格、往上两格。

这两个箭头——它们是同一个向量。

一模一样。相等。

为什么?因为向量的定义里从来没有"起点在哪里"这一条。它只在乎"你往哪个方向走了多远"。所以我们通常把起点默认放在原点 \((0, 0, \ldots, 0)\),纯粹是为了画图方便。

两个向量相等的严格判据:

\[\mathbf{a} = \mathbf{b} \iff a_i = b_i \text{ for all } i\]

每一个分量都对得上,缺一不可。

接下来是平行(parallel):

\[\mathbf{a} \parallel \mathbf{b} \iff \mathbf{a} = k\mathbf{b}, \quad k \neq 0\]

翻译一下:一个向量是另一个的非零标量倍,它俩就平行。

  • \(k > 0\),同向。\((3, 2)\) 和 \((6, 4)\)——同向,后者是前者拉长两倍。
  • \(k < 0\),反向。\((3, 2)\) 和 \((-3, -2)\)——反向,正好掉头。

无论同向反向,它们躺在过原点的同一条直线上。

这里有一个非常重要的直觉:平行向量不带新的方向信息。你已经知道了 \((3, 2)\),我再告诉你 \((6, 4)\) 也在这个数据里,我等于什么新东西都没告诉你——它就是前一个被拉长了一下的复读机。

这个"复读机"的观察,后面就会长成"线性相关"这个大概念,你先把这个直觉记住。


四、正交:机器学习最偏爱的关系(约 3 分钟)

好,第三个大性质,也是整章最重要的一个词,正交(orthogonal)。

正交就是垂直。两个向量夹角 \(90°\)。

我先不给你公式,我给你一个画面:你先往北走一公里,然后再往东走一公里。

北和东,就是正交方向。

关键在哪里?关键在——你往北走再多,也不会让你往东挪一分一毫。

也就是说,正交的两个方向,彼此完全独立。沿其中一个走,在另一个身上得到的进展是零。

现在你就明白为什么机器学习那么爱正交了:

在 ML 里,你训练一个模型,你希望你的特征是什么样的?你希望特征之间互不相关,每一个都携带独立的信息。你不希望"身高"和"体重"两个特征几乎能互相推出来——那你等于只有一个特征,另一个是水货。

所以:正交的特征,就是理想的特征。

正交这个词,我保证你在后面每一章都会撞见。PCA 做的是找一组正交的主轴。Transformer 里 multi-head attention,希望每个 head 学到的东西尽可能正交。神经网络的初始化,有一种就叫 orthogonal initialization。

再扩展一下:任意两个向量之间都有一个夹角 \(\theta\),范围是 \(0°\) 到 \(180°\)。

  • \(\theta = 0°\):平行同向。
  • \(\theta = 180°\):平行反向。
  • \(\theta = 90°\):正交。
  • 中间那些角度:某种混合。有一点相关,但没完全重叠。

ML 里绝大多数向量关系都掉在这个谱系上的某个中间地带。等我们讲到点积和余弦相似度,你就能精确计算这个夹角是多少。这里先埋个伏笔。

好,第二次暂停思考:

【暂停 5 秒】想一想:向量 \((1, 0)\) 和 \((0, 1)\) 是不是正交?\((1, 1)\) 和 \((1, -1)\) 呢? ……第一对显然是。第二对呢——你把它们对应分量相乘再加起来:\(1 \times 1 + 1 \times (-1) = 0\)。也是正交的。 后面讲点积你就会知道,"乘积和为零"就是正交的代数判据。


五、线性无关:每个向量都得给点新东西(约 3 分钟)

接下来这个概念,你要是听懂了,恭喜你,你已经把整个线性代数的灵魂摸到了一半。

线性相关(linearly dependent):一组向量里,至少有一个可以由其他几个通过缩放加相加拼出来。

举个例子,你有三个向量 \(\mathbf{a}, \mathbf{b}, \mathbf{c}\),然后有人告诉你:

\[\mathbf{c} = 2\mathbf{a} + 3\mathbf{b}\]

那 \(\mathbf{c}\) 就是冗余的。你有了 \(\mathbf{a}\) 和 \(\mathbf{b}\),你随时可以现造一个 \(\mathbf{c}\) 出来。

这个人白给你了一个向量。

反过来,线性无关(linearly independent):其中没有一个可以由别人拼出来。每一个都真真切切贡献了一个新方向。

这里有两个小定理你顺手就能记住:

  1. 平行向量总是线性相关的(因为一个就是另一个的复读机)。
  2. 任何包含零向量的集合都是线性相关的(零向量什么方向都不指,纯摆设)。
  3. 正交向量总是线性无关的(互相垂直,谁也拼不出谁)。

现在最关键的直觉来了:

"你需要多少个线性无关的向量才能到达空间里任意一点"——这个数字就是维度。

  • 在二维平面里,两个线性无关的向量就够了。给你 \((1, 0)\) 和 \((0, 1)\),你想去 \((5, 7)\)?\(5 \times (1,0) + 7 \times (0,1)\),齐活。
  • 在三维空间里,你需要三个。
  • 在 \(n\) 维,你需要 \(n\) 个。

线性无关的数量 = 维度。你把这条记死,后面基和秩你就都稳了。

再给你一个 ML 实战直觉:假设你在收集数据训练模型,你把每个人的特征当成一个向量。如果这些向量之间线性相关——也就是有几个人的数据几乎能被别人的加权和表出来——那你等于在重复采样。模型会被这些重复的点带偏,觉得那类人特别"重要"。

在为 AI 训练构造数据集的时候,向量之间的线性无关性是个非常重要的因素。这也是为什么"去重"和"多样性采样"是数据工程里永远绕不开的话题。

第三次暂停思考:

【暂停 5 秒】问自己:向量 \((1, 2)\)、\((2, 4)\)、\((3, 5)\) 这三个是不是线性无关? ……前两个是平行的(一个是另一个的 2 倍),所以整组一定线性相关。就算第三个跟前两个都不平行,也拯救不了。判断线性无关,任何两个平行的都不能混在里面。


六、单位向量、归一化、稀疏(约 3 分钟)

好,最后一组性质,都是实战型工具。

单位向量(unit vector):模长恰好等于 1 的向量。

它的意义是什么?它把"多长"这个信息剥掉,只保留"朝哪个方向"。

任何非零向量都可以变成单位向量,方法叫归一化(normalisation):

\[\hat{\mathbf{a}} = \frac{\mathbf{a}}{\|\mathbf{a}\|}\]

翻译成人话:把这个向量的每一个分量,都除以它自己的模长。

举个例子,\(\mathbf{a} = (3, 4)\),模长是 5,归一化之后就是 \(\hat{\mathbf{a}} = (3/5, 4/5) = (0.6, 0.8)\)。你可以自己算一下 \(0.6^2 + 0.8^2 = 0.36 + 0.64 = 1\),模长确实是 1。

归一化在 ML 里应用无处不在:

  • 算余弦相似度要先归一化,不然长度会污染方向的比较;
  • 神经网络里的 LayerNorm、RMSNorm,本质都是归一化的变种;
  • 词嵌入(word embedding)比较相似度之前,通常也要归一化。

还有几个特殊的单位向量,叫标准单位向量,沿着每个坐标轴指出去:

\[\hat{\mathbf{i}} = (1, 0, 0), \quad \hat{\mathbf{j}} = (0, 1, 0), \quad \hat{\mathbf{k}} = (0, 0, 1)\]

任何一个三维向量都可以拆成它们的组合:

\[(3, 2, 4) = 3\hat{\mathbf{i}} + 2\hat{\mathbf{j}} + 4\hat{\mathbf{k}}\]

这就是"标准基"的雏形,第 05 节我们会正式展开。

最后一个概念,稀疏(sparse) vs 稠密(dense):

\[\mathbf{s} = [0, 0, 3, 0, 0, 0, 1, 0, 0, 0]\]

一个向量里绝大部分分量都是 0,就叫稀疏。反过来大部分都非零,就叫稠密。

稀疏为什么重要?存储和计算。

一个稀疏向量,你只需要记住"哪些位置是非零的、值是多少",其他位置全部默认是 0。10 万维的向量,如果只有 5 个非零位,你实际只需要存 5 对(位置、值),不需要存 10 万个数。

自然语言处理里,一段文本的 one-hot 向量、TF-IDF 向量,都是极度稀疏的。推荐系统里用户-物品交互矩阵,也是稀疏的。稀疏结构直接决定了你能不能把模型跑起来。


七、应用场景速览(约 1 分钟)

我快速带你过一下这一节的性质在真实场景里的落点:

  • 模长:损失函数里的 L2 正则、梯度裁剪、embedding 长度归一化——全在算模长。
  • 正交:PCA 主成分、Transformer 多头注意力、正交初始化——处处都是。
  • 线性无关:数据集去重、特征选择、判断矩阵可不可逆——本质都在问它。
  • 单位向量与归一化:余弦相似度、LayerNorm、L2-normalized embedding——机器学习的日常。
  • 稀疏:NLP 词袋、推荐系统交互矩阵、稀疏神经网络——一切"大而空"的数据都靠它省钱。

八、一句话总结

如果你只带走一句话:

向量的性质就是给你一整套"识别箭头"的语言——模长告诉你多长,方向告诉你朝哪,正交告诉你是否独立,线性无关告诉你有没有冗余;这套语言,就是所有 ML 特征空间的通用词典。


九、留给你的三个反思问题(衔接下一节)

在进入下一节"范数与度量"之前,请你至少想清楚下面三个问题:

  1. 我们这一节讲的模长 \(\|\mathbf{a}\| = \sqrt{\sum_i a_i^2}\) 其实是一种特定的度量方式。如果我不用平方和开根号,而是直接把所有分量的绝对值加起来,会是什么样的"长度"?它有几何意义吗?(提示:想想出租车在曼哈顿怎么走路)

  2. 我们说正交向量线性无关。反过来,线性无关的向量一定正交吗?举一个反例试试。

  3. 归一化 \(\hat{\mathbf{a}} = \mathbf{a} / \|\mathbf{a}\|\) 剥掉长度只留方向。在什么样的 ML 任务里,"长度"是你想扔掉的噪声?又在什么样的任务里,长度本身就是最重要的信号?

带着这三个问题,我们下一节接着聊——范数与度量。

到时候你会发现,"模长"这个概念远比你想的要野。\(\ell_1\)、\(\ell_2\)、\(\ell_\infty\)、\(\ell_p\),每一个都是一把不同的尺子,量出来的"距离"长得完全不一样。

下节见。