ZHYsfl/ai-whys

Public

深度学习与强化学习的系统学习路线:39 个实验,每个配数学推导笔记、原创插图和从零实现的代码

  • Stars120+4 tuần này
  • Forks4
  • Watchers0
  • Issues0
  • Ngày tạo27/08/2026
  • Cập nhật gần nhất22/10/2026
  • Ngôn ngữPython
  • Giấy phépApache-2.0
README.md29.4 KBRaw

ai-whys

License: Apache 2.0 PRs Welcome

一个系统性的 AI 学习路线:39 个实验、17 章笔记,从线性回归到 BERT、从 Q-learning 到 PPO,每个算法都从零实现,并讲清每个"为什么"。

作者:周浩洋(上海交通大学 AI 学院博士在读)· 欢迎交流:[email protected] · 也欢迎提交 PR、开 issue

架构图

39 个实验

共 39 个实验,编号与两份笔记中的实验声明一一对应(dl.md 实验 1–33 与 39,rl.md 实验 34–38)。每个实验都有三样东西:数学推导笔记(dl.md / rl.md)、Excalidraw 插图(pics/)、可运行的代码(code/)——下面清单中,每个实验都附上了笔记原文和代码的直达链接:

基础

  1. 线性回归(MBGD)— 笔记 / 从零手写 / PyTorch 实现
  2. Softmax 回归(MBGD)— 笔记 / 从零手写 / PyTorch 实现
  3. Dropout — 笔记 / code

卷积网络

  1. 交叉相关 — 笔记 / code
  2. 填充与步幅 — 笔记 / code
  3. 1×1 卷积(与全连接层等价的验证)— 笔记 / code
  4. 多输入/输出通道 — 笔记 / code
  5. 池化层 — 笔记 / code
  6. LeNet — 笔记 / code
  7. AlexNet — 笔记 / code
  8. VGG — 笔记 / code
  9. NiN — 笔记 / code
  10. GoogLeNet — 笔记 / code

归一化与并行

  1. Batch Normalization — 笔记 / 从零手写 / PyTorch 实现
  2. ResNet — 笔记 / code
  3. 多 GPU 数据并行 — 笔记 / 从零手写 / PyTorch 实现

自然语言处理

  1. 序列模型 — 笔记 / code
  2. 文本预处理 — 笔记 / code
  3. 齐普夫定律验证 — 笔记 / code
  4. 文本序列数据准备 — 笔记 / code
  5. RNN — 笔记 / 从零手写 / PyTorch 实现
  6. GRU — 笔记 / 从零手写 / PyTorch 实现
  7. LSTM — 笔记 / code
  8. 深度循环神经网络 — 笔记 / code
  9. 双向 LSTM 的错误使用案例 — 笔记 / code
  10. 机器翻译数据集 — 笔记 / code
  11. 编码器-解码器架构 — 笔记 / code
  12. seq2seq — 笔记 / code
  13. 无参注意力(Nadaraya-Watson) — 笔记 / code
  14. 两种注意力评分函数 — 笔记 / code
  15. Bahdanau 注意力 seq2seq — 笔记 / code
  16. 多头注意力 — 笔记 / code
  17. Transformer — 笔记 / code
  18. BERT(MLM + NSP 预训练)— 笔记 / code / 数据管线 / 预训练循环

强化学习

  1. Q-learning — 笔记 / code
  2. DQN — 笔记 / code
  3. REINFORCE — 笔记 / code
  4. Actor-Critic — 笔记 / code
  5. PPO(已迁移至 gymnasium 最新版 API)— 笔记 / code

这个项目适合谁

  • 想系统性学 AI、但不知道从何开始的本科生——不需要先修成堆的理论,跟着实验 1 → 39 的顺序走,就是一条完整的深度学习 + 强化学习入门路线。
  • 即将入学的研究生——把它当作入学前自查清单:每个实验背后的"为什么",如果你能全部讲清楚,基础就算过关;讲不清楚的,就是开学前该补的课。

每个实验都从三个层面拆解

同一个知识点,三种互补的打开方式:

  • 数学推导(dl.md / rl.md)——每个算法从公式推起,符号约定统一(大写为矩阵、小写为标量),先弄清"为什么"再谈"怎么用"
  • 插图总结(pics/)——30 余张 Excalidraw 手绘风插图,把网络架构、数据流向和张量形状对齐画出来,一张图胜过一页文字
  • 复现代码(code/)——从零实现 + 大量中文注释,每个"为什么"都对应一段能跑、能改的代码

建议的学习方式

这份材料是一个精炼的总结:它不追求把每个细节讲满,而是给出路线、推导主干和关键问题,细节留白交给学习过程本身。因此最好的使用方式是——把它当作地图,结合 AI coding agent(如 Kimi Code、Claude Code、Cursor 等)一起学:

  • 笔记定路线:按实验 1 → 39 的顺序读 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:深度学习笔记,17 章,配套《动手学深度学习》,覆盖线性回归 → CNN/ResNet → RNN/GRU/LSTM → 注意力/Transformer/BERT
  • 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。

代码并非全部原创,致谢如下:

笔记(dl.md / rl.md)与插图(pics/)为本项目原创内容。

本项目是独立的学习项目,与上述书籍作者及出版社无任何隶属或背书关系。

Nội dung README thuộc về ZHYsfl và cộng đồng đóng góp, giấy phép Apache-2.0. Nguồn: github.com/ZHYsfl/ai-whys