M1 矩阵基础

· 更新于 2026/10/8· Tech

1. 线性变换与矩阵

为了搞清矩阵的来历,从线性变换出发是最直观的(线性变换有很多可视化的例子,见3B1B的视频)。

定义

设做线性变换的函数为 ff,取向量 u,vu, v 和标量 λλ。ff 是线性的,满足两个关键性质:

  • f(u+v)=f(u)+f(v)f(u+v) = f(u) + f(v)
  • f(λu)=λf(u)f(\lambda u) = \lambda f(u)

下面以二维空间 R2R^2 为例,设基向量为 e1,e2e_1, e_2 。在空间中任取一个向量 vv ,它可以表示为基底的线性组合:

v=v1e1+v2e2v = v_1e_1 + v_2e_2

上式中 v1,v2v_1, v_2 是标量,即 vv 的坐标。现在施加任意线性函数 ff:

f(v)=f(v1e1+v2e2)=v1f(e1)+v2f(e2)f(v) = f(v_1 e_1 + v_2 e_2) = v_1 f(e_1) + v_2 f(e_2)

上式中可以见到,结果中我们已经知道了 v1,v2v_1,v_2 ,要得知 f(v)f(v) 的话,还需要知道 ff 作用在两个基向量上的结果 f(e1)f(e_1) 和 f(e2)f(e_2) ,即这个结果完全由 ff 在基向量上的作用 f(e1)f(e_1) 和 f(e2)f(e_2) 所决定。

f(e1)f(e_1) 和 f(e2)f(e_2) 仍在 R2R^2 空间中,因此可以用基向量表示:

f(e1)=ae1+be2,f(e2)=ce1+de2f(e_1) = a e_1 + b e_2,\quad f(e_2) = c e_1 + d e_2

代入 f(v)f(v) 得 vv 的坐标经 ff 后变为:

v=(v1,v2)↦(av1+cv2, bv1+dv2)v = (v_1, v_2) \mapsto (a v_1 + c v_2,\ b v_1 + d v_2)

注意, e1e_1 在 ff 下变更为原基下的坐标 (a,b)(a,b) , e2e_2 在 ff 下变更为原基下的坐标 (c,d)(c,d) 。我们的向量一直用列向量书写,因此 ff 真正本质的信息(对基的作用)由这一对列向量传达:

M=(acbd)M = \begin{pmatrix} a & c \\ b & d \end{pmatrix}

这一列对向量包含了你想知道的、ff 作用于任何可能向量的全部信息。它也表明:在所有可能的线性变换构成的函数空间中选一个特定的 ff,有四个自由变量可选——即这个函数空间是四维的(也是一个抽象向量空间)。

矩阵中保存了这样线性变换 ff 的信息,甚至可以将矩阵乘法看成线性变换的函数:

f(v)=[acbd]⋅[v1v2]=[av1+cv2bv1+dv2] f(v) = \begin{bmatrix} a & c \\ b & d \end{bmatrix} \cdot \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \begin{bmatrix} a v_1 + c v_2 \\ b v_1 + d v_2 \end{bmatrix}

在这种理解之上,ff 的矩阵通过乘法作用到 vv 上,而不再直接通过 ff 作用到 vv 上。

如图,可以想象基向量从 (1,0)T,(0,1)T(1, 0)^T , (0, 1)^T 变换为 (a,c)T,(b,d)T(a, c)^T, (b,d)^T 的情形。

另外,借助这个视角,可以更好的理解矩阵乘法

  • 多次矩阵乘法实际上是几个连续的线性变换复合的结果
  • 矩阵乘法应当从右向左读(最右变换是第一层变换)
  • 矩阵乘法的结合律自然成立

2. 空间与行列式

行列式(determinant)在我们的线性代数学习中,通常用来判断线性方程组有没有唯一解。但在线性变换的视角,可以赋予行列式更直观的含义:线性变换可以将 nn 维空间中的所有内容映射到该 nn 维空间中的其他位置,或者将该 nn 维空间压缩到较低维空间(如直线或平面)。在每种情况下,我们都可以进行计算来计算出总体上有多少空间被压缩或扩展,而不管转换的其他影响如何,这个计算的结果就是行列式。

