Vector Properties(向量属性)¶
Vector properties 描述了 vector 的几何与代数特征,刻画 vector 的行为方式。本节涵盖 magnitude(模)、direction(方向)、unit vector(单位向量)、等价性、平行性、正交性以及线性无关性——这些是构成每个 ML feature space 的基础。
- Magnitude(或 length)告诉你一个 vector 能"延伸多远"。可以把它想成箭头的长度。对于 vector \(\mathbf{a} = (a_1, a_2, a_3)\),其 magnitude 为:
-
这正是推广到高维的勾股定理,它度量的是从原点到该点的直线距离。
-
Vector 的 direction 告诉你它指向哪里;直觉上,就是从原点到坐标点连成的一条直线。
-
当原点未明确指定时,我们通常默认原点为 \((0,0,\ldots,0)\),至少在可视化时是如此。
-
位置并不重要,重要的始终是位移:从原点出发的 \((3, 2)\) 与从其他点出发的 \((3, 2)\) 仍然是同一个 vector。
- 两个 vector 可以具有相同的长度但指向完全不同的方向,也可以指向相同方向但长度不同。
- 当且仅当两个 vector 的所有对应分量都相等时,它们才相等;相同的长度,相同的方向,完全一样的箭头。
- 如果一个 vector 是另一个 vector 的 scalar 倍,则这两个 vector 平行。它们沿同一条直线排列,方向相同或完全相反。
-
若 \(k > 0\),它们方向相同;若 \(k < 0\),它们方向相反。无论哪种情况,它们都位于过原点的同一条直线上。
-
直觉上,平行 vector 不携带任何"新"的方向信息。一个不过是另一个的拉伸或翻转版本。
-
如果两个 vector 指向完全独立的方向,则称它们正交(垂直)。沿一个方向移动对另一个方向毫无贡献。
-
想象向北走然后向东走——这两个方向是正交的,无论向北走多远都不会让你向东移动。我们会非常频繁地遇到正交性。
-
正交性在 ML 中非常核心:正交的 feature 携带完全独立的信息,这是理想的表示方式。
-
更一般地,任意两个 vector 之间都有一个夹角 \(\theta\),范围从 \(0°\) 到 \(180°\)。
-
这个角度完整刻画了两个方向之间的关系:\(0°\) 表示平行(同向),\(180°\) 表示平行(反向),\(90°\) 表示正交。介于两者之间的是某种混合状态。
-
ML 中大多数 vector 关系都处于这个谱系中的某处。之后我们将学习精确的工具(dot product、cosine similarity)来计算这个角度。
-
如果一组 vector 中至少有一个可以由其他 vector 通过缩放和相加来构成,则称它们线性相关。该 vector 没有带来任何新信息。
-
例如,若 \(\mathbf{c} = 2\mathbf{a} + 3\mathbf{b}\),则 \(\mathbf{c}\) 是冗余的——你已经通过 \(\mathbf{a}\) 和 \(\mathbf{b}\) 拥有了 \(\mathbf{c}\) 提供的一切信息。
-
平行 vector 始终线性相关,因为一个不过是另一个的缩放副本。任何包含零 vector 的集合也是线性相关的。
-
如果没有任何一个 vector 能由其他 vector 构成,则称这些 vector 线性无关。每个 vector 都贡献了一个全新的方向。正交 vector 始终线性无关。
-
在二维中,两个线性无关的 vector 可以到达平面上的任意一点;在三维中,你需要三个。"需要多少个独立 vector"这一概念与维度直接相关。
-
当一个 vector 的大多数分量为零时,称其为稀疏(sparse)的;反之,大多数分量非零,则称其为稠密(dense)的。
-
稀疏性很重要,因为它影响存储和计算效率。稀疏 vector 只需追踪非零项,因此存储和处理都更高效。
-
Unit vector 是 magnitude 恰好为 1 的 vector。它纯粹代表一个方向,不携带任何长度信息。你可以将任意 vector 除以其 magnitude 来得到 unit vector:
-
这个过程称为归一化(normalisation)。它去掉了"走多远"的信息,只保留"往哪走"。
-
标准 unit vector 沿每条坐标轴指向:\(\hat{\mathbf{i}} = (1, 0, 0)\),\(\hat{\mathbf{j}} = (0, 1, 0)\),\(\hat{\mathbf{k}} = (0, 0, 1)\)。任何 vector 都可以写成这些 unit vector 的组合,例如 \((3, 2, 4) = 3\hat{\mathbf{i}} + 2\hat{\mathbf{j}} + 4\hat{\mathbf{k}}\)。
编程练习(使用 CoLab 或 notebook)¶
-
计算一个 vector 的 magnitude 并验证它与勾股定理一致,然后修改代码计算 unit vector。
-
通过检验一个 vector 是否是另一个 vector 的 scalar 倍来判断两者是否平行。