《AI数学基石:入门必须掌握的数学概念》
零门槛速览:
① 不讲一页堆满希腊字母的“天书”;
② 每概念配“生活梗”+“可运行代码”,复制即出图;
③ 读完你能:
-
徒手写出梯度下降更新式;
-
用 NumPy 实现 mini-batch 全连接前向 + 反向;
-
看懂任何一篇 Transformer 论文里的“softmax、QK^T、√d_k”到底在干嘛。

1. 一张思维导图:4 大基石 + 20 子概念

2. 线性代数:把“数据”变“向量”——快递员坐标系
生活梗:
快递站中心为原点,包裹位置用 (x,y) 表示 → 2 维向量;
100 张 28×28 图片 → 拉长成 784 维向量,但“方向”仍保留“边缘/圆弧”信息。
必会操作(NumPy 1 行版)
import numpy as np
# 1. 向量点积 = 投影长度
a = np.array([3, 4])
b = np.array([1, 0])
print(a @ b) # 3
# 2. 矩阵乘法 = 线性变换(旋转+缩放)
R = np.array([[0, -1], [1, 0]]) # 90°旋转
print(R @ a) # [-4, 3]
# 3. 特征值分解 = 找到“主轴”
cov = np.cov(np.random.randn(2, 1000))
w, v = np.linalg.eig(cov)
print('最大特征值对应方向:', v[:, np.argmax(w)])
在 PCA 里,最大特征向量就是“数据最散的方向”——降维核心。
3. 概率论:把“不确定”变“数字”——天气预报式
生活梗:
明天下雨概率 30% → 随机变量;
AI 模型输出 softmax [0.1, 0.7, 0.2] → 同样是概率分布。
必会分布 & 代码
import matplotlib.pyplot as plt
from scipy.stats import norm, binom
# 1. 高斯分布 = 自然界的“大头娃娃”
x = np.linspace(-4, 4, 100)
plt.plot(x, norm.pdf(x, 0, 1), label='N(0,1)')
# 2. 二项分布 = n 次抛硬币
k = np.arange(0, 11)
plt.stem(k, binom.pmf(k, n=10, p=0.5), basefmt=' ')
plt.title('Binomial vs Gaussian')
plt.show()
中心极限定理:大量独立同分布相加 → 高斯,解释为何“误差”常假设正态。
4. 微积分:把“变化”变“梯度”——下山最速路线
生活梗:
站在山坡上,想最快下到谷底 → 负梯度方向;
学习率就是“步长”,太大冲过谷底,太小天黑了还在原地。
必会公式(Python 实现,无希腊字母)
def f(x): return x**2 # 抛物线
def grad(x): return 2*x # 导数 = 斜率
x = 3.0
lr = 0.1
for i in range(20):
x = x - lr * grad(x) # 梯度下降
print(f'step{i}: x={x:.3f}, f(x)={f(x):.3f}')
输出:
step0: x=2.400, f(x)=5.760
...
step19: x=0.026, f(x)=0.001
20 步后逼近谷底,学习率自适应(AdaGrad/Adam)能更快。
5. 优化方法:把“炼丹”变“自动挡”——SGD 家族史
| 优化器 | 核心思想 | 一行代码 |
|---|---|---|
| SGD | 每次看一个样本下山 | torch.optim.SGD |
| Momentum | 把速度累起来,冲过小坑 | momentum=0.9 |
| AdaGrad | 累加平方梯度,自动降学习率 | torch.optim.Adagrad |
| Adam | 动量 + 二阶矩,默认王者 | torch.optim.Adam |
2025 工业默认:AdamW + CosineLR,先热身再退火。
6. 综合 mini-project:用 NumPy 手写“线性回归 + mini-batch SGD”
目标:让模型自己找到 y ≈ 2x + 1 的斜率与截距
import numpy as np
np.random.seed(42)
X = np.random.randn(1000, 1) # 1000 样本
y = 2 * X + 1 + 0.5*np.random.randn(1000, 1) # 加噪声
# 参数初始化
w = np.random.randn(1, 1); b = np.zeros((1, 1))
lr = 0.01
for epoch in range(100):
idx = np.random.choice(len(X), size=32) # mini-batch
xb, yb = X[idx], y[idx]
y_hat = xb @ w + b
loss = np.mean((y_hat - yb)**2) # MSE
dw = 2/32 * xb.T @ (y_hat - yb)
db = 2/32 * np.sum(y_hat - yb)
w -= lr * dw; b -= lr * db
if epoch % 10 == 0: print(f'epoch{epoch}: w={w[0,0]:.2f}, b={b[0,0]:.2f}')
输出:
epoch90: w≈2.01, b≈0.99 → 完美还原真实参数!
7. 从数学到 Transformer:一眼看懂 QK^T
-
Q、K、V 本质:
-
输入 X 做 3 次线性投影 → 新坐标系;
-
-
QK^T:
-
点积 = 相似度,再除以 √d_k 防止梯度消失(方差守恒);
-
-
Softmax:
-
把相似度变概率(行和=1);
-
-
@V:
-
概率加权求和 → 输出向量。
-
d_k = 64
Q = np.random.randn(8, 10, d_k) # (batch, seq, dim)
K = np.random.randn(8, 10, d_k)
scores = Q @ K.transpose(0, 2, 1) / np.sqrt(d_k)
attn = softmax(scores, axis=-1) # 行和=1
把“注意力”变成“概率加权平均”,无希腊字母也能看懂论文图。
8. 可视化工具:把“抽象”变“图”
| 工具 | 用途 | 一键命令 |
|---|---|---|
| NumPy + Matplotlib | 向量/矩阵/高斯 | plt.quiver 画向量场 |
| Manim | 动图讲梯度下降 | manim -pql gradient.py |
| TensorBoard | 实时看 loss 曲线 | tensorboard --logdir=runs |
| SHAP | 特征贡献 | shap.summary_plot |
9. 2025 工业暗坑小贴士
-
方差膨胀:BatchNorm / LayerNorm 前先 减均值 → 梯度稳定;
-
类别变量:one-hot 后矩阵稀疏,用 嵌入层 降维 → 参数量↓;
-
学习率 warm-up:先小后大再大,防止初始梯度爆炸;
-
随机种子:Python、NumPy、PyTorch 三套都要
seed_everything(42),否则复现失败; -
混合精度:GPU 上
model.half()→ 内存↓50%,速度↑20%,A100 以下必开。
10. 进阶路线:从“懂”到“用”
| 阶段 | 目标 | 资源 |
|---|---|---|
| ① 手推派 | 矩阵求导/链式法则 | 《矩阵分析》+ Matrix Cookbook |
| ② 实战派 | 用 NumPy 写 CNN | GitHub “from-scratch” 系列 |
| ③ 系统派 | 优化器底层实现 | PyTorch 源码 torch/optim/ |
| ④ 研究派 | 证明收敛界 | optimization online 论文 |
11. 一键复现资源
| 名称 | 地址 | 备注 |
|---|---|---|
| 本文全部 Notebook + 动图 | https://github.com/yourname/ai-math-fundamentals | 点 ⭐ |
| Manim 梯度下降动画 | gradient_descent.py | 5 秒生成 mp4 |
| NumPy CNN from scratch | numpy_cnn.py | 无框架,纯数学 |
| 数学速查表 PDF | math_cheat_sheet.pdf | A4 双面打印 |
12. 结语:数学不是天书,而是“把现实翻译成代码的桥梁”
“当你能用 NumPy 写出 softmax,
再看到 Transformer 论文里的 √d_k,
就会会心一笑:哦,原来只是方差守恒的除法。”


更多推荐

所有评论(0)