《动手学深度学习》系统学习方案
动手学深度学习使用指南
面向“理论基础补强 + 独立编程 + CV科研迁移”的学习路线
适用对象:已有一定人工智能/计算机视觉项目与科研经历,希望系统补齐深度学习理论、减少对 AI 编程依赖,并把基础知识迁移到论文研究与后续保研面试中的本科生。
核心教材:《动手学深度学习》(Dive into Deep Learning, D2L)
推荐框架:PyTorch
建议周期:10~12 周
建议投入:每周 8~12 小时
核心原则:不是“把书看完”,而是“把知识变成自己能解释、能推导、能写、能实验、能迁移的能力”。
1. 先回答:现在学《动手学深度学习》合适吗?
1.1 结论:非常合适,但必须换一种学法
如果你的目标只是“会调用 PyTorch 跑模型”,那么没有必要系统学完整本 D2L。
但如果你的目标是:
- 补齐深度学习理论基础;
- 理解自己论文中模型为什么有效;
- 能独立修改网络,而不是只会让 AI 改代码;
- 能看懂新的 CV / 多模态论文;
- 在科研讨论中能够解释模型、损失函数和实验设计;
- 为保研面试、研究生阶段科研打基础;
- 后续继续学习 Transformer、多模态、大模型、AI Agent;
那么 D2L 很适合作为当前阶段的主教材。
你现在最需要解决的,不是“再学一个新模型”,而是把过去项目中零散接触的知识重新组织成一个完整体系:
数学基础
↓
张量与自动微分
↓
线性模型 / MLP
↓
损失函数与优化
↓
泛化 / 正则化
↓
CNN
↓
经典网络与 ResNet
↓
Attention / Transformer
↓
训练技巧与实验设计
↓
迁移到自己的科研问题 2. 学习目标:五层能力
不要把目标写成“12周学完一本书”,而是建立五层能力。
Level 1:概念理解
看到一个概念,例如梯度下降、Batch Normalization、Dropout、残差连接、Cross Entropy、Attention、Adam,你都要能回答:
- 它解决什么问题?
- 为什么会出现这个问题?
- 它是怎么解决的?
- 数学形式是什么?
- 有什么局限?
Level 2:数学理解
至少做到:
- 看懂公式;
- 知道变量维度;
- 理解每一项的作用;
- 能完成核心推导;
- 知道公式和代码之间如何对应。
必须重点掌握:
Softmax
Cross Entropy
梯度下降
链式法则
反向传播
卷积输出尺寸
BatchNorm
Attention Level 3:代码实现
每一个核心模型至少经历三层实现。
第一层:From Scratch
尽量不用高级封装,理解原理。
第二层:PyTorch 标准实现
熟悉:
nn.Module
nn.Linear
nn.Conv2d
nn.CrossEntropyLoss
torch.optim
DataLoader 第三层:独立重构
关掉教材,不复制代码,从空文件开始写:
数据读取
模型定义
损失函数
优化器
训练循环
验证循环
指标统计
模型保存 第三层做不到,就说明还没有真正掌握。
Level 4:实验分析
你需要能解释:
- 为什么训练损失下降但验证损失上升?
- 为什么学习率过大会震荡?
- 为什么 Dropout 能缓解过拟合?
- 为什么 ResNet 比单纯堆叠更容易训练?
- 为什么 Adam 收敛快但泛化不一定最好?
- 为什么数据增强可能改善验证性能?
Level 5:科研迁移
看到自己模型中的:
backbone
attention
fusion
loss
optimizer 继续追问:
为什么选这个 backbone?
为什么需要这个模块?
梯度如何传播?
模块引入了什么归纳偏置?
损失函数与任务目标是否一致?
性能提升来自结构本身还是训练策略?
实验是否真的证明了创新点? 3. 学习前的知识准备
原则:用到什么,补什么。
3.1 线性代数
必须掌握:
- 标量、向量、矩阵、张量;
- 矩阵乘法;
- 转置;
- 点积;
- 范数;
- 广播;
- Hadamard product;
- shape 变化。
例如:
X: [batch_size, input_dim]
W: [input_dim, output_dim]
Y = XW + b
Y: [batch_size, output_dim] 达到看到公式就能判断 shape。
3.2 微积分
必须掌握:
- 导数;
- 偏导;
- 梯度;
- 链式法则;
- 多变量函数求导。
核心理解:
表示损失函数对参数变化的敏感程度。
3.3 概率统计
重点:
- 随机变量;
- 期望与方差;
- 常见分布;
- 最大似然;
- 条件概率;
- 训练/验证/测试;
- 过拟合;
- 泛化误差。
对于你的癌症预后研究,后续还要单独补:
Survival Function
Hazard Function
Censoring
Kaplan-Meier
Cox Model
C-index 这些不是 D2L 的主体内容。
4. 建立自己的深度学习知识树
建议在 GitHub + Markdown/Obsidian 中维护:
Deep Learning
│
├── Mathematical Foundation
│ ├── Linear Algebra
│ ├── Calculus
│ └── Probability
│
├── Fundamentals
│ ├── Tensor
│ ├── Autograd
│ ├── Computational Graph
│ └── Backpropagation
│
├── Basic Models
│ ├── Linear Regression
│ ├── Softmax Regression
│ └── MLP
│
├── Training
│ ├── Loss Function
│ ├── Optimization
│ ├── Initialization
│ ├── Regularization
│ └── Generalization
│
├── CNN
│ ├── Convolution
│ ├── Padding
│ ├── Stride
│ ├── Pooling
│ └── Receptive Field
│
├── CNN Architecture
│ ├── LeNet
│ ├── AlexNet
│ ├── VGG
│ ├── GoogLeNet
│ ├── BatchNorm
│ ├── ResNet
│ └── DenseNet
│
├── Sequence Model
│ ├── RNN
│ ├── LSTM
│ └── GRU
│
├── Attention
│ ├── Attention
│ ├── Self-Attention
│ ├── Multi-Head Attention
│ ├── Positional Encoding
│ └── Transformer
│
└── Research
├── Experiment Design
├── Ablation Study
├── Hyperparameter
├── Reproducibility
└── Error Analysis 5. 学习优先级:不要平均用力
S级:必须彻底掌握
Tensor
Autograd
Linear Regression
Softmax
MLP
Backpropagation
Generalization
Regularization
CNN
BatchNorm
ResNet
Optimization
Attention
Transformer A级:需要熟练
LeNet
VGG
GoogLeNet/Inception
DenseNet
RNN/LSTM/GRU B级:理解即可
部分经典架构细节
部分 NLP 示例
部分应用章节 C级:按科研需要
目标检测
语义分割
推荐系统
时间序列专项 6. 第一阶段:Tensor、Autograd 与线性模型(Week 1~2)
6.1 Tensor
熟练:
reshape
unsqueeze
squeeze
transpose
cat
stack
matmul 并能处理:
CPU ↔ GPU
dtype
broadcasting
indexing 6.2 Autograd
重点理解:
requires_grad
计算图
forward
backward
梯度累积
detach
no_grad
leaf tensor
grad_fn 必须手做:
import torch
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 + 2 * x
y.backward()
print(x.grad) 再手算:
当 时结果为 14。
验收
你必须能解释:
PyTorch 为什么能自动求梯度?
而不是只知道 loss.backward()。
6.3 线性回归
理解:
损失:
L=rac{1}{n}\sum_{i=1}^{n}(y_i-\hat y_i)^2训练流程:
Forward → Loss → Backward → Gradient → Update 必须完成:
- 从零写线性回归;
- 用
nn.Linear + MSELoss + SGD再写一次; - 修改 learning rate、batch size、noise;
- 对比训练曲线。
6.4 Softmax Regression
理解:
P(y=k|x)=rac{\exp(o_k)}{\sum_j\exp(o_j)}搞懂:
logits
probability
softmax
cross entropy
one-hot 必须回答:
为什么分类通常使用 Cross Entropy,而不是 MSE?
7. 第二阶段:MLP、反向传播与泛化(Week 3~4)
7.1 MLP
理解:
Input → Linear → ReLU → Linear → Output 掌握:
Sigmoid
Tanh
ReLU
GELU 必须回答:
如果没有非线性激活,多层线性层为什么仍然等价于一个线性模型?
7.2 Backpropagation
这是必须重点突破的内容。
理解:
Forward Propagation
Computational Graph
Chain Rule
Backward Propagation
Gradient 自己画:
x → Linear → ReLU → Linear → Loss 并标出:
∂L/∂W2
∂L/∂h
∂L/∂W1 7.3 数值稳定性
理解:
vanishing gradient
exploding gradient
parameter initialization 回答:
为什么早期的深层网络很难训练?
7.4 泛化
必须掌握:
Underfitting
Good Fitting
Overfitting
Bias
Variance 看到 train/validation loss 曲线,能够判断模型处于什么状态。
7.5 Weight Decay
回答:
为什么限制参数规模可能改善泛化?
7.6 Dropout
理解训练/推理阶段的差异,并能解释:
为什么 Dropout 有助于缓解过拟合?
8. 第三阶段:CNN 基础(Week 5~6)
这是你作为 CV 方向学生的核心模块。
8.1 卷积
理解二维互相关:
重点:
kernel
feature map
local connectivity
weight sharing
translation equivariance
receptive field 8.2 Padding 与 Stride
必须会算:
输入 224×224、kernel=3、stride=2、padding=1 时,要能快速计算输出尺寸。
8.3 多通道卷积
必须理解:
Input: [B, Cin, H, W]
Kernel: [Cout, Cin, Kh, Kw]
Output: [B, Cout, Hout, Wout] 8.4 1×1 卷积
理解:
空间尺寸基本不变
→ 通道信息融合
→ 改变通道数 后续在 ResNet、Inception、特征融合中会频繁出现。
8.5 Pooling
理解:
Max Pooling
Average Pooling
Global Average Pooling 8.6 必做任务
- 自己实现简单
Conv2D; - 手算一组卷积;
- 实现 LeNet;
- 在 Fashion-MNIST 或 CIFAR-10 上训练;
- 记录 loss/accuracy 曲线;
- 尝试不同 kernel/stride/padding。
9. 第四阶段:经典 CNN 与 ResNet(Week 7)
不要背架构,要学习“它为什么出现”。
AlexNet
关注:
ReLU
GPU
Dropout
Data Augmentation VGG
关注:
重复 block
小卷积核
加深网络 GoogLeNet / Inception
关注:
multi-scale
parallel branch
feature fusion Batch Normalization
理解:
\hat{x}=rac{x-\mu}{\sqrt{\sigma^2+\epsilon}} y=\gamma\hat{x}+eta必须区分:
train mode
eval mode
running mean
running variance ResNet
必须彻底理解:
重点:
identity mapping
skip connection
gradient flow
degradation problem 并独立实现:
class ResidualBlock(nn.Module):
... 10. 第五阶段:优化算法(Week 8)
建立演化逻辑:
SGD → Momentum → AdaGrad → RMSProp → Adam SGD
理解:
learning rate
mini-batch gradient
noise Momentum
回答:
为什么“惯性”能够减少优化过程中的震荡?
Adam
理解:
first moment
second moment
adaptive learning rate 不能只会:
torch.optim.Adam(...) Learning Rate Scheduler
理解:
constant
step decay
cosine decay
warmup 必做实验
同一模型、同一数据集比较:
SGD
SGD + Momentum
Adam 保持其他条件尽量一致,记录:
- 收敛速度;
- 最终训练性能;
- 验证性能;
- 曲线稳定性。
11. 第六阶段:RNN → Attention → Transformer(Week 9~10)
11.1 RNN 部分
你的主线是 CV,因此 RNN 不必投入和 CNN 同样多的时间。
理解:
Sequence
Hidden State
RNN
Gradient Vanishing
LSTM
GRU 目标主要是理解 Transformer 出现前的序列建模逻辑。
11.2 Attention
必须理解:
Query
Key
Value Scaled Dot-Product Attention:
Attention(Q,K,V) = softmax\left(rac{QK^T}{\sqrt{d_k}} \right)V必须回答:
为什么要除以 ?
11.3 Self-Attention
理解:
Q = XWQ
K = XWK
V = XWV 也就是 Q/K/V 都来自同一输入。
11.4 Multi-Head Attention
理解:
多个 Head
→ 学习不同子空间关系
→ Concat
→ Linear 11.5 Positional Encoding
回答:
Self-Attention 本身为什么不知道 token 顺序?
11.6 Transformer
自己画出:
Input
↓
Embedding
↓
Positional Encoding
↓
Multi-Head Attention
↓
Add & Norm
↓
FFN
↓
Add & Norm 12. 第七阶段:迁移到 CV 与自己的科研(Week 11~12)
12.1 从 CNN 到 ViT
对比:
CNN:
locality
translation equivariance
Transformer:
global dependency
content-dependent interaction 理解:
Patch Embedding
Self-Attention
Transformer Encoder
Classification Token 12.2 对自己的科研模型做 Model Audit
Backbone
回答:
Backbone 是什么?
为什么使用?
输入是什么?
输出 shape 是什么?
为什么适合当前任务? Feature Extraction
回答:
提取什么特征?
空间特征?
语义特征?
全局特征?
局部特征? Attention / Fusion
如果有 Attention、Transformer、Cross-Attention:
Q 来自哪里?
K 来自哪里?
V 来自哪里?
Attention Matrix 表示什么?
融合发生在哪一层? Loss
必须回答:
为什么用这个 loss?
优化目标是什么?
与最终评价指标是否一致? Experiment
重新审视:
Baseline
Ablation
Hyperparameter
Robustness
Generalization
Statistical Significance 13. 对癌症预后 / 生存分析方向的额外补充
D2L 可以帮助你建立:
Deep Learning Foundation
CNN
Optimization
Regularization
Attention
Transformer
Experiment Design 但它不能完整覆盖 Survival Analysis。
完成 D2L 核心部分后,再单独补:
Survival Function
Hazard Function
Censoring
Kaplan-Meier
Cox Proportional Hazards
Partial Likelihood
C-index
Time-dependent AUC
DeepSurv
DeepHit
Discrete-time Survival 最终形成三棵相互连接的知识树:
Deep Learning
+
Survival Analysis
+
Medical AI 14. AI 应该怎么用?
不要禁止 AI,应该改变 AI 在学习流程中的位置。
错误模式
不会
↓
直接问 AI
↓
复制代码
↓
运行成功
↓
感觉自己会了 这是“伪学习”。
正确模式
自己思考
↓
自己写
↓
报错 / 卡住
↓
定位问题
↓
查教材 / 官方文档
↓
仍不会
↓
问 AI
↓
理解解释
↓
关掉 AI
↓
重新独立写 四级使用规则
Level 0
第一次做核心内容:不让 AI 直接给答案。
Level 1
允许问:
给我提示,不要直接给完整代码。
Level 2
独立完成后:
帮我做 Code Review,指出逻辑和工程问题。
Level 3
最后再问:
如果用于真实科研工程,如何重构得更规范?
15. 每个知识点统一采用“六步学习法”
STEP 1:阅读
看 D2L 对应章节。
STEP 2:概念卡片
模板:
# Batch Normalization
## 解决什么问题
## 核心公式
## 训练阶段
## 测试阶段
## 优点
## 局限
## PyTorch API
## 我的理解 STEP 3:数学推导
写:
输入
公式
shape
输出 STEP 4:From Scratch
自己实现。
STEP 5:PyTorch
使用标准 API 实现。
STEP 6:科研迁移
回答:
我的研究中哪里使用了这个思想?
16. 每周时间安排
建议每周约 10 小时:
理论阅读:3 h
代码实现:3 h
习题:1 h
复盘:1 h
科研迁移:2 h 一种可执行安排:
周一:理论
周二:数学推导
周三:From Scratch
周四:PyTorch 实现
周五:实验
周六:综合项目 / 科研迁移
周日:闭卷重构 + 周复盘 17. 每日学习模板
不要写:
今天学习第三章 而应该写:
# 今日目标
理解 Softmax + Cross Entropy
# 理论
- Softmax
- Logits
- Probability
# 数学
推导 Softmax / Cross Entropy
# 编程
从零实现 Softmax Regression
# 实验
改变 learning rate 观察现象
# 自测
1. 为什么不能把 logits 直接当概率?
2. Softmax 为什么使用指数?
3. 为什么需要归一化?
4. Cross Entropy 为什么适合分类? 18. 每周必须做一次“闭卷重构”
每周末新建:
test.py 不看教材,独立实现:
Dataset
DataLoader
Model
Loss
Optimizer
Training
Validation 写不出来就说明没有真正掌握。
对改善“依赖 AI、无法独立编程”尤其有效。
19. 推荐 GitHub 仓库结构
d2l-learning/
│
├── README.md
│
├── notes/
│ ├── tensor.md
│ ├── autograd.md
│ ├── linear-regression.md
│ ├── softmax.md
│ ├── mlp.md
│ ├── cnn.md
│ ├── resnet.md
│ ├── optimization.md
│ └── transformer.md
│
├── from_scratch/
│ ├── linear_regression.py
│ ├── softmax.py
│ ├── mlp.py
│ ├── cnn.py
│ ├── batchnorm.py
│ ├── resnet.py
│ └── attention.py
│
├── pytorch/
│ ├── linear_regression.py
│ ├── mlp.py
│ ├── cnn.py
│ ├── resnet.py
│ └── transformer.py
│
├── experiments/
│ ├── learning_rate/
│ ├── batch_size/
│ ├── optimizer/
│ └── regularization/
│
├── projects/
│ ├── cifar10/
│ └── research_transfer/
│
└── weekly_review/
├── week01.md
├── week02.md
└── ... 20. 12 周路线总表
| 周次 | 核心内容 | 必须输出 |
|---|---|---|
| Week 1 | Tensor + 线代回顾 + Autograd | Autograd 实验 |
| Week 2 | Linear Regression + Softmax | 两个 From Scratch |
| Week 3 | MLP + Backprop | 手写 BP 推导 |
| Week 4 | Generalization + Dropout + Weight Decay | 过拟合实验 |
| Week 5 | CNN 基础 | 手写 Conv2D |
| Week 6 | LeNet + CNN Training | 图像分类实验 |
| Week 7 | AlexNet / VGG / BN / ResNet | 手写 Residual Block |
| Week 8 | Optimization | Optimizer 对比实验 |
| Week 9 | RNN + Attention | Attention From Scratch |
| Week 10 | Transformer | 结构图 + 简化实现 |
| Week 11 | ViT / CV 迁移 | CV 小项目 |
| Week 12 | 科研迁移 | 当前论文 Model Audit |
21. 三个阶段性项目
Project 1:MLP Classification
数据:
Fashion-MNIST 要求:
MLP
CrossEntropy
SGD 变量:
learning rate
hidden dimension
dropout 目标:理解基础训练流程和过拟合。
Project 2:CNN Classification
数据:
CIFAR-10 模型:
Simple CNN
ResNet 比较:
Accuracy
Loss
Training Speed
Parameter Count 目标:理解 CNN、残差结构与训练策略。
Project 3:Research Transfer
直接使用科研模型或一个缩小版本:
Baseline
↓
读懂结构
↓
独立重新实现
↓
修改一个模块
↓
做 Ablation
↓
解释结果 这才是 D2L 与论文研究真正连起来的地方。
22. 什么叫“真正学会一章”?
每章按 100 分自评:
| 项目 | 权重 |
|---|---|
| 概念理解 | 20 |
| 数学理解 | 20 |
| From Scratch | 20 |
| PyTorch Implementation | 15 |
| 实验分析 | 15 |
| 科研迁移 | 10 |
标准:
<60:没有掌握
60~75:基本理解
75~85:掌握
85~95:熟练
>95:可以讲给别人 23. 十个必须闭卷回答的问题
- 为什么神经网络需要非线性激活?
- Backpropagation 的本质是什么?
- 为什么深层网络会出现梯度消失?
- 为什么 Cross Entropy 适合分类?
- CNN 为什么适合图像?
- 1×1 卷积有什么作用?
- BatchNorm 与 Dropout 分别解决什么问题?
- ResNet 为什么能训练更深网络?
- SGD 与 Adam 有什么区别?
- Self-Attention 中的 Q、K、V 到底是什么?
这些问题能脱离教材解释清楚,你就已经明显越过了“只会调包”的阶段。
24. 最容易犯的五个错误
错误 1:一直看视频
视频看懂 ≠ 自己会做。
建议视频不超过总学习时间的 30%。
错误 2:代码全部复制
解决:每周至少一次闭卷重写。
错误 3:数学全部跳过
解决:核心公式至少自己推一遍,并检查 shape。
错误 4:所有章节学得一样深
重点始终是:
Autograd
Backprop
Generalization
CNN
ResNet
Optimization
Attention
Transformer 错误 5:疯狂记笔记
不要复制教材。
只记:
我原来不知道的
我容易忘的
我理解错的
我自己总结出来的 25. 学完 D2L 后继续学什么?
你的研究线建议:
D2L
↓
Deep Learning Foundation
↓
Computer Vision
↓
Transformer / ViT
↓
Medical AI
↓
Survival Analysis
↓
Paper Reproduction
↓
Model Innovation 工程线并行:
Python
↓
PyTorch
↓
Linux
↓
Git
↓
Experiment Management
↓
Reproducible Research 再往后才是:
LLM
↓
RAG
↓
Agent
↓
Tool Use
↓
Multi-Agent 不建议现在把主要精力从深度学习/CV基础转到 Agent。Agent 可以作为副线继续接触,但当前主线应优先解决理论和独立实现能力。
26. 推荐官方资料
《动手学深度学习》
中文:
英文:
建议采用:
中文理解
+
英文术语对应
+
PyTorch 代码实践 PyTorch 官方 Tutorials
https://docs.pytorch.org/tutorials/
重点阅读:
Tensors
Datasets & DataLoaders
Build Model
Autograd
Optimization
Save / Load PyTorch Autograd
https://docs.pytorch.org/docs/stable/notes/autograd.html
学习反向传播、计算图、梯度问题时配合阅读。
27. 最终验收清单
理论
- 能解释 Backpropagation
- 能解释 Optimization
- 能解释 Generalization
- 能解释 CNN
- 能解释 ResNet
- 能解释 Attention
- 能解释 Transformer
数学
- 能理解 Softmax
- 能理解 Cross Entropy
- 能计算卷积 Shape
- 能理解梯度更新
- 能解释 Attention 公式
编程
- 独立写训练循环
- 独立写验证循环
- 独立写 CNN
- 独立写 Residual Block
- 独立实现简单 Attention
- 能独立 Debug 常见训练问题
科研
- 能读懂模型架构图
- 能分析 Loss
- 能设计 Ablation
- 能有依据地调超参数
- 能解释实验结果
- 能阅读 CV 论文
- 能把一个论文模块独立复现出来
28. 最终建议
对你来说,《动手学深度学习》最重要的价值不是“又学会几个模型”,而是完成下面这次能力升级:
AI 帮我做
↓
我理解 AI 在做什么
↓
我能自己做
↓
我能判断怎么做更好
↓
我能提出自己的改进 这正是从“有项目和论文实践经验”走向“真正具备独立科研能力”需要补上的一层。
因此建议你未来 10~12 周把 D2L 作为理论主线,不追求看完速度,而追求:
每学一个核心知识,都能解释、推导、实现、实验、迁移。
做到这一点以后,再学习 ViT、多模态、医学人工智能、生存分析以及大模型/Agent,会扎实很多。
0 次表情反馈 · 0 条评论