Skip to content
知识

/knowledge/linear-algebra

线性代数

每个模型之下的语法。数据是向量,变换是矩阵——一旦你这样看待它,机器学习就不再是魔法,而成为几何。

学于
线性代数理学学士 · 数据科学核心
时间
墨尔本大学,2019–2022
应用于
PCA · 嵌入 · 回归
阅读 / 复习
约 15 分钟阅读2026-06-24

数据科学中几乎一切的底层,都是线性代数。一个数据集是一个矩阵。一行是一个向量。 训练一个线性模型就是解一个方程组。NLP 页中的词嵌入是一些向量,它们的夹角编码了含义。PCA、推荐引擎、 Transformer 中的注意力机制——这一切都构建于对向量和矩阵的一小组运算之上。

这是我会在接触任何机器学习之前,递给过去的自己的那张基础页。目标不是摆弄符号; 而是建立那种让其余一切豁然开朗的几何直觉——把向量看作箭头、把矩阵看作变换, 以及那几个悄然驱动着现代数据科学的分解。

01

为何它是数据的语言

把任意数据集整理成一张表——行是样本,列是特征——你就有了一个矩阵。 一行(一位客户、一份文档、一张被展平的图像)是一个向量:一个有序的 数字列表,等价地是空间中的一个点或一支箭头。一个有 1000 个样本、20 个特征的 数据集,是一个 1000×20 的矩阵;每个样本作为 20 维空间中的一个点而存在。

这种重新表述就是全部的收益。「找到相似的客户」变成「找到邻近的点」。「把 20 个 特征降到 2 个」变成「投影到一个平面上」。「拟合一个线性模型」变成「解一个方程组」。 线性代数不过是测量、移动并简化空间中点的工具箱——而数据就是空间中的点。

02

向量与向量空间

一个向量是一个有序的数字列表,写成一列。几何上它是从原点指向某个点的 一支箭头。你可以对向量做两件事,其余一切都由它们构建:

  • 相加——首尾相接([1,2] + [3,1] = [4,3])。
  • 缩放——乘以一个数(一个标量)——拉伸或翻转 (2·[1,2] = [2,4])。

把这两者结合——缩放若干向量再把结果相加——你就得到一个线性组合。 某些向量的所有线性组合的集合,就是它们的张成空间。一组是张成空间为整个空间的极小向量集;它们的数量就是维数。我们熟悉的三维 空间以 x, y, z 为基——三个独立的方向,每个点都是它们的唯一组合。

03

点积、范数与投影

点积把两个向量逐元素相乘再求和——将两个向量变成一个数字,衡量它们在 多大程度上指向同一方向。

ab=iaibi=abcosθ\mathbf{a} \cdot \mathbf{b} = \sum_{i} a_i b_i = \|\mathbf{a}\|\,\|\mathbf{b}\|\cos\theta

由它你得到两个要点。一个向量的范数(长度)是 ‖a‖ = √(a · a)——勾股距离。而重新整理这个公式,就得到两个向量之间的夹角,这正是余弦相似度

cosθ=abab\cos\theta = \frac{\mathbf{a}\cdot\mathbf{b}}{\|\mathbf{a}\|\,\|\mathbf{b}\|}

这正是比较词嵌入时所用的同一个余弦相似度:含义变成几何,「相关」变成「小夹角」。 当点积为零时,向量是正交的——成直角,毫无共同之处。

baa 在 b 上的投影
a 在 b 上的投影:点积衡量 a 有多少沿着 b 的方向。正交向量(直角)的点积为零。

04

作为线性映射的矩阵

这是解锁一切的思想:矩阵是一个函数,它变换空间。用矩阵乘一个向量会 移动它——旋转、拉伸、错切或投影它——同时保持网格平直、原点不动。

读懂一个矩阵的诀窍:它的各列就是基向量落脚的地方。一个 2×2 矩阵的第一列 说明 [1,0] 去往何处,第二列说明 [0,1] 去往何处。因为任何 向量都是基的组合,知道基落在哪里,就知道一切落在哪里:

[2003][xy]=[2x3y]\begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix}\begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 2x \\ 3y \end{bmatrix}

那个矩阵把 x 方向拉伸为 2 倍、把 y 方向拉伸为 3 倍。换上不同的数字,你就得到旋转、 反射或错切——每一次都是同一个操作:「施加线性映射」。

05

矩阵乘法

矩阵乘法初见时像是一条任意的规则——行乘列,把乘积加起来。它一点也不任意:两个矩阵相乘就是复合它们的变换AB 意味着「先做 B,再做 A」 ——和嵌套函数 f(g(x)) 一样。

这一个洞见就解释了其余的规则:

  • 维度必须对齐(内侧尺寸相同),因为一个变换的输出必须是下一个变换的 有效输入。
  • 顺序重要——一般而言 AB ≠ BA——因为先旋转再拉伸和先拉伸 再旋转并不相同。
  • 单位矩阵 I(对角线上为 1)是「什么也不做」的映射;AI = A

06

方程组、秩与可逆性

一个线性方程组就是 Ax = b:给定一个变换 A 和一个目标 b,找到落在它上面的输入 x。解这个方程组,就是把变换反向 运行。

能否把它反向,取决于——矩阵中真正独立的方向的数量 (其列张成空间的维数)。如果一个矩阵把空间压扁到更低的维度——比如一个把一切都拍平到 一个平面上的三维映射——它就丢失了信息,无法被撤销。两种关键情形:

  • 满秩(列独立):映射可逆,存在逆 A⁻¹,而 Ax = b 恰有一个解,x = A⁻¹b
  • 秩亏(某些列是冗余的):映射坍缩了维度,不存在逆,方程组要么无解、 要么有无穷多解。用数据的话说,冗余的列意味着共线特征——回归中真实而 常见的麻烦。

07

特征值与特征向量

当你施加一个矩阵时,大多数向量会被撞离它们原来的直线——它们的长度和方向都改变。 但对于任何给定的变换,有少数特殊的向量始终指向同一方向,只是被缩放。它们就是特征向量,而那个缩放因子就是特征值

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

把它读作:对 v 施加变换 A,与简单地把 v 缩放 λ 倍做的是同一件事。特征向量是变换的「自然坐标轴」——它作用得最简单的 那些方向。特征值为 2 意味着那个方向被加倍;为 1 意味着不变;为负则意味着被翻转。

这对数据很重要,因为一个数据集的协方差矩阵,其特征向量沿着方差最大的 方向——数据实际展开的那些坐标轴。这就是 PCA 的引擎,而从那里到 SVD 只有 一步之遥。

08

SVD——皇冠上的明珠

奇异值分解是其余一切都在为之铺垫的结果。它说任何矩阵——无论 方阵与否——都可以被拆成三个简单的部分:

A=UΣVA = U\,\Sigma\,V^{\top}

每一个线性映射,无论看起来多么纠缠,其实都只是一次旋转(Vᵀ)、 沿坐标轴的一次拉伸(Σ),以及另一次旋转(UΣ 的对角线上是奇异值——映射沿每个方向拉伸了多少,按重要性 降序排列。

A=UΣVᵀ旋转旋转
SVD 把任意 m×n 矩阵 A 分解为一次旋转 U、一次对角拉伸 Σ(奇异值,最大者在前)和一次旋转 Vᵀ。只保留最大的几个奇异值,就得到 A 的最佳低秩近似。

SVD 无处不在的原因:只保留最大的几个奇异值,你就得到该矩阵可能的最佳 低秩近似——用最少的数字承载最多的信息。这一个思想驱动了:

  • PCA 与降维——把 100 个相关特征压缩成承载信号的 5 个方向。
  • 图像与数据压缩——把一个大矩阵存成几个小矩阵,几乎没有可见的损失。
  • 推荐系统——把一个稀疏的「用户×物品」评分矩阵分解为潜在的品味向量。
  • 降噪与潜在语义——小的奇异值通常是噪声;丢掉它们,结构依然保留。

09

它在我工作中的体现

10

60 秒回顾