本站内容由 AI 生成,可能存在错误。如发现问题,欢迎到 GitHub Issues 反馈。

向量空间的几何:内积、投影、秩与子空间

向量空间的几何:内积、投影、秩与子空间

更新于 2026-04-23

分解概述中,我们建立了 Part 1 “拆”的路线图:面对高维、稀疏、有噪声的数据矩阵,分解是统一的应对框架。我们知道了特征分解、SVD、范数、微积分这四件工具将层层推进。但在进入这些工具之前,我们需要先建立描述矩阵行为的语言

一个矩阵对向量做了什么?它把向量映射到哪里?保留了什么、丢弃了什么?要精确回答这些问题,需要度量向量之间的关系(角度、距离、投影),理解一组向量”撑起”了多大的空间,以及找出被变换”消灭”的方向。

这就是本文要建立的工具箱。 七个概念形成一条链:

内积告诉你两个向量的”对齐程度” → 投影是用内积把一个向量分解为”沿某方向”和”垂直于该方向”两部分 → Ax=yA\mathbf{x} = \mathbf{y} 的多重解读建立矩阵作用的完整图景 → 基变换揭示矩阵分解的灵魂:选一组好基,让复杂操作变简单 → 一组向量能张成(span)多大的空间定义了 → 被矩阵压到零的方向构成零空间正交矩阵保长度保角度,是 SVD 的旋转部分。

这些概念是理解后续所有分解方法的几何基础。特征分解需要理解特征方向和正交性,SVD 需要理解投影和秩,PCA 需要理解方差和子空间。没有这些工具,分解公式就只是符号操作,看不到背后的几何图景。

内积:度量向量的对齐程度

两个向量 a,bRn\mathbf{a}, \mathbf{b} \in \mathbb{R}^n内积(inner product,也叫点积 dot product)定义为:

aTb=i=1naibi\mathbf{a}^T\mathbf{b} = \sum_{i=1}^n a_i b_i

这个”对应元素相乘再求和”的操作看起来平淡无奇。但它有一个强大的几何解释:

内积的几何意义

aTb=abcosθ\mathbf{a}^T\mathbf{b} = \|\mathbf{a}\|\,\|\mathbf{b}\|\cos\theta

其中 a=iai2\|\mathbf{a}\| = \sqrt{\sum_i a_i^2} 是向量的长度(范数),θ\theta 是两个向量之间的夹角。

内积的几何意义
a · b = ‖a‖‖b‖cos θ = 投影长度 × ‖b‖
θa(3, 4)b(4, 0)投影 = 3‖a‖ = 5, ‖b‖ = 4, θ ≈ 53.1°a · b = 5 × 4 × 0.6 = 12= 3 × 4 + 4 × 0 = 12 ✓> 0 → 同向= 0 → 正交< 0 → 反向

这个等式揭示了内积的本质含义:它度量两个向量指向同一方向的程度。

  • aTb>0\mathbf{a}^T\mathbf{b} > 0:两个向量大致同向(θ<90°\theta < 90°
  • aTb=0\mathbf{a}^T\mathbf{b} = 0:两个向量正交θ=90°\theta = 90°),彼此完全”无关”
  • aTb<0\mathbf{a}^T\mathbf{b} < 0:两个向量大致反向(θ>90°\theta > 90°

a=(3,4)\mathbf{a} = (3, 4)b=(4,0)\mathbf{b} = (4, 0) 为例:aTb=3×4+4×0=12\mathbf{a}^T\mathbf{b} = 3 \times 4 + 4 \times 0 = 12。从几何上看,a=5\|\mathbf{a}\| = 5b=4\|\mathbf{b}\| = 4cosθ=12/(5×4)=0.6\cos\theta = 12 / (5 \times 4) = 0.6,对应夹角约 53.1°53.1°。内积为正——两个向量指向大致相同的方向。

还有一种等价的理解方式:aTb=acosθb\mathbf{a}^T\mathbf{b} = \|\mathbf{a}\|\cos\theta \cdot \|\mathbf{b}\| = a\mathbf{a}b\mathbf{b} 方向上的投影长度 乘以 b\|\mathbf{b}\|。这直接引出了下一节的投影公式。

内积在 ML 中无处不在

内积是 ML 中最基础的运算之一:

  • Attention 机制QKTQK^T 计算的就是 query 和 key 向量的内积,度量它们的”对齐程度”——对齐度越高,attention 权重越大
  • 相似度度量:余弦相似度 cosθ=aTbab\cos\theta = \frac{\mathbf{a}^T\mathbf{b}}{\|\mathbf{a}\|\,\|\mathbf{b}\|} 就是归一化后的内积
  • 线性层y=Wx\mathbf{y} = W\mathbf{x} 的每一行就是权重向量与输入的内积——度量输入在该方向上的”分量”

推广预告:内积不仅可以定义在向量之间,也可以定义在矩阵之间。矩阵内积 A,B=tr(ATB)=ijaijbij\langle A, B \rangle = \text{tr}(A^TB) = \sum_{ij} a_{ij} b_{ij},即”对应元素相乘再求和”——与向量内积的形式完全平行。这个概念将在后续的范数讨论中发挥重要作用。

投影:分解为”沿某方向 + 垂直方向”

内积给了我们度量对齐程度的工具。投影则用这个工具把一个向量分解为两部分

向量到方向的投影

给定方向向量 u\mathbf{u}(不要求是单位向量),向量 v\mathbf{v}u\mathbf{u} 方向上的投影为:

projuv=uTvuTuu\text{proj}_\mathbf{u}\,\mathbf{v} = \frac{\mathbf{u}^T\mathbf{v}}{\mathbf{u}^T\mathbf{u}}\,\mathbf{u}

这个公式由三部分组成:

  • uTv\mathbf{u}^T\mathbf{v}:内积,度量 v\mathbf{v}u\mathbf{u} 方向上的”分量大小”
  • uTu=u2\mathbf{u}^T\mathbf{u} = \|\mathbf{u}\|^2:归一化因子,消除 u\mathbf{u} 长度的影响
  • 乘以 u\mathbf{u}:把标量系数变回向量,方向与 u\mathbf{u} 一致

正交残差(residual)是被投影”剩下”的部分:

r=vprojuv\mathbf{r} = \mathbf{v} - \text{proj}_\mathbf{u}\,\mathbf{v}

关键性质:残差与投影方向正交,即 uTr=0\mathbf{u}^T\mathbf{r} = 0。这可以直接验证:

uTr=uTvuTvuTuuTu=uTvuTv=0\mathbf{u}^T\mathbf{r} = \mathbf{u}^T\mathbf{v} - \frac{\mathbf{u}^T\mathbf{v}}{\mathbf{u}^T\mathbf{u}}\,\mathbf{u}^T\mathbf{u} = \mathbf{u}^T\mathbf{v} - \mathbf{u}^T\mathbf{v} = 0

因此,任何向量都可以被分解为投影 + 正交残差,两部分互不干扰。

投影分解:v = 投影 + 正交残差
任何向量都可以分解为"沿某方向"和"垂直于该方向"两部分
v = (1, 3)u = (2, 1)投影 (2, 1)残差 (−1, 2)u·v / u·u = 5/5 = 1proj = 1 × (2,1) = (2, 1)resid = (1,3) − (2,1) = (−1, 2)验证: proj · resid = 0 ✓|v|² = |proj|² + |resid|² = 5 + 5 = 10 ✓

u=(2,1)\mathbf{u} = (2, 1)v=(1,3)\mathbf{v} = (1, 3) 为例,手算投影过程:

uTvuTu=2×1+1×322+12=55=1\frac{\mathbf{u}^T\mathbf{v}}{\mathbf{u}^T\mathbf{u}} = \frac{2 \times 1 + 1 \times 3}{2^2 + 1^2} = \frac{5}{5} = 1

projuv=1×(2,1)=(2,1)\text{proj}_\mathbf{u}\,\mathbf{v} = 1 \times (2, 1) = (2, 1)

r=(1,3)(2,1)=(1,2)\mathbf{r} = (1, 3) - (2, 1) = (-1, 2)

验证正交性:(2,1)(1,2)=2+2=0(2, 1) \cdot (-1, 2) = -2 + 2 = 0

验证勾股定理:v2=1+9=10\|\mathbf{v}\|^2 = 1 + 9 = 10proj2=4+1=5\|\text{proj}\|^2 = 4 + 1 = 5r2=1+4=5\|\mathbf{r}\|^2 = 1 + 4 = 5。确实 10=5+510 = 5 + 5

向量到子空间的投影

投影可以从”投影到一个方向”推广为”投影到一个子空间”。设 WRn×kW \in \mathbb{R}^{n \times k}kk 个列向量张成一个 kk 维子空间,向量 v\mathbf{v} 到这个子空间的投影为:

v^=W(WTW)1WTv\hat{\mathbf{v}} = W(W^TW)^{-1}W^T\mathbf{v}

特殊情况:当 WW 的列向量两两正交且长度为 1(即 WTW=IkW^TW = I_k)时,公式大幅简化:

v^=WWTv\hat{\mathbf{v}} = WW^T\mathbf{v}

注意 WRn×kW \in \mathbb{R}^{n \times k}k<nk < n)不是正交矩阵——正交矩阵要求是方阵且 WTW=WWT=IW^TW = WW^T = I。这里 WW 只是”列正交”的(列构成标准正交组),WWTWW^T 是秩-kk 的投影矩阵而非单位矩阵。

