讲解稿 · 第 02 章 第 01 节:矩阵的性质¶
口播时长:约 15–20 分钟|字数:约 4200 字|语速:中速偏慢,公式处停顿两拍
导语 · 一个从爆炸开始的故事(约 80 秒)¶
先讲件真事。
上周有个同学来问我:他训练一个很小的两层网络,loss 一开始还挺乖,跑到第三个 epoch,突然从 0.4 蹦到 \(10^{12}\),梯度直接 NaN。他把学习率砍到原来的百分之一,还是炸。数据、代码、优化器全查了一遍,找不出问题。
我让他把权重矩阵拿出来算一个数——条件数 \(\kappa(W)\)。一算,\(1.7 \times 10^{9}\)。
九个数量级。这意味着这个矩阵沿某个方向被压得几乎扁平,输入抖动一丁点,输出就翻天覆地。学习率再小也救不了。这不是代码 bug,这是矩阵本身的性格问题。
那这个"性格"到底是什么?它跟矩阵的秩、行列式、逆、范数——都是同一个东西的不同侧影。今天这一节,我就把矩阵的九个基本性质一次讲清楚。听完,你至少能自己回答:为什么有些矩阵没有逆?为什么协方差矩阵一定是半正定的?为什么谱范数会出现在权重正则化的公式里?
准备好了吗?我们进正题。
复习与路线(约 40 秒)¶
上一节——也就是第 01 章第 05 节——我们讲了基和基变换。核心一句话你要记住:"\(P\) 的列是新基, \(P\) 把新坐标搬回旧描述。" 一个向量在换基前后,本身没动,动的是描述它的语言。
今天这一节,主角换成矩阵。你会看到,矩阵有两个身份:一个是数据的表格,一个是空间的变换。上节讲的基变换 \(\tilde A = P^{-1} A P\),恰好把这两个身份缝在一起——这一点我们中间会回来三次。
下一节讲矩阵的类型——对角、三角、对称、正交这些名字,其实都是今天讲的性质的特殊组合。
核心概念一:矩阵的两个身份 + 线性映射三公理(约 3 分钟)¶
直觉先行。
矩阵最直白的样子,是一个数字网格。三行三列,就是一个 \(3 \times 3\) 的表。比如三个体检对象:
行是"人",列是"特征"。这是数据表的身份。scikit-learn、pandas 的 DataFrame 全部沿用这个约定:一行一样本,一列一特征。
但矩阵还有第二个身份——一次变换。同一个 \(A\),也可以看作把输入向量 \(\mathbf{x}\) 变成输出向量 \(A\mathbf{x}\) 的一台机器。这台机器有三条硬规矩,学名叫线性映射三公理。
符号首现四件套先给你摆好:
- \(T\) — 线性映射 (linear map):从一个向量空间到另一个向量空间的一个函数,写作 \(T(\mathbf{x})\) 或者 \(T\mathbf{x}\)。例如 \(T(\mathbf{x}) = A\mathbf{x}\),其中 $$ A = \begin{bmatrix}2&0\0&3\end{bmatrix} $$,把 \((1,1)\) 变成 \((2,3)\)。
现在上公理三件套——从 Ch02 开始,每条公理都必须"名 + 大白话 + 反例"三段式,这是全书模板锚点。
公理 1 · 加性 (additivity):\(T(\mathbf{u} + \mathbf{v}) = T(\mathbf{u}) + T(\mathbf{v})\)。
大白话:先加再变,等于各自变了再加。
反例:\(T(\mathbf{x}) = \mathbf{x} + \mathbf{c}\)(\(\mathbf{c}\) 是非零常向量)。取 \(\mathbf{u} = (1,0), \mathbf{v} = (0,1), \mathbf{c}=(1,1)\)。\(T(\mathbf{u}+\mathbf{v}) = (2,2)\),但 \(T(\mathbf{u}) + T(\mathbf{v}) = (2,1) + (1,2) = (3,3)\)。不等——所以"平移"不是线性映射。
公理 2 · 齐次 (homogeneity):\(T(c\mathbf{x}) = c \, T(\mathbf{x})\),\(c\) 是任意标量。
大白话:先缩放再变,等于先变再缩放。
反例:\(T(\mathbf{x}) = \|\mathbf{x}\|_2\)。取 \(\mathbf{x} = (1,0), c = -2\)。\(T(-2\mathbf{x}) = 2\),但 \(-2 \cdot T(\mathbf{x}) = -2\)。差个符号——所以取范数不是线性映射。
公理 3 · 零映射 (mapping zero to zero):\(T(\mathbf{0}) = \mathbf{0}\)。
大白话:零向量进去,零向量出来。
反例:还是 \(T(\mathbf{x}) = \mathbf{x} + (1,1)\)。\(T(\mathbf{0}) = (1,1) \ne \mathbf{0}\)。所以"过原点"这件事不是可有可无,是线性映射的入场券。
数字锚点:$$ A = \begin{bmatrix}2&0\0&3\end{bmatrix} $$ 对应的 \(T\) 三条都满足。\(T((1,0)+(0,1)) = T(1,1) = (2,3) = (2,0)+(0,3)\) ✓。\(T(2 \cdot (1,0)) = (4,0) = 2 \cdot (2,0)\) ✓。\(T(\mathbf{0}) = \mathbf{0}\) ✓。
一句话总结:每一个 \(m \times n\) 矩阵,都是从 \(\mathbb{R}^n\) 到 \(\mathbb{R}^m\) 的一个线性映射,反过来也一样。这是本章后面所有内容的骨架。
⏸️ 暂停思考 · 第一次
\(T(\mathbf{x}) = \mathbf{x}^\top \mathbf{x}\)(长度平方)是线性映射吗?三条公理你挨个过一遍,答案在你手上。
核心概念二:转置与迹——基变换里活下来的量(约 2 分半)¶
直觉先行。转置就是把矩阵沿着对角线翻一下。\(m \times n\) 翻成 \(n \times m\)。
定义:\((A^\top)_{ij} = A_{ji}\)。行变列,列变行。
数字锚点:
有个好用的小事实:\(A A^\top\) 一定是 \(m \times m\) 方阵,\(A^\top A\) 一定是 \(n \times n\) 方阵。后面 SVD、协方差、Gram 矩阵反复用到。
迹 (trace):只对方阵定义,就是对角元素之和。符号首现四件套:
- \(\operatorname{tr}(A)\) — 迹:方阵对角元素之和,\(\operatorname{tr}(A) = \sum_i A_{ii}\)。例:$$ B = \begin{bmatrix}1&2&3\4&5&6\7&8&9\end{bmatrix} $\(,\)\operatorname{tr}(B) = 1 + 5 + 9 = 15$。
反例式提醒:上面那个 \(2 \times 3\) 的 \(A\) 没有迹——不是方阵。别乱写。
现在回到 Ch01 §05 的基变换——这是本节第一次回引。上节讲相似变换 \(\tilde A = P^{-1} A P\):同一个线性映射,换了个基就得到 \(\tilde A\)。你可能会问:换了基,什么东西变了,什么东西没变?
迹是没变的。这就叫基不变量 (invariant)。\(\operatorname{tr}(\tilde A) = \operatorname{tr}(P^{-1} A P) = \operatorname{tr}(A)\)(利用 \(\operatorname{tr}(XY) = \operatorname{tr}(YX)\))。它跟基的选择没关系,只跟那个"抽象的线性映射本身"有关。
后面你会看到:迹 = 所有特征值之和。特征值是线性映射的固有性质,跟坐标怎么选也没关系。所以两条路殊途同归。
一句话总结:转置换视角、迹换基也不变。
核心概念三:秩、零空间与秩–零度定理(约 3 分钟)¶
直觉先行。秩 (rank) 回答的是一个问题:这堆行(或列),扣掉冗余之后,还剩多少条真正独立的信息?
定义:矩阵线性无关的行数(等于线性无关的列数)。
数字锚点两个:
因为两行谁也不是谁的倍数,各自贡献一个新方向。
第二行是第一行的 2 倍,纯冗余。两行只能撑起一条直线。
反例式提醒:一个 \(5 \times 3\) 矩阵,秩最多是 3——秩不能超过 \(\min(m, n)\)。达到这个上限的矩阵叫满秩 (full rank)。方阵满秩 \(\Longleftrightarrow\) 可逆。这一条后面会反复用到。
现在讲零空间 (null space)。符号首现四件套:
- \(\mathcal{N}(A)\) — 零空间:满足 \(A\mathbf{x} = \mathbf{0}\) 的所有 \(\mathbf{x}\) 组成的集合。例:$$ A = \begin{bmatrix}1&2\2&4\end{bmatrix} $\(,\)\mathbf{x} = (2, -1)^\top$ 满足 \(A\mathbf{x} = \mathbf{0}\),所以 \((2, -1)^\top\) 在 \(\mathcal{N}(A)\) 里。
零空间收集的是被矩阵 \(A\) 抹掉的输入——所有被送到零向量的方向。零空间的维度叫零度 (nullity)。
秩–零度定理:\(\operatorname{rank}(A) + \operatorname{nullity}(A) = n\)(\(n\) 是列数)。
一句话解释:保留下来的维度 + 被压扁的维度 = 输入的总维度。信息守恒。
一句话总结:秩 = 独立信息量,零空间 = 被抹掉的方向,二者加起来是列数。
⏸️ 暂停思考 · 第二次
$$ A = \begin{bmatrix}1&2&3\2&4&6\3&6&9\end{bmatrix} $$ 的秩是多少?零空间的维度呢?(提示:三行都成比例。)
核心概念四:行列式——空间被拉伸了多少倍(约 2 分半)¶
直觉先行。行列式 (determinant) 是一个单一的数,告诉你这个矩阵把空间放大或压缩了多少倍——而且带符号。
拿 \(2 \times 2\) 举例。一个矩阵把单位正方形 \([0,1]^2\) 变成一个平行四边形。行列式就是这个平行四边形的有向面积。
数字锚点:
单位正方形被拉伸成一个面积为 6 的平行四边形。三种情况要分清:
- \(\det > 0\):保持定向,右手系还是右手系。
- \(\det < 0\):翻转定向,像照镜子。
- \(\det = 0\):把二维压成一维(甚至一个点)——信息永久丢失。这样的矩阵叫奇异矩阵 (singular)。
反例式提醒:$$ \det \begin{bmatrix}1&2\2&4\end{bmatrix} = 4 - 4 = 0 $$。刚刚说过它秩为 1——两行成比例。这不是巧合:方阵行列式为零 \(\Longleftrightarrow\) 秩小于 \(n\) \(\Longleftrightarrow\) 不满秩 \(\Longleftrightarrow\) 不可逆。四件事等价。
\(3 \times 3\) 以上怎么算?用余子式展开——具体计算规则我们放到 Ch03 §03 讲。这里你先记住这几件事等价就够了。
一句话总结:行列式是"面积/体积的缩放因子",为零意味着降维——降维即不可逆。
核心概念五:逆矩阵与 \(P^{-1}\) 的手算(约 3 分钟)¶
直觉先行。逆 (inverse) 就是"把 \(A\) 干的事撤销回去"的那个矩阵。\(AA^{-1} = A^{-1}A = I\)。
只有非奇异方阵才有逆。\(2 \times 2\) 的公式你必须记住:
规律:主对角线 \(a, d\) 互换,副对角线 \(b, c\) 添负号,再除以行列式。分母就是 \(\det\)——所以 \(\det = 0\) 时公式直接爆炸。
回到 Ch01 §05 的遗留问题——本节第二次回引。上节讲基变换 \(P\),很多同学问:"\(P^{-1}\) 到底怎么算?"我们那里没细讲。今天补上。
设旧基 \(\mathbf{e}_1 = (1,0), \mathbf{e}_2 = (0,1)\),新基 \(\mathbf{b}_1 = (1,1), \mathbf{b}_2 = (1,-1)\)。按 §1.3 的口诀:"\(P\) 的列是新基, \(P\) 把新坐标搬回旧描述。"
手算 \(P^{-1}\):\(\det P = 1 \cdot (-1) - 1 \cdot 1 = -2\)。套公式:主对角 \(1, -1\) 互换(互换后还是 \(-1, 1\)),副对角 \(1, 1\) 加负号变成 \(-1, -1\),再除以 \(-2\):
验证:向量 \(\mathbf{v}\) 旧坐标 \((2, 0)\),新坐标应该是 \(P^{-1}(2, 0)^\top = \frac{1}{2}(2, 2)^\top = (1, 1)^\top\)。反过来验:\(P (1,1)^\top = (2, 0)^\top\) ✓。语言换了,向量本身没动。
关于 \(3 \times 3\) 及以上:手算逆矩阵不再直接套公式,走高斯–约当消元或伴随矩阵。具体步骤 Ch03 §03 会展开。这里先知道:大矩阵求逆手算成本高,实战几乎都调 np.linalg.solve 或 torch.linalg.inv——而且能不显式求逆,就不求逆(数值不稳定)。
一句话总结:\(2 \times 2\) 求逆一分钟手算,\(3 \times 3\) 起交给数值库;奇异矩阵没有逆。
核心概念六:条件数与范数(约 2 分半)¶
直觉先行。开头那个 loss 爆炸的故事,主角就是条件数 (condition number)。
符号首现四件套:
- \(\kappa(A)\) — 条件数:\(\kappa(A) = \|A\| \cdot \|A^{-1}\|\),衡量矩阵对输入扰动的敏感度。例:\(\kappa(I) = 1\),$$ \kappa!\left(\begin{bmatrix}1&0\0&10^{-8}\end{bmatrix}\right) = 10^{8} $$。
\(\kappa\) 接近 1 = 良态,误差不放大;\(\kappa\) 很大 = 病态,输入抖 \(10^{-8}\),输出可能抖 1。正交矩阵和单位矩阵条件数是 1,奇异矩阵条件数是 \(\infty\)。
再讲矩阵范数 (matrix norm)。跟向量范数一样,度量"大小",但矩阵有多种"大小"的定义。你必须记两种:
Frobenius 范数 \(\|A\|_F\):把矩阵摊平当向量,直接算 \(\ell_2\) 长度。
数字锚点:$$ \left|\begin{bmatrix}1&2\3&4\end{bmatrix}\right|_F = \sqrt{1+4+9+16} = \sqrt{30} \approx 5.48 $$。
谱范数 \(\|A\|_2\):\(A\) 的最大奇异值,等价于"任意单位向量被 \(A\) 拉伸的最大幅度"。这个概念要等到 Ch02 §05 讲 SVD 时才能算得动,今天你先记住定义。
回到 Ch01 §05 的第三次回引:还记得基变换 \(\tilde A = P^{-1} A P\) 吗?如果你选了一组数值上很糟糕的新基——\(P\) 的条件数极大——那 \(P^{-1}\) 就非常敏感,\(\tilde A\) 的数值精度就崩了。PCA 的实现里,为什么坚持用正交基(\(P^{-1} = P^\top\))?因为正交矩阵 \(\kappa = 1\),永远不放大误差。这就是良态和病态在实践中的分水岭。
一句话总结:Frobenius 范数是"摊平的长度",谱范数是"最大拉伸",条件数是"最病的方向除以最健康的方向"。
核心概念七:正定与半正定(约 2 分钟)¶
直觉先行。一个对称矩阵是正定的 (positive definite, PD),如果它作为一个"二次型",对任何非零输入都吐出正数。
定义:对称矩阵 \(A\) 满足 \(\mathbf{x}^\top A \mathbf{x} > 0\) 对所有非零 \(\mathbf{x}\)。
数字锚点:$$ A = \begin{bmatrix}2&1\1&3\end{bmatrix} $$。取 \(\mathbf{x} = (1, -1)^\top\):
试别的 \(\mathbf{x}\) 也永远是正的。
放宽一点:如果 \(\mathbf{x}^\top A \mathbf{x} \geq 0\)(允许等号),叫半正定 (positive semi-definite, PSD)。协方差矩阵、SVM 里的核矩阵、局部极小点处的海森,都是 PSD。区别只在于:PSD 允许某些方向"平的",PD 严格所有方向向上弯曲。
反例:$$ A = \begin{bmatrix}1&0\0&-1\end{bmatrix} $$。取 \(\mathbf{x} = (0, 1)^\top\):\(\mathbf{x}^\top A \mathbf{x} = -1 < 0\)。不是 PD 也不是 PSD——它叫不定 (indefinite)。
为什么重要?优化里,如果 Hessian 是 PD,说明当前是唯一严格极小点(碗形);如果是不定,说明是鞍点(一头翘一头凹)——大模型训练里 90% 的困难就是鞍点。
一句话总结:PD 是严格碗形,PSD 是平底碗,不定是马鞍。
一个走完全程的例子(约 2 分半)¶
现在把今天九个性质,全部套在同一个矩阵上跑一遍。取:
性质 1 · 形状:\(2 \times 2\) 方阵。
性质 2 · 转置:$$ A^\top = \begin{bmatrix}2&1\1&3\end{bmatrix} = A $$。对称矩阵——下节课的主角之一。
性质 3 · 迹:\(\operatorname{tr}(A) = 2 + 3 = 5\)。
性质 4 · 行列式:\(\det A = 2 \cdot 3 - 1 \cdot 1 = 5\)。非零,说明 \(A\) 满秩、可逆、非奇异。
性质 5 · 秩:两行 \((2,1)\) 和 \((1,3)\) 谁也不是谁的倍数,\(\operatorname{rank}(A) = 2\)。
性质 6 · 零空间:满秩方阵,零空间只有零向量,\(\operatorname{nullity}(A) = 0\)。验证秩–零度:\(2 + 0 = 2\) ✓。
性质 7 · 逆:套公式,主对角 \(2, 3\) 互换,副对角 \(1, 1\) 加负号,除以 \(\det = 5\):
验证:$$ A A^{-1} = \frac{1}{5}\begin{bmatrix}2&1\1&3\end{bmatrix}\begin{bmatrix}3&-1\-1&2\end{bmatrix} = \frac{1}{5}\begin{bmatrix}5&0\0&5\end{bmatrix} = I $$ ✓。
性质 8 · Frobenius 范数:\(\|A\|_F = \sqrt{4 + 1 + 1 + 9} = \sqrt{15} \approx 3.87\)。
性质 9 · 正定性:刚才我们已经算过 \(\mathbf{x} = (1, -1)^\top\) 时 \(\mathbf{x}^\top A \mathbf{x} = 3 > 0\)。再挑几个 \(\mathbf{x}\) 都是正的,\(A\) 正定。
一次串起来了:一个对称、满秩、可逆、正定的 \(2 \times 2\) 矩阵,它的迹是 5、行列式也是 5、Frobenius 范数是 \(\sqrt{15}\)。这九个数字,都是同一个 \(A\) 的不同侧影。
易错点回头看(约 80 秒)¶
三条容易翻车的地方,每条都是"很多人以为 X,其实是 Y,因为 Z"。
易错点 1:很多人以为迹只是随手加一下对角线,实用价值不大;其实迹是基不变量,等于所有特征值之和;因为 \(\operatorname{tr}(P^{-1} A P) = \operatorname{tr}(A)\),无论你怎么换基它都不变——这让它在证明和优化里特别好用(比如深度学习里的核范数松弛)。
易错点 2:很多人以为行列式为零只是个技术条件,其实它等价于秩不足、不可逆、有非平凡零空间——四件事完全绑定;因为 \(\det\) 是空间缩放因子,缩到 0 就是把高维压成低维,压扁的过程无法逆转,信息永久丢失。
易错点 3:很多人以为条件数大只是数值问题、精度差一点无所谓;其实病态矩阵会让神经网络训练直接崩溃——梯度沿病态方向被放大 \(10^{8}\) 倍,任何优化器都救不回来;因为 \(\kappa(A) = \|A\| \cdot \|A^{-1}\|\) 直接量化了"最坏方向的敏感度",这也是为什么 BatchNorm、LayerNorm、权重初始化都在拼命把矩阵推向良态。
与下节的钩子(约 30 秒)¶
今天讲的九个性质,是一般矩阵的通用工具。但你想过没有:如果 \(A^\top = A\),会发生什么?如果 \(A^\top A = I\),会发生什么?如果 \(A\) 只在对角线上有值,又会发生什么?
这些"特殊矩阵"各自有一堆好性质——正交矩阵条件数恒为 1,对角矩阵求逆只用一步,三角矩阵解线性方程组一次消元就够。它们是所有分解算法的地基。
下一节,矩阵类型,我们逐个盘点。带着今天的九个工具去看,你会发现每一种特殊矩阵,都是这九条性质里的某几条极致化之后的产物。
我们下节见。