第 L1 层
ML / DL 基础
这一层
这一层解决什么
亲手训过一个网络,并且能解释它为什么学会了、为什么会过拟合、指标为什么这样选。L2 的一切——预训练的 loss、微调的划分、评测的指标——都在用本层的词汇;没有它,LLM 的训练代码读起来只是 API 调用。完成标准三条:从零训一个小网络、讲清过拟合与泛化、说出评估指标为什么这样选。
各节点怎么连成一条线
本层是一条「训练循环」展开成的线:
- 经典机器学习:从样本里学:词汇表。训练 / 验证 / 测试划分、损失、模型族、指标。Google 的速成课把这些用交互模块讲一遍。
- 损失与反向传播:循环的中间两步。损失函数为什么是交叉熵或 MSE,反向传播为什么只是链式法则在计算图上的反向模式。跟着 micrograd 自己写一个 autograd,这一层就通了。
- PyTorch:自己训一个网络:把上一步换成框架。张量、autograd、训练循环,之后读任何训练代码都不陌生。
- 泛化:解释曲线。训练和验证 loss 为什么会分叉、偏差–方差怎么权衡、正则化在做什么,以及深度网络特有的双下降。
- 经典结构:CNN、RNN / LSTM、残差:Transformer 之前的三个发明各解决了什么——CNN 的权重共享、LSTM 的门控、残差的梯度通路——为的是看懂 Transformer 保留了什么、扔掉了什么。
先修关系:classical-ml → backprop-and-loss → pytorch → generalization / classic-architectures。backprop-and-loss 直接接 L0 的 优化 和 信息论。
给资深工程师的减法
- 经典机器学习不用学全:SVM、朴素贝叶斯、聚类可以跳过,留下线性模型、树和集成、指标。
- 不用把 PyTorch 当框架学,把它当「会自动求导的 numpy」,训练循环手写一次就够。
- CNN 和 LSTM 不需要会调,只需要会讲它们各自的归纳偏置是什么;视觉任务的细节留到真用的时候。
- Goodfellow 的书只翻 ch. 5,当词典用。
- 跳过 Keras、TensorFlow 和任何高层训练库——它们隐藏的正是本层要看见的东西。
推荐前十
按阅读顺序;每条链到下面的节点。
- 1
Machine Learning Crash Course — Google free
先把损失、划分、指标这套词汇过一遍 → 经典机器学习:从样本里学
- 2
The spelled-out intro to neural networks and backpropagation: building micrograd free
一百多行写出 autograd,反向传播从此是自己的 → 损失与反向传播
- 3
Calculus on Computational Graphs: Backpropagation free
半小时讲清为什么是反向模式而不是前向模式 → 损失与反向传播
- 4
Neural Networks: Zero to Hero — Andrej Karpathy free
micrograd 之后接着往下跟,一路到 GPT → PyTorch:自己训一个网络
- 5
Learn the Basics — PyTorch tutorials free
框架自己的话讲张量、autograd 和训练循环,当手册 → PyTorch:自己训一个网络
- 6
An Introduction to Statistical Learning with Applications in Python free
偏差–方差和交叉验证的标准答案 → 泛化
- 7
Deep Double Descent: Where Bigger Models and More Data Hurt free
大模型为什么不按教科书过拟合,面试追问时多一层 → 泛化
- 8
CNN、ResNet、RNN、LSTM 各解决了上一代什么毛病,带代码 → 经典结构:CNN、RNN / LSTM、残差
- 9
Understanding LSTM Networks free
四张门控图,理解注意力替代了什么的最短路径 → 经典结构:CNN、RNN / LSTM、残差
节点
经典机器学习:从样本里学
半衰期: 稳定
语言模型之前就有同一个想法,只是尺寸更小:模型从例子里学,靠的是降低损失——一个表示它错得多厉害的数。坑在任何尺寸下都一样:拿训练过的数据测试,它看起来比实际好;训得太久,它背下例子而不是从中学习(过拟合)。在小的表格数据问题上学会这些,一次训练只要几秒。它是后面一切的词汇表:LLM 的 loss、evals 的指标、微调的数据划分都在用这些词。
- 先修
- 数学:用到时再补
- 之后
- 泛化 · PyTorch:自己训一个网络
course — The fundamentals — loss, generalisation, splits, classification metrics — in short interactive modules, updated by Google in 2024.
复现项目: A baseline you can defend — Train logistic regression and gradient-boosted trees on one tabular dataset with a proper train, validation and test split, and explain one case where accuracy is the wrong metric.
落选 (3)
- An Introduction to Statistical Learning (ISLP) — 很好,但偏差–方差和交叉验证两章放在 泛化 节点更合适,模型族部分和 Google 的课重叠。
- Raschka, Machine Learning with PyTorch and Scikit — Learn — 付费且厚,动手部分 Google 的课和 PyTorch:自己训一个网络 已覆盖。
- scikit — learn User Guide — 查 API 用,不是学习路径。
损失与反向传播
半衰期: 稳定
一个训练循环四步:前向算输出、用损失函数算差距、反向传播算梯度、优化器更新参数。本节点讲中间两步:损失函数为什么是交叉熵或 MSE(它们各自假设了什么分布)、反向传播为什么只是链式法则在计算图上的反向模式。它把 优化 的梯度和 信息论 的交叉熵接成一条可以跑的代码,是 PyTorch:自己训一个网络 里 loss.backward() 那一行的全部内容。L1 的复现项目挂在这里:自己训一个小网络,把训练 / 验证曲线画出来,泛化 接着解释曲线为什么会分叉。
- 先修
- 数学:用到时再补 · 优化 · 信息论
- 之后
- 经典结构:CNN、RNN / LSTM、残差 · PyTorch:自己训一个网络 · Transformer
video · 2.5 小时视频 + 3 小时跟写 · only 0:00–2:25:52 — 一百多行 Python 写出一个标量 autograd 引擎,再用它训一个小 MLP;跟完一遍,反向传播对你就不再是「框架帮我做的事」,而是能自己写出来、能对拍的代码,正是本层「从零训一个小网络」。
article · 30 分钟 — 把反向传播讲成计算图上的前向模式与反向模式微分,一页讲清为什么反向模式对「多输入、单输出」的 loss 便宜;面试被问「为什么不用前向微分」时答案就在这里。
复现项目: 从零训一个小网络并画出训练 / 验证曲线 — 只用张量运算(不用 nn.Module 和 optimizer)写一个两层 MLP,在 MNIST 或 make_moons 上训练,每个 epoch 记录训练集和验证集 loss,画成一张曲线图;先让它过拟合(曲线分叉),再加 weight decay 或 dropout 让分叉合拢,产出是两张图和一段解释。
落选 (3)
- 3Blue1Brown「Backpropagation calculus」 — 系列第四集,和 数学:用到时再补 的导入视频同源,看完第一集会自然接上。
- CS231n notes「Backpropagation, Intuitions」 — 讲得好,但 Olah 那篇更短且覆盖了前向 / 反向模式的对比。
- Goodfellow 等《Deep Learning》ch. 6.5 — 正式但密,micrograd 跟写一遍收获更多。
PyTorch:自己训一个网络
半衰期: 稳定谁在招
PyTorch 是大多数模型被写出来和训练的方式。核心是一个短循环:一批数据过模型、算损失、让 autograd 算出每个权重该怎么动、走一步。亲手写一遍这个循环,再从一个极小的网络一路搭到一个小 GPT,结构就不再只是一张图。它也是从零写 GPT 和微调的前提。
course — Backprop to a GPT in PyTorch, one video at a time — the fastest way for an engineer to read and debug model code.
docs — Tensors, autograd, datasets and the training loop in the framework's own words; a reference you will return to.
复现项目: Train a small GPT and change one thing — Reproduce a small model with nanochat or nanoGPT on a modest dataset, change one design choice, and show the ablation with its loss curves.
落选 (3)
- fast.ai Practical Deep Learning for Coders — 自顶向下、先用高层库出结果;本层要的是看见训练循环本身,Zero to Hero 更对路。
- Dive into Deep Learning — 已作为 经典结构:CNN、RNN / LSTM、残差 的候选,这里不重复。
- PyTorch 官方「60 Minute Blitz」 — 和 Learn the Basics 内容重叠,后者更新。
泛化
半衰期: 稳定
训练集上的 loss 低不等于模型有用;泛化讲的是训练误差与测试误差之间的那道缝从哪来、怎么量、怎么缩小。核心词汇:偏差–方差、容量、正则化(weight decay、dropout、早停、数据增强)、交叉验证,以及深度网络特有的双下降现象。它是 经典机器学习:从样本里学 里「划分数据集」这件事的理论版,也是读懂 损失与反向传播 项目画出来的曲线的钥匙;到了 预训练与 scaling,scaling laws 讨论的本质仍是数据量、参数量和泛化误差的关系。
book · only ch. 2–5 — 第 2 章把偏差–方差权衡和训练 / 测试误差的关系讲成一张图,第 5 章讲交叉验证为什么能估计泛化误差;这两章是「讲清过拟合与泛化」的标准答案。
paper · 1 小时 — 经典的 U 形曲线在过参数化的深度网络上会再降一次;读过它,面试里被追问「大模型参数远多于数据为什么不过拟合」时,你能给出比教科书多一层的回答。
复现项目: 把过拟合做出来再修好 — 拿 [[backprop-and-loss]] 项目里的小网络,依次把参数量调到 10×、100×,画出训练 / 验证误差随参数量的曲线,看看能否在小数据集上复现双下降;写一段话解释曲线每一段的原因。
落选 (3)
- Goodfellow 等《Deep Learning》ch. 5, 7 — 全面,但 ISLP 两章更短且带代码;ch. 5 已作为 经典机器学习:从样本里学 的候选。
- Zhang 等「Understanding deep learning requires rethinking generalization」(2017) — 提出问题的名篇,但双下降那篇给出了更可操作的图景。
- Bishop, Pattern Recognition and Machine Learning ch. 1 — 贝叶斯视角扎实,读起来太慢。
经典结构:CNN、RNN / LSTM、残差
半衰期: 稳定
Transformer 之前的三个关键发明,各解决了一个具体问题:CNN 用局部连接和权重共享把图像的平移不变性写进结构,参数量从全连接的百万级降到可训;RNN 让网络处理变长序列,LSTM 的门控解决了它梯度消失、记不住远处的毛病;残差连接让梯度能直接穿过几十上百层,没有它就没有深网络,也没有 Transformer 里每个子层外面那条 skip。学这些不是为了用它们,而是为了看懂 Transformer 保留了什么(残差、归一化)、扔掉了什么(循环)、为什么。多模态 里的视觉编码器仍是卷积或 ViT,本节点是它的前置。
- 先修
- 损失与反向传播 · PyTorch:自己训一个网络
- 之后
- 多模态
book · only ch. 7–10 — CNN、现代 CNN(含 ResNet)、RNN、现代 RNN(含 LSTM)四章,每一章先讲它要解决上一代的什么毛病,再给可运行的 PyTorch 实现;读完能把「每种结构各解决了什么」讲成一条线。
article · 30 分钟 — 用四张门控图讲清 LSTM 为什么能记住远处的信息而普通 RNN 不能;它是理解「Transformer 用注意力替代了什么」的最短路径。
- CS231n Convolutional Neural Networks for Visual Recognition — course notes: Convolutional Networks free
course · 1 小时 — 卷积、步长、填充、感受野、参数共享,每个概念配一张可以数格子的图;读完能算出任意一层的输出尺寸和参数量,这是看懂任何视觉骨干(包括多模态里的视觉编码器)的基本功。
复现项目: 三种结构跑同一个任务 — 在一个小的序列分类数据集上分别训 MLP、1D CNN、LSTM,记录参数量、训练时间和验证准确率,写一段话说明每种结构的归纳偏置在数据里对应什么。
落选 (3)
- He 等「Deep Residual Learning for Image Recognition」(2015) — 残差的原论文,但 d2l ch. 8 已经把它讲清并给了实现。
- Goodfellow 等《Deep Learning》ch. 9 — 10 — 内容对,但没有代码,且没有残差。
- fast.ai Practical Deep Learning for Coders — 自顶向下用高层库,看不到结构本身。
完成标准自测
- 不用 nn.Module 和 optimizer,只用张量运算训一个两层 MLP 到合理的验证准确率。
- 画出训练 / 验证 loss 曲线,指出过拟合从哪个 epoch 开始,并用一种正则化手段让分叉合拢。
- 解释一个场景里准确率为什么是错的指标,该换成什么、为什么。
- 用三句话各说清 CNN、LSTM、残差连接解决了什么问题。
- 说出偏差–方差权衡和双下降的关系。
复现项目从零训一个小网络并画出训练 / 验证曲线:先让它过拟合,再修好,产出两张图和一段解释(挂在 损失与反向传播)。
作者的笔记原稿。