ai-whys
一个系统性的 AI 学习路线:38 个实验、16 章笔记,从线性回归到 Transformer、从 Q-learning 到 PPO,每个算法都从零实现,并讲清每个"为什么"。
作者:周浩洋(上海交通大学 AI 学院博士在读)· 欢迎交流:zhouhy5523@gmail.com · 也欢迎提交 PR、开 issue
38 个实验
共 38 个实验,编号与两份笔记中的实验声明一一对应(dl.md 实验 1–33,rl.md 实验 34–38)。每个实验都有三样东西:数学推导笔记(dl.md / rl.md)、Excalidraw 插图(pics/)、可运行的代码(code/)——下面清单中,每个实验都附上了笔记原文和代码的直达链接:
基础
- 线性回归(MBGD)— 笔记 / 从零手写 / PyTorch 实现
- Softmax 回归(MBGD)— 笔记 / 从零手写 / PyTorch 实现
- Dropout — 笔记 / code
卷积网络
- 交叉相关 — 笔记 / code
- 填充与步幅 — 笔记 / code
- 1×1 卷积(与全连接层等价的验证)— 笔记 / code
- 多输入/输出通道 — 笔记 / code
- 池化层 — 笔记 / code
- LeNet — 笔记 / code
- AlexNet — 笔记 / code
- VGG — 笔记 / code
- NiN — 笔记 / code
- GoogLeNet — 笔记 / code
归一化与并行
- Batch Normalization — 笔记 / 从零手写 / PyTorch 实现
- ResNet — 笔记 / code
- 多 GPU 数据并行 — 笔记 / 从零手写 / PyTorch 实现
自然语言处理
- 序列模型 — 笔记 / code
- 文本预处理 — 笔记 / code
- 齐普夫定律验证 — 笔记 / code
- 文本序列数据准备 — 笔记 / code
- RNN — 笔记 / 从零手写 / PyTorch 实现
- GRU — 笔记 / 从零手写 / PyTorch 实现
- LSTM — 笔记 / code
- 深度循环神经网络 — 笔记 / code
- 双向 LSTM 的错误使用案例 — 笔记 / code
- 机器翻译数据集 — 笔记 / code
- 编码器-解码器架构 — 笔记 / code
- seq2seq — 笔记 / code
- 无参注意力(Nadaraya-Watson) — 笔记 / code
- 两种注意力评分函数 — 笔记 / code
- Bahdanau 注意力 seq2seq — 笔记 / code
- 多头注意力 — 笔记 / code
- Transformer — 笔记 / code
强化学习
- Q-learning — 笔记 / code
- DQN — 笔记 / code
- REINFORCE — 笔记 / code
- Actor-Critic — 笔记 / code
- PPO(已迁移至 gymnasium 最新版 API)— 笔记 / code
这个项目适合谁
- 想系统性学 AI、但不知道从何开始的本科生——不需要先修成堆的理论,跟着实验 1 → 38 的顺序走,就是一条完整的深度学习 + 强化学习入门路线。
- 即将入学的研究生——把它当作入学前自查清单:每个实验背后的"为什么",如果你能全部讲清楚,基础就算过关;讲不清楚的,就是开学前该补的课。
每个实验都从三个层面拆解
同一个知识点,三种互补的打开方式:
- 数学推导(dl.md / rl.md)——每个算法从公式推起,符号约定统一(大写为矩阵、小写为标量),先弄清"为什么"再谈"怎么用"
- 插图总结(pics/)——30 余张 Excalidraw 手绘风插图,把网络架构、数据流向和张量形状对齐画出来,一张图胜过一页文字
- 复现代码(code/)——从零实现 + 大量中文注释,每个"为什么"都对应一段能跑、能改的代码
建议的学习方式
这份材料是一个精炼的总结:它不追求把每个细节讲满,而是给出路线、推导主干和关键问题,细节留白交给学习过程本身。因此最好的使用方式是——把它当作地图,结合 AI coding agent(如 Kimi Code、Claude Code、Cursor 等)一起学:
- 笔记定路线:按实验 1 → 38 的顺序读 dl.md / rl.md,先建立整体脉络,推导卡住的地方直接问 agent
- agent 陪跑细节:每个实验的代码让 agent 逐行讲解、补齐跳步的推导、搭好环境跑通结果、改参数做对照实验——笔记里记下的那些"为什么",就是现成的提问起点
- 输出自己的版本:学完一个实验后合上笔记,让 agent 抽查你能否讲清背后的"为什么";讲不清的,回到笔记补
如果你有一定机器学习/深度学习基础、熟悉 Python 语法,但还没系统地梳理过这些知识,这个项目就是为你准备的。希望它对各位读者有帮助,欢迎提交 PR、开 issue 与我交流。
为什么值得跟着学
初学深度学习时,我和绝大多数同学的状态一样:代码能跑,但不知道为什么这么写。公式背下来了,但每个符号对应代码里的哪一行、书上那些"显然""易知"背后是什么,没人讲。
这份笔记因此有三个执念:
- 每个"为什么"都要有答案。笔记记录了学习过程中真实提出的一个个问题——为什么要
detach?为什么参数的形状和直觉相反?为什么 loss 要加掩码?——以及它们被彻底搞懂之后的解答。 - 每个算法写两遍。
code/下的脚本大多成对出现:*_low_level从零手写(连矩阵乘法都自己实现),*_high_level用 PyTorch 官方 API。手写版为了搞懂底层数学,API 版为了掌握工程惯例。 - 注释比代码多。所有代码附带大量中文注释,解释机制、张量形状对齐和踩过的坑,而不只是复述"这段代码在干嘛"。
仓库作者从入门到保研上海交通大学 AI 学院直博走的就是这条路线——它不是编出来的大纲,是一步一步踩出来的脚印。如果它帮你解开了一个"为什么",欢迎给个 Star。
其他材料
- dl.md:深度学习笔记,16 章,配套《动手学深度学习》,覆盖线性回归 → CNN/ResNet → RNN/GRU/LSTM → 注意力/Transformer
- rl.md:强化学习笔记,配套《动手学强化学习》(持续更新中)
- dl_and_rl.svg / dl_and_rl.excalidraw:学科全景架构图,SVG 矢量版 + Excalidraw 可编辑源文件,可见 DL 与 RL 的知识脉络如何串成一体(
pics/arch.png为同一张图的 PNG 导出) - pics/:30 张原创插图(Excalidraw 绘制)
运行环境
- Python 3.14,推荐使用 uv 管理虚拟环境
- 安装依赖:
uv pip install -r requirements.txt - 深度学习部分依赖 PyTorch;强化学习部分已迁移至 gymnasium 最新版 API
- 注意:
d2l包对 torch/numpy 有较严格的版本 pin,若与已装的 PyTorch 冲突,改用uv pip install d2l --no-deps单独安装
许可证与致谢
本项目以 Apache License 2.0 开源,详见 NOTICE。
代码并非全部原创,致谢如下:
- 深度学习代码改写自《动手学深度学习》(d2l-ai/d2l-zh,原内容以 CC BY-SA 4.0 发布),在学习过程中加入了大量中文注释与工程改进;
- 强化学习代码改写自《动手学强化学习》(boyu-ai/Hands-on-RL,原代码以 Apache-2.0 发布),并迁移至 gymnasium 最新版 API;
- 训练工具依赖 d2l PyPI 包(MIT-0)。
笔记(dl.md / rl.md)与插图(pics/)为本项目原创内容。
本项目是独立的学习项目,与上述书籍作者及出版社无任何隶属或背书关系。
