第七部分 · 表示与几何
子空间、基与秩:线性方程组的几何
上一课说最小二乘是把真值投影到"特征张成的子空间"。可那块子空间到底长什么样——一条线?一个平面?方程 Ax=b 何时有解、何时唯一?这一课把"一堆向量张成什么"这件事彻底说清,并发现整个线性方程组的故事,都写在一个叫"秩"的数里。
留下的问题:可我们一直含糊地说"张成的子空间"——它究竟是一条线、一个平面,还是填满整个 ℝⁿ?方程 Ax = b 什么时候有解、什么时候解唯一?如果数据里两列特征其实重复了(线性相关),会发生什么?投影还稳吗?这些问题不解决,投影就站在沙地上。
本课新增:子空间(张成、线性无关、基、维度)、秩(一个变换/数据真正用到的维数)、零空间,以及它们如何一口气判定 Ax=b 的有解/唯一——并顺势讲清欠定、超定与正则化的动机。
张成:一堆向量铺出的空间
给你几个向量,你能用它们"够到"哪些地方?规则只有上一课那两条——相加和数乘(合起来叫线性组合)。把这几个向量的所有线性组合收集起来,得到的整片区域,叫它们的张成(span):
span{v₁, v₂, …} = { c₁v₁ + c₂v₂ + … :c₁, c₂, … 取任意实数 }
读作"v₁,v₂… 张成的空间,就是它们所有线性组合的集合"。几何上很好想:
- 一个非零向量,张成一条过原点的直线(把它拉长缩短反向,扫出一条线)。
- 两个不平行的向量,张成一个过原点的平面(它们的组合铺满整张平面)。
- 可如果第二个向量恰好和第一个平行,它什么新方向都没带来——两个向量还是只张成一条线。
这种由线性组合铺出、且过原点、对加法和数乘封闭的区域,就叫子空间。上一课最小二乘投影到的"特征列张成的子空间",正是这种东西。它是一条线还是一个平面,取决于那些列向量里有几个真正不同的方向——这就把我们逼到下一个概念。
线性无关:有没有"白给"的向量
上面那个"平行向量没带来新方向"的情形,是核心。我们说一组向量线性相关,如果其中至少有一个能被其余几个线性组合拼出来——它是多余的,删掉也不影响张成。反过来,如果谁也拼不出谁,每一个都贡献了一个全新的方向,就叫线性无关。
这件事对机器学习极其要命。设计矩阵 X 的两列特征如果线性相关(比如"身高(厘米)"和"身高(米)",或"总价"="单价×数量"早已含在里面),它们没带来新信息,却让模型无所适从:有无穷多组权重 w 给出同样的预测,参数定不下来。"哪些方向是真的、哪些是冗余的",正是线性无关在回答。
基与维度:最精简的一套坐标轴
既然冗余向量可以删,自然要问:撑起一个子空间,最少需要几个、又该选哪几个向量?答案是选一组既线性无关、又恰好张成它的向量——这组向量叫这个子空间的基(basis)。基就是这个子空间专属的一套坐标轴:不多一根(无关)、不少一根(张成)。
而基里向量的个数,是这个子空间最本质的指纹——它的维度。一条线维度是 1,一个平面是 2,ℝⁿ 是 n。妙的是:同一个子空间能选无数组不同的基,但每组基的向量个数都一样。维度,是个不随坐标选择改变的硬事实。这呼应了 第 11 课埋下的"维度"——那里说向量有 n 个分量,这里我们才真正讲清:维度是张成它所需的最少独立方向数。
秩:一个矩阵真正够到几维
现在把镜头转回矩阵。第 11 课说"矩阵是把整个空间拉伸压扁的变换"。一个变换可能把空间压扁降维(还记得行列式 = 0 那一幕吗)。那变换之后,输出究竟占满几维?这个数,就是矩阵的秩(rank)。
看矩阵的列。每一列是一个向量,所有列张成的子空间叫列空间——它正是这台变换所有可能输出的集合(因为 Ax 就是各列的线性组合)。秩,定义为列空间的维度,也等于列向量里线性无关的个数:
rank(A) = 列空间的维度 = A 的列中线性无关向量的个数
一个 3×3 矩阵若秩为 3,它把三维稳稳映成三维(满秩、可逆);若秩为 2,三维被它压成一个平面;秩为 1,压成一条线。秩,就是"这台变换没把维度压垮、还剩几维"的体检指标——它把 第 11 课那句"det=0 即压扁"量化成了具体的剩余维数。
Ax = b 的几何:有解吗?唯一吗?
所有铺垫,都为看穿这个最基本的方程。Ax = b 在问:能不能把 A 的各列线性组合出 b?组合系数就是要求的 x。于是两个老大难问题,瞬间变成两句几何话:
- 有没有解?等价于:b 在不在 A 的列空间里。在,就拼得出,有解;不在(比如 b 冒出了列空间这个平面之外),就无解。
- 解唯不唯一?这要看零空间——所有满足 Ax = 0 的 x 组成的集合。如果只有 x = 0 这一个(零空间只剩原点),解唯一;如果还有别的非零 x 让 Ax=0,那把它加到任何一个解上都还是解——无穷多解。零空间非平凡,恰恰是因为列线性相关(有冗余方向)。
下面的小实验:调三个二维向量,实时看它们张成的是一条线、一个平面(整张 ℝ²)还是只剩原点,并实时报出秩,以及一个给定的 b 落不落在张成区域里(Ax=b 有没有解)。
满秩、亏秩,与正则化为什么登场
把这套语言对准真实数据,就理解了机器学习里两类常见困境,以及对策的来历:
- 超定(方程多于未知数,m > n):样本远多于特征,这是常态。这时 b(真值)几乎不可能正好落在列空间里——精确解不存在。于是只能退而求其次,找最接近的,这恰好就是上一课的最小二乘投影。超定无精确解,正是最小二乘存在的理由。
- 欠定 / 亏秩(独立方向不够,秩 < n):特征数多于样本,或特征间线性相关。零空间非平凡,无穷多组 w 给出同样的预测,模型选不定——这正是过拟合的温床(呼应 第 19 课)。怎么从无穷多个解里挑一个?人为加一条偏好:偏爱 w 小的解(在损失上加一项 λ‖w‖²)。这就是正则化——它给亏秩的病态问题补上一个唯一、稳定的答案。第 28、31 课会从优化和概率两个角度再遇到它。
所以秩不是课本里的冷知识。它告诉你数据有几个真正独立的方向、模型能不能定下来、什么时候必须投影近似、什么时候必须正则化。投影脚下的那块地,到这里终于夯实了。
常见误解
- "特征列越多,模型信息越多。"不一定。如果新列能被已有列线性组合拼出来(线性相关),它没带来任何新方向,秩不增,反而让参数定不下来。真正有用的是独立的方向数(秩),不是列的根数。
- "维度就是数据有几列。"那是表面的列数。子空间的真实维度 = 张成它所需的最少独立向量数 = 秩,常常小于列数(数据躺在一个低维子空间里)。这种"列很多、秩很低"正是第 23 课降维的可乘之机。
- "Ax=b 一定有解。"只有当 b 落在 A 的列空间里才有解。样本多于特征时(超定),b 几乎必然在列空间之外——精确解不存在,只能用最小二乘求最近的近似。"无解"是常态,不是意外。
- "解越多越好,选择多。"无穷多解(零空间非平凡)意味着模型定不下来,是病态而非自由。必须靠正则化等外加偏好,才能从中挑出一个稳定、能泛化的解。