度量与范数¶
一句话总结:范数量的是单个向量的"大小",度量量的是两个向量之间的"距离";选对 L1/L2/L∞ 或余弦距离,直接决定 kNN、聚类、检索这些 ML 任务的效果。
范数衡量一个向量的大小;度量衡量两个向量之间的距离。本文覆盖 L1、L2 和 L 无穷范数,欧几里得距离与余弦距离,以及为什么在 k 近邻 (k-Nearest Neighbors, kNN)、聚类和检索这些机器学习 (Machine Learning, ML) 任务里,选对距离函数至关重要。
记号约定:本书全篇沿用 AI/ML 与线性代数教材的标准约定 (据 Goldberg & Nielsen 常用惯例),加粗小写 \(\mathbf{v}\) 表示 列向量,其分量记为 \(v_1, v_2, \ldots, v_n\);需要写成行向量时用转置 \(\mathbf{v}^\top\)。本节所有范数与度量公式中的 \(\mathbf{u}, \mathbf{v}\) 都按此约定视作 \(\mathbb{R}^n\) 中的列向量。
-
我们知道向量有大小和方向。但到底怎么衡量单个向量"有多大",或者两个向量"离得多远"? 这就要请出范数 (norm) 和度量 (metric) 了。
-
标量里,我们知道 10 > 5,因为数值本身就把它量化好了;那向量怎么量化呢?答案是它的范数,它衡量单个向量的大小。
-
最熟悉的范数是欧几里得范数 (Euclidean norm) (L2),其实就是我们早就见过的模长公式:
- 但衡量大小的方式还有别的。想象你身处一个方格状街道的城市,你没法斜着穿过大楼,所以旅程的"长度"就是沿每条街走过的总街区数。这就是曼哈顿范数 (Manhattan norm) (L1):
- 或者你可能只在乎最大的那个分量,其它一概不管。这就是最大范数 (Max norm) (L 无穷):
- 这三种都是广义 Lp 范数 (general Lp norm) 的特例:
-
取 \(p = 2\) 得到欧几里得范数,取 \(p = 1\) 得到曼哈顿范数,当 \(p \to \infty\) 就得到最大范数。随着 \(p\) 增大,最大的那个分量占的分量越来越重,最终只有它说了算。
-
每一种范数都必须满足三条规则:
-
非负性 (Non-negativity): \(\|\mathbf{v}\| \geq 0\),且 \(\|\mathbf{v}\| = 0\) 当且仅当 \(\mathbf{v} = \mathbf{0}\)。大小永远不会是负的,只有零向量的大小是 0。
-
齐次性 (Scaling): \(\|c\mathbf{v}\| = |c| \cdot \|\mathbf{v}\|\)。把一个向量放大两倍,它的大小也放大两倍。
-
三角不等式 (Triangle inequality): \(\|\mathbf{u} + \mathbf{v}\| \leq \|\mathbf{u}\| + \|\mathbf{v}\|\)。抄近路永远不会比绕远路长。
-
-
现在,度量衡量的是两个向量之间的距离。可以把它理解成在问:"这两个点离得多远?"
-
得到度量最简单的办法,是把范数作用在两向量之差上:\(d(\mathbf{u}, \mathbf{v}) = \|\mathbf{u} - \mathbf{v}\|\)。先把两个向量相减,再量剩下那个向量的大小。
-
用欧几里得范数就得到熟悉的欧几里得距离 (Euclidean distance):
-
用曼哈顿范数就得到曼哈顿距离 (Manhattan distance),也就是每个坐标轴上差值的总和,就像数两个位置之间隔了多少个街区。
-
每一种度量都必须满足四条规则:
-
非负性: \(d(\mathbf{u}, \mathbf{v}) \geq 0\)。距离永远不会是负的。
-
同一性 (Identity): \(d(\mathbf{u}, \mathbf{v}) = 0\) 当且仅当 \(\mathbf{u} = \mathbf{v}\)。距离为零意味着是同一点。
-
对称性 (Symmetry): \(d(\mathbf{u}, \mathbf{v}) = d(\mathbf{v}, \mathbf{u})\)。从 A 到 B 的距离和从 B 到 A 的距离一样。
-
三角不等式: \(d(\mathbf{u}, \mathbf{w}) \leq d(\mathbf{u}, \mathbf{v}) + d(\mathbf{v}, \mathbf{w})\)。直接走永远不会比绕道更长。
-
-
那么这两者是什么关系?范数量的是一个向量,度量量的是两个向量之间的差距。每个范数都会自然地导出一个度量 (量那个差),但并不是每个度量都来自某个范数。
-
例如汉明距离 (Hamming distance) 数的是两个向量有多少个位置不同,它是合法的度量,但不来自任何范数。
-
在 ML 里,选对范数或度量很重要。
-
L2 距离在求和之前会把每个差平方,所以某个特别大的差会主导结果。
-
L1 距离把绝对差直接相加,每个差同等对待。跟 L2 比,单个大的差影响力更小。
编码练习 (在 CoLab 或 notebook 里做)¶
-
对同一个向量计算 L1 和 L2 范数。试着改改里面的值,观察哪种范数对大分量更敏感,哪种对众多小分量更敏感。接着为逐渐增大的 \(p\) (比如 1、2、5、10、50、100) 计算 Lp 范数,看着它收敛到 L 无穷范数的值。
-
计算两个向量之间的欧几里得距离与曼哈顿距离。试着把两个向量拉近或推远,观察两种距离各自不同的反应。
📌 本节要点¶
- 范数 (norm):衡量单个向量的"大小",必须满足非负性、齐次性、三角不等式三条公理。
- 三种常见范数: L1 (曼哈顿)、L2 (欧几里得)、L∞ (最大范数),都是广义 Lp 范数在 \(p = 1, 2, \infty\) 时的特例。
- 度量 (metric):衡量两个向量之间的距离,必须满足非负性、同一性、对称性、三角不等式四条公理。
- 范数与度量的关系:每个范数都能通过 \(d(\mathbf{u}, \mathbf{v}) = \|\mathbf{u} - \mathbf{v}\|\) 导出度量,但反过来不成立 (如汉明距离是度量却不来自任何范数)。
- L1 与 L2 的差异: L2 因平方运算会被极端差主导,L1 对每个分量平权;选错会显著影响 kNN、聚类、检索的行为。