现在位置: 首页 > AI 数学基础 > 正文

向量空间与基 -- 换个坐标系看世界

同一个位置,在 GPS 坐标系和北斗坐标系下的经纬度数值不同——但位置本身没变。

向量也一样:同一个向量在不同基下有不同坐标。理解这一点,就理解了 PCA 降维和词嵌入空间的本质。

向量空间

向量空间 = 一个集合,其中的元素(向量)对加法和数乘封闭。

封闭 = 空间内任意两个向量相加、或任意向量乘标量,结果仍在空间内。

基:描述空间的坐标尺

基是一组向量,用它们的线性组合可以唯一地表示空间中任意向量。

标准基:(1,0,0)、(0,1,0)、(0,0,1)——分别代表 x、y、z 轴方向。

线性无关:没有冗余

一组向量线性无关 = 其中没有任何向量可以由其他向量线性组合表示。

直觉:每个向量都带来真正的「新方向」,没有浪费。

线性无关

{(1,0), (0,1)}

每个向量提供新方向

秩 = 2(满秩)

线性相关

{(1,2), (2,4)}

第二个 = 第一个 × 2

秩 = 1(冗余)

基必须满足两个条件:线性无关(无冗余)+ 张成整个空间(能表示所有向量)。

n 维空间的一组基恰好包含 n 个向量。


生活例子

换坐标系

北京的位置在北京 54 坐标系下是 (x₁, y₁),在 WGS-84 坐标系下是 (x₂, y₂)。

位置本身没变,但描述它的「尺子」(基)不同,坐标数字就不同。

词嵌入空间

词嵌入模型将每个词映射到 300 维空间中的一个向量。这个空间的每一维对应一个隐含语义方向。

「国王 - 男人 + 女人 ≈ 女王」——这些向量运算都发生在这个 300 维的向量空间里。


数学定义

\( \{\mathbf{v}_1, \dots, \mathbf{v}_n\} \) 是基 = 它们线性无关 + span{\(\mathbf{v}_1,\dots,\mathbf{v}_n\)} = 整个空间。

线性组合:\( c_1\mathbf{v}_1 + \cdots + c_n\mathbf{v}_n = \mathbf{0} \) 只有零解 → 线性无关。


Python 动手实践

实例

import numpy as np

# 标准基
e1, e2, e3 = np.array([1,0,0]), np.array([0,1,0]), np.array([0,0,1])
v = np.array([4, 5, 6])
print("v = 4*e1 + 5*e2 + 6*e3:", 4*e1 + 5*e2 + 6*e3)

# 用秩判断线性无关
v1, v2 = np.array([1,2]), np.array([2,4])  # v2 = 2*v1
M = np.column_stack([v1, v2])
print(f"{{v1, v2}} 的秩: {np.linalg.matrix_rank(M)} (< 2 → 线性相关)")

# 换基:同一向量,不同基下的坐标不同
v_std = np.array([3.0, 2.0])
B_new = np.array([[2.0, 0], [0, 3.0]])  # 新基
v_new = np.linalg.inv(B_new) @ v_std
print(f"标准坐标: {v_std}, 新基下坐标: {v_new}")
print(f"验证 B @ 新坐标 = {B_new @ v_new}")
v = 4*e1 + 5*e2 + 6*e3: [4 5 6]
{v1, v2} 的秩: 1 (< 2 → 线性相关)
标准坐标: [3. 2.], 新基下坐标: [1.5 0.67]
验证 B @ 新坐标 = [3. 2.]

AI 中的应用场景

PCA 降维 = 换基

PCA 找到一组新的标准正交基(主成分方向),使数据在新基的前 k 个坐标上方差最大。降维 = 只保留前 k 个新基坐标,扔掉后方差小的方向。这本质上是坐标系变换——从一个 784 维的像素空间换到 50 维的主成分空间。

词嵌入空间

Word2Vec 和 GloVe 将每个词映射到 300 维向量空间中的一个点。这个空间不是随意构造的——词与词之间的几何关系反映了语义关系。同义词距离近,反义词在某些方向上正好相反。向量空间中的线性运算(加减)对应语义操作。

特征空间变换

神经网络的每一层都可以看作将输入映射到一个新的向量空间。原始空间中线性不可分的数据(如 XOR 问题),经过隐藏层变换到特征空间后变得线性可分。这就是深度学习的核心直觉——逐层变换,最终在特征空间中用简单分类器即可分开。