下面仍以二维空间进行演示。在二维空间中,基向量将围成一个平行四边形,其面积(相较于单位基向量构成图形面积的比例)反映了空间变换的影响。例如,将基向量设定为 [3,0]T,[0,2]T[3,0]^T, [0,2]^T ,那么恰好围成一个矩形,其面积为 6,即变成单位面积的 6 倍。

因为变换是线性的(产生的网格线保持平行且等距分布),因而所有其他的面积其变化因素跟上述比例是相同的。

如果一个线性变换对应的行列式,其值为 0,说明它将基向量张成的二维平面压缩为一条线(甚至一个点),如下图所示。

此时,矩阵代表的线性变换将空间压缩到了更低的维度(甚至这个过程中丢失了信息,因而是不可逆的)。

上述几何意义可以用于解释初等行变换对行列式 detdet 的影响:

  1. Ri↔RjR_i \leftrightarrow R_j ,那么 det′=−detdet' = -det ,行列式的值变号
  2. Ri→kRiR_i \rightarrow kR_i,那么 det′=k∗detdet' = k * det,行列式的值被 kk 缩放
  3. Rj→Rj+kRiR_j \rightarrow R_j + kR_i,那么 det′=detdet'=det ,行列式的值不变

对于初等行变换,我们将矩阵的每一行都看成一个向量,那么这些行向量将张开一个线性空间。在二维情形下,此矩阵的行列式的值为这些基向量张成的平行四边形的面积。

  • 对于交换两行,实际上没有改变面积的大小,但是行列式代表的面积(体积等)是有向的,交换两向量相当于将基向量所围的平行四边形翻个面,因此翻转方向后需要变号。
  • 对于将某行向量缩放 kk,可以将此行向量所在的边视为平行四边形的底。那么,在高不变的情形,仅仅对底边缩放,其对整个图形的面积的缩放效果是一致的。
  • 对于将某行向量加上另一被缩放 kk 的行向量。我们考虑向量的加法,可以知道原行向量仅仅是在另一基向量的方向上有了一个分量,因此这个变换在二维即一个剪切变换(shear),对平行四边形的面积没有产生影响(底和高都没变,可以拿单位矩阵思考,其形状发生剪切后,将从矩形变为被拉斜的平行四边形)。

另外,对于矩阵的行操作和列操作,有常用的视角(区分于矩阵作用于列向量 如Ax\text{如}Ax ,这可以看成用 xx 的坐标对 AA 的各列做线性组合):

  • EAEA ,左乘矩阵 EE 通常对原矩阵 AA 的各个行向量做线性组合
  • AEAE ,右乘矩阵 EE 通常对原矩阵 AA 的各个列向量做线性组合

行列式的一些性质也可以解释(不严谨地):

  1. det⁡(αA)=αndet⁡A\det(\alpha A)=\alpha^n\det A
    因为 nn 维空间每个方向上的基向量均被缩放 α\alpha 的倍数
  2. det⁡(AB)=det⁡Adet⁡B\det(AB)=\det A\det B
    因为先做 BB 再做 AA,体积先缩放 det⁡B\det B 倍,再缩放 det⁡A\det A 倍。

上述视角都围绕二维展开,试着向三维深入一下。例如,将行列式计算从二阶扩展到三阶。

这里先引入一下叉积的概念。叉积的结果仍旧是一个向量,其:

  • 大小等于这两个向量构成的平行四边形的面积
  • 方向符合右手定则

借助叉积,我们可以方便的将行列式的计算(以及几何理解)从二维推向三维。

给出以下的三阶矩阵:

A=[abcdefghi]A= \begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \end{bmatrix}

将其按第一行展开,我们有:

det⁡A=a∣efhi∣−b∣dfgi∣+c∣degh∣\det A = a\begin{vmatrix} e & f \\ h & i \end{vmatrix} -b\begin{vmatrix} d & f \\ g & i \end{vmatrix} +c\begin{vmatrix} d & e \\ g & h \end{vmatrix}

上式从几何上,可以认为是计算一个三维平行六面体的有向体积。下面展示如何从叉积出发,根据 det⁡A\det A 的几何意义推出上述代数式。

将矩阵 AA 视为由行向量张开的空间,那么有行向量:

r1=(a,b,c)r2=(d,e,f)r3=(g,h,i)\begin{aligned} \mathbf{r}_1 &= (a,b,c) \\ \mathbf{r}_2 &= (d,e,f) \\ \mathbf{r}_3 &= (g,h,i) \end{aligned}

