为什么从这里开始
打开任何一本机器学习书,第一章往往不是「神经网络」,而是一堆 、、。这不是装腔作势——
- 一张 224×224 的 RGB 图像,是一个 的张量。
- 一句话的 embedding,是一个 4096 维的向量。
- Transformer 里一次注意力计算,就是几次矩阵乘法。
ML 的语言是线性代数。但课本里的线性代数常常被讲成「行列式按定义展开」、「高斯消元到最简形」——让人记住了步骤却没看见它到底在动什么。这篇我们换一种视角:所有矩阵都是对空间的扭曲,所有矩阵乘法都是两次扭曲的叠加,特征向量是扭曲里不动的轴。
向量:一个箭头
最简单的开始:二维向量 是从原点出发指向 的箭头。
写成列向量更顺手:
数字本身不重要——重要的是它代表一种移动:从原点走 3 步右、2 步上。机器学习里所谓「图像的 embedding」、「token 的 embedding」都是同一回事:高维空间里的一个箭头,方向编码了语义。两个箭头的「夹角小」就对应「语义相近」。
矩阵:一次空间变换
把一个 的矩阵作用到向量上:
公式很无聊,直觉却惊艳:把这个矩阵作用到平面上每一个点,整个平面会被线性地扭曲——直线还是直线,原点不动,平行线还是平行线,但网格被拉、被压、被旋转、被翻折。
更关键的观察:矩阵的两列分别就是变换后的基向量。
- 第一列 = 原本指向 的单位向量 被送到了哪里。
- 第二列 = 原本指向 的单位向量 被送到了哪里。
知道了基向量去了哪里,整片平面去了哪里就自动确定了——因为任何向量 都是基向量的组合,变换是线性的,组合关系不会变。
矩阵就是一份关于「基向量去哪里」的说明书。 拖动滑块或点几个预设感受一下:
变换矩阵
det = 1.00(面积缩放倍数)
预设变换
下面那个 (行列式)也有几何意义——它是单位方格变换后的面积。 表示面积翻倍; 表示整片平面被压成一条线(信息丢了,矩阵不可逆); 表示平面被翻面——左右手互换了。
乘法:变换的叠加
理解了「矩阵是变换」,乘法就不再神秘:
表示先做 ,再做 ——从右往左读,像函数复合 。
这立刻解释了一个反直觉的事实:
「先旋转 90° 再横向剪切」和「先剪切再旋转」当然结果不同——做事的顺序变了。矩阵乘法不满足交换律不是数学家的恶趣味,而是变换本身的性质。
顺带也能解释几个熟悉的符号:
- 单位矩阵 是「什么都不做」的变换——基向量没动。
- 逆矩阵 是「把 撤回去」的变换——所以 。
- 当 时矩阵不可逆——把平面压成一条线之后,没办法靠另一个线性变换把丢掉的那个维度变回来。
特征向量:不动的方向
一次普遍的线性变换会把大多数向量旋转到一个新方向。但偶尔有些「幸运」的向量:它们的方向保持不变,只是长度被缩放。这些叫做特征向量(eigenvector),对应的缩放倍数叫特征值(eigenvalue)。
数学定义就这一句话:
「矩阵作用在 上,等于直接给 乘一个数 」——这意味着 没有被旋转出它原来的方向。
变换矩阵
为什么 ML 里到处是特征向量?因为「不被旋转的方向」就是变换的本质轴——它们告诉你这个矩阵真正在做什么。
- PCA 找的是数据协方差矩阵的特征向量——方差最大的方向,也就是「数据真正铺开的轴」。
- SVD 把任意矩阵分解成「旋转 → 沿特征轴缩放 → 旋转」——这是降维和压缩的核心。
- Google 的 PageRank 算的是网页转移矩阵的最大特征向量——稳态分布。
- 谱聚类、图神经网络 在图的拉普拉斯矩阵的特征向量上做聚类。
特征向量出现在哪里,哪里就有「不变量」的故事。