深度学习系统学习计划
·
深度学习系统学习计划
该blog和专栏主要制定一个详细深度学习学习计划,然后再次基础上制定并总结每日学习计划,进行查漏补缺,从而提高专业知识能力。
适用目标:在 8-12 周内夯实深度学习基础,并系统提升 CV、NLP、LLM 的理论理解、代码能力和项目分析能力。
核心原则:
- 不以“看完课程”为目标,以“能复现、能修改、能解释、能诊断”为目标。
- 每个阶段都要有代码产出、实验记录和错误分析。
- 先建立通用训练思维,再分别迁移到 CV、NLP 和 LLM。
- 不只追求指标,还要理解数据、模型结构、训练过程、评估方法和部署约束。
总体产出
12 周结束时,建议完成以下内容:
- 一个通用 PyTorch 训练模板。
- 一个 CV 项目:分类或目标检测,包含实验记录和错误分析。
- 一个 NLP 项目:文本分类、NER、摘要或问答。
- 一个 LLM 项目:tiny GPT 从零实现,或 LoRA 微调 + RAG 应用。
- 一份个人方法论笔记:如何分析模型、数据、loss、指标和失败样本。
每日学习节奏
如果每天 3 小时:
- 40 分钟:理论学习。
- 90 分钟:代码实现。
- 30 分钟:实验记录。
- 20 分钟:复盘错误样本或课程重点。
如果每天 5-6 小时:
- 1-1.5 小时:理论学习。
- 3 小时:代码实现。
- 1 小时:实验和调参。
- 30 分钟:写笔记和复盘。
第 1-2 周:深度学习基础与 PyTorch
目标:把“能跑模型”升级成“知道模型为什么能训练、为什么训练坏了、怎么排查”。
重点知识:
- 张量、矩阵乘法、广播机制。
- 线性回归、逻辑回归、MLP。
- loss、梯度、反向传播、计算图。
- SGD、Momentum、Adam。
- train/val/test 划分。
- 过拟合、欠拟合、正则化、dropout、weight decay。
- batch size、learning rate、epoch、scheduler。
- PyTorch 中的 Dataset、DataLoader、nn.Module、optimizer。
代码任务:
- 用 NumPy 手写线性回归。
- 用 NumPy 手写逻辑回归或两层 MLP。
- 用 PyTorch 训练 MNIST 或 CIFAR-10。
- 写出通用训练循环:
train_one_epoch、evaluate、save_checkpoint。 - 让模型在 20 条样本上过拟合,用来检查训练代码是否正确。
推荐资源:
- PyTorch Tutorials: https://docs.pytorch.org/tutorials/
- Dive into Deep Learning: https://d2l.ai/
第 3-4 周:CV 系统补强
目标:从 YOLOv8 使用者升级成能分析检测模型、数据问题和实验设计的人。
重点知识:
- CNN、卷积、池化、感受野。
- ResNet、FPN、ViT 基本思想。
- anchor、NMS、IoU、mAP、precision、recall。
- 数据增强、类别不均衡、标注噪声。
- 误检、漏检、置信度阈值、NMS 阈值。
代码任务:
- 训练一个 CIFAR-10 或自定义分类模型。
- 复盘已有 YOLOv8 项目,整理数据、指标和错误样本。
- 做 3 组 ablation:模型大小、输入分辨率、数据增强。
- 写一份实验报告:每次改动为什么做、指标怎么变、错误样本有什么规律。
推荐资源:
- Ultralytics YOLO Docs: https://docs.ultralytics.com/
- Stanford CS231n: https://cs231n.stanford.edu/
第 5-6 周:NLP 基础
目标:理解文本任务和 Transformer encoder 的常见训练流程。
重点知识:
- tokenization、vocabulary、embedding。
- padding、attention mask、batch collator。
- RNN/LSTM 了解即可,重点放在 attention 和 Transformer。
- BERT、GPT 的结构差异。
- 文本分类、序列标注、问答任务。
- accuracy、precision、recall、F1、混淆矩阵。
代码任务:
- 用 Hugging Face
datasets加载文本数据集。 - 用
transformers微调一个中文文本分类模型。 - 做一个 NER 或情感分类项目。
- 输出混淆矩阵和错误样本分析。
推荐资源:
- Hugging Face Course: https://huggingface.co/course
- Stanford CS224N: https://web.stanford.edu/class/cs224n/
第 7-8 周:LLM 核心原理
目标:理解 GPT 类模型的结构、训练目标和生成方式。
重点知识:
- Transformer decoder。
- causal language modeling。
- self-attention、multi-head attention、causal mask。
- positional encoding。
- pretraining、SFT、RLHF 基本概念。
- KV cache、temperature、top-k、top-p。
- perplexity 和 next-token prediction。
代码任务:
- 从零实现一个 tiny GPT。
- 用小语料训练,让模型能生成文本。
- 实现 temperature、top-k、top-p 采样。
- 写清楚 GPT 为什么是预测下一个 token。
推荐资源:
- Stanford CS336: https://cs336.stanford.edu/
- nanoGPT: https://github.com/karpathy/nanoGPT
第 9-10 周:LLM 应用能力
目标:掌握当前主流 LLM 应用开发路径:微调和 RAG。
重点知识:
- LoRA、QLoRA、PEFT。
- SFT 数据格式。
- embedding、向量检索、chunking、rerank。
- RAG 的幻觉、引用、检索命中率、答案评估。
- prompt engineering 的边界和局限。
代码任务:
- 选择一个小参数开源模型做 LoRA 微调。
- 构建一个基于个人笔记或论文的 RAG 系统。
- 对比 RAG 和微调分别适合什么场景。
- 做一次失败案例分析:答错的问题为什么答错。
推荐资源:
- Hugging Face Transformers: https://huggingface.co/docs/transformers/
- Hugging Face PEFT: https://huggingface.co/docs/peft/
- LangChain RAG: https://docs.langchain.com/
- LlamaIndex: https://docs.llamaindex.ai/
第 11-12 周:综合项目
目标:把 CV、NLP、LLM 串成一个能展示能力的完整项目。
可选方向:
- 工业检测 + LLM 报告助手:YOLO 检测缺陷或目标,LLM 根据检测结果生成报告。
- 深度学习知识库 RAG:把课程笔记、论文、代码说明做成问答系统。
- 中文领域问答模型:整理小型领域数据集,做 LoRA 微调,并和 RAG 对比。
最终交付:
- GitHub 仓库。
- README。
- 训练脚本和推理脚本。
- 实验记录。
- 效果截图。
- 失败案例分析。
- 下一步改进计划。
分析模型的统一框架
以后看到任何模型,都按下面的问题拆:
- 数据是什么?分布、噪声、标注质量如何?
- 任务目标是什么?loss 是否真的对应业务目标?
- 模型结构有什么归纳偏置?
- 训练为什么稳定或不稳定?
- 指标是否可信?有没有只在 benchmark 上好看?
- 错误样本有什么规律?
- 部署限制是什么?显存、延迟、吞吐、成本、可解释性如何?
第 1 天:今天就从这里开始
今天目标:建立 PyTorch 基础使用感,并理解一个神经网络训练循环到底在做什么。
1. 理论学习:60-90 分钟
学习主题:
- 张量是什么。
- 矩阵乘法为什么是神经网络的基础。
- 什么是参数、loss、梯度、反向传播。
- 训练循环的基本流程:forward -> loss -> backward -> optimizer.step。
建议学习顺序:
- 看 PyTorch 官方入门中关于 tensor、autograd、nn.Module 的部分。
- 看 D2L 中线性回归和 softmax 回归的章节。
- 不要求一次完全吃透反向传播,但要知道梯度表示“参数往哪个方向改会让 loss 下降”。
2. 代码任务:90-150 分钟
今天至少完成下面两个任务。
任务 A:张量和 autograd 练习
- 创建 2 个矩阵,做加法、乘法、矩阵乘法。
- 创建一个带
requires_grad=True的变量。 - 定义一个简单函数,例如
y = x ** 2 + 2 * x + 1。 - 调用
backward(),打印x.grad。
任务 B:用 PyTorch 写线性回归
- 构造模拟数据:
y = 3x + 2 + noise。 - 定义一个
nn.Linear(1, 1)。 - 使用 MSE loss。
- 使用 SGD 或 Adam。
- 训练 200-500 步。
- 打印学到的权重和偏置,看是否接近 3 和 2。
3. 笔记任务:20-30 分钟
写下 5 个问题的答案:
loss.backward()做了什么?optimizer.step()做了什么?- 为什么训练前要
optimizer.zero_grad()? - 为什么 loss 下降不代表模型一定有泛化能力?
- 如果 loss 不下降,你会先检查哪些地方?
4. 今日验收标准
今天结束时,你应该能做到:
- 说清楚一次训练循环的每一步。
- 运行一个 PyTorch 线性回归代码。
- 看懂
model.parameters()、loss.backward()、optimizer.step()。 - 用自己的话解释为什么模型可以通过梯度学习参数。
5. 推荐目录结构
建议从今天开始建立下面的目录:
DL-study/
notes/
day01-pytorch-basics.md
src/
day01_tensor_autograd.py
day01_linear_regression.py
experiments/
day01/
6. 明天预告
第 2 天建议进入:逻辑回归、softmax、交叉熵,并用 PyTorch 训练一个 MNIST 手写数字分类模型。
更多推荐
所有评论(0)