三个向量张成的平行六面体的有向体积即为 det⁡A\det A 的值,即:

det⁡A=V=r1⋅(r2×r3)\det A = V =\mathbf{r}_1\cdot(\mathbf{r}_2\times\mathbf{r}_3)

其中,r2×r3\mathbf{r}_2\times\mathbf{r}_3 的大小等于它们所张开的平行四边形的面积,方向垂直于它们所张开的平面。设 n=r2×r3∣r2×r3∣\mathbf{n}=\frac{\mathbf{r}_2\times\mathbf{r}_3}{|\mathbf{r}_2\times\mathbf{r}_3|},那么 r1⋅n\mathbf{r}_1\cdot \mathbf{n} 能够得到 r1\mathbf{r}_1 在底面法向量方向上的投影(即有向高度),从而得到上式(称为混合积):

V=∣r2×r3∣(r1⋅r2×r3∣r2×r3∣)=r1⋅(r2×r3)V=|\mathbf{r}_2\times\mathbf{r}_3|\left(\mathbf{r}_1\cdot\frac{\mathbf{r}_2\times\mathbf{r}_3}{|\mathbf{r}_2\times\mathbf{r}_3|}\right)=\mathbf{r}_1\cdot(\mathbf{r}_2\times\mathbf{r}_3)

将叉积 r2×r3\mathbf{r}_2\times\mathbf{r}_3 写为分量形式,即

r2×r3=(nx,ny,nz)\mathbf{r}_2\times\mathbf{r}_3=(n_x,n_y,n_z)

又 r2×r3\mathbf{r}_2\times\mathbf{r}_3 本身既是个面积向量,又是个法向量。因此,需要找到 r2×r3\mathbf{r}_2\times\mathbf{r}_3 其面积向量在以x,y,zx,y,z 三个法向方向上的分量,即找到 r2×r3\mathbf{r}_2\times\mathbf{r}_3 这个面在三个坐标平面的有向投影面积:

r2×r3=(Syz,Sxz,Sxy)\mathbf{r}_2\times\mathbf{r}_3=(S_{yz},S_{xz},S_{xy})
而 r1=(a,b,c)\mathbf{r}_1 = (a,b,c),那么

det⁡A=r1⋅(r2×r3)=a Syz+b Sxz+c Sxy\det A =\mathbf{r}_1\cdot(\mathbf{r}_2\times\mathbf{r}_3)=a\ S_{yz} + b \ S_{xz} + c \ S_{xy}

这样就已经得到 det Adet\ A 的展开式了, 有向面积 Syz,Sxz,SxyS_{yz},S_{xz},S_{xy} 的计算即我们已经掌握的二阶行列式的计算。例如计算 SyzS_{yz} ,有投影 r2′=(e,f),r3′=(h,i)\mathbf{r}^{'}_2 = (e,f),\mathbf{r}^{'}_3 = (h,i),所以 Syz=∣efhi∣=ei−fhS_{yz} = \begin{vmatrix} e & f \\ h & i \end{vmatrix} = ei-fh。

注意

余子式展开的正负号交替,在三维情形下跟右手系有关(更高维的情形下,本质是排列/置换的奇偶性(这可用逆序数判断)。发生取向反转时会使有向体积变号)。

在三维坐标系下有:

  • ex×ey=ez\mathbf{e}_x\times\mathbf{e}_y=\mathbf{e}_z
  • ey×ez=ex\mathbf{e}_y\times\mathbf{e}_z=\mathbf{e}_x
  • ez×ex=ey\mathbf{e}_z\times\mathbf{e}_x=\mathbf{e}_y

那么,ex×ez=−ey\mathbf{e}_x\times\mathbf{e}_z=-\mathbf{e}_y,SxzS_{xz} 跟正向 zxzx 方向是反的,因此展开式中此项带有负号。

3. 逆矩阵、秩、列空间与零空间

前面提到矩阵是线性变换的体现,因此逆矩阵其实代表该线性变换的逆变换。

从机器学习的角度看,矩阵 AA 往往代表一个线性变换,求解 Ax=bAx=b就是寻找一个输入 xx,使变换后的结果落在目标 bb 上。

我们依旧可以从二维情形入手,例如:

我们如何理解这个方程的解,取决于 AA 所对应的变换

  • 要么把整个空间挤压到更低的维度,比如一条线或一个点
  • 要么仍然张成原来的完整二维空间

