Appearance
第1章 线性代数 — 机器学习之基石
Chapter 1: Linear Algebra — The Foundation of Machine Learning
线性代数是机器学习的数学语言。 从数据表示(向量/矩阵)到模型训练(梯度/优化),再到高级技术(PCA/降维),线性代数贯穿始终。本章只讲 ML 最必需的 主题,确保你理解几何直觉之后再接触数学公式,并用 NumPy 逐一验证。
Linear Algebra is the language of Machine Learning. From data representation (vectors/matrices) to model training (gradients/optimization) and advanced techniques (PCA/dimensionality reduction), linear algebra is everywhere. This chapter covers only ML-essential topics — geometric intuition first, mathematics second, NumPy verification always.
前置知识 (Prerequisites): 高中数学(向量基本概念、函数求导) 依赖库 (Dependencies): numpy, scipy, matplotlib
目录 (Table of Contents)
- 向量与向量空间 (Vectors & Vector Spaces)
- 矩阵及其运算 (Matrix Operations)
- 特征值与特征向量 (Eigenvalues & Eigenvectors)
- 奇异值分解 SVD (Singular Value Decomposition)
- 矩阵微积分 (Matrix Calculus)
1. 向量与向量空间 (Vectors & Vector Spaces)
1.1 几何直觉 (Geometric Intuition)
向量是既有大小又有方向的量。在二维平面上,一个向量可以看作从原点指向某点的箭头:
这个箭头在
为什么 ML 需要向量? 在机器学习中,每个样本(sample)就是一个向量。例如:
- 房价预测:
[面积, 卧室数, 楼层, 房龄]→ 4 维向量 - 图像识别:一张 28×28 像素的灰度图 → 784 维向量
- NLP:一个词 "apple" → 300 维词向量 (word embedding(/ɪmˈbedɪŋ/))
1.2 数学定义 (Mathematical Definition)
定义 1 (向量): 向量
定义 2 (向量空间): 向量空间
- 加法封闭:
- 数乘封闭:
(对任意 )
1.3 点积 (Dot Product)
两个同维度向量的点积是 ML 中最基本的运算之一:
几何意义:
→ 夹角 < 90° (方向相近) → 夹角 = 90° (正交/垂直) → 夹角 > 90° (方向相反)
在 ML 中的应用: 注意力(attention /əˈtenʃən/)机制 (Attention) 的核(kernel /ˈkɜːrnl/)心就是计算 query 与 key 的点积来衡量相似度。
1.4 范数 (Norm)
定义 3 (
最常用的两种:
在 ML 中的应用:
范数用于权重衰减 (weight decay / ridge regression(/rɪˈɡreʃən/)) 范数用于稀疏化 (Lasso regression)
python
import numpy as np
u = np.array([3, 2])
v = np.array([1, 4])
dot_product = np.dot(u, v) # 3*1 + 2*4 = 11
norm_l2 = np.linalg.norm(u) # sqrt(3^2 + 2^2) ≈ 3.606
norm_l1 = np.linalg.norm(u, ord=1) # |3| + |2| = 51.5 线性无关与基 (Linear Independence & Basis)
定义 4 (线性无关): 一组向量
的唯一解是
基 (Basis):
关键洞察: 选择不同的基,就选择了不同的表示方式。 这正是 PCA 和特征分解的核心思想。
2. 矩阵及其运算 (Matrix Operations)
2.1 矩阵的定义 (Definition)
矩阵是二维数组,可以理解为"排列在一起的多个列向量"或"多个行向量":
在 ML 中的应用:
- 数据集 (Dataset): 一个
的矩阵, 个样本,每个样本 个特征 - 权重矩阵 (Weight Matrix): 神经网络的每一层都是一个矩阵乘法
- 协方差矩阵 (Covariance Matrix): 衡量特征间的关系
2.2 矩阵乘法 (Matrix Multiplication)
给定
几何意义: 矩阵乘法可以看作线性变换的复合。矩阵
python
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = A @ B # 或 np.matmul(A, B)
# [[19, 22],
# [43, 50]]2.3 转置 (Transpose)
将矩阵的行和列互换:
重要性质:
2.4 逆矩阵 (Matrix Inverse)
定义 5 (逆矩阵): 对方阵
则
何时不可逆? 当矩阵的行或列线性相关时(行列式为 0)。
python
A = np.array([[1, 2], [3, 4]])
A_inv = np.linalg.inv(A)
# [[-2. , 1. ],
# [ 1.5, -0.5]]
# 验证: A @ A_inv ≈ I
np.allclose(A @ A_inv, np.eye(2)) # True2.5 行列式 (Determinant)
方阵
:变换后空间被放大 :变换后空间被压缩 :变换将空间压扁到低维(矩阵奇异,不可逆) :变换改变了空间定向(镜像翻转)
python
det_A = np.linalg.det(A) # -2.03. 特征值与特征向量 (Eigenvalues & Eigenvectors)
3.1 几何直觉 (Geometric Intuition)
矩阵
是特征向量 (eigenvector) — 方向不变 是特征值 (eigenvalue) — 缩放倍数
想象一下: 把一个矩形图片拉伸。大多数方向上的线段会改变方向,但沿长轴和短轴的方向只改变长度——这些就是特征向量方向。
3.2 如何求解 (How to Solve)
从定义出发:
要求非零解
这个方程称为特征方程 (characteristic equation),是一个关于
3.3 特征分解 (Eigendecomposition)
如果
其中
对对称矩阵的特殊性质: 若
- 所有特征值为实数
- 特征向量可以选为正交的
,其中 是正交矩阵 ( )
python
A = np.array([[2, 1], [1, 2]])
eigvals, eigvecs = np.linalg.eig(A)
print(eigvals) # [3., 1.]
print(eigvecs) # [[ 0.707, -0.707],
# [ 0.707, 0.707]]
# 验证: A @ v = λ v
v = eigvecs[:, 0]
l = eigvals[0]
np.allclose(A @ v, l * v) # True3.4 在 ML 中的应用
- 主成分分析 (PCA): 数据协方差矩阵的最大特征值对应的特征向量就是第一主成分方向
- 谱聚类 (Spectral Clustering): 利用图 Laplacian 矩阵的特征向量进行聚类
- PageRank: 网页排名本质上是一个特征向量问题
- 动力系统: 特征值决定系统的稳定性(所有
则系统稳定)
4. 奇异值分解 SVD (Singular Value Decomposition)
4.1 为什么需要 SVD?
特征分解要求矩阵是方阵。但现实中的数据矩阵几乎都是非方阵(
4.2 SVD 的定义 (Definition)
任意矩阵
:左奇异向量 (left singular vectors),正交矩阵 :奇异值矩阵 (singular values),对角线上 ,其余为 0 :右奇异向量 (right singular vectors),正交矩阵
4.3 几何直觉 (Geometric Intuition)
SVD 将一个线性变换分解为三个步骤:
- 旋转/反射
— 在原始空间中对输入进行旋转 - 缩放
— 沿新坐标轴拉伸/压缩 - 旋转/反射
— 在输出空间中对结果旋转
关键洞察: 奇异值
衡量了该方向上的"重要性"。最大的奇异值对应数据方差最大的方向。
4.4 SVD 与 PCA 的关系
PCA 可以完全通过 SVD 实现,不需要计算协方差矩阵:
- 中心化数据矩阵
(每列减去均值) - 计算 SVD:
- 主成分 =
的列(右奇异向量) - 投影后数据 =
(主成分得分)
为什么 SVD 更稳定? 计算协方差矩阵
4.5 低秩近似 (Low-rank Approximation)
SVD 最重要的应用之一:用前
python
# 低秩近似示例: 用前 2 个奇异值近似 4×4 矩阵
A = np.random.randn(4, 4)
U, S, Vt = np.linalg.svd(A, full_matrices=False)
k = 2
A_k = U[:, :k] @ np.diag(S[:k]) @ Vt[:k, :]
# 检查近似误差
error = np.linalg.norm(A - A_k, 'fro')
print(f"k={k} 近似误差: {error:.4f}")在 ML 中的应用:
- 图像压缩: 保留最大的奇异值,丢弃小奇异值
- 推荐系统: 矩阵分解 (Matrix Factorization) 基于 SVD
- 降维: 用 SVD 实现 PCA,将数据降到
维 - 去噪: 小奇异值通常对应噪声,截断后可去噪
5. 矩阵微积分 (Matrix Calculus)
5.1 为什么需要矩阵微积分?
机器学习中,我们的目标函数通常是标量函数
5.2 标量对向量的导数 (Gradient)
给定
几何意义: 梯度指向函数
5.3 三个关键公式 (Three Essential Formulas)
在 ML 中,你只需要记住以下三个公式(记熟它们,反向传播不再神秘):
公式 1: 线性函数
公式 2: 二次型 (Quadratic Form)
特例 — 若
公式 3: 平方范数 (Squared Norm)
💡 这些公式为什么重要? 线性回归的损失函数
展开后就是一个二次型。用公式 2 求梯度再令其为 0,就能推导出正规方程 (normal equation) 。
5.4 链式法则 (Chain Rule)
若
其中
这就是反向传播的理论基础 ❤️
5.5 示例: 线性回归的梯度推导
损失函数:
展开:
令
所以梯度为:
本章总结 (Chapter Summary)
| 概念 | 数学表达 | ML 应用 | NumPy 关键函数 |
|---|---|---|---|
| 向量 | 样本表示、词嵌入 | np.array() | |
| 点积 | 注意力机制、相似度 | np.dot() | |
| 范数 | 正则化(regularization /ˌreɡjələraɪˈzeɪʃən/) (L1/L2) | np.linalg.norm() | |
| 矩阵乘法 | 神经网络前向传播 | @, np.matmul() | |
| 逆矩阵 | 正规方程 | np.linalg.inv() | |
| 行列式 | 特征值计算 | np.linalg.det() | |
| 特征分解 | PCA、谱聚类 | np.linalg.eig() | |
| SVD | PCA、降维、压缩 | np.linalg.svd() | |
| 梯度 | 梯度下降、反向传播 | 手动推导 |
进一步阅读 (Further Reading)
- Gilbert Strang - Linear Algebra for Everyone
- 3Blue1Brown - Essence of Linear Algebra (YouTube)
- NumPy Linear Algebra Documentation
下一章预告: 概率论与信息论 — 不确定性、熵(entropy /ˈentrəpi/)、KL 散度,为理解交叉熵损失和信息论打下基础。