矩阵 P=WWTP = WW^T 叫做投影矩阵(projection matrix)。它有两个标志性性质:

  • 幂等性P2=PP^2 = P — 投影两次等于投影一次(已经投到子空间里的向量,再投一次不会改变)
  • 对称性PT=PP^T = P — 投影是对称操作

投影公式速查

投影核心公式

投影目标条件投影矩阵投影结果
单位向量 q\mathbf{q}q=1\|\mathbf{q}\| = 1P=qqTP = \mathbf{q}\mathbf{q}^Tv^=q(qTv)\hat{\mathbf{v}} = \mathbf{q}(\mathbf{q}^T\mathbf{v})
列正交矩阵 WWWTW=IkW^TW = I_kkk 列标准正交P=WWTP = WW^Tv^=W(WTv)\hat{\mathbf{v}} = W(W^T\mathbf{v})

两行本质上是同一件事:qqT\mathbf{q}\mathbf{q}^TWWTWW^Tk=1k = 1 时的特殊情况。阅读顺序是从右往左:先内积qTv\mathbf{q}^T\mathbf{v}WTvW^T\mathbf{v})求出在各方向上的坐标,再乘回基向量还原成原空间的向量。

这两个公式会在后续文章中反复出现——谱分解(Art. 2)、SVD(Art. 3)、PCA(Art. 6)的核心操作都是某种形式的投影。

投影为什么重要

投影是线性代数中最普遍的操作之一,它在 ML 中反复出现:

  • PCA(后续 Art. 6)就是把高维数据投影到方差最大的低维子空间——投影矩阵就是前 kk 个主成分方向构成的 WWTWW^T
  • 最小二乘法b^=A(ATA)1ATb\hat{\mathbf{b}} = A(A^TA)^{-1}A^T\mathbf{b}b\mathbf{b} 投影到 AA 的列空间——找到列空间中离 b\mathbf{b} 最近的点。其中 x^=(ATA)1ATb\hat{\mathbf{x}} = (A^TA)^{-1}A^T\mathbf{b} 是投影点在 AA 的列向量下的坐标(即 b^=Ax^\hat{\mathbf{b}} = A\hat{\mathbf{x}}
  • Attention 中的 QKTQK^T:第 (i,j)(i,j) 元素就是 query qi\mathbf{q}_i 与 key kj\mathbf{k}_j 的内积,度量两者的对齐程度。softmax 归一化后变成权重,对 value 做加权求和——本质上是一种”软检索”

投影发生在哪个空间?——ML 中最常见的混淆

上面提到投影在 PCA 和最小二乘中都出现,但它们投影的”舞台”完全不同。这个区别不弄清楚,后续的 SVD、PCA、低秩近似都会读得似是而非。

数据矩阵的约定

ML 中,mm 个样本、每个样本有 nn 个特征,数据矩阵排成 XRm×nX \in \mathbb{R}^{m \times n}

X=(x1Tx2TxmT)X = \begin{pmatrix} — \mathbf{x}_1^T — \\ — \mathbf{x}_2^T — \\ \vdots \\ — \mathbf{x}_m^T — \end{pmatrix}

每一行是一个样本在 Rn\mathbb{R}^n(特征空间)中的坐标。每一列是全部 mm 个样本在某个特征维度上的取值,构成 Rm\mathbb{R}^m(样本空间)中的一个向量。

所以,同一个矩阵 XX 同时涉及两个空间:

列空间 col(X)\text{col}(X)行空间 row(X)\text{row}(X)
所在空间Rm\mathbb{R}^m(样本空间)Rn\mathbb{R}^n(特征空间)
基向量含义每一列 = 某个特征在全部样本上的取值每一行 = 一个样本的全部特征
维度=rank(X)min(m,n)= \text{rank}(X) \leq \min(m,n)=rank(X)min(m,n)= \text{rank}(X) \leq \min(m,n)

两个空间的维度恰好相等——都等于秩(行秩 = 列秩,后面”秩”一节会详细解释)。

最小二乘:在样本空间 Rm\mathbb{R}^m 中投影

线性回归 y=Xβ\mathbf{y} = X\boldsymbol{\beta} 中,yRm\mathbf{y} \in \mathbb{R}^m 是目标值——mm 个样本各一个标签,住在样本空间 Rm\mathbb{R}^m 中。

根据矩阵乘法的定义,Xβ=β1x(1)+β2x(2)++βnx(n)X\boldsymbol{\beta} = \beta_1\mathbf{x}^{(1)} + \beta_2\mathbf{x}^{(2)} + \cdots + \beta_n\mathbf{x}^{(n)}x(j)\mathbf{x}^{(j)}XX 的第 jj 列)——矩阵乘向量就是列的线性组合(后面"Ax=yA\mathbf{x} = \mathbf{y}"一节会详细展开)。所以 XβX\boldsymbol{\beta} 的所有可能取值就是 XX 的列空间——Rm\mathbb{R}^m 的一个子空间。

