机器学习数学基础
机器学习的核心是数学。本文整理 ML 必备的数学知识,聚焦于实际应用。
概览:数学与 ML 的对应关系
┌─────────────────────────────────────────────────────────────────┐
│ 机器学习数学体系 │
│ │
│ 线性代数 微积分 概率统计 优化 │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ 数据表示 梯度计算 不确定性 参数学习 │
│ 特征变换 反向传播 贝叶斯推断 损失最小化 │
│ 降维/PCA 链式法则 分布建模 收敛分析 │
│ │
└─────────────────────────────────────────────────────────────────┘
| 数学分支 | ML 应用 |
|---|---|
| 线性代数 | 数据表示、特征变换、降维、注意力机制 |
| 微积分 | 梯度下降、反向传播、优化 |
| 概率统计 | 贝叶斯推断、分布建模、不确定性估计 |
| 优化理论 | 损失函数、收敛性、正则化 |
1. 线性代数
1.1 向量与矩阵
向量:有序数列,表示数据点或特征
矩阵:二维数组,表示数据集或变换
ML 中的应用:
| 概念 | 示例 |
|---|---|
| 样本 | 一个向量 |
| 数据集 | 矩阵 (n 个样本,d 维特征) |
| 权重 | 矩阵 |
| 图像 | 张量 |
1.2 向量运算
点积(内积):
ML 应用:
- 相似度计算(余弦相似度)
- 神经网络的线性层:
import numpy as np
# 点积
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
dot_product = np.dot(a, b) # 32
# 余弦相似度
cos_sim = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))范数:向量的”长度”
| 范数 | 定义 | 用途 |
|---|---|---|
| L1 范数 | 稀疏正则化(Lasso) | |
| L2 范数 | 权重衰减(Ridge) | |
| L∞ 范数 | 对抗样本 |
1.3 矩阵运算
矩阵乘法:
ML 应用:全连接层
# 矩阵乘法
X = np.random.randn(32, 784) # 32 个 784 维样本
W = np.random.randn(784, 128) # 线性变换
Y = X @ W # (32, 128)转置:
常用性质:
1.4 特征值与特征向量
定义:对于方阵 ,若存在非零向量 和标量 使得:
则 是特征值, 是特征向量。
几何意义:特征向量是变换后方向不变的向量,特征值是拉伸倍数。
ML 应用:
- PCA:用协方差矩阵的特征向量做降维
- 谱聚类:用拉普拉斯矩阵的特征向量
# 特征分解
A = np.array([[3, 1], [1, 3]])
eigenvalues, eigenvectors = np.linalg.eig(A)
# eigenvalues: [4, 2]
# eigenvectors: 每列是一个特征向量1.5 奇异值分解(SVD)
定义:任意矩阵 可分解为:
其中:
- :左奇异向量(正交)
- :奇异值(对角,降序)
- :右奇异向量(正交)
ML 应用:
- 降维:保留前 k 个奇异值
- 推荐系统:矩阵分解
- 图像压缩
# SVD
A = np.random.randn(100, 50)
U, S, Vt = np.linalg.svd(A, full_matrices=False)
# 低秩近似(保留前 10 个奇异值)
k = 10
A_approx = U[:, :k] @ np.diag(S[:k]) @ Vt[:k, :]1.6 正定矩阵
定义:对于对称矩阵 ,若对所有非零向量 :
则 是正定的。
判断方法:所有特征值为正
ML 应用:
- 协方差矩阵(半正定)
- 核矩阵
- 凸优化
2. 微积分
2.1 导数与梯度
导数:函数在某点的变化率
偏导数:多变量函数对某一变量的导数
梯度:所有偏导数组成的向量
几何意义:梯度指向函数增长最快的方向
2.2 常用导数公式
| 函数 | 导数 |
|---|---|
激活函数导数:
| 激活函数 | 公式 | 导数 |
|---|---|---|
| Sigmoid | ||
| Tanh | ||
| ReLU | ||
| Softmax | 见 Jacobian 矩阵 |
2.3 链式法则(Chain Rule)
核心:复合函数求导
多变量形式:
ML 应用:反向传播的数学基础
前向传播: x → h = Wx → a = σ(h) → L = loss(a, y)
反向传播(链式法则):
∂L/∂W = ∂L/∂a · ∂a/∂h · ∂h/∂W
2.4 雅可比矩阵与海森矩阵
雅可比矩阵:向量值函数的一阶导数
海森矩阵:二阶导数矩阵
ML 应用:
- 雅可比:神经网络层间梯度传播
- 海森:二阶优化(Newton 法)、曲率分析
2.5 自动微分
核心思想:利用链式法则自动计算梯度
import torch
# 定义变量,启用梯度
x = torch.tensor([2.0, 3.0], requires_grad=True)
W = torch.tensor([[1.0, 2.0], [3.0, 4.0]], requires_grad=True)
# 前向传播
y = W @ x
loss = y.sum()
# 反向传播(自动计算梯度)
loss.backward()
print(W.grad) # ∂loss/∂W
print(x.grad) # ∂loss/∂x2.6 矩阵求导(Matrix Calculus)
重要:这是理解线性回归、神经网络梯度推导的核心知识。
基本记号
| 类型 | 输入 | 输出 | 结果形状 |
|---|---|---|---|
| 标量对向量 | |||
| 向量对向量 | (雅可比) | ||
| 标量对矩阵 |
常用公式(标量对向量)
| 函数 | 梯度 | 说明 |
|---|---|---|
| 线性函数 | ||
| 同上(标量) | ||
| L2 范数平方 | ||
| 二次型 | ||
| 最小二乘 |
向量对向量(雅可比矩阵)
| 函数 | 雅可比 |
|---|---|
线性回归推导示例
损失函数:
展开:
求梯度(利用公式):
令梯度为零,得正规方程:
记忆技巧
- 维度匹配:结果形状必须与被求导变量相同
- 转置规则:
- 链式法则:
- 标量技巧:标量的转置等于自身,
参考资源
- The Matrix Cookbook - 矩阵求导公式大全
- Matrix Calculus (Wikipedia)
3. 概率与统计
3.1 基本概念
概率:事件发生的可能性
条件概率:
独立性:
贝叶斯定理:
ML 解释:
| 术语 | 含义 |
|---|---|
| 先验(Prior) | |
| 似然(Likelihood) | |
| 后验(Posterior) |
3.2 期望与方差
期望(均值):
方差:
标准差:
协方差:
相关系数:
3.3 常见概率分布
离散分布
| 分布 | 参数 | 概率质量函数 | 用途 |
|---|---|---|---|
| 伯努利 | 二分类 | ||
| 二项 | n 次实验中成功次数 | ||
| 多项 | 多分类 | ||
| 泊松 | 计数数据 |
连续分布
| 分布 | 参数 | 概率密度函数 | 用途 |
|---|---|---|---|
| 均匀 | 随机初始化 | ||
| 正态(高斯) | 连续值建模 | ||
| 指数 | 时间间隔 |
高斯分布的重要性:
- 中心极限定理:大量独立随机变量之和趋向正态
- 最大熵原理:给定均值和方差,高斯熵最大
- 数学性质好:共轭性、解析解
import numpy as np
from scipy import stats
# 高斯分布
mu, sigma = 0, 1
x = np.linspace(-4, 4, 100)
pdf = stats.norm.pdf(x, mu, sigma)
# 采样
samples = np.random.normal(mu, sigma, size=1000)3.4 最大似然估计(MLE)
目标:找到使观测数据概率最大的参数
取对数(方便计算):
示例:高斯分布
观测数据 ,估计均值:
与损失函数的关系:
| 分布假设 | 对应损失函数 |
|---|---|
| 高斯 | MSE(均方误差) |
| 伯努利 | Binary Cross-Entropy |
| 多项 | Cross-Entropy |
3.5 信息论基础
信息熵:随机变量的不确定性
交叉熵:用 q 编码 p 的平均编码长度
KL 散度:分布差异度量
ML 应用:
- 分类损失:交叉熵
- VAE:KL 散度正则化
- 知识蒸馏:软标签对齐
4. 优化理论
4.1 梯度下降
核心思想:沿梯度反方向更新参数
其中 是学习率。
变体:
| 方法 | 更新规则 | 特点 |
|---|---|---|
| SGD | 基础版本 | |
| Momentum | | 加速、减少震荡 |
| AdaGrad | 自适应学习率(累积梯度平方) | 稀疏数据 |
| RMSprop | 指数移动平均梯度平方 | 解决 AdaGrad 衰减 |
| Adam | Momentum + RMSprop | 最常用 |
Adam 更新规则:
import torch.optim as optim
# 常用优化器
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.9)
optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))
optimizer = optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01)4.2 凸优化
凸函数定义:
重要性质:
- 局部最优 = 全局最优
- 梯度下降保证收敛
判断方法:海森矩阵半正定()
常见凸函数:
非凸优化(深度学习):
- 损失函数非凸
- 可能陷入局部最优
- 实践中效果良好(鞍点、平坦极小值)
4.3 正则化
L2 正则化(权重衰减):
梯度更新:
L1 正则化(Lasso):
特点:产生稀疏解(部分权重为 0)
贝叶斯视角:
| 正则化 | 等价先验 |
|---|---|
| L2 | 高斯先验 |
| L1 | 拉普拉斯先验 |
4.4 学习率调度
| 策略 | 公式 | 特点 |
|---|---|---|
| Step Decay | 阶梯下降 | |
| Cosine Annealing | 平滑下降 | |
| Warmup | 前 N 步线性增长 | 稳定初期训练 |
| One Cycle | 先升后降 | 快速收敛 |
from torch.optim.lr_scheduler import CosineAnnealingLR, OneCycleLR
scheduler = CosineAnnealingLR(optimizer, T_max=100, eta_min=1e-6)
scheduler = OneCycleLR(optimizer, max_lr=0.01, total_steps=1000)5. 实践速查
5.1 NumPy 常用操作
import numpy as np
# 创建
a = np.array([1, 2, 3])
A = np.zeros((3, 4))
B = np.ones((3, 4))
I = np.eye(3) # 单位矩阵
R = np.random.randn(3, 4) # 标准正态
# 基本运算
C = A @ B.T # 矩阵乘法
d = np.dot(a, a) # 点积
norm = np.linalg.norm(a) # 范数
# 线性代数
det = np.linalg.det(I) # 行列式
inv = np.linalg.inv(I) # 逆矩阵
vals, vecs = np.linalg.eig(I) # 特征分解
U, S, Vt = np.linalg.svd(A) # SVD
# 统计
mean = np.mean(R)
std = np.std(R)
cov = np.cov(R)5.2 PyTorch 张量操作
import torch
# 创建
x = torch.tensor([1.0, 2.0, 3.0])
X = torch.randn(3, 4)
# 梯度
x = torch.randn(3, requires_grad=True)
y = (x ** 2).sum()
y.backward()
print(x.grad)
# 广播
a = torch.randn(3, 1)
b = torch.randn(1, 4)
c = a + b # (3, 4)
# 常用函数
softmax = torch.softmax(X, dim=-1)
log_softmax = torch.log_softmax(X, dim=-1)5.3 学习资源推荐
书籍:
- 《Mathematics for Machine Learning》— 免费在线,系统全面
- 《Linear Algebra Done Right》— 线性代数理论
- 《Pattern Recognition and Machine Learning》— 概率视角
课程:
- MIT 18.06 Linear Algebra(Gilbert Strang)
- Stanford CS229 Machine Learning(数学部分)
- 3Blue1Brown(可视化讲解)
在线工具:
- Desmos(函数可视化)
- GeoGebra(几何可视化)
- WolframAlpha(符号计算)
6. 速查表
6.1 线性代数速查
| 概念 | 符号/公式 | 说明 |
|---|---|---|
| 点积 | 相似度 | |
| L2 范数 | 向量长度 | |
| 矩阵乘法 | 线性变换 | |
| 转置 | 行列互换 | |
| 逆矩阵 | 逆变换 | |
| 特征值 | 不变方向 | |
| SVD | 通用分解 |
6.2 微积分速查
| 概念 | 公式 | 说明 |
|---|---|---|
| 链式法则 | 复合函数求导 | |
| 梯度 | 最速上升方向 | |
| Sigmoid 导数 | 激活函数梯度 | |
| Softmax + CE | 简洁梯度 |
6.3 概率统计速查
| 概念 | 公式 | 说明 |
|---|---|---|
| 贝叶斯 | 后验推断 | |
| 期望 | 平均值 | |
| 方差 | 离散程度 | |
| 高斯 | 最常用分布 | |
| 交叉熵 | 分类损失 | |
| KL 散度 | 分布差异 |
相关笔记
- 机器学习 / 深度学习
- 机器学习入门路线图
- 神经网络 / Transformer