基础 · 01

线性代数的几何直觉

矩阵不是表格,是空间的扭曲。把向量、矩阵乘法、特征向量都看成可以拖动的东西——一篇文章让公式长出形状。

12 min read

为什么从这里开始

打开任何一本机器学习书,第一章往往不是「神经网络」,而是一堆 WWXXΣ\Sigma。这不是装腔作势——

  • 一张 224×224 的 RGB 图像,是一个 224×224×3224 \times 224 \times 3 的张量。
  • 一句话的 embedding,是一个 4096 维的向量。
  • Transformer 里一次注意力计算,就是几次矩阵乘法。

ML 的语言是线性代数。但课本里的线性代数常常被讲成「行列式按定义展开」、「高斯消元到最简形」——让人记住了步骤却没看见它到底在动什么。这篇我们换一种视角:所有矩阵都是对空间的扭曲,所有矩阵乘法都是两次扭曲的叠加,特征向量是扭曲里不动的轴

向量:一个箭头

最简单的开始:二维向量 v=(3,2)\mathbf{v} = (3, 2) 是从原点出发指向 (3,2)(3, 2) 的箭头。

写成列向量更顺手:

v=[32]\mathbf{v} = \begin{bmatrix} 3 \\ 2 \end{bmatrix}

数字本身不重要——重要的是它代表一种移动:从原点走 3 步右、2 步上。机器学习里所谓「图像的 embedding」、「token 的 embedding」都是同一回事:高维空间里的一个箭头,方向编码了语义。两个箭头的「夹角小」就对应「语义相近」。

矩阵:一次空间变换

把一个 2×22 \times 2 的矩阵作用到向量上:

[abcd][xy]=[ax+bycx+dy]\begin{bmatrix} a & b \\ c & d \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} ax + by \\ cx + dy \end{bmatrix}

公式很无聊,直觉却惊艳:把这个矩阵作用到平面上每一个点,整个平面会被线性地扭曲——直线还是直线,原点不动,平行线还是平行线,但网格被拉、被压、被旋转、被翻折。

更关键的观察:矩阵的两列分别就是变换后的基向量

  • 第一列 (a,c)(a, c) = 原本指向 (1,0)(1, 0) 的单位向量 ı^\hat{\imath} 被送到了哪里。
  • 第二列 (b,d)(b, d) = 原本指向 (0,1)(0, 1) 的单位向量 ȷ^\hat{\jmath} 被送到了哪里。

知道了基向量去了哪里,整片平面去了哪里就自动确定了——因为任何向量 (x,y)=xı^+yȷ^(x, y) = x\,\hat{\imath} + y\,\hat{\jmath} 都是基向量的组合,变换是线性的,组合关系不会变。

矩阵就是一份关于「基向量去哪里」的说明书。 拖动滑块或点几个预设感受一下:

îĵ

变换矩阵

[
1.000.000.001.00
]

det = 1.00(面积缩放倍数

预设变换

矩阵的两列就是变换后的基向量。 î 原本指 (1,0), ĵ 原本指 (0,1)——它们去哪儿,整片网格就跟到哪儿。

下面那个 det\det(行列式)也有几何意义——它是单位方格变换后的面积det=2\det = 2 表示面积翻倍;det=0\det = 0 表示整片平面被压成一条线(信息丢了,矩阵不可逆);det<0\det < 0 表示平面被翻面——左右手互换了。

乘法:变换的叠加

理解了「矩阵是变换」,乘法就不再神秘:

ABAB 表示先做 BB,再做 AA——从右往左读,像函数复合 f(g(x))f(g(x))

这立刻解释了一个反直觉的事实:

ABBAAB \neq BA

「先旋转 90° 再横向剪切」和「先剪切再旋转」当然结果不同——做事的顺序变了。矩阵乘法不满足交换律不是数学家的恶趣味,而是变换本身的性质。

顺带也能解释几个熟悉的符号:

  • 单位矩阵 II 是「什么都不做」的变换——基向量没动。
  • 逆矩阵 A1A^{-1} 是「把 AA 撤回去」的变换——所以 A1A=IA^{-1}A = I
  • detA=0\det A = 0 时矩阵不可逆——把平面压成一条线之后,没办法靠另一个线性变换把丢掉的那个维度变回来。

特征向量:不动的方向

一次普遍的线性变换会把大多数向量旋转到一个新方向。但偶尔有些「幸运」的向量:它们的方向保持不变,只是长度被缩放。这些叫做特征向量(eigenvector),对应的缩放倍数叫特征值(eigenvalue)

数学定义就这一句话:

Av=λvA\,\mathbf{v} = \lambda\,\mathbf{v}

「矩阵作用在 v\mathbf{v} 上,等于直接给 v\mathbf{v} 乘一个数 λ\lambda」——这意味着 v\mathbf{v} 没有被旋转出它原来的方向。

变换矩阵

A =[
2112
]
方向 (1, 1):长度 × 3,方向不变 → 特征值 λ₁ = 3
方向 (1, -1):长度 × 1,方向不变 → 特征值 λ₂ = 1
其他方向:变换后都旋转到了别处。
点击「施加 A」。两条彩色的轴是这个矩阵的特征方向——所有别的箭头都被旋转走,只有它们留在自己的直线上。

为什么 ML 里到处是特征向量?因为「不被旋转的方向」就是变换的本质轴——它们告诉你这个矩阵真正在做什么。

  • PCA 找的是数据协方差矩阵的特征向量——方差最大的方向,也就是「数据真正铺开的轴」。
  • SVD 把任意矩阵分解成「旋转 → 沿特征轴缩放 → 旋转」——这是降维和压缩的核心。
  • Google 的 PageRank 算的是网页转移矩阵的最大特征向量——稳态分布。
  • 谱聚类、图神经网络 在图的拉普拉斯矩阵的特征向量上做聚类。

特征向量出现在哪里,哪里就有「不变量」的故事。

这个想法在前沿里