图片展示了线性代数在机器学习中的重要性。左侧是线性代数相关概念,如线性变换、矩阵、特征向量、特征值等,以及方程组系统。右侧是代码示例,涉及CPU结构体定义、矩阵运算等。背景中是大卫雕像,其头部被绿色线条突出显示。图片与上下文的关系是,通过直观呈现线性代数概念及代码应用,解释为什么线性代数在机器学习中如此重要,帮助理解其在实际编程中的作用。

做 AI / ML 并不需要数学博士学位。你只需要掌握足够的线性代数,这样在打开论文或 PyTorch 文档时,不会总觉得自己在迷雾里打转。这份路线图会按正确顺序告诉你该学什么,以及为什么它重要。

我们直接开始。


为什么偏偏是线性代数?

在开始罗列知识点之前,我先解释一下,为什么这门课在 ML 里这么重要。

机器学习里的一切,本质上都是数字。图像是数字网格。文本在 tokenization 之后会变成数字。音频则是一串按时间采样得到的数字。当你把所有数据都转成数字之后,你就需要一套方法来:

  1. 高效存储这些数字
  2. 对它们执行快速运算
  3. 把它们从一种形式变换成另一种形式

线性代数本身就是完成这三件事的语言。神经网络?本质上就是矩阵乘法,再撒上一点非线性函数。主成分分析?本质是特征向量。推荐系统?本质是矩阵分解。词向量?本质是高维空间中的向量。

你绕不开它。

但你完全可以理解它。

继续往下。


Phase 1:绝对基础

这是所有人都应该开始的地方,就算你觉得自己已经会了也一样。相信我,回来重新过一遍。

1. 标量、向量、矩阵、张量

图片展示了出了向关键概念标量、向量、矩阵、张量的示例。标量(SCALAR)为5、3、7组成的1x3行向量;向量(ROW VECTOR)为5、1.5、2组成的3x1列向量;矩阵(MATRIX)为4、19、8、16、3、5组成的2x3矩阵;张量(TENSOR)为1、2、3、4、5、6、7、8、9、g、j、J组成的3x2x2张量。该图与上下文紧密相关,直观呈现了各概念的结构,帮助理解它们的层级关系。

先从这里开始,理解它们的层级关系。

  • 标量 就是一个数字,比如 5 或 3.14。
  • 向量 是一串数字,比如 [2, 4, 7]。
  • 矩阵 是一个二维数字网格,本质上就是行和列。
  • 张量 是更一般化的形式,可以是 3D、4D 甚至更高维。在深度学习里,一批图像通常就是 4D 张量(batch、channel、height、width)。

为什么这很重要:你写的每一个 PyTorch 或 TensorFlow 程序都会用到这些。如果你不知道自己数据的 shape,你会在 debug 上浪费大量时间。

2. 向量运算

你要学会:

  • 两个向量相加
  • 向量与标量相乘
  • 求向量的长度,也就是 magnitude 或 norm
  • 理解它的几何意义,也就是向量在空间中指向某个方向

norm 这个概念会一遍又一遍出现。L1 norm、L2 norm,它们会出现在 regularization 和 loss function 里。

3. 点积

这一项非常关键。点积告诉你两个向量有多相似。它是 cosine similarity 的基础,而 cosine similarity 从搜索引擎、推荐系统,到 Transformer 里的 attention,几乎无处不在。

练到你闭着眼都能算点积。

4. 矩阵运算

  • 矩阵加法
  • 矩阵上的标量乘法
  • 矩阵乘法(这一项最关键)
  • 矩阵转置

矩阵乘法不是逐元素乘法。这里会卡住非常多初学者。你应该在这部分多花点时间。真正理解为什么维度必须匹配,也就是为什么 (m x n) 乘 (n x p) 才能得到 (m x p)。


Phase 2:你真正会用到的构件

现在我们进入那些会在真实 ML 代码里出现的东西。

5. 特殊矩阵

下面这些名字要认识:

  • 单位矩阵:矩阵世界里的数字 1
  • 对角矩阵:只有主对角线有值,其余位置都是 0
  • 对称矩阵:等于它自己的转置
  • 正交矩阵:它的转置等于它的逆

你会在 covariance matrices、attention masks 和旋转操作里不断看到它们。

6. 矩阵逆

不是每个矩阵都有逆。没有逆的矩阵叫 singular matrix。在 ML 里,我们很少直接去算逆,因为它又慢又不稳定。但理解这个概念,可以帮你读懂论文里的公式。

