学习深度学习时,最容易陷入两个极端:只推公式却没有训练过模型,或者只会调用框架却无法解释结果。更有效的方法是让数学、代码和实验同步推进。
第一阶段:建立最小基础
数学部分优先掌握线性代数、微积分与概率统计中会直接用到的概念:矩阵乘法、梯度、链式法则、常见分布与最大似然。编程部分需要熟悉 Python、NumPy、数据可视化,以及张量的形状变化。
一个很好的检查点是:不用自动求导,使用 NumPy 写出线性回归或两层神经网络,并能解释每一步张量的形状。
第二阶段:理解训练循环
比记住模型结构更重要的是理解训练循环:
for features, labels in loader:
optimizer.zero_grad()
predictions = model(features)
loss = criterion(predictions, labels)
loss.backward()
optimizer.step()
围绕这几行代码继续追问:为什么要清空梯度?训练和验证模式有什么区别?学习率过大或过小会出现什么曲线?这些问题能把框架 API 连接到优化原理。
第三阶段:按问题学习模型
- 图像任务:从 MLP 过渡到 CNN,理解卷积、感受野与数据增强;
- 序列任务:从 RNN 的限制出发,再理解 Attention 与 Transformer;
- 表征学习:理解预训练、微调,以及特征迁移为什么有效。
不要把“看完模型结构”当作完成。每个主题至少做一次小实验,并保留训练曲线、错误样本与参数设置。
第四阶段:完成端到端项目
一个完整项目应包含数据检查、划分策略、Baseline、训练监控、误差分析和推理流程。猫狗分类就是合适的起点:任务直观,但足以练习数据增强、CNN、过拟合判断与混淆矩阵分析。
最终产物不只是一份 Notebook,还应有一篇复盘:哪些实验有效,哪些没有,下一步最值得验证的假设是什么。