y\mathbf{y} 不在列空间中时(方程无精确解),最小二乘就是把 y\mathbf{y} 投影到列空间,找到最近的那个点:

y^=X(XTX)1XTy\hat{\mathbf{y}} = X(X^TX)^{-1}X^T\mathbf{y}

整个过程发生在 Rm\mathbb{R}^m:被投影的向量 y\mathbf{y} 和投影结果 y^\hat{\mathbf{y}} 都是 mm 维的。

PCA:在特征空间 Rn\mathbb{R}^n 中投影

PCA 想做的事完全不同:把每个样本(一个 Rn\mathbb{R}^n 中的点)投影到一个 kk 维子空间,从而降维。

设投影方向为 WRn×kW \in \mathbb{R}^{n \times k}kk 个标准正交方向,每个是 Rn\mathbb{R}^n 中的向量),降维后的数据为:

Z=XWRm×kZ = XW \in \mathbb{R}^{m \times k}

每个样本 xiTRn\mathbf{x}_i^T \in \mathbb{R}^n 变成 ziT=xiTWRk\mathbf{z}_i^T = \mathbf{x}_i^T W \in \mathbb{R}^k——这是在 特征空间 Rn\mathbb{R}^n 中的投影,和列空间无关。

从 SVD 的角度看(后续 Art. 3、Art. 6 会详细展开):X=UΣVTX = U\Sigma V^T 中,PCA 用的是 VV(右奇异向量,特征空间中的方向),不是 UU(左奇异向量,样本空间中的方向)。

为什么容易混淆

因为投影公式的形式看起来一样——都是 W(WTW)1WTW(W^TW)^{-1}W^T——但 WW 的列向量住在不同的空间里:

  • 最小二乘中 W=XRm×nW = X \in \mathbb{R}^{m \times n},列向量在 Rm\mathbb{R}^m(样本空间),投影的是 yRm\mathbf{y} \in \mathbb{R}^m
  • PCA 中 WRn×kW \in \mathbb{R}^{n \times k},列向量在 Rn\mathbb{R}^n(特征空间),投影的是每个样本 xiRn\mathbf{x}_i \in \mathbb{R}^n

同一个投影公式,作用在不同空间中,回答的是完全不同的问题:最小二乘在问”y\mathbf{y}XX 的列空间有多近”,PCA 在问”数据沿哪些方向的方差最大”。记住这个区别,后续 SVD 的两组奇异向量(UU 对应样本空间,VV 对应特征空间)就不会搞混了。

Ax=yA\mathbf{x} = \mathbf{y}:一个等式的多重解读

上面我们大量使用了”AAx\mathbf{x} 映射到 y\mathbf{y}”、”y\mathbf{y} 是列的线性组合”之类的说法。这一节系统地梳理 Ax=yA\mathbf{x} = \mathbf{y} 的各种理解方式——它们不矛盾,而是同一件事的不同侧面,回答的问题各不相同。

术语提示:本文的”特征空间”指 feature space(nn 个特征维度构成的 Rn\mathbb{R}^n)。线性代数中另有”特征空间”(eigenspace)指某个特征值 λ\lambda 对应的特征向量张成的空间——两者中文同名但含义完全不同。Art. 2 讨论特征值时会引入后者。

三个代数视角

ARm×nA \in \mathbb{R}^{m \times n}xRn\mathbf{x} \in \mathbb{R}^ny=AxRm\mathbf{y} = A\mathbf{x} \in \mathbb{R}^m

行视角——“每个输出分量是什么?”

yi=第 i 行x=j=1naijxjy_i = \text{第 } i \text{ 行} \cdot \mathbf{x} = \sum_{j=1}^n a_{ij} x_j

每个输出 yiy_iAA 的第 ii 行与 x\mathbf{x} 的内积。这是计算上最直接的理解:要算 y\mathbf{y} 的第 3 个分量,就取 AA 的第 3 行和 x\mathbf{x} 做点积。行视角直接回扣本文开头的内积概念——矩阵乘法本质上就是一批内积。

列视角——“输出能到哪?”

y=x1a1+x2a2++xnan\mathbf{y} = x_1\mathbf{a}_1 + x_2\mathbf{a}_2 + \cdots + x_n\mathbf{a}_n

x\mathbf{x} 提供组合系数,y\mathbf{y}AA 的列向量的加权组合。AxA\mathbf{x} 的所有可能取值就是列向量能”张成”的空间——列空间 col(A)\text{col}(A)(下一节正式定义)。这个视角关注的是”输出空间中哪些地方是可达的”。

映射视角——“输入发生了什么?”

AA 是一个函数 f(x)=Axf(\mathbf{x}) = A\mathbf{x},把 Rn\mathbb{R}^n 中的向量送到 Rm\mathbb{R}^m 中。这个函数是线性的——满足 A(u+v)=Au+AvA(\mathbf{u} + \mathbf{v}) = A\mathbf{u} + A\mathbf{v}A(cu)=cAuA(c\mathbf{u}) = cA\mathbf{u}——称为线性映射(linear map),也叫线性变换(linear transformation),两个术语本质相同。这个视角关注的是”AA 对输入做了什么几何操作:哪些方向被保留、哪些被压死、各方向被拉伸了多少”。

视角公式关注的问题催生的概念
行视角yi=rowixy_i = \text{row}_i \cdot \mathbf{x}每个输出分量是什么?内积、线性方程组
列视角y=xjaj\mathbf{y} = \sum x_j \mathbf{a}_j输出能到哪?列空间、秩、最小二乘
映射视角A:RnRmA: \mathbb{R}^n \to \mathbb{R}^m输入发生了什么?特征值、零空间、可逆性

三个视角贯穿整个线性代数。列视角催生秩、投影、最小二乘;映射视角催生特征值、零空间、SVD;行视角在 ML 中尤其自然——神经网络的线性层 y=Wx\mathbf{y} = W\mathbf{x} 每个输出神经元就是权重行向量与输入的内积。后续文章中,我们会在三个视角之间自由切换。

方阵与非方阵:两种几何图景

映射视角说”AA 对输入做了几何操作”,但具体做了什么,方阵和非方阵的情况很不同。

方阵n×nn \times nRnRn\mathbb{R}^n \to \mathbb{R}^n):输入和输出在同一个空间中。你可以把变换前后的向量叠在一起比较——整个空间的网格线被旋转、拉伸、剪切、反射,但保持平行且经过原点。这就是 3Blue1Brown 的经典可视化方式。Art. 2 特征分解 的特征分解正是在这个情境下展开的。