这就与行列式相关,若行列式不为零,那么说明变换后的空间维度没变(信息未损失),那么可以通过逆变换来得到解;若行列式为零,那么说明变换后的空间被压缩了(信息已损失),那么对应的逆变换就不存在,就没法求出逆矩阵。此时,bb 要么完全不在变换后的空间内,要么很多的 xx 在变换后都被压到 bb (某些维度被压到零导致的)。

对逆矩阵定义如下:

A−1A=AA−1=IA^{-1}A = AA^{-1} = I

如果 A−1A^{-1} 存在,那么从 Ax=bAx=b 出发,左乘 A−1A^{-1} 就得到:

x=A−1bx=A^{-1}b

用行列式为零去描述降维情形,显然不够具体。为此,引入了矩阵的秩去描述变换后空间的维度信息。矩阵所有可能的输出所组成的集合——无论它是一条线、一个平面还是整个三维空间——叫作这个矩阵的列空间。矩阵的列向量告诉你各个基向量落在了哪里,而这些变换后基向量的张成空间,就给出了所有可能的输出。换句话说,列空间就是矩阵各列向量的张成空间。

因此,秩的定义为列空间的维数。对于 n×nn \times n 方阵,当这个秩达到最大值时,这个矩阵就称为满秩矩阵。教材定义中,常给出一个矩阵 AA 的列秩是 AA 的线性无关的列的极大数目。类似地,行秩是 AA 的线性无关的行的极大数目。矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 AA 的秩。

注意

零向量总会包含在列空间中,因为线性变换必须保持原点不动。

对于满秩变换,唯一会落到原点的向量就是零向量本身。但对于非满秩矩阵,也就是会把空间挤压到更小维度的矩阵,可能会有大量向量都落到零向量上。

  • 如果一个三维变换把空间挤压到一个平面,那么会有一整条直线上的向量最终落到原点
  • 如果一个三维变换把空间挤压到一条直线,那么会有一整个平面上的向量最终落到原点

这些最终落到原点的向量所组成的集合,叫作这个矩阵的零空间,也叫核。根据定义,零空间就是线性齐次方程组 Ax=0Ax = 0 的所有解的集合。

有结论:

A可逆  ⟺  det⁡A≠0  ⟺  Ax=0只有零解  ⟺  rank(A)=nA\text{可逆} \iff \det A \neq 0 \iff Ax=0\text{只有零解} \iff \mathrm{rank}(A)=n

4. 非方阵

我们之前讨论的矩阵皆为方阵,方阵对应的变换,其输入空间和输出空间的维度是相同的。而常见的原始数据矩阵经常是非方阵,例如

X∈Rm×n,X:Rn→RmX\in\mathbb{R}^{m\times n},X:\mathbb{R}^n \to \mathbb{R}^m

上述矩阵 XX 描述了“特征空间”与“样本空间”之间的映射,其中 mm 是样本数,nn 是特征数。如何理解此类非方阵对应的变换呢?

我们可以将第一节中的表述,形式化如下:

The Standard Matrix Representation 标准矩阵表示

若 LL 是线性变换 L:Rn→RmL:\mathbb{R}^n \to \mathbb{R}^m,则存在标准矩阵 A∈Rm×nA\in\mathbb{R}^{m\times n},使得

L(x)=AxL(\mathbf{x}) = A\mathbf{x}

对于任意 x∈Rn\mathbf{x}\in\mathbb{R}^n 成立。该矩阵的第 jj 列由下式给出

aj=L(ej),j=1,2,…,n\mathbf{a}_j = L(\mathbf{e}_j),\quad j=1,2,\dots,n

上述定理的证明是构造性的,即通过该证明的算法可以为我们找到这样的矩阵 AA :

  1. 取每个标准基向量的像:aj=L(ej)\mathbf a_j=L(\mathbf e_j)
  2. 把这些像作为矩阵的列:A=[a1 a2 ⋯ an]A=[\mathbf a_1\ \mathbf a_2\ \cdots\ \mathbf a_n]
  3. 把任意输入展开为基向量的线性组合:x=x1e1+⋯+xnen\mathbf x=x_1\mathbf e_1+\cdots+x_n\mathbf e_n
  4. 用线性性展开 LL,再识别为矩阵乘法:L(x)=x1a1+⋯+xnan=AxL(\mathbf x)=x_1\mathbf a_1+\cdots+x_n\mathbf a_n=A\mathbf x

