零门槛速览:
① 不讲一页堆满希腊字母的“天书”;
② 每概念配“生活梗”+“可运行代码”,复制即出图;
③ 读完你能:

  • 徒手写出梯度下降更新式;

  • 用 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

  1. Q、K、V 本质:

    • 输入 X 做 3 次线性投影 → 新坐标系;

  2. QK^T:

    • 点积 = 相似度,再除以 √d_k 防止梯度消失(方差守恒);

  3. Softmax:

    • 把相似度变概率(行和=1);

  4. @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 工业暗坑小贴士

  1. 方差膨胀:BatchNorm / LayerNorm 前先 减均值 → 梯度稳定;

  2. 类别变量:one-hot 后矩阵稀疏,用 嵌入层 降维 → 参数量↓;

  3. 学习率 warm-up:先小后大再大,防止初始梯度爆炸

  4. 随机种子:Python、NumPy、PyTorch 三套都要 seed_everything(42),否则复现失败;

  5. 混合精度: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,
就会会心一笑:哦,原来只是方差守恒的除法。”

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