你需要知道 determinant 是什么,以及为什么 determinant 为 0 意味着没有逆。

7. 线性无关与秩

如果你有一组向量,其中有些向量本质上只是别的向量的重复表达,那这就是线性无关要回答的问题。矩阵的 rank 则告诉你,它到底有多少个真正独立的方向。

这在 PCA 中很重要,也会帮助你理解人们常说的那句“数据位于一个更低维的流形上”。rank 就藏在这句听起来很高级的话背后。

8. Span、Basis 和 Subspaces

你可以把 basis 理解成:描述一个空间所需的最小向量集合。就像在地图上,你只需要“南北”和“东西”两个方向,就能描述任意位置。

理解这一点之后,你在看 embeddings 时会更清楚。一个维度为 768 的词向量,本质上就是把每个词放进一个 768 维空间里,而这个空间是由一组 basis 定义出来的。


Phase 3:ML 里真正重要的部分

现在开始进入真正驱动 ML 算法的核心部分。

9. 特征值与特征向量

我知道,这个名字听起来有点吓人。但核心思想其实很简单。

当你把一个矩阵作用在一个向量上时,通常这个向量会同时被拉伸和旋转。特征向量则是那些特殊的向量,它们只会被拉伸,不会被旋转。拉伸的倍数就是特征值。

为什么你要关心它:

  • PCA(降维)用到了 covariance matrix 的特征向量
  • PageRank(Google 早期算法)本质上是一个特征向量问题
  • Spectral clustering 用到了特征分解
  • 理解神经网络训练稳定性时,会涉及 Hessian 的特征值

这部分值得你认真投入时间。去看 3Blue1Brown 的视频吧。免费的,而且真的是网上最好的资源之一。

10. 奇异值分解(SVD)

如果要我只选一个“应用线性代数里对 ML 最重要的概念”,我会选 SVD。它可以把任意一个矩阵,不管形状、不管大小,都拆成三个更简单的矩阵。

它在 ML 中的用途包括:

  • 低秩近似,也就是矩阵压缩
  • 推荐系统(Netflix Prize 时代的很多算法都在用)
  • 数据去噪
  • 理解大语言模型微调中的 LoRA
  • 伪逆计算

如果说特征分解已经很酷,那么 SVD 更酷,因为它适用于所有矩阵,而不仅仅是方阵。

11. 矩阵分解

它和 SVD 有关,但范围更广。核心思想是把一个大矩阵拆成几个更小的矩阵,这些小矩阵相乘之后,可以近似恢复原矩阵。

这正是 collaborative filtering 的基础。它同样也会出现在 LoRA 里:我们把权重更新近似成两个更小矩阵的乘积,从而在 fine-tuning 时节省显存。

广告媒流(小程序)-爆款监控

12. 再看 Norm

这时你应该对 norm 再深入一些:

  • L1 norm(绝对值之和),在 Lasso regression 中用来鼓励稀疏性
  • L2 norm(通常说的长度),在 Ridge regression 和 weight decay 中很常见
  • 矩阵的 Frobenius norm
  • Infinity norm

它们各自拥有不同的性质,而这些性质会直接影响 optimization 和 regularization。


Phase 4:微积分与线性代数之间的桥梁

ML 真正发生的地方就在这里。单独的线性代数并不能训练模型,但它一旦和微积分结合起来,就会变成 gradient descent。

13. 梯度与 Jacobian

gradient 是偏导数组成的向量。Jacobian 是向量值函数的偏导数组成的矩阵。神经网络中的 backpropagation,本质上就是一连串 Jacobian-vector product。

你不一定需要手推这些东西,PyTorch 会通过 autograd 帮你算好,但你必须知道它们在表示什么。

14. Hessian 矩阵

这是由二阶导数组成的矩阵。它的特征值会告诉你 loss landscape 的曲率。二阶优化方法,比如 Newton’s method,会直接用到它。深度学习里我们通常只做近似,因为完整 Hessian 的计算成本太高。

15. 矩阵形式的链式法则

Backprop 本质上就是把 chain rule 用在矩阵上。一旦你看清这一点,神经网络就不再神秘,它不过是“作用在矩阵上的微积分”。


Phase 5:进阶主题(按需学习)

在真正碰到它们之前,不必给自己太大压力。但知道它们的存在,会很有帮助。

