矩阵四大子空间
Gilbert Strang的集合洞察,矩阵的本质
矩阵 \(A\) 作为线性映射 \(\mathbb{R}^n \to \mathbb{R}^m\),它做的事情是:
- 行空间 \(\text{Row}(A)\) → 被一一映射到 列空间 \(\text{Col}(A)\)(同构)
- 零空间 \(N(A)\) → 被映射到 \(\{0\}\)(整个被压扁)
\(\mathbb{R}^n\) 和 \(\mathbb{R}^m\) 各自的正交分解:
而 \(A\) 在这个分解下的作用是:
| 定义域侧 \(\mathbb{R}^n\) | \(\xrightarrow{A}\) | 值域侧 \(\mathbb{R}^m\) |
|---|---|---|
| \(\text{Row}(A)\) | \(\xrightarrow{\text{同构}}\) | \(\text{Col}(A)\) |
| \(N(A)\) | \(\xrightarrow{\quad 0 \quad}\) | \(\{0\} \subset N(A^T)\) |
\(A\) 把 \(\mathbb{R}^n\) 的正交分解(行空间 ⊕ 零空间)中的行空间同构地映到列空间,零空间压缩为 0; \(\mathbb{R}^m\) 的正交分解(列空间 ⊕ 左零空间)描述的是像空间的结构。
行空间与列空间
矩阵乘法是一个映射函数矩阵 \(A_{m \times n}\) 乘以一个向量 \(x_{n \times 1}\),本质上是一个线性映射:
它把 \(n\) 维空间中的向量 \(x\) 映射到 \(m\) 维空间中的向量 \(y\)。
在这个视角下:
- 输入空间:\(x\) 所在的 \(\mathbb{R}^n\) 空间。
- 输出空间:\(y\) 所在的 \(\mathbb{R}^m\) 空间。
而行空间和列空间分别描述了这两个空间中真正“起作用”的部分。
行空间的定义
矩阵 \(A\) 的所有行向量的线性组合构成的子空间,位于 \(\mathbb{R}^n\) 中。
对于任意输入 \(x\),\(Ax\) 的结果只取决于 \(x\) 在行空间上的投影分量。
为什么呢?因为矩阵乘法 \(Ax\) 的每个分量都是 \(x\) 与对应行向量的点积:
因此:
- 如果 \(x\) 垂直于所有行向量,即 \(x\) 在零空间中,那么每个点积都是 \(0\),输出 \(y = 0\)。
- 只有 \(x\) 在行空间方向上的分量才会产生非零输出。
直观类比:
行空间就像输入端的“有效通道”。
输入信号 \(x\) 中,只有沿着这些通道方向的分量才能被矩阵“感知”并传递到输出端;垂直于通道的分量,也就是零空间中的分量,会被完全过滤掉。
所以,行空间刻画了输入空间中能对输出产生影响的所有可能方向,也就是有效的输入空间。
矩阵乘法的"列向量视角"
矩阵 \(A\) 的所有列向量的线性组合构成的子空间,位于 \(\mathbb{R}^m\) 中。
\(Ax\) 等价于 \(A\) 的列向量按 \(x\) 的分量做线性组合。
把矩阵按列展开:
输出 \(y\) 就是各列向量以 \(x\) 的分量为系数的加权和。
这意味着:
- 无论输入 \(x\) 如何变化,输出 \(y\) 永远无法离开这些列向量张成的空间。
- 如果某个输出向量不在列空间中,就不存在任何输入能产生这个输出。
所以无论 \(x\) 是什么,\(Ax\) 永远落在 \(C(A)\) 内——这正是"列空间"得名的原因。
直观类比 :
列空间就像输出端的“可达区域”。
矩阵能产生的所有可能输出,都被限制在这个子空间内。
所以,列空间刻画了所有可能的输出结果构成的空间,也就是实际的输出空间。
总结对比
| 概念 | 行空间 | 列空间 |
|---|---|---|
| 所在空间 | \(\mathbb{R}^n\)(输入侧) | \(\mathbb{R}^m\)(输出侧) |
| 物理含义 | 输入中能被矩阵“感知”的方向 | 输出中能被矩阵“到达”的方向 |
| 与零空间的关系 | 零空间的正交补 | 无直接关系 |
| 维度 | \(r\)(秩) | \(r\)(秩) |
矩阵即同态
向量空间范畴(\(Vect_F\) 范畴)中的同态
对象:域 \(\mathbb{F}\) 上的有限维向量空间 \(V\) 和 \(W\)。它们都是阿贝尔群,也就是加法群,并且带有标量乘法。
态射:线性变换 \(T: V \to W\)。线性变换是群同态,保持加法:
\[T(v_1 + v_2) = T(v_1) + T(v_2)\]同时它也兼容标量乘法:
\[T(\lambda v) = \lambda T(v)\]
矩阵 \(A_{m \times n}\) 就是这个线性变换在选定基下的具体表示。它定义了阿贝尔群
到
的群同态,同时也是向量空间之间的线性映射。
第一同构定理
第一同构定理(First Isomorphism Theorem)是理解这个问题的核心工具。
对于线性变换 \(T: V \to W\),也就是矩阵 \(A\),有:
其中:
- \(V\):定义域,也就是输入空间 \(\mathbb{F}^n\)。
- \(\ker(T)\):核,也就是零空间,表示所有被映射到零向量的输入。
- \(V / \ker(T)\):商空间。它将核压缩为零,剩下的部分代表“不同的、能产生不同输出的输入等价类”。
- \(\operatorname{Im}(T)\):像,也就是列空间(\(C(A)\)),表示所有可能的输出构成的子空间。
行空间作为商空间 \(V / \ker(T)\) 的代表
核 \(\ker(T)\) 就是零空间 \(N(A)\)。
在欧几里得空间中,行空间 \(R(A)\) 恰好是零空间 \(N(A)\) 的正交补:
\[R(A) = N(A)^\perp\]因此,我们有直和分解:
\[V = R(A) \oplus N(A)\]
这意味着:
每个输入向量 \(x\) 都可以唯一地分解为一个行空间分量 \(x_r\) 和一个零空间分量 \(x_n\):
\[x = x_r + x_n\]由于
\[T(x_n) = 0\]所以:
\[T(x) = T(x_r + x_n) = T(x_r) + T(x_n) = T(x_r)\]
1️⃣ 同构(代数 + 几何)
定义映射:
- 线性:显然
- 单射:若 \(r+N(A)=0+N(A)\Rightarrow r\in N(A)\),但 \(r\in R(A)=N(A)^\perp\Rightarrow r=0\)
- 满射:任给 \(x+N(A)\in\mathbb{R}^n/N(A)\),写 \(x=r+n,\ r\in R(A),n\in N(A)\),则 \(x+N(A)=r+N(A)=\Phi(r)\)
所以:
因此,商空间 \(V / \ker(T)\) 中的每一个等价类,都可以由行空间 \(R(A)\) 中的一个唯一向量来表示。
2️⃣ 为什么说 \(R(A)\) 是商空间的"代表 / 截面"?
商空间 \(\mathbb{R}^n/N(A)\) 的元素是等价类
直和分解 \(\mathbb{R}^n = R(A)\oplus N(A)\) 给出选择规则:
每个等价类中有且仅有一个向量落在 \(R(A)\) 中——即把 \(x\) 正交投影到行空间。
定义:
则:
这在范畴论中叫:
- \(R(A)\) 是商映射 \(q:\mathbb{R}^n\to\mathbb{R}^n/N(A)\) 的一个截面(section)
- 特别地,这里是正交截面(因内积存在)
结论:
行空间 \(R(A)\) 是商空间 \(V / \ker(T)\) 的一个具体的、几何上优美的截面(section)。它精确地代表了输入空间中那些“真正参与映射”的自由度。因此,它是有效的输入空间。
列空间作为像 \(\operatorname{Im}(T)\)
像 \(\operatorname{Im}(T)\) 就是列空间 \(C(A)\)。
根据第一同构定理,\(\operatorname{Im}(T)\) 与 \(V / \ker(T)\) 同构:
\[V / \ker(T) \cong \operatorname{Im}(T)\]
而行空间满足:
于是传递得:
结论:
列空间 \(C(A)\) 就是线性变换 \(T\) 的像本身。它是输出空间 \(W\) 的一个子空间,包含了所有可能的输出结果。因此,它就是实际的输出空间。
第一同构定理告诉我们:
商空间 \(V / \ker(T)\) 与像空间 \(\operatorname{Im}(T)\) 是同构的。
也就是说:
在矩阵语言中,可以理解为:
作为向量空间,它们同构,并且二者维数相等:
这正是秩—零化度定理(Rank-Nullity Theorem)。
总结
我们可以把这个关系理解为:
箭头 \(T\) 将 \(V\) 映射到 \(W\)。
第一同构定理表明,如果我们把 \(V\) 中的整个 \(N(A)\) 压缩成一个点,也就是考虑商空间,那么剩下的结构 \(R(A)\) 与 \(W\) 中的 \(C(A)\) 是一模一样的,即二者同构。
用图表示:
其中:
而在欧几里得空间中,行空间 \(R(A)\) 可以作为 \(V / \ker(T)\) 的一个自然代表。
四大子空间是什么
设 \(A \in \mathbb{R}^{m \times n}\),秩为 \(r\)。
四大子空间
| 子空间 | 记号 | 所在空间 | 维数 | 几何身份 |
|---|---|---|---|---|
| 行空间 | \(C(A^T)\) | \(\mathbb{R}^n\) | \(r\) | \(A\) 各行向量张成;输入端"有效部分" |
| 零空间 | \(N(A)\) | \(\mathbb{R}^n\) | \(n-r\) | \(Ax=0\) 的解集;被 \(A\) 压缩掉的部分 |
| 列空间 | \(C(A)\) | \(\mathbb{R}^m\) | \(r\) | \(A\) 各列向量张成;\(A\) 能"打到"的所有 \(b\) |
| 左零空间 | \(N(A^T)\) | \(\mathbb{R}^m\) | \(m-r\) | \(A^T y=0\) 的解集;列空间的正交补 |
线性代数基本定理(核心结论):
也就是说:行秩 \(=\) 列秩。
直观看四大空间
一个非满秩矩阵
第二行是第一行的 \(2\) 倍,第二列也是第一列的 \(2\) 倍,所以
因此:行空间和列空间都是一维直线;零空间和左零空间也都是一维直线。
- 行空间 \(C(A^T)\)
行空间由 \(A\) 的行向量张成。由于第二行依赖于第一行,可以取第一行作为一组基:
这是输入空间 \(\mathbb{R}^2\) 中真正会被 \(A\) “看见”的一条直线。
- 零空间 \(N(A)\)
零空间是所有满足 \(Ax=0\) 的输入方向。解
得到
所以
这条直线正好垂直于行空间:
因此输入端有正交直和:
- 列空间 \(C(A)\)
列空间由 \(A\) 的列向量张成:
其中
所以可以取 \(c_1\) 作为列空间的一组基:
这是 \(A\) 能打到的所有输出,几何上也是一条直线。
- 左零空间 \(N(A^T)\)
左零空间是所有满足 \(A^T y=0\) 的输出方向。由于 \(A^T=A\),它和零空间相同:
它正好垂直于列空间:
因此输出端也有正交直和:
可以理解为:\(A\) 把输入空间中的一维行空间搬到输出空间中的一维列空间,同时把一维零空间压成 \(0\);输出空间里剩下那条垂直于列空间的线,就是左零空间。
四大子空间看 \(Ax=b\)
| 问题 | 用哪一个空间回答 |
|---|---|
| \(Ax=b\) 是否有解? | \(b \in C(A)\)(等价:\(b \perp N(A^T)\)) |
| 解是否唯一? | \(N(A)=\{0\} \Longleftrightarrow\) 唯一 |
| 通解形式? | \(x = x_{\text{特}} + N(A)\)(特解 + 零空间所有向量) |
直观图像:把 \(A\) 想成一个过滤器——先把零空间整段碾成 \(0\),再把行空间里的信息一一搬到列空间。
任意向量的正交分解
对任意 \(x \in \mathbb{R}^n\),存在唯一分解:
构造方式:把 \(x\) 投影到行空间得 \(x_R\),余量 \(x_N = x - x_R\) 自动落入零空间。
\(A\) 作用后:
所以 \(A\) 真正"做事"的只有行空间分量;零空间分量被丢弃。
Rank-Nullity Theorem(秩-零度定理 = "维度守恒")
Rank-Nullity Theorem 也叫维数定理(Dimension Theorem),是线性代数中最基本的结果之一。
矩阵形式
设 \(A\) 是一个 \(m \times n\) 矩阵,或者是在域 \(\mathbb{F}\) 上的线性变换
则有:
其中:
\(\operatorname{rank}(A)\) 是秩:
\[\operatorname{rank}(A) = \dim(\operatorname{Col}(A)) = \dim(\operatorname{Row}(A))\]它表示列空间或行空间的维数,也就是像的维数,或者有效输入的自由度。
\(\operatorname{nullity}(A)\) 是零化度:
\[\operatorname{nullity}(A) = \dim(\operatorname{Nul}(A))\]它表示零空间的维数,也就是核的维数,即被映射为 \(0\) 的输入方向数。
\(n\) 是输入空间的维数,也就是矩阵 \(A\) 的列数。
也就是:
类比能量守恒:\(n\) 维输入在 \(A\) 作用下,\(r\) 维被保留(送进列空间),\(n-r\) 维被压成 \(0\)。
维度既不会凭空多出来,也不会凭空消失,只是重新分配。
行空间 \(\to\) 列空间是同构映射(一一对应、保持维数 \(r\)、信息无损)。
线性变换语言
对于线性变换
有:
这正是第一同构定理在有限维向量空间下的维数形式:
因此:
也就是:
直观理解
输入空间 \(\mathbb{R}^n\) 可分解为两个正交,或者更一般地说,直和的部分:
其中:
- 行空间:维数等于 \(\operatorname{rank}(A)\),表示能被矩阵“看到”、影响输出的方向。
- 零空间:维数等于 \(\operatorname{nullity}(A)\),表示被矩阵完全“吞掉”、映射为 \(0\) 的方向。
Rank–Nullity Theorem 表明:输入空间的维数 = 有效输入方向的个数(rank)+ 被压缩为零的方向的个数(nullity)。
为什么还需要 SVD?
行 \(\to\) 列虽然是完美同构,但若基底选得不好,\(A\) 看起来仍很"扭":原本垂直的向量被弄歪、原本等长的向量被拉得不一样。
SVD 的价值:找到两组特殊的标准正交基
- 行空间内:\(v_1, \ldots, v_r\)
- 列空间内:\(u_1, \ldots, u_r\)
使得:
\(A\) 在这组基下只剩一件事:沿正交方向各自缩放 \(\sigma_i\),正交性被保留。
✅ 输入正交 → 输出仍正交(在非零奇异值方向)
若 \(i \neq j\)(且 \(i,j \le r\)),则:
即:
👉 \(A\) 把行空间中一组正交方向,映射成列空间中仍然正交的方向(只是被拉长/压缩)。
这是 SVD 特有的性质,普通矩阵会破坏正交性(把圆映射成倾斜椭圆),而 SVD 把单位球映射成与坐标轴对齐的正交椭球。
根据 svd-与伪逆 中SVD 的核心关系:
| 方向 | 映射 | 公式 |
|---|---|---|
| 行空间 → 列空间 | \(A\) | \(A v_i = \sigma_i u_i\) |
| 列空间 → 行空间 | \(A^T\) | \(A^T u_i = \sigma_i v_i\) |
可以看到:
- \(A\) 把行空间的标准正交基 \(v_i\) 映射到列空间,长度被拉伸了 \(\sigma_i\) 倍,方向变成 \(u_i\)
- \(A^T\) 把列空间的标准正交基 \(u_i\) 映射回行空间,长度同样被拉伸 \(\sigma_i\) 倍,方向回到 \(v_i\)
真正互逆的是:
SVD 在行空间和列空间中各找一组单位正交基 \(\{v_i\}\) 和 \(\{u_i\}\),使得 \(A\) 限制在行空间 \(\to\) 列空间上是同构,而伪逆 \(A^+\) 是其逆映射。\(A\) 的作用就是沿 \(v_i\) 方向拉伸 \(\sigma_i\) 倍并旋转到 \(u_i\) 方向。
注意到 一个 \(n \times n\) 的实方阵 \(R\) 是旋转矩阵,当且仅当它满足两个条件:
- 正交性:\(R^T R = I\)(即 \(R^{-1} = R^T\))
- 行列式为 +1:\(\det(R) = +1\)
如果 \(\det(R) = -1\),则它是反射矩阵(镜像翻转,包含一次反射,不是纯旋转)。
SVD矩阵形式:
理解为三步操作:
- \(V^T\):在输入空间 \(\mathbb{R}^n\) 中做一个旋转/反射(对齐坐标轴)
- \(\Sigma\):沿各坐标轴独立伸缩(缩放奇异值 \(\sigma_i\))
- \(U\):在输出空间 \(\mathbb{R}^m\) 中做一个旋转/反射(将结果转到最终方向)
几何上就是:旋转 \(\to\) 缩放 \(\to\) 旋转。
计算示例:\(2 \times 2\) 矩阵
设
秩 \(r=1\)。
| 子空间 | 表达 |
|---|---|
| 列空间 \(C(A)\) | 过原点、方向 \((1,2)\) 的直线 |
| 行空间 \(C(A^T)\) | 过原点、方向 \((1,2)\) 的直线 |
| 零空间 \(N(A)\) | 过原点、方向 \((2,-1)\) 的直线(\(\perp\) 行空间) |
| 左零空间 \(N(A^T)\) | 过原点、方向 \((2,-1)\) 的直线(\(\perp\) 列空间) |
SVD 求解三步:
- 算 \(A^T A\),求其单位特征向量得 \(v_1\)(行空间基底)
- \(\sigma_1 = \lVert A v_1 \rVert\)
- 算 \(AA^T\),求其单位特征向量得 \(u_1\)(列空间基底)
第一步:计算 \(A^T A\),求其单位特征向量得 \(v_1\)
求特征值:
特征值:\(\lambda_1 = 25,\ \lambda_2 = 0\)
对应 \(\lambda_1 = 25\) 的特征向量:
得 \(-20a + 10b = 0 \Rightarrow b = 2a\),取单位向量:
第二步:计算 \(\sigma_1 = \| A v_1 \|\)
先算 \(A v_1\):
则:
第三步:计算 \(AA^T\),求其单位特征向量得 \(u_1\)
特征值同样为 \(\lambda_1 = 25,\ \lambda_2 = 0\)
对应 \(\lambda_1 = 25\) 的单位特征向量:
单位化:
最终验证:
注:由于矩阵 \(A\) 的秩为 1,因此 SVD 中只保留一个非零奇异值及其对应的左右奇异向量即可精确还原原矩阵。
最小二乘法 = 投影到列空间
当 \(Ax=b\) 无解(超定方程组),求:
- 几何:把 \(b\) 投影到 \(C(A)\) 得 \(\hat{b}\),对应的 \(\hat{x}\) 即最小二乘解
- 误差 \(e = b - A\hat{x}\) 满足 \(e \perp C(A)\),因此 \(e \in N(A^T)\),即 \(A^T e = 0\)
- 代入展开得到正规方程:
伪逆 \(A^+\):行/列空间之间的真正"逆"
\(A\) 不一定可逆,但限制在 行空间 \(\to\) 列空间 上是同构。其逆映射就是伪逆 \(A^+\):
- \(A^+\) 把 \(C(A)\) 中的每个向量一一映射回 \(C(A^T)\)
- 最小二乘解可直接写成 \(\hat{x} = A^+ b\)
- 通过 SVD:若 \(A = U\Sigma V^T\),则
其中 \(\Sigma^+\) 表示把非零奇异值取倒数,再转置。
直观上 SVD 把 \(A\) 拆成"\(V^T\) 旋转 → \(\Sigma\) 在主轴上各自缩放 → \(U\) 旋转";
伪逆就是把每一步反过来——\(U^T\) 还原旋转、\(\Sigma^+\) 在可逆方向上倒回缩放(不可逆方向直接置零)、\(V\) 还原旋转。
最小二乘解与伪逆
最小二乘问题:求 \(x\) 使 \(\lVert b - A x \rVert_2\) 最小;当解不唯一时,再要求 \(\lVert x \rVert_2\) 最小(最小范数最小二乘解)。
第 1 步:把 \(b\) 投影到列空间。
将 \(b\) 沿正交直和 \(\mathbb{R}^m = C(A)\oplus N(A^T)\) 分解为 \(b = b_{\parallel} + b_{\perp}\),其中 \(b_{\parallel}\in C(A)\),\(b_{\perp}\in N(A^T)\)。
对任意 \(x\) 有 \(Ax \in C(A)\),由勾股定理:
因此 \(\lVert b-Ax\rVert\) 最小 \(\iff\) \(Ax = b_{\parallel} = (AA^+)\,b\)(用了 P3:\(AA^+\) 是正交投影到 \(C(A)\) )。
第 2 步:在所有最小二乘解中选范数最小的。
满足 \(Ax = b_{\parallel}\) 的解集是 \(x_0 + N(A)\)。由 \(\mathbb{R}^n = C(A^T)\oplus N(A)\),每个解唯一分解为 \(x = x_r + x_n\),\(x_r\in C(A^T)\),\(x_n\in N(A)\)。同样由勾股定理:
要 \(\lVert x\rVert\) 最小,必须 \(x_n = 0\),即 解必须落在行空间 \(C(A^T)\) 中。
第 3 步:取 \(\hat{x} = A^+ b\) 验证。
- 由 P4,\(A^+ A\) 是向 \(C(A^T)\) 的正交投影,所以 \(\hat{x} = A^+ b = A^+(AA^+)b\)(用 P2)位于 \(C(A^T)\),满足"最小范数"要求;
- \(A\hat{x} = A A^+ b = b_{\parallel}\)(P3 的投影),满足"最小残差"要求。
两条都满足,故 \(\boxed{\hat{x} = A^+ b}\) 就是最小范数最小二乘解。
总结
\(A_{m \times n}\) 干的事:
理解了这张图,线代里的:列空间判可解 / 零空间判唯一 / 通解结构 / SVD / 最小二乘 / 伪逆,全都串在了同一根线上。