线性无关与基
你接手了一份用户数据表,里面有三列:「身高(厘米)」「身高(英寸)」「体重」。第二列显然是废的——它是第一列乘 0.394,不携带任何新信息,还会让线性回归当场发疯(这是真事,本章结尾解释为什么)。「一组向量里谁是多余的」,这个朴素的质检问题,在线性代数里叫线性相关性;把冗余剔干净后剩下的「最小完备班底」,叫基;班底的人数,就是空间的维度——「4096 维 embedding」里那个 4096,从这一章起有了严格的含义。
冗余的正式定义
直觉先行:一组向量里,如果某一支能被其余的线性组合配出来,它就是冗余的——它贡献的方向,别人凑一凑就有了,踢掉它,张成的领土一寸不少(第 03 章:冗余原料不添领土)。「身高(英寸)= 0.394 × 身高(厘米)+ 0 × 体重」,一份现成的配方,判它冗余,证据确凿。这样的向量组叫线性相关(linearly dependent);反之,谁也配不出谁、人人都带来新方向的组,叫线性无关(linearly independent)。
教科书的正式定义换了个等价的说法,值得会读,因为论文里就这么写:
翻译:想用这组向量配出零向量,唯一的合法配方是「什么都不放」。为什么这和「谁也配不出谁」等价?若 v₁ 能被其他人配出来,把 v₁ 移到等号另一边,就得到一个「不全为零的配方配出了零」;反之亦然。两种说法,一个是人话,一个是好用来做代数推导的机器话,来回切换。
几何画像按维度铺开:二维里,两支向量相关 ⇔ 共线(第 03 章的塌缩现场);三维里,三支向量相关 ⇔ 共面——第三支躺在前两支张成的玻璃板里,没能捅出新维度。判「相关」永远是看整组的集体行为:任何一支单独看都无辜,罪名只能由整组共同成立。还有两条免费判据:组里有零向量,必相关(零向量是终极冗余,谁都能用「零份」配出它);n 维空间里超过 n 支向量,必相关——领土最多 n 维,第 n+1 支箭无处可捅(第 03 章「原料数封顶」的另一面)。
基:最小完备班底
把两个概念拧在一起,得到全书最重要的结构定义之一。一组向量是空间的基(basis),要同时满足:
- 张成整个空间——够用:任何向量都能被配出来(不缺人);
- 线性无关——不浪费:没有一个是冗余的(不养闲人)。
两个条件一拉一扯,恰好卡在临界点:再删一支就配不全(张成破产),再加一支就有冗余(无关破产)。基是这两种破产之间那条窄窄的山脊。这个临界身份带来基的第三重、也是最实用的性质:配方唯一。给定基 {b₁,…,bₙ},空间里每支向量都有恰好一份配方(系数组),不多不少——若有两份不同配方配出同一支向量,相减就得到「非零配方配出零」,违反无关性。这份唯一的配方,就是向量在这组基下的坐标。第 03 章说「坐标 = 配方」,现在补上了法律效力:基的定义保证了配方的存在且唯一,「坐标」这个概念才站得住。
基不唯一——平面上任何两支不共线的箭都能当基,这是第 03 章说过的「人人皆可为基」的民主性。为什么数学不干脆钦定标准基 î、ĵ 一统天下?因为不同的问题偏爱不同的基:描述晶体用晶格方向,分析振动用振型,压缩图片用余弦波(JPEG 的 DCT 基),而神经网络干脆自己学基。基的民主性不是数学的宽容,是应用的刚需。但所有基有一个惊人的共同点:人数相同。平面的任何基恰好两人,三维空间的任何基恰好三人。这个不变的人数,就是空间的维度(dimension)。「维度」从一个模糊的日常词,变成了一个可证明的不变量:它不依赖你选哪组基、用什么坐标,它是空间本身的属性。「4096 维 embedding 空间」的严格含义:那个空间的任何一组基都恰好需要 4096 支向量。
把基想成「度量衡制度」:米制、英制、市制,制度随便选(基不唯一),但「长度」这个概念本身不随制度改变(维度是不变量),而任何制度下每个物体都有唯一的读数(坐标唯一)。第 13 章「基变换」讲的就是制度之间的汇率换算——而 AI 模型内部,每一层都在用自己的一套私有制度记账。
one-hot:你每天都在用的一组基
第 02 章的稀疏向量现在有了正式身份。词表 32000 个词,每个词的独热编码 onehot(i) = 「第 i 位为 1、其余为 0」的向量——这 32000 支向量,恰好构成 ℝ³²⁰⁰⁰ 的标准基:显然无关(谁也配不出谁,大家的非零位都不同),显然张成(任何向量都是各分量乘对应基向量之和)。所以「词表」在数学上就是一组基,每个词霸占一根专属的坐标轴。
标准基有个隐蔽的语义缺陷,值得点破:两支不同的独热向量点积恒为 0——在词表基下,「猫」与「狗」的余弦相似度是 0,「猫」与「区块链」也是 0,所有词一律互不相干。正交在数值上是美德,在语义上却是失忆:这组基把「相似」这个概念格式化掉了。这就是为什么 AI 必须搬家:
这个视角能看清 embedding 的本质操作:第 06 章说过 embedding 矩阵乘独热向量 = 取列。用本章的语言重说一遍:embedding 层是一次「换基叙事」——把「每词一轴、彼此正交、维度爆炸」的词表基表示,换成「维度紧凑、方向携带语义」的稠密表示。从 32000 维的奢侈基,搬进 4096 维的经济适用房;搬家的代价是轴不再「一词一义」,收益是相似的词住得近(第 02 章的分布假说)、相似度从此可算。理解了这层,「为什么叫嵌入(embedding)」也通了:把一个离散的、彼此无关的集合,嵌入一个连续的、距离有意义的向量空间。
维度的另一张脸:自由度
「维度 = 基的人数」是代数定义,它还有一个更接地气的读法:自由度——描述一个对象,最少需要几个独立的数。平面上的点,2 个数;空间中的点,3 个;一条过原点的直线上的点,1 个就够(只需说「几倍于方向向量」)。两种读法严格等价:基向量的每个系数是一个自由度,基的人数就是自由度总数。
这个读法的威力在于它能问出一个数据科学的深水区问题:数据的「名义维度」和「内在维度」可以差多远?一张 100×100 的灰度图,名义上是 10000 维向量;但「自然照片」们并不均匀铺满 ℝ¹⁰⁰⁰⁰——随机采样一万个像素值,得到的是电视雪花,不是照片。真实照片受物理世界约束(光照连续、物体成块、纹理重复),挤在一个维度低得多的弯曲曲面上,机器学习管它叫流形(manifold)。「流形假设」是深度学习的世界观基石之一:高维数据的内在自由度远小于名义维度,所以压缩、降维、生成才有戏唱。测量内在维度的工具箱,下一章的秩是线性版初级款,第 18 章的 PCA 是实战款。
自由度视角还能纠正一个常见误读:约束会吃掉自由度。「所有分量之和为 0 的 n 维向量」有几维?不是 n——一条线性约束吃掉一个自由度,剩 n−1 维(它是 ℝⁿ 里的一张超平面,过原点,是个如假包换的子空间)。数参数时「表面上的个数」减「独立约束的个数」,这套算术在读论文时反复要用:旋转矩阵 9 个元素、6 条正交约束,自由度 3——所以三维姿态只需 3 个角。
够用之上:超完备与字典
基是「不多不少」的洁癖标准,但工程有时故意「多多益善」:取一组超过维度个数的向量(必然相关),叫超完备字典。冗余的代价是配方不再唯一,收益是可以在众多配方里挑「最稀疏」的那份——用最少的字典条目解释数据。信号处理的稀疏编码、压缩感知走的都是这条路。
它还是理解大模型内部的一把新钥匙。第 04 章说过,4096 维空间里「几乎正交」的方向多到用不完;可解释性研究发现,模型确实这么干——在 4096 维的残差流里塞进几十万个「概念方向」,彼此几乎正交、必然线性相关,像一部严重超载的字典;每个具体输入只激活其中稀疏的几条。这就是「叠加」(superposition)假说的线代骨架:模型用相关的超完备向量组,换取了远超维度数的概念容量。基的洁癖是数学的美德,超载的字典是智能的现实——两者都建立在这一章的词汇上。
怎么判断一组向量无关?
三支 4096 维向量摆在面前,肉眼看不出谁冗余。判定的机械化方法其实你已经学过一半:把它们按列拼成矩阵 A,问「Ax = 0 有没有非零解」——有,则那个 x 就是「配出零的非零配方」,相关;没有,无关。二维三维时可以偷懒用行列式(det ≠ 0 ⇔ 列无关,第 08 章的「共线检测」推广版)。更高维、更多向量时,标准工具是下一章的秩:秩 = 向量组里「真正独立的人数」,秩等于向量个数 ⇔ 无关。数值实践中还有更细腻的做法(SVD 看奇异值,第 17 章),因为真实数据几乎从不「精确相关」,只会「几乎相关」——而「几乎」正是麻烦所在,马上讲。
import numpy as np # 三列特征:身高cm、身高inch(冗余!)、体重 h_cm = np.random.normal(170, 8, size=200) X = np.column_stack([h_cm, h_cm * 0.3937, np.random.normal(65, 10, 200)]) np.linalg.matrix_rank(X) # 2 —— 名义 3 列,真实只有 2 个方向 # 「几乎相关」的预警:比较最大最小奇异值(第 17 章细讲) s = np.linalg.svd(X, compute_uv=False) s[0] / s[-1] # 条件数:巨大 → 病态,回归系数不可信
matrix_rank 一行就能查出「名义三列、实际两维」的把戏——它数的正是下一章的秩。第二段则是给「几乎相关」量体温:两个奇异值的比值(条件数)越大,数据越接近塌缩,回归越不可信。工具先用起来,原理两章内全部补齐。
开头那个「双身高」惨案的解释来了。线性回归要解正规方程(第 14 章),其中要对 XᵀX 求解;特征列相关时,XᵀX 奇异,方程无穷多解——模型可以给「厘米」系数 +1000、「英寸」系数 −2540,再加任何等效组合,预测完全相同但系数彻底失去解释性,数值上表现为系数爆炸、符号乱跳。这叫多重共线性,统计课的老噩梦,本质就是「基不够格:有人冗余」。药方也全是本书词汇:删冗余列(恢复无关)、岭回归(往 XᵀX 对角线加 λ,强行恢复可逆——第 05 章 L2 正则的另一张脸)、PCA 降维(换一组无关的基,第 18 章)。一个业务事故,病理、诊断、处方全在线性代数里。
把无关升级成正交:Gram–Schmidt 一瞥
普通基能用,标准正交基好用(投影即点积、逆即转置、数值稳如老狗)。幸运的是,任何一组无关向量都能被机械地改造成同一片子空间的标准正交基,流程叫 Gram–Schmidt 正交化,思想只有一句话:排队进场,每人先减掉自己在前人方向上的影子,只留垂直的新贡献,再归一化。第一人直接归一化;第二人减掉在第一人方向的投影(第 04 章的影子公式),剩余部分必与第一人垂直;第三人减掉在前两人方向的影子……以此类推。每一步都只用点积和减法,却把「无关但歪斜」的班底整成「两两垂直」的仪仗队。
它的工业版就是 QR 分解:A = QR,Q 是正交化后的仪仗队(正交矩阵),R 是上三角的「谁减了谁多少影子」的账本——第 10 章速查表里 QR 的位置,现在有了来历。数值库里真正跑的是 Householder 反射版(更稳),但思想同源。最小二乘的靠谱解法、特征值的迭代算法,全都踩在 QR 上,第 14 章就会用到它。
颜色空间是「同一空间、不同基」的日常标本:RGB 是一组基,视频编码用的 YUV 是另一组基(Y 亮度 + UV 色度),两者之间由一个 3×3 矩阵互转——YuvImage 转 Bitmap 时框架就在做这次换基。为什么视频偏爱 YUV?因为人眼对亮度敏感、对色度迟钝,把「亮度」单独立成一根轴,就能给色度轴狠狠降采样(4:2:0)——选对基,冗余才好压。这句话就是下一章「秩与压缩」和第 18 章 PCA 的完整剧透:PCA 干的事,就是给数据找它的「YUV」。
① 正交 ≠ 无关的同义词:正交(两两点积为零)是比无关强得多的条件——正交必无关(互相垂直的箭谁也配不出谁),无关未必正交(两支夹角 30° 的箭无关但不垂直)。基也分两档:普通基只要求无关,标准正交基(第 10 章正交矩阵的列)额外要求两两垂直且长度为 1——坐标计算在后者下有巨大特权(投影即点积,第 14 章)。② 「几乎相关」比「相关」更常见也更毒:真实特征很少精确共线,但「身高与体重相关系数 0.9」这类软冗余同样让解不稳定(第 09 章的病态剪刀口)。判断标准从「是否相关」升级为「条件数多大」,第 17 章交工具。
① (1,2)、(3,6)、(0,1) 这三支向量线性相关吗?谁是冗余的?(注意:答案可能不唯一——冗余是组的属性,不是某支箭的原罪);
② 为什么 n 维空间里 n+1 支向量必相关?用「领土封顶」一句话说明;
③ {(1,1), (1,−1)} 是 ℝ² 的基吗?是标准正交基吗?差在哪一条?
④ 词表基和 embedding 表示各自的优缺点是什么?为什么模型宁可放弃「一轴一义」?
⑤ 你的回归模型系数动辄上万、正负乱跳,预测却还行——先查什么?
小结
线性相关 = 有人能被配出来 = 存在配出零的非零配方;基 = 张成(够用)+ 无关(不浪费),配方因此存在且唯一,坐标概念自此合法;一切基同人数,这个不变量叫维度,它的白话版是自由度,而数据的内在自由度往往远小于名义维度——流形假设由此立足;one-hot 是词表空间的标准基,embedding 是一次划算的换基,超完备字典与叠加假说则展示了「故意相关」的智能用法;Gram–Schmidt 把无关班底整成正交仪仗队,工业名 QR;特征共线让回归发疯,病根是「班底里混了闲人」,rank 一行可验。本章的一切都在为一个可计算的量热身——下一章给「真正独立的人数」正式命名:秩,并回答一个更犀利的问题:一个矩阵实际上携带了多少信息?答案会顺手解释为什么一张 4096×4096 的权重矩阵,有时用 8 个「方向」就能改写。