非方阵m×nm \times nmnm \neq nRnRm\mathbb{R}^n \to \mathbb{R}^m):输入和输出在不同维度的空间中——无法把 x\mathbf{x}y\mathbf{y} 画在同一张图上直接比较,说”x\mathbf{x} 被旋转了 30°“没有意义。几何图景变成了:

  • m>nm > n(如 AR100×3A \in \mathbb{R}^{100 \times 3}):AAR3\mathbb{R}^3 嵌入R100\mathbb{R}^{100} 的一个低维子空间中——像把一张纸放进三维空间
  • m<nm < n(如 AR3×100A \in \mathbb{R}^{3 \times 100}):AAR100\mathbb{R}^{100} 压缩R3\mathbb{R}^3 中,必然有方向被丢弃(零空间非平凡)

虽然非方阵不能简单说”旋转、拉伸”,但 SVD 恢复了几何图景A=UΣVTA = U\Sigma V^T 对任意矩阵都成立,它把 AA 的作用分解为三步:

Ax=U(Σ(VTx))A\mathbf{x} = U(\Sigma(V^T\mathbf{x}))

  1. VTV^T:在输入空间 Rn\mathbb{R}^n 中做正交变换——保持所有向量的长度和夹角不变的变换,几何上只有旋转和反射(详见后面”正交矩阵”一节)
  2. Σ\Sigmam×nm \times n 矩形对角矩阵):沿各方向拉伸(σi\sigma_i 倍),同时处理维度变化——多出的维度补零(嵌入),或截掉多余方向(压缩)
  3. UU:在输出空间 Rm\mathbb{R}^m 中做正交变换(旋转/反射)

方阵的变换是 SVD 的特例——维度变化那一步不存在。Art. 3 SVD 会完整展开这个图景。

方阵 n×nn \times n非方阵 m×nm \times n
空间关系RnRn\mathbb{R}^n \to \mathbb{R}^n,同一空间RnRm\mathbb{R}^n \to \mathbb{R}^m,不同空间
直觉变形网格:旋转、拉伸、剪切跨空间映射:嵌入或压缩
可直接比较 x\mathbf{x}y\mathbf{y}可以(同一空间)不可以(不同维度)
特征分解适用:A=QΛQ1A = Q\Lambda Q^{-1}不适用
SVD适用适用:统一框架

基变换:Q1Q^{-1} 作为坐标翻译器

映射视角让我们把矩阵看成函数。基变换是其中一类特别重要的映射——它不改变向量本身,只改变描述向量的坐标系。这个概念是理解所有矩阵分解(特征分解、SVD、PCA)的关键。

什么是基?Rn\mathbb{R}^n 中,任意一组 nn 个线性无关的向量 {q1,,qn}\{\mathbf{q}_1, \ldots, \mathbf{q}_n\} 构成一组(basis)。基的核心性质是:空间中的任何向量都可以唯一地表示为基向量的线性组合。

我们最熟悉的是标准基 {e1,e2,,en}\{\mathbf{e}_1, \mathbf{e}_2, \ldots, \mathbf{e}_n\}(第 ii 个分量为 1,其余为 0)。向量 x=(3,2)T\mathbf{x} = (3, 2)^T 在标准基下的含义很直接:沿第一轴走 3,沿第二轴走 2。但标准基只是一种描述方式——同一个向量在不同基下有不同的坐标,就像同一个地点在经纬度和 UTM 坐标下有不同的数字。

基变换的数学。Q=[q1  q2    qn]Q = [\mathbf{q}_1 \; \mathbf{q}_2 \; \cdots \; \mathbf{q}_n] 是由新基向量排成列组成的矩阵(每列是一个基向量,用标准坐标表示)。任意向量 x\mathbf{x} 都可以表示为新基的线性组合:

x=c1q1+c2q2++cnqn=Qc\mathbf{x} = c_1\mathbf{q}_1 + c_2\mathbf{q}_2 + \cdots + c_n\mathbf{q}_n = Q\mathbf{c}

这里系数向量 c=(c1,,cn)T\mathbf{c} = (c_1, \ldots, c_n)^T 就是 x\mathbf{x} 在新基下的坐标——它回答的问题是”沿 q1\mathbf{q}_1 方向走多少、沿 q2\mathbf{q}_2 方向走多少……才能到达 x\mathbf{x}“。两边左乘 Q1Q^{-1}

c=Q1x\mathbf{c} = Q^{-1}\mathbf{x}

这就是基变换的本质:Q1Q^{-1} 把标准坐标翻译成 QQ-基下的坐标,QQQQ-基下的坐标翻译回标准坐标。 注意这正是映射视角的一个实例——A=Q1A = Q^{-1} 是一个从”标准语言”到”新基语言”的翻译器。

一个具体的例子:取 Q=[1111]Q = \begin{bmatrix}1 & 1 \\ 1 & -1\end{bmatrix},即新基是 q1=(1,1)T\mathbf{q}_1 = (1,1)^T(45° 方向)和 q2=(1,1)T\mathbf{q}_2 = (1,-1)^T(-45° 方向)。向量 x=(3,1)T\mathbf{x} = (3, 1)^T 在新基下的坐标为:

c=Q1x=12[1111][31]=[21]\mathbf{c} = Q^{-1}\mathbf{x} = \frac{1}{2}\begin{bmatrix}1 & 1 \\ 1 & -1\end{bmatrix}\begin{bmatrix}3 \\ 1\end{bmatrix} = \begin{bmatrix}2 \\ 1\end{bmatrix}

验证:2(1,1)T+1(1,1)T=(3,1)T2 \cdot (1,1)^T + 1 \cdot (1,-1)^T = (3, 1)^T ✓。同一个向量,标准基下叫 (3,1)(3, 1),新基下叫 (2,1)(2, 1)——向量没动,只是描述它的语言换了。

正交基的简化。QQ 的列向量彼此正交且长度为 1(即 QQ 是正交矩阵,QTQ=IQ^TQ = I)时,Q1=QTQ^{-1} = Q^T,基变换退化为逐方向做内积:

ci=qiTxc_i = \mathbf{q}_i^T \mathbf{x}

每个坐标分量就是 x\mathbf{x}qi\mathbf{q}_i 方向上的投影长度——回到了前面投影那一节的操作。这解释了为什么正交基在计算中如此受欢迎:不需要求逆,一次内积就能得到坐标。

一般基正交基
基变换c=Q1x\mathbf{c} = Q^{-1}\mathbf{x}(需要求逆)c=QTx\mathbf{c} = Q^T\mathbf{x}(转置即可)
ii 个坐标需要 Q1Q^{-1} 的第 ii 行与 x\mathbf{x} 做内积ci=qiTxc_i = \mathbf{q}_i^T\mathbf{x}(直接投影)
数值稳定性可能不稳定(QQ 接近奇异——即基向量接近线性相关、QQ 接近不可逆——时,微小误差被 Q1Q^{-1} 放大)完美稳定(正交矩阵保长度)

