AI 界的四大天王:DNN / CNN / RNN / GAN 从原理到复现
课程级笔记大纲,写作目标与《MewHelp AI 智能客服实战》同级:读者能照着重做一遍。 状态:前置篇至第 4 章已完成,第 5 章起待写。
零、章节入口
- 前置篇:一张图看懂四张网络 ✅ 已完成
- 第 1 章:DNN 基础 ✅ 已完成
- 第 2 章:反向传播 ✅ 已完成
- 第 3 章:训练工程 ✅ 已完成
- 第 4 章:CNN 原理 ✅ 已完成
一、专题定位
- 读者:会 Python、学过高数与线代,没有系统学过深度学习。
- 终点:手写核心算子,用 PyTorch 训出四个网络,能说清每个设计的代价。
- 主线:先用框架跑通,再拆开看内部,最后在真实数据上验收。
- 环境:PyTorch 2.x + torchvision,MNIST / CIFAR-10 子集,CPU 可跑,GPU 可选。
- 结构:前置篇 + 12 章 × 3 篇 = 39 篇,与参考课程同一量级。
二、规模与验收基线
| 篇型 | 单篇行数 | 单篇字符 | 单篇配图 | 写法定位 |
|---|---|---|---|---|
| 理论学习 | 250–350 | 约 1 万 | 12–14 张 | 为什么这么做、原理、方案取舍 |
| 案例拆解 | 300–500 | 约 1 万 | 8–10 张 | 关键结构逐层拆、公式与代码对齐 |
| 实战演练 | 800–2000 | 8–10 万 | 18–22 张 | 从零做到能跑、能验收、有失败案例 |
整套预算:约 122 万字符,约 400 张配图,39 篇正文。
三、章节依赖表
每一章结尾必须留下一个"本章解决不了的具体问题",它就是下一章的开篇。
| 章 | 能力点 | 依赖上一章 | 留给下一章的问题 |
|---|---|---|---|
| 前置 | 看懂四张结构图 | 无 | 图里的箭头到底在算什么 |
| 第 1 章 DNN 基础 | 感知机到 MLP,跑通第一个网络 | 前置 | 权重是怎么自动学的 |
| 第 2 章 反向传播 | 手推梯度、手写 backward | 第 1 章 | 能跑但训不动、过拟合怎么办 |
| 第 3 章 训练工程 | 激活、初始化、归一化、优化器、正则 | 第 2 章 | 像素拉平后空间信息全丢了 |
| 第 4 章 CNN 原理 | 卷积、池化、感受野、参数共享 | 第 3 章 | 为什么 ResNet 能堆到 152 层 |
| 第 5 章 架构演进 | LeNet → AlexNet → VGG → ResNet | 第 4 章 | 这些结构在真实数据上怎么训 |
| 第 6 章 CNN 实战 | CIFAR-10 分类、增强、迁移学习 | 第 5 章 | 图像能处理了,变长序列怎么办 |
| 第 7 章 RNN 原理 | 序列建模、BPTT、梯度消失 | 第 6 章 | 普通 RNN 记不住长依赖 |
| 第 8 章 LSTM 与 GRU | 门控逐门拆解与梯度路径 | 第 7 章 | 文本任务怎么落地 |
| 第 9 章 RNN 实战 | 文本分类、时间序列、packing | 第 8 章 | 判别式会了,怎么生成数据 |
| 第 10 章 GAN 原理 | 极小极大、JS 散度、模式崩溃 | 第 9 章 | 训练不稳、崩了怎么办 |
| 第 11 章 GAN 变体 | DCGAN、WGAN-GP、条件生成 | 第 10 章 | 四个网络到底怎么选 |
| 第 12 章 对比与选型 | 归纳偏置、参数量、决策树 | 第 11 章 | 为什么 2017 年后转向 Transformer |
四、计划中的文件树
每个叶子目录内放同名 .md 与 assets/。
text
AI界的四大天王/
├── AI界的四大天王:DNN CNN RNN GAN.md ← 容器节点(本文件)
├── 前置篇:一张图看懂四张网络/
│ ├── 理论学习:四张结构图在讲什么/
│ ├── 案例拆解:每个箭头对应哪行公式/
│ └── 实战演练:用零依赖 Python 画出四张拓扑图/
├── 第 1 章:DNN 基础/
│ ├── 理论学习:从一条直线到多层网络/
│ ├── 案例拆解:一个神经元的手算全过程/
│ └── 实战演练:用 PyTorch 搭出第一个 MLP/
├── 第 2 章:反向传播/
│ ├── 理论学习:梯度到底从哪来/
│ ├── 案例拆解:三层网络的反向传播逐层手推/
│ └── 实战演练:不调 autograd,手写反向传播/
├── 第 3 章:训练工程/
│ ├── 理论学习:为什么你的网络不收敛/
│ ├── 案例拆解:同一网络换六种配置的对照实验/
│ └── 实战演练:把 MLP 训到 98% 并画诊断曲线/
├── 第 4 章:CNN 原理/
│ ├── 理论学习:卷积为什么能看见图像/
│ ├── 案例拆解:一次卷积的逐像素计算/
│ └── 实战演练:手写 conv2d 并与 PyTorch 对齐/
├── 第 5 章:CNN 架构演进/
│ ├── 理论学习:从 LeNet 到 ResNet 的五个关键决策/
│ ├── 案例拆解:残差块与梯度高速公路/
│ └── 实战演练:复现小 ResNet 并对比 plain net/
├── 第 6 章:CNN 实战/
│ ├── 理论学习:图像分类的完整流水线/
│ ├── 案例拆解:CIFAR-10 的增强与迁移学习/
│ └── 实战演练:训到 90%+ 并做错误样本分析/
├── 第 7 章:RNN 原理/
│ ├── 理论学习:序列模型为什么要共享参数/
│ ├── 案例拆解:BPTT 展开与梯度消失的数值验证/
│ └── 实战演练:用 NumPy 写字符级 RNN/
├── 第 8 章:LSTM 与 GRU/
│ ├── 理论学习:门控如何解决长依赖/
│ ├── 案例拆解:LSTM 三个门逐个拆/
│ └── 实战演练:LSTM / GRU / RNN 对照实验/
├── 第 9 章:RNN 实战/
│ ├── 理论学习:变长序列的工程处理/
│ ├── 案例拆解:embedding、packing 与截断 BPTT/
│ └── 实战演练:情感分类 + 时间序列预测/
├── 第 10 章:GAN 原理/
│ ├── 理论学习:两个网络为什么要对着练/
│ ├── 案例拆解:判别器最优时在优化什么散度/
│ └── 实战演练:用 NumPy 生成一维高斯分布/
├── 第 11 章:GAN 变体与训练/
│ ├── 理论学习:模式崩溃与训练不稳的成因/
│ ├── 案例拆解:DCGAN 架构与 WGAN-GP 改动清单/
│ └── 实战演练:MNIST 生成与训练曲线诊断/
└── 第 12 章:对比与选型/
├── 理论学习:四个网络的归纳偏置对比/
├── 案例拆解:同一任务分别用四个网络/
└── 实战演练:综合验收与选型报告/五、逐篇细纲
前置篇:一张图看懂四张网络
- 理论学习《四张结构图在讲什么》|250–350 行 / 8 张图 ✅
- 四张图共用的骨架:输入 → 层 → 输出
- DNN 的全连接
- CNN 的局部连接
- RNN 的时间展开与 GAN 的双网络
- 案例拆解《每个箭头对应哪行公式》|250–350 行 / 5 张图 ✅
- 圆点 = 神经元
- 连线 = 权重
- 一层 = 一次矩阵乘
- GAN 的两个箭头为什么互相指
- 实战演练《用零依赖 Python 画出四张拓扑图》|400–800 行 / 11 张图 ✅
- 零依赖 SVG 画布与四个图元
- 四种拓扑
- 导出 assets
- 与原图对照
- 验收:不看讲义,对着图说出每个模块在算什么。
第 1 章:DNN 基础
本章不做:不碰卷积与序列,不追求 SOTA。
- 理论学习《从一条直线到多层网络》|250–350 行 / 12 张图 ✅ 299 行 / 13 图
- XOR 为什么单层做不到
- 隐藏层如何改变决策边界
- 万能近似定理管什么、不管什么
- 深与宽的参数账
- 案例拆解《一个神经元的手算全过程》|300–500 行 / 8 张图 ✅ 482 行 / 8 图
- 一次前向的每个乘加
- 矩阵形状与批量
- 参数量与计算量估算
- 换激活函数后的数值变化
- 实战演练《用 PyTorch 搭出第一个 MLP》|800–1500 行 / 20 张图 ✅ 925 行 / 20 图
- 数据与基线
- 前向、损失、准确率
- 训练循环与曲线
- 三种必现失败:全零初始化、学习率过大、标签错位
- 验收:MNIST 子集 10 分钟到 95%,并能指出
loss.backward()里还没讲的部分。
第 2 章:反向传播
本章不做:不引入复杂优化器,不追求训练速度。
- 理论学习《梯度到底从哪来》|250–350 行 / 12 张图 ✅ 297 行 / 12 图
- 损失曲面与链式法则
- 计算图与反向模式
- 为什么不用数值梯度
- 学习率、批量、动量的作用
- 案例拆解《三层网络的反向传播逐层手推》|350–500 行 / 8 张图 ✅ 493 行 / 8 图
- 前向缓存了什么
- 输出层梯度
- 隐藏层梯度递推
- 与自动微分逐数值对齐
- 实战演练《不调 autograd,手写反向传播》|1000–1800 行 / 18 张图 ✅ 1000 行 / 18 图
- 张量形状与缓存
- 手写 backward
- 梯度校验
- 训到 97% 并与 PyTorch 对比
- 验收:手写梯度与 autograd 相对误差小于 1e-6。
第 3 章:训练工程
本章不做:不堆技巧,每个变量单独验证。
- 理论学习《为什么你的网络不收敛》|250–350 行 / 12 张图 ✅ 293 行 / 12 图
- 激活函数饱和
- 初始化方差
- 归一化的作用位置
- 优化器与正则
- 案例拆解《同一网络换六种配置的对照实验》|300–450 行 / 10 张图 ✅ 316 行 / 10 图
- 控制变量
- 学习率扫描
- BN 前后
- 过拟合曲线
- 实战演练《把 MLP 训到 98% 并画诊断曲线》|800–1500 行 / 18 张图 ✅ 812 行 / 18 图
- 训练、验证、测试三分
- 早停与调参
- 混淆矩阵
- 复盘表
- 验收:给出"现象 → 可能原因 → 下一步动作"的诊断表。
第 4 章:CNN 原理
本章不做:不碰目标检测与分割。
- 理论学习《卷积为什么能看见图像》|250–350 行 / 14 张图 ✅ 302 行 / 14 图
- 全连接的三个致命问题
- 局部连接与参数共享
- 输出尺寸公式
- 感受野与堆叠
- 案例拆解《一次卷积的逐像素计算》|300–450 行 / 10 张图 ✅ 304 行 / 10 图
- 单通道手算
- 多通道与卷积核个数
- padding、stride、dilation
- 池化丢了什么
- 实战演练《手写 conv2d 并与 PyTorch 对齐》|800–1500 行 / 18 张图 ✅ 801 行 / 18 图
- im2col 思路
- 朴素四重循环
- 与
F.conv2d数值对齐 - 速度对比
- 验收:输出逐元素误差小于 1e-5,并能解释慢在哪。
第 5 章:CNN 架构演进
本章不做:不训 ImageNet 全量,不追论文复现精度。
- 理论学习《从 LeNet 到 ResNet 的五个关键决策》|250–350 行 / 14 张图
- 深度带来收益也带来退化
- AlexNet 的 ReLU 与 Dropout
- VGG 的 3×3 堆叠
- 残差与恒等映射
- 案例拆解《残差块与梯度高速公路》|350–500 行 / 10 张图
- 残差块结构
- 梯度回传路径
- 投影 shortcut
- 1×1 卷积降维
- 实战演练《复现小 ResNet 并对比 plain net》|1000–1800 行 / 18 张图
- 两种网络同参数量
- 训练曲线对比
- 退化现象复现
- 结论
- 验收:plain net 加深后变差、ResNet 不变差。
第 6 章:CNN 实战
本章不做:不接检测框架,只做分类闭环。
- 理论学习《图像分类的完整流水线》|250–350 行 / 12 张图
- 数据划分与泄漏
- 数据增强
- 迁移学习
- 指标与错误分析
- 案例拆解《CIFAR-10 的增强与迁移学习》|300–450 行 / 10 张图
- 增强策略对照
- 冻结与微调
- warmup 与调度
- 小样本下的差异
- 实战演练《训到 90%+ 并做错误样本分析》|1000–2000 行 / 22 张图
- 基线
- 增强与调度
- 混淆矩阵
- 20 张错例归因
- 验收:测试集 90% 以上,错例归因至少三类。
第 7 章:RNN 原理
本章不做:不碰注意力机制。
- 理论学习《序列模型为什么要共享参数》|250–350 行 / 12 张图
- 变长输入
- 参数共享与时间展开
- BPTT
- 梯度消失与爆炸的数学
- 案例拆解《BPTT 展开与梯度消失的数值验证》|300–450 行 / 10 张图
- 展开图
- 雅可比连乘
- 谱半径
- 梯度裁剪
- 实战演练《用 NumPy 写字符级 RNN》|900–1600 行 / 18 张图
- 字符表与 one-hot
- 前向与 BPTT
- 采样生成
- 梯度爆炸复现与裁剪
- 验收:能生成像样的短句,并能展示裁剪前后的梯度范数。
第 8 章:LSTM 与 GRU
本章不做:不引入 seq2seq 与注意力。
- 理论学习《门控如何解决长依赖》|250–350 行 / 14 张图
- 遗忘门
- 输入门与细胞状态
- 输出门
- GRU 的两门简化
- 案例拆解《LSTM 三个门逐个拆》|350–500 行 / 10 张图
- 单步公式全展开
- 细胞状态的高速公路
- 参数量账
- 与 GRU 对比
- 实战演练《LSTM / GRU / RNN 对照实验》|800–1500 行 / 18 张图
- 同一任务同参数量
- 序列长度扫描
- 训练时间与显存
- 结论
- 验收:序列越长 vanilla RNN 先崩,给出曲线证据。
第 9 章:RNN 实战
本章不做:不做机器翻译,不接预训练语言模型。
- 理论学习《变长序列的工程处理》|250–350 行 / 12 张图
- padding 与 mask
- packing
- 截断 BPTT
- 双向与多层
- 案例拆解《embedding、packing 与截断》|300–450 行 / 10 张图
- 词表与 embedding
- pack 前后发生了什么
- 截断位置
- 批内长度分布
- 实战演练《情感分类 + 时间序列预测》|1000–2000 行 / 20 张图
- 文本管线
- 分类验收
- 滑窗预测
- 误差分析
- 验收:分类 F1 达标;能说清 padding 没 mask 时错在哪。
第 10 章:GAN 原理
本章不做:不碰图像生成,先用一维分布把博弈讲透。
- 理论学习《两个网络为什么要对着练》|250–350 行 / 14 张图
- 生成模型的目标
- 极小极大博弈
- 最优判别器与 JS 散度
- 纳什均衡与不收敛
- 案例拆解《判别器最优时在优化什么散度》|350–500 行 / 10 张图
- 最优判别器的推导
- JS 散度
- 梯度消失
- 模式崩溃的几何
- 实战演练《用 NumPy 生成一维高斯分布》|700–1200 行 / 16 张图
- 两个 MLP
- 交替训练
- 分布可视化
- 失败案例
- 验收:生成分布与真实分布的均值、方差误差可见地收敛。
第 11 章:GAN 变体与训练
本章不做:不碰 StyleGAN,不做高分辨率生成。
- 理论学习《模式崩溃与训练不稳的成因》|250–350 行 / 14 张图
- 模式崩溃
- 梯度消失与震荡
- WGAN 的 Earth Mover 距离
- 梯度惩罚
- 案例拆解《DCGAN 架构与 WGAN-GP 改动清单》|350–500 行 / 10 张图
- 转置卷积
- BN 与激活的选择
- critic 与 n_critic
- 改动前后对照
- 实战演练《MNIST 生成与训练曲线诊断》|1000–2000 行 / 22 张图
- DCGAN 基线
- WGAN-GP
- 目视与 FID
- 失败模式图鉴
- 验收:能生成可辨认数字,并能用曲线判断崩没崩。
第 12 章:对比与选型
本章不做:不展开 Transformer 与扩散模型,只留入口。
- 理论学习《四个网络的归纳偏置对比》|250–350 行 / 12 张图
- 局部性、序列性、生成式三种偏置
- 参数量与感受野
- 训练稳定性
- 选型决策树
- 案例拆解《同一任务分别用四个网络》|300–450 行 / 10 张图
- 图像分类
- 序列分类
- 生成任务
- 结论与失效边界
- 实战演练《综合验收与选型报告》|800–1500 行 / 16 张图
- 四项复现清单
- 指标汇总
- 选型报告模板
- 下一站:Transformer 与扩散模型
- 验收:一份能直接给面试官讲的对比报告。
六、素材清单
深度只能来自素材,动笔前先备齐。
- 论文:LeNet(1998)、AlexNet(2012)、VGG(2014)、ResNet(2015)、LSTM(1997)、GRU(2014)、GAN(2014)、DCGAN(2015)、WGAN-GP(2017)
- 课程:CS231n、d2l.ai、3Blue1Brown 的反向传播两集
- 文档:PyTorch tutorials 与
torch.nn.functionalAPI 文档 - 数据:MNIST、CIFAR-10、IMDB、公开时间序列集
七、生产规范
- 每章按"理论学习 → 案例拆解 → 实战演练"顺序写,三篇共用同一套命名与数据结构。
- 理论篇开头 150 字内承接上一章,抛出一个会失败的具体场景,不从定义讲起。
- 每个抽象概念必须落到可验证的细节:字段名、参数、张量形状、返回值、报错、指标。
- 每篇至少两处设计取舍,写清 A 方案与 B 方案的代价。
- 每篇至少一处踩坑:错误现象 → 原因 → 修复。
- 每篇至少一组具体数字:延迟、显存、参数量、准确率、训练时长。
- 代码块标文件路径与函数名,关键行写中文注释,代码必须能跑。
- 配图用 SVG,正文写
,生成脚本放同目录assets/;每张图能重跑生成,不手改 SVG。 - 结尾不总结全文,只留一个本章解决不了的问题,指向下一章。
八、下一步
按章生产,一次只写一篇。写完先过审稿,再进入下一章。
- 前置篇:一张图看懂四张网络
- 第 1 章:DNN 基础
- 第 2 章:反向传播
- 第 3 章:训练工程
- 第 4 章:CNN 原理
- 第 5 章:CNN 架构演进
- 第 6 章:CNN 实战
- 第 7 章:RNN 原理
- 第 8 章:LSTM 与 GRU
- 第 9 章:RNN 实战
- 第 10 章:GAN 原理
- 第 11 章:GAN 变体与训练
- 第 12 章:对比与选型