上述过程也印证了只要知道线性变换对标准基的作用,就知道它对所有输入的作用。

注意

我们在第一节以及上述定理中讨论矩阵对应的线性变换时,始终将输入空间和输出空间的基都视为标准基,因此矩阵中的列向量均是标准基下的标准坐标。实际上,输入空间和输出空间的这两种基是可以选定的。所以,更严谨的说法下,矩阵第 ii 列的向量坐标,是输入空间的第 ii 个基向量经过线性变换 TT 后,在输出空间所选基下的坐标。矩阵并非线性变换本身,它是线性变换在指定输入基与输出基下的表示。

延续上述理解,那么矩阵 A∈Rm×nA\in\mathbb{R}^{m\times n} 所表示的线性变换 L:Rn→RmL:\mathbb{R}^n \to \mathbb{R}^m,其输入空间维度为 nn,输出空间维度为 mm。从列向量视角观察矩阵 AA ,输入空间有 nn 个基向量 e1,e2,…,ene_1, e_2, \dots, e_n ,经过线性变换 ai=L(ei)a_i = L(e_i) ,得到矩阵 AA 的 nn 个列向量 a1,a2,…,ana_1, a_2, \dots, a_n,而每个 aia_i 向量是 mm 维的,用 mm 个坐标进行表示。

示例

  • 考虑一个 3×23 \times 2 矩阵 A=[20−11−11]A=\begin{bmatrix}2&0\\-1&1\\-1&1\end{bmatrix}
    输入 (u,v)(u,v) 被送到:
    A[uv]=ua1+va2=[2u−u+v−u+v]A\begin{bmatrix}u\\v\end{bmatrix}=u\mathbf a_1+v\mathbf a_2=\begin{bmatrix}2u\\-u+v\\-u+v\end{bmatrix}
    输入空间为二维,整个输入空间构成一个平面,被送到三维输出空间中满足这个方程的平面上。它通常不是整个 R3\mathbb{R}^3,因为两条输入方向最多只能张成二维对象。

  • 考虑一个 1×21 \times 2 矩阵 A=[2−1]A=\begin{bmatrix}2&-1\end{bmatrix}
    A[xy]=2x−yA\begin{bmatrix}x\\y\end{bmatrix}=2x-y
    它的两列分别记录 e1\mathbf e_1 和 e2\mathbf e_2 在数轴上的像。所有输入点被压缩到一条数轴上,许多不同的二维点会得到同一个数。满足 2x−y=02x-y=0 的直线就是零空间;沿这条方向移动,输出不变。

对于矩阵 A∈Rm×nA\in\mathbb{R}^{m\times n} ,我们知道其对应的线性变换为 L:Rn→RmL:\mathbb{R}^n \to \mathbb{R}^m 。可以对其列空间与零空间再展开讨论。注意零空间指的是那些经过线性变换后被压到原点的向量,所以零空间是输入空间 Rn\mathbb{R}^n 的子集;列空间指的是列向量的张成空间,所以列空间是输出空间 Rm\mathbb{R}^m 的子集。 给出 rank−nullity theoremrank-nullity \space theorem 如下(矩阵 AA 有 nn 列):

rank(A)+nullity(A)=nrank(A) + nullity(A) = n

5. 内积、范数、正交与投影

待续

6. 对称矩阵、二次型与正定/半正定

待续

7. 特征值与特征向量

待续

8. SVD 与伪逆

待续

参考

  1. 线性代数的本质

    https://www.bilibili.com/video/BV1ys411472E/

  2. https://mathomablog.wordpress.com/2017/02/11/who-cares-about-matrices-why-3blue1brown-presents-linear-algebra-correctly/
  3. 线性代数 — Machine Learning From Scratch

    https://machine-learning-from-scratch.readthedocs.io/zh-cn/latest/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0.html

  4. 交互式行列式教程

    https://intuitive-math.club/linear-algebra/determinant/

  5. Wichita State:Linear Transformations as Matrices

    https://courses.math.wichita.edu/math511/ch6/3/LinearTransformationsAsMatrices.html

  6. The Rank Theorem

    https://textbooks.math.gatech.edu/ila/rank-thm.html

cicada@blog:~