为什么基变换是矩阵分解的灵魂? 几乎所有矩阵分解都可以理解为”找到一组好的基,让矩阵在新基下变得简单”:

  • 特征分解 A=QΛQ1A = Q\Lambda Q^{-1}:在特征基下,AA 变成逐方向独立缩放(Art. 2 特征分解
  • SVD A=UΣVTA = U\Sigma V^T:分别为输入空间和输出空间各找一组最佳正交基(Art. 3 SVD
  • PCA:找到方差最大的正交基方向(Art. 6)

Art. 2 特征分解 写出 Ax=Q(Λ(Q1x))A\mathbf{x} = Q(\Lambda(Q^{-1}\mathbf{x})) 时,三步的含义现在完全清楚了:Q1xQ^{-1}\mathbf{x} 是把 x\mathbf{x} 翻译成特征基坐标,Λ\Lambda 在特征基下做独立缩放,QQ 把结果翻译回标准坐标。分解 = 选基 + 在新基下做简单操作 + 翻译回来。

四个基本子空间

映射视角引出一个自然的问题:AA 把哪些方向保留了、哪些压死了、哪些输出方向是可达的?Strang 的”四个基本子空间”框架给出了完整的回答。

ARm×nA \in \mathbb{R}^{m \times n},秩为 rr,输入空间 Rn\mathbb{R}^n 和输出空间 Rm\mathbb{R}^m 各被切成两个正交互补的部分:

子空间所在空间维度含义
行空间 row(A)\text{row}(A)Rn\mathbb{R}^nrr输入中被 AA 保留的方向
零空间 null(A)\text{null}(A)Rn\mathbb{R}^nnrn - r输入中被 AA 压死的方向(Ax=0A\mathbf{x} = \mathbf{0}
列空间 col(A)\text{col}(A)Rm\mathbb{R}^mrr输出中 AA 能到达的方向
左零空间 null(AT)\text{null}(A^T)Rm\mathbb{R}^mmrm - r输出中 AA 永远到不了的方向

关键的对应关系:AA 把行空间一一对应地映射到列空间——没有信息丢失(各方向被拉伸 σi\sigma_i 倍),没有重叠。零空间被完全压死——这些方向的信息被彻底丢弃。左零空间是不可达的——输出空间中的这些方向,无论输入什么 x\mathbf{x} 都到达不了。

Rn=row(A)r 维,被保留null(A)(nr) 维,被压死Rm=col(A)r 维,可达null(AT)(mr) 维,不可达\mathbb{R}^n = \underbrace{\text{row}(A)}_{r \text{ 维,被保留}} \oplus \underbrace{\text{null}(A)}_{(n-r) \text{ 维,被压死}} \qquad \mathbb{R}^m = \underbrace{\text{col}(A)}_{r \text{ 维,可达}} \oplus \underbrace{\text{null}(A^T)}_{(m-r) \text{ 维,不可达}}

这个框架将在”秩”和”零空间”两节中用具体例子展开,在 Art. 3 SVD 中达到完整形式——SVD 的 VV 的列给出行空间和零空间的正交基,UU 的列给出列空间和左零空间的正交基。

y\mathbf{y} 的含义取决于矩阵的角色

到目前为止,我们讨论的都是纯数学:AAx\mathbf{x}y\mathbf{y} 只是矩阵和向量。但当 Ax=yA\mathbf{x} = \mathbf{y} 出现在具体应用中时,x\mathbf{x}y\mathbf{y}语义完全取决于矩阵扮演的角色。(回忆 Art. 0 全景图中的三种角色:数据容器、给定算子、学习算子。)

AA 是数据矩阵(XRm×nX \in \mathbb{R}^{m \times n},行=样本,列=特征):

y=Xv\mathbf{y} = X\mathbf{v} 中,v\mathbf{v} 不是一个样本——它是特征空间 Rn\mathbb{R}^n 中的一组系数/权重/方向。y\mathbf{y} 是所有 mm 个样本对 v\mathbf{v} 的”响应”:yi=xiTvy_i = \mathbf{x}_i^T \mathbf{v}(第 ii 个样本与 v\mathbf{v} 的内积),每个分量对应一个样本的标量评分。

应用右侧向量的角色yiy_i 的含义
线性回归 XβX\boldsymbol{\beta}权重向量 β\boldsymbol{\beta}ii 个样本的预测值
PCA 投影 XwX\mathbf{w}主成分方向 w\mathbf{w}ii 个样本在该方向上的坐标
任意的 XvX\mathbf{v}特征空间中的任意方向ii 个样本在该方向上的”评分”

共同模式:XX 把特征空间中的一个方向,转换为样本空间中每人一个标量值。 反过来 XTwX^T\mathbf{w}wRm\mathbf{w} \in \mathbb{R}^m 是对每个样本的权重)则是把样本空间中的权重转换为特征空间中的一个合成向量——例如 w=(1/m,,1/m)T\mathbf{w} = (1/m, \ldots, 1/m)^T 时,XTwX^T\mathbf{w} 就是样本均值。

AA 是算子矩阵(变换规则):

这时 x\mathbf{x} 才是”被变换的对象”——一个样本、一个信号、一个状态向量。y=Ax\mathbf{y} = A\mathbf{x} 是变换后的结果。

应用AA 的角色x\mathbf{x} 的角色y\mathbf{y} 的含义
神经网络层 Wx+bW\mathbf{x} + \mathbf{b}权重矩阵一个输入向量该层的输出
PCA 降维 VkTxV_k^T\mathbf{x}投影矩阵一个样本降维后的坐标
旋转 RxR\mathbf{x}旋转矩阵被旋转的向量旋转后的向量

共同模式:AA 定义变换规则,x\mathbf{x} 是被变换的个体,y\mathbf{y} 是变换结果。 前面讨论的”旋转、拉伸、剪切”这些几何直觉,正是在这个语境下最自然的。

同一个公式 Ax=yA\mathbf{x} = \mathbf{y},矩阵角色不同,x\mathbf{x}y\mathbf{y} 的语义完全不同。 认识到这一点,是避免混淆的关键。

Span、线性无关与秩

我们已经知道如何度量两个向量的关系(内积)、分解一个向量(投影),以及 Ax=yA\mathbf{x} = \mathbf{y} 的多重含义。现在问一个更大的问题:一组向量能”撑起”多大的空间?

Span:线性组合的集合

一组向量 {v1,,vk}\{\mathbf{v}_1, \ldots, \mathbf{v}_k\}张成空间(span)是它们所有线性组合构成的集合:

span{v1,,vk}={i=1kcivi:c1,,ckR}\text{span}\{\mathbf{v}_1, \ldots, \mathbf{v}_k\} = \left\{\sum_{i=1}^k c_i \mathbf{v}_i : c_1, \ldots, c_k \in \mathbb{R}\right\}

直观地说,span 就是”这组向量通过缩放和相加能到达的所有地方”。

线性无关:没有”多余”的向量

一组向量 {v1,,vk}\{\mathbf{v}_1, \ldots, \mathbf{v}_k\}线性无关(linearly independent)的,当且仅当没有一个向量可以用其他向量的线性组合表示。等价地:如果 c1v1++ckvk=0c_1\mathbf{v}_1 + \cdots + c_k\mathbf{v}_k = \mathbf{0} 只有 c1==ck=0c_1 = \cdots = c_k = 0 这一组解。

举个例子:v1=(1,2,0)\mathbf{v}_1 = (1, 2, 0)v2=(0,1,1)\mathbf{v}_2 = (0, 1, 1)v3=(2,5,1)\mathbf{v}_3 = (2, 5, 1)。注意到 v3=2v1+v2\mathbf{v}_3 = 2\mathbf{v}_1 + \mathbf{v}_2——第三个向量是前两个的线性组合,所以这三个向量线性相关v3\mathbf{v}_3 没有带来”新的方向”,它对 span 的贡献是多余的:span{v1,v2,v3}=span{v1,v2}\text{span}\{\mathbf{v}_1, \mathbf{v}_2, \mathbf{v}_3\} = \text{span}\{\mathbf{v}_1, \mathbf{v}_2\}

秩:矩阵有多少个独立方向

有了 span 的定义,我们可以精确定义列空间和秩。矩阵 ARm×nA \in \mathbb{R}^{m \times n}nn 个列向量 a1,,an\mathbf{a}_1, \ldots, \mathbf{a}_n 张成的空间就是 AA列空间(column space),记为 col(A)=span{a1,,an}\text{col}(A) = \text{span}\{\mathbf{a}_1, \ldots, \mathbf{a}_n\}。从前面的列视角可知,AxA\mathbf{x} 的所有可能取值恰好就是列空间。这也是为什么最小二乘中 b^=Ax^\hat{\mathbf{b}} = A\hat{\mathbf{x}} 一定在列空间中——它本身就是列向量的线性组合。

rank(A)=dim(col(A))=dim(row(A))\text{rank}(A) = \dim(\text{col}(A)) = \dim(\text{row}(A))

秩只有一个——行秩等于列秩,这是线性代数的基本定理。直觉上:把 AA 看作映射 f(x)=Axf(\mathbf{x}) = A\mathbf{x},函数的(image)就是所有可能的输出值构成的集合 {Ax:xRn}\{A\mathbf{x} : \mathbf{x} \in \mathbb{R}^n\}——这恰好就是列空间 col(A)\text{col}(A)。回忆前面四个基本子空间的框架:AA 把行空间一一对应地映射到列空间,没有多对一,也没有遗漏。一一对应的两个集合维度必然相等。注意”独立方向数相等”不等于”冗余数相等”——一个 1000×31000 \times 3 的满秩矩阵有 997 个冗余行但零个冗余列。

秩就是独立方向的数量——无论从行还是列数,结果一样。

一个 m×nm \times n 矩阵的秩最大为 min(m,n)\min(m, n)。当秩达到这个上限时称为满秩(full rank)。如果秩小于 min(m,n)\min(m, n),说明列(和行)有冗余——矩阵”退化”了。

秩的几何含义:独立方向的数量
3 个 3D 向量可以撑满空间、退化为平面、或退化为直线
秩 3:撑满空间3 个独立方向 → 3D 体秩 2:压成平面只有 2 个独立方向 → 2D 面依赖秩 1:压成直线所有向量共线 → 1D 线依赖

秩的几何图景非常直观:

  • 一个 3×33 \times 3 矩阵秩为 3 → 三个列向量撑满了三维空间,矩阵是可逆的
  • 秩为 2 → 三个列向量只能撑起一个二维平面(其中一个向量可以用另外两个表示)
  • 秩为 1 → 所有列向量都是同一个方向的倍数,只能撑起一条线

秩的深层意义

秩不仅仅是一个数学定义——它直接对应着”信息维度”的概念。

分解概述中,我们提到数据矩阵往往是”名义维度很高、但有效维度很低”的。这里的”有效维度”就是秩的概念:一个 1000×5001000 \times 500 的数据矩阵,名义上有 500 个特征维度,但如果秩只有 20,说明这些特征实际上只有 20 个独立方向,其余都可以用这 20 个的线性组合表示。

低秩近似(low-rank approximation)是整个 Part 1 的核心主题:找一个秩为 knk \ll n 的矩阵来近似原始矩阵——LoRA、矩阵补全、PCA 都在做这件事。

零空间:被矩阵”压死”的方向

秩告诉我们矩阵保留了多少维度。那么,被丢弃的维度去了哪里?

定义

回忆前面的映射视角和四个基本子空间:AARn\mathbb{R}^n 中的向量映射到 Rm\mathbb{R}^m 中,行空间被保留,而零空间被”压死”。现在来正式定义零空间。

矩阵 ARm×nA \in \mathbb{R}^{m \times n}零空间(null space,也叫核 kernel)就是所有满足 Ax=0A\mathbf{x} = \mathbf{0} 的向量的集合:

null(A)={xRn:Ax=0}\text{null}(A) = \{\mathbf{x} \in \mathbb{R}^n : A\mathbf{x} = \mathbf{0}\}

零空间中的向量是被矩阵”完全压死”的——它们经过变换后消失了,信息被完全丢弃。

几何直觉

考虑矩阵 B=[101011112]B = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 2 \end{bmatrix}。注意到第三行等于前两行之和,所以 rank(B)=2\text{rank}(B) = 2BB 把三维空间映射到一个二维平面上。

哪些向量被压死了?解 Bx=0B\mathbf{x} = \mathbf{0},由第一行 x1+x3=0x_1 + x_3 = 0 和第二行 x2+x3=0x_2 + x_3 = 0,得 x1=x3x_1 = -x_3x2=x3x_2 = -x_3,即 x=x3(1,1,1)T\mathbf{x} = x_3(−1, −1, 1)^T

零空间是 span{(1,1,1)T}\text{span}\{(−1, −1, 1)^T\}——一条通过原点的直线。沿着这条线的所有向量,经过 BB 变换后都变成零。验证:B(1,1,1)T=(1+0+1,  01+1,  11+2)=(0,0,0)B \cdot (-1, -1, 1)^T = (-1+0+1,\; 0-1+1,\; -1-1+2) = (0, 0, 0)

零空间与列空间:变换前后的对比
秩 2 的矩阵把 3D 空间压成 2D 平面,垂直于平面的方向被"压死"
A秩 2输入空间 R³零空间Ax = 0输出空间 R³列空间 (2D 平面)零空间 → 原点rank(A) + dim(null(A)) = n (秩-零化度定理)

秩-零化度定理

秩和零空间的维度满足一个优雅的等式:

秩-零化度定理

rank(A)+dim(null(A))=n\text{rank}(A) + \dim(\text{null}(A)) = n

被矩阵保留的维度 + 被矩阵压死的维度 = 输入空间的总维度(nn = 列数)。

在上面的例子中:rank(B)=2\text{rank}(B) = 2dim(null(B))=1\dim(\text{null}(B)) = 1n=3n = 3,确实 2+1=32 + 1 = 3

零空间为什么重要

零空间在后续学习中会反复出现:

  • 线性方程组 Ax=bA\mathbf{x} = \mathbf{b}:如果零空间非平凡(不仅仅包含零向量),方程组有无穷多解——任何特解加上零空间中的向量都是解
  • 在后续 Art. 2 和 Art. 3 中:特征值为零的特征向量就在零空间里;SVD 中奇异值为零对应的方向被完全丢弃
  • 矩阵的可逆性:矩阵可逆当且仅当零空间只包含零向量(即 null(A)={0}\text{null}(A) = \{\mathbf{0}\},没有信息被丢弃)

正交矩阵:保长度、保角度的变换

在讨论投影时,我们看到正交列的矩阵 WW 使投影公式大幅简化(P=WWTP = WW^T)。现在来看正交性的”终极形式”:正交矩阵

定义

一个方阵 QRn×nQ \in \mathbb{R}^{n \times n}正交矩阵(orthogonal matrix),当且仅当:

正交矩阵核心性质

QTQ=QQT=IQ1=QTQ^TQ = QQ^T = I \quad \Longrightarrow \quad Q^{-1} = Q^T

保长度:Qx=x\|Q\mathbf{x}\| = \|\mathbf{x}\|  保角度:(Qx)T(Qy)=xTy(Q\mathbf{x})^T(Q\mathbf{y}) = \mathbf{x}^T\mathbf{y}

这意味着 QQ 的列向量(和行向量)两两正交且长度为 1——形成一组标准正交基(orthonormal basis)。

命名陷阱:“正交矩阵”(orthogonal matrix)的列实际上是单位正交的(orthonormal)——不仅两两垂直,而且长度为 1。如果列只是正交但长度不为 1,则 QTQQ^TQ 是对角矩阵 DD(而非 II),不满足定义。这个不一致是历史遗留:orthogonal matrix 这个术语早于 orthonormal 的广泛使用。

正交 \neq 对称:正交矩阵要求 QTQ=IQ^TQ = I,但不要求 Q=QTQ = Q^T。典型例子:旋转矩阵 R=[cosθsinθsinθcosθ]R = \begin{bmatrix}\cos\theta & -\sin\theta \\ \sin\theta & \cos\theta\end{bmatrix} 是正交的但不对称(θ0,π\theta \neq 0, \pi 时)。只有反射矩阵(如 Householder 矩阵 H=I2vvTH = I - 2\mathbf{v}\mathbf{v}^T)才同时满足正交和对称——此时 Q2=IQ^2 = I,即 QQ 是自身的逆。

几何意义

正交矩阵的作用是旋转(rotation)或反射(reflection)——它改变向量的方向,但不改变长度和角度。

保长度Qx2=(Qx)T(Qx)=xTQTQx=xTx=x2\|Q\mathbf{x}\|^2 = (Q\mathbf{x})^T(Q\mathbf{x}) = \mathbf{x}^TQ^TQ\mathbf{x} = \mathbf{x}^T\mathbf{x} = \|\mathbf{x}\|^2

保角度(Qx)T(Qy)=xTQTQy=xTy(Q\mathbf{x})^T(Q\mathbf{y}) = \mathbf{x}^TQ^TQ\mathbf{y} = \mathbf{x}^T\mathbf{y}——内积不变意味着角度不变。

det(Q)=+1\det(Q) = +1 时是纯旋转,det(Q)=1\det(Q) = -1 时包含反射。

反射矩阵:给定单位向量 v\mathbf{v}v=1\|\mathbf{v}\| = 1),关于 v\mathbf{v} 的法平面的反射定义为:

H=I2vvTH = I - 2\mathbf{v}\mathbf{v}^T

几何直觉:vvTx\mathbf{v}\mathbf{v}^T\mathbf{x} 提取 x\mathbf{x}v\mathbf{v} 方向上的分量,I2vvTI - 2\mathbf{v}\mathbf{v}^T 将这个分量反号——等效于关于垂直于 v\mathbf{v} 的超平面做镜像翻转。在 2D 中,取 v=(0,1)T\mathbf{v} = (0, 1)^T,则 H=[1001]H = \begin{bmatrix}1 & 0 \\ 0 & -1\end{bmatrix}——关于 xx 轴的反射,把 (a,b)(a, b) 映射到 (a,b)(a, -b)

验证 HH 的性质:(I2vvT)T=I2vvT=H(I - 2\mathbf{v}\mathbf{v}^T)^T = I - 2\mathbf{v}\mathbf{v}^T = H(对称),H2=I4vvT+4v(vTv)=1vT=IH^2 = I - 4\mathbf{v}\mathbf{v}^T + 4\mathbf{v}\underbrace{(\mathbf{v}^T\mathbf{v})}_{=1}\mathbf{v}^T = I(做两次反射回到原处)。所以反射矩阵是同时正交且对称的,H1=HT=HH^{-1} = H^T = H。这种矩阵叫做 Householder 矩阵,是数值线性代数中 QR 分解的核心构建块。

正交变换 vs 一般变换对单位圆的作用
正交矩阵保持长度和角度,一般矩阵会拉伸和扭曲
一般矩阵:圆 → 椭圆长度改变、角度改变Ae₁Ae₂拉伸 + 剪切正交矩阵:圆 → 圆长度不变、角度不变Ae₁Ae₂纯旋转 45°

上图展示了关键区别:一般矩阵把单位圆变成椭圆(拉伸和剪切),而正交矩阵把单位圆变成另一个单位圆(只是旋转了)。

正交基的计算优势

QTQ=IQ^TQ = I 意味着 Q1=QTQ^{-1} = Q^T——转置就是逆。这在计算上是巨大的优势:

  • 计算一般矩阵的逆需要 O(n3)O(n^3) 的运算和担心数值稳定性
  • 计算正交矩阵的”逆”只需要转置——O(1)O(1) 的额外存储,零额外计算

这就是为什么在数值线性代数中,有大量算法专门用于构造正交基——Gram-Schmidt 正交化、Householder 变换、QR 分解等。它们是 numpy.linalg.svd()torch.linalg.eigh() 等库函数的内部实现基石,本路径不逐一展开,但理解它们存在的动机很简单:正交基让一切计算变得简洁而稳定。

为什么正交矩阵如此重要

在后续文章中,正交矩阵是核心角色:

  • SVD(Art. 3):A=UΣVTA = U\Sigma V^T 中,UUVV 都是正交矩阵 → SVD 的几何意义就是”旋转 → 拉伸 → 旋转”
  • 特征分解(Art. 2):对称矩阵的特征分解 A=QΛQTA = Q\Lambda Q^T 中,QQ 是正交矩阵
  • 数值稳定性:正交变换不放大误差(因为保长度),所以涉及正交矩阵的算法天然具有良好的数值性质

数值秩与有效秩

前面讨论的秩是一个精确的整数:要么线性无关,要么不是。但在真实数据中,情况更微妙。

理论秩的局限

理论上秩是精确定义的。但真实数据总有噪声——即使数据”本质上”在一个低维子空间附近,微小的噪声扰动也能让所有方向的方差都非零,使得精确秩等于矩阵的列数

例如,一组三维数据点本来几乎在一个平面上(2 维),加上微量测量噪声后,垂直于平面的方向也有了极小的方差。精确秩变成了 3,但说”有效维度是 3”显然不对——绝大部分信息仍然在那个平面上。

有效秩的直觉

有效秩(effective rank)不是一个精确的数,而是一个”软”概念:数据在各个正交方向上的方差差异有多大?

想象把数据投影到各个正交方向上,计算每个方向上的方差,从大到小排列。如果方差衰减得很快——前几个方向的方差远大于后面的——那么有效秩就是”方差显著的方向的数量”。

方差衰减曲线与有效秩
各正交方向上的方差按大小排列,曲线急剧下降处标志着有效秩
信号方向噪声方向方差方向编号noise floor1234567891051%85%94%有效秩 ≈ 3前 3 个方向: 94%

上图是一条典型的方差衰减曲线(也叫 scree plot)。前 3 个方向的方差占总方差的约 94%,之后的方向方差很小(noise floor)。虽然精确秩可能等于 10(所有方向方差都非零),但有效秩约为 3。

如何判断有效秩

在没有引入特征值和奇异值(它们将在 Art. 2 和 Art. 3 正式定义)的情况下,判断有效秩的直觉方法是:

  1. 计算数据在各正交方向上的方差(例如通过协方差矩阵的对角元素,或者通过逐步寻找方差最大的正交方向)
  2. 按大小排列,画衰减曲线
  3. 找 elbow(拐点):曲线急剧下降的位置,大方差方向(信号)和小方差方向(噪声)的分界

在后续文章中,我们会看到更精确的定义方式。Art. 3 的奇异值给出方差衰减的精确量化,Art. 4 的范数定义了如 stable rank rs=AF2/A22r_s = \|A\|_F^2 / \|A\|_2^2 这样的连续指标。本节只需要建立一个直觉:有效维度远低于名义维度。

有效秩为什么重要

“名义维度高、有效维度低”这个现象是整个矩阵分解理论的出发点:

  • PCA(Art. 6):保留前 kk 个主成分就是选择方差最大的 kk 个方向,丢弃方差极小的(噪声)方向。选 kk 的标准就是有效秩
  • 截断 SVD(Art. 3):保留前 kk 个奇异值,kk 的选择基于奇异值的衰减速率
  • LoRA(Art. 24):大模型微调时权重更新矩阵 ΔW\Delta W 是低秩的——其 intrinsic dimensionality 远小于名义维度

完整数值例子:从 3D 数据到有效秩

让我们把本文的所有概念串起来,用一个具体的数值例子走一遍完整流程。

数据

8 个三维数据点,大致分布在一个倾斜的平面上,加了微量噪声:

p1=(1,2,1.15),p2=(3,1,1.72),p3=(2,5,2.56),p4=(5,3,3.37)\mathbf{p}_1 = (1, 2, 1.15), \quad \mathbf{p}_2 = (3, 1, 1.72), \quad \mathbf{p}_3 = (2, 5, 2.56), \quad \mathbf{p}_4 = (5, 3, 3.37)

p5=(4,6,3.84),p6=(6,4,4.15),p7=(3,3,2.47),p8=(5,6,4.24)\mathbf{p}_5 = (4, 6, 3.84), \quad \mathbf{p}_6 = (6, 4, 4.15), \quad \mathbf{p}_7 = (3, 3, 2.47), \quad \mathbf{p}_8 = (5, 6, 4.24)

第一步:中心化

均值:xˉ=(3.625,3.750,2.938)\bar{\mathbf{x}} = (3.625, 3.750, 2.938)

第二步:计算各方向方差

这里我们预告 Art. 1B 的协方差矩阵概念。协方差矩阵 C=1n1X~TX~C = \frac{1}{n-1}\tilde{X}^T\tilde{X}(其中 X~\tilde{X} 是中心化后的数据矩阵)对角线上就是各坐标轴方向的方差:

C=[2.841.181.711.183.361.611.711.611.32]C = \begin{bmatrix} 2.84 & 1.18 & 1.71 \\ 1.18 & 3.36 & 1.61 \\ 1.71 & 1.61 & 1.32 \end{bmatrix}

注意对角元素:xx 方向方差 2.84,yy 方向方差 3.36,zz 方向方差 1.32。但坐标轴不一定是方差最大的方向——非对角元素(协方差)不为零,说明各维度之间有关联。

第三步:找到真正的主方向

通过数值方法(后续 Art. 2 会正式介绍),可以找到三个互相正交的方向,使得数据在这些方向上的方差分别为:

方向方差占比
方向 15.58374.3%
方向 21.92725.7%
方向 30.00120.02%

前两个方向解释了 99.98% 的方差。第三个方向的方差几乎为零——数据在这个方向上几乎没有变化。

第四步:投影到前 2 个方向

把 8 个点投影到前两个主方向构成的平面上,然后重建:

原始坐标重建坐标误差
p1\mathbf{p}_1(1, 2, 1.15)(1.00, 2.00, 1.15)0.001
p2\mathbf{p}_2(3, 1, 1.72)(2.98, 0.99, 1.76)0.049
p7\mathbf{p}_7(3, 3, 2.47)(3.02, 3.02, 2.42)0.055
p8\mathbf{p}_8(5, 6, 4.24)(4.98, 5.99, 4.28)0.048

所有点的重建误差都极小(< 0.06)。上表仅展示 4 个代表点,全部 8 个点的总平方误差约 0.008。

第五步:被丢弃的方向 ≈ 零空间方向

第三个方向(被丢弃的那个)约为 (0.41,0.27,0.87)(-0.41, -0.27, 0.87)。数据在这个方向上的投影值都在 ±0.06\pm 0.06 以内——几乎为零。

这就是”有效零空间”:虽然不是精确为零(有微量噪声),但实际上这个方向携带的信息可以忽略不计。如果我们构建一个最优秩-2 近似矩阵来表示这些数据,这个方向就是被”压死”的方向。

小结

这个例子完整展示了概念链:

  1. 内积(通过协方差矩阵的元素)度量了各维度的对齐关系
  2. 投影到主方向上保留了几乎全部信息
  3. (有效秩 ≈ 2)揭示了数据的内在维度远低于名义维度 3
  4. 零空间方向(方差极小的方向)对应了可以安全丢弃的噪声方向

总结与展望

本文建立了描述向量和子空间几何关系的完整工具箱:

概念核心含义在 ML 中的作用
内积度量两个向量的对齐程度Attention 的 QKTQK^T、余弦相似度
投影分解为”沿某方向 + 垂直方向”PCA 降维、最小二乘
Ax=yA\mathbf{x}=\mathbf{y} 的三视角行(内积)、列(线性组合)、映射(几何变换)理解不同语境下矩阵乘法的含义
基变换Q1xQ^{-1}\mathbf{x}:换一组基描述同一个向量特征分解、SVD、PCA 的核心机制
四个基本子空间行空间↔列空间,零空间↔左零空间SVD 的结构基础
独立方向的数量低秩近似、LoRA
零空间被变换压死的方向方程求解、信息丢弃
正交矩阵保长度保角度的变换SVD 的旋转部分、数值稳定性
有效秩信号方向的数量(软概念)选择截断维度 kk

这些是向量级的工具——描述向量之间的关系、向量组的结构、以及矩阵对向量的作用。

但我们还缺少矩阵级的工具:矩阵本身有什么结构?对称矩阵和一般矩阵有什么区别?矩阵的”形状”(正定、半正定)意味着什么?协方差矩阵为什么必须是半正定的?这些问题将在下一篇(Art. 1B)中回答——从对称性、正定性到二次型,建立矩阵级的几何语言,为 Art. 2 的特征分解做好最后的铺垫。