16. 张量运算

  • Broadcasting,也就是 NumPy 和 PyTorch 如何处理 shape mismatch
  • Einstein summation,也就是 einsum,学会之后你会写出更干净的代码
  • Contractions 和 reshape

说真的,einsum 基本算是一种超能力。去学它。

17. 矩阵微积分恒等式

对常见矩阵表达式求导时,有一批非常经典的恒等式。准备一份 cheat sheet 很有用。《The Matrix Cookbook》这份免费 PDF 一直都是经典参考。

18. 正定矩阵

这类矩阵满足:对所有非零向量 x,都有 x^T A x > 0。它们会出现在:

  • covariance matrices(总是 positive semi-definite)
  • Gaussian processes
  • convex optimization
  • kernel methods

19. 数值线性代数

当规模变大之后,计算机究竟是如何执行这些计算的,也会变得重要。比如:

  • condition number,也就是你的计算稳定性如何
  • LU 和 QR 分解
  • 迭代方法

只有当你在做重度优化工作,或者自己写线性代数底层代码时,才需要往这里深钻。


Phase 6:它们究竟在 ML 的哪里出现

我把每个主题和真实 ML 任务做个映射,这样你会更清楚学完之后到底能用在哪里。

线性回归:矩阵乘法、矩阵逆(或通过 SVD 得到的伪逆)、用于 regularization 的 norm。

逻辑回归与神经网络:每一层都在做矩阵乘法,通过 Jacobian 得到梯度,用 norm 做 weight decay。

PCA:covariance matrix 的特征向量,或者等价地说,数据矩阵的 SVD。

Transformer 与 Attention:大量矩阵乘法、用于 attention score 的点积,以及在这些分数上的 softmax。

扩散模型:线性变换与噪声结合,稳定性分析里会出现特征值。

推荐系统:矩阵分解、SVD、低秩近似。

图神经网络:邻接矩阵、Laplacian 矩阵、特征分解(spectral methods)。

LoRA 微调:低秩分解。你实际上是在学习两个小矩阵 A 和 B,使它们的乘积可以近似一个权重更新。


到底该怎么学

光看是不够的。你需要:

  1. 自己写代码。 用 Python 从零实现矩阵乘法。对一张小图片做 SVD,再用更少的成分把它重建出来。亲眼看着降维在你面前发生。
  2. 先手算,再放大规模。 一个手推的 2x2 矩阵计算,教给你的东西,比一百次 np.matmul 调用都更多。
  3. 可视化。 3Blue1Brown 的《Essence of Linear Algebra》系列是必看内容。我不是开玩笑,真的去看。
  4. 把它放进项目里。 做一个简单推荐系统,对某个数据集做 PCA,从零训练一个小型神经网络。只有理论、没有实践,一周内你就会忘掉。
  5. 去读带数学公式的论文。 从简单一点的开始。逼着自己不要跳过公式。把公式写下来,试着理解每个符号到底代表什么。

真正值得看的资源

  • 3Blue1Brown 的 Essence of Linear Algebra(YouTube,免费):视觉直觉这块,几乎无人能敌。
  • Gilbert Strang 的 MIT OCW 课程:传奇本人授课。比较花时间,但确实是黄金标准。
  • Deisenroth、Faisal 和 Ong 的《Mathematics for Machine Learning》:网上有免费 PDF,而且就是专门为 ML 写的。

除非你真的很享受那种纯理论、没有 ML 语境的内容,否则尽量避开那类书。时间是有限的。


最后的建议

不要试图一口气把这些全学完。真的,不要。你会很快 burnout,然后从此讨厌数学。

更好的方式是:先把 Phase 1 和 Phase 2 学扎实,再去碰任何 ML。然后开始做一个简单的 ML 项目,比如从零实现 linear regression。当你碰到自己不理解的地方时,再回来学 Phase 3 或 Phase 4。然后重复这个过程。

目标不是背定理。

目标是当你写下 model.forward(x) 时,真正知道内部发生了什么。 线性代数会给你这种“X 光视角”。

另外,如果你要花上几个月才吃透这些,也完全不用自责。我自己有些内容也是花了很多年才真正理解。到现在我也还会 Google。大家都会。

如果你一时想不起来 Jacobian 是什么,这不代表你笨,只是你有一阵子没用到它而已。

继续学下去。继续做东西。继续把东西搞坏。再把它修好。

这就是唯一的路径。