Skip to content

AI 界的四大天王:DNN / CNN / RNN / GAN 从原理到复现 ​

课程级笔记大纲,写作目标与《MewHelp AI 智能客服实战》同级:读者能照着重做一遍。 状态:前置篇至第 4 章已完成,第 5 章起待写。

零、章节入口 ​

一、专题定位 ​

  • 读者:会 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–20008–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 张图 ✅
    1. 四张图共用的骨架:输入 → 层 → 输出
    2. DNN 的全连接
    3. CNN 的局部连接
    4. RNN 的时间展开与 GAN 的双网络
  • 案例拆解《每个箭头对应哪行公式》|250–350 行 / 5 张图 ✅
    1. 圆点 = 神经元
    2. 连线 = 权重
    3. 一层 = 一次矩阵乘
    4. GAN 的两个箭头为什么互相指
  • 实战演练《用零依赖 Python 画出四张拓扑图》|400–800 行 / 11 张图 ✅
    1. 零依赖 SVG 画布与四个图元
    2. 四种拓扑
    3. 导出 assets
    4. 与原图对照
  • 验收:不看讲义,对着图说出每个模块在算什么。

第 1 章:DNN 基础 ​

本章不做:不碰卷积与序列,不追求 SOTA。

  • 理论学习《从一条直线到多层网络》|250–350 行 / 12 张图 ✅ 299 行 / 13 图
    1. XOR 为什么单层做不到
    2. 隐藏层如何改变决策边界
    3. 万能近似定理管什么、不管什么
    4. 深与宽的参数账
  • 案例拆解《一个神经元的手算全过程》|300–500 行 / 8 张图 ✅ 482 行 / 8 图
    1. 一次前向的每个乘加
    2. 矩阵形状与批量
    3. 参数量与计算量估算
    4. 换激活函数后的数值变化
  • 实战演练《用 PyTorch 搭出第一个 MLP》|800–1500 行 / 20 张图 ✅ 925 行 / 20 图
    1. 数据与基线
    2. 前向、损失、准确率
    3. 训练循环与曲线
    4. 三种必现失败:全零初始化、学习率过大、标签错位
  • 验收:MNIST 子集 10 分钟到 95%,并能指出 loss.backward() 里还没讲的部分。

第 2 章:反向传播 ​

本章不做:不引入复杂优化器,不追求训练速度。

  • 理论学习《梯度到底从哪来》|250–350 行 / 12 张图 ✅ 297 行 / 12 图
    1. 损失曲面与链式法则
    2. 计算图与反向模式
    3. 为什么不用数值梯度
    4. 学习率、批量、动量的作用
  • 案例拆解《三层网络的反向传播逐层手推》|350–500 行 / 8 张图 ✅ 493 行 / 8 图
    1. 前向缓存了什么
    2. 输出层梯度
    3. 隐藏层梯度递推
    4. 与自动微分逐数值对齐
  • 实战演练《不调 autograd,手写反向传播》|1000–1800 行 / 18 张图 ✅ 1000 行 / 18 图
    1. 张量形状与缓存
    2. 手写 backward
    3. 梯度校验
    4. 训到 97% 并与 PyTorch 对比
  • 验收:手写梯度与 autograd 相对误差小于 1e-6。

第 3 章:训练工程 ​

本章不做:不堆技巧,每个变量单独验证。

  • 理论学习《为什么你的网络不收敛》|250–350 行 / 12 张图 ✅ 293 行 / 12 图
    1. 激活函数饱和
    2. 初始化方差
    3. 归一化的作用位置
    4. 优化器与正则
  • 案例拆解《同一网络换六种配置的对照实验》|300–450 行 / 10 张图 ✅ 316 行 / 10 图
    1. 控制变量
    2. 学习率扫描
    3. BN 前后
    4. 过拟合曲线
  • 实战演练《把 MLP 训到 98% 并画诊断曲线》|800–1500 行 / 18 张图 ✅ 812 行 / 18 图
    1. 训练、验证、测试三分
    2. 早停与调参
    3. 混淆矩阵
    4. 复盘表
  • 验收:给出"现象 → 可能原因 → 下一步动作"的诊断表。

第 4 章:CNN 原理 ​

本章不做:不碰目标检测与分割。

  • 理论学习《卷积为什么能看见图像》|250–350 行 / 14 张图 ✅ 302 行 / 14 图
    1. 全连接的三个致命问题
    2. 局部连接与参数共享
    3. 输出尺寸公式
    4. 感受野与堆叠
  • 案例拆解《一次卷积的逐像素计算》|300–450 行 / 10 张图 ✅ 304 行 / 10 图
    1. 单通道手算
    2. 多通道与卷积核个数
    3. padding、stride、dilation
    4. 池化丢了什么
  • 实战演练《手写 conv2d 并与 PyTorch 对齐》|800–1500 行 / 18 张图 ✅ 801 行 / 18 图
    1. im2col 思路
    2. 朴素四重循环
    3. 与 F.conv2d 数值对齐
    4. 速度对比
  • 验收:输出逐元素误差小于 1e-5,并能解释慢在哪。

第 5 章:CNN 架构演进 ​

本章不做:不训 ImageNet 全量,不追论文复现精度。

  • 理论学习《从 LeNet 到 ResNet 的五个关键决策》|250–350 行 / 14 张图
    1. 深度带来收益也带来退化
    2. AlexNet 的 ReLU 与 Dropout
    3. VGG 的 3×3 堆叠
    4. 残差与恒等映射
  • 案例拆解《残差块与梯度高速公路》|350–500 行 / 10 张图
    1. 残差块结构
    2. 梯度回传路径
    3. 投影 shortcut
    4. 1×1 卷积降维
  • 实战演练《复现小 ResNet 并对比 plain net》|1000–1800 行 / 18 张图
    1. 两种网络同参数量
    2. 训练曲线对比
    3. 退化现象复现
    4. 结论
  • 验收:plain net 加深后变差、ResNet 不变差。

第 6 章:CNN 实战 ​

本章不做:不接检测框架,只做分类闭环。

  • 理论学习《图像分类的完整流水线》|250–350 行 / 12 张图
    1. 数据划分与泄漏
    2. 数据增强
    3. 迁移学习
    4. 指标与错误分析
  • 案例拆解《CIFAR-10 的增强与迁移学习》|300–450 行 / 10 张图
    1. 增强策略对照
    2. 冻结与微调
    3. warmup 与调度
    4. 小样本下的差异
  • 实战演练《训到 90%+ 并做错误样本分析》|1000–2000 行 / 22 张图
    1. 基线
    2. 增强与调度
    3. 混淆矩阵
    4. 20 张错例归因
  • 验收:测试集 90% 以上,错例归因至少三类。

第 7 章:RNN 原理 ​

本章不做:不碰注意力机制。

  • 理论学习《序列模型为什么要共享参数》|250–350 行 / 12 张图
    1. 变长输入
    2. 参数共享与时间展开
    3. BPTT
    4. 梯度消失与爆炸的数学
  • 案例拆解《BPTT 展开与梯度消失的数值验证》|300–450 行 / 10 张图
    1. 展开图
    2. 雅可比连乘
    3. 谱半径
    4. 梯度裁剪
  • 实战演练《用 NumPy 写字符级 RNN》|900–1600 行 / 18 张图
    1. 字符表与 one-hot
    2. 前向与 BPTT
    3. 采样生成
    4. 梯度爆炸复现与裁剪
  • 验收:能生成像样的短句,并能展示裁剪前后的梯度范数。

第 8 章:LSTM 与 GRU ​

本章不做:不引入 seq2seq 与注意力。

  • 理论学习《门控如何解决长依赖》|250–350 行 / 14 张图
    1. 遗忘门
    2. 输入门与细胞状态
    3. 输出门
    4. GRU 的两门简化
  • 案例拆解《LSTM 三个门逐个拆》|350–500 行 / 10 张图
    1. 单步公式全展开
    2. 细胞状态的高速公路
    3. 参数量账
    4. 与 GRU 对比
  • 实战演练《LSTM / GRU / RNN 对照实验》|800–1500 行 / 18 张图
    1. 同一任务同参数量
    2. 序列长度扫描
    3. 训练时间与显存
    4. 结论
  • 验收:序列越长 vanilla RNN 先崩,给出曲线证据。

第 9 章:RNN 实战 ​

本章不做:不做机器翻译,不接预训练语言模型。

  • 理论学习《变长序列的工程处理》|250–350 行 / 12 张图
    1. padding 与 mask
    2. packing
    3. 截断 BPTT
    4. 双向与多层
  • 案例拆解《embedding、packing 与截断》|300–450 行 / 10 张图
    1. 词表与 embedding
    2. pack 前后发生了什么
    3. 截断位置
    4. 批内长度分布
  • 实战演练《情感分类 + 时间序列预测》|1000–2000 行 / 20 张图
    1. 文本管线
    2. 分类验收
    3. 滑窗预测
    4. 误差分析
  • 验收:分类 F1 达标;能说清 padding 没 mask 时错在哪。

第 10 章:GAN 原理 ​

本章不做:不碰图像生成,先用一维分布把博弈讲透。

  • 理论学习《两个网络为什么要对着练》|250–350 行 / 14 张图
    1. 生成模型的目标
    2. 极小极大博弈
    3. 最优判别器与 JS 散度
    4. 纳什均衡与不收敛
  • 案例拆解《判别器最优时在优化什么散度》|350–500 行 / 10 张图
    1. 最优判别器的推导
    2. JS 散度
    3. 梯度消失
    4. 模式崩溃的几何
  • 实战演练《用 NumPy 生成一维高斯分布》|700–1200 行 / 16 张图
    1. 两个 MLP
    2. 交替训练
    3. 分布可视化
    4. 失败案例
  • 验收:生成分布与真实分布的均值、方差误差可见地收敛。

第 11 章:GAN 变体与训练 ​

本章不做:不碰 StyleGAN,不做高分辨率生成。

  • 理论学习《模式崩溃与训练不稳的成因》|250–350 行 / 14 张图
    1. 模式崩溃
    2. 梯度消失与震荡
    3. WGAN 的 Earth Mover 距离
    4. 梯度惩罚
  • 案例拆解《DCGAN 架构与 WGAN-GP 改动清单》|350–500 行 / 10 张图
    1. 转置卷积
    2. BN 与激活的选择
    3. critic 与 n_critic
    4. 改动前后对照
  • 实战演练《MNIST 生成与训练曲线诊断》|1000–2000 行 / 22 张图
    1. DCGAN 基线
    2. WGAN-GP
    3. 目视与 FID
    4. 失败模式图鉴
  • 验收:能生成可辨认数字,并能用曲线判断崩没崩。

第 12 章:对比与选型 ​

本章不做:不展开 Transformer 与扩散模型,只留入口。

  • 理论学习《四个网络的归纳偏置对比》|250–350 行 / 12 张图
    1. 局部性、序列性、生成式三种偏置
    2. 参数量与感受野
    3. 训练稳定性
    4. 选型决策树
  • 案例拆解《同一任务分别用四个网络》|300–450 行 / 10 张图
    1. 图像分类
    2. 序列分类
    3. 生成任务
    4. 结论与失效边界
  • 实战演练《综合验收与选型报告》|800–1500 行 / 16 张图
    1. 四项复现清单
    2. 指标汇总
    3. 选型报告模板
    4. 下一站: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.functional API 文档
  • 数据:MNIST、CIFAR-10、IMDB、公开时间序列集

七、生产规范 ​

  1. 每章按"理论学习 → 案例拆解 → 实战演练"顺序写,三篇共用同一套命名与数据结构。
  2. 理论篇开头 150 字内承接上一章,抛出一个会失败的具体场景,不从定义讲起。
  3. 每个抽象概念必须落到可验证的细节:字段名、参数、张量形状、返回值、报错、指标。
  4. 每篇至少两处设计取舍,写清 A 方案与 B 方案的代价。
  5. 每篇至少一处踩坑:错误现象 → 原因 → 修复。
  6. 每篇至少一组具体数字:延迟、显存、参数量、准确率、训练时长。
  7. 代码块标文件路径与函数名,关键行写中文注释,代码必须能跑。
  8. 配图用 SVG,正文写 ![](../assets/xxx.svg),生成脚本放同目录 assets/;每张图能重跑生成,不手改 SVG。
  9. 结尾不总结全文,只留一个本章解决不了的问题,指向下一章。

八、下一步 ​

按章生产,一次只写一篇。写完先过审稿,再进入下一章。

  1. 前置篇:一张图看懂四张网络
  2. 第 1 章:DNN 基础
  3. 第 2 章:反向传播
  4. 第 3 章:训练工程
  5. 第 4 章:CNN 原理
  6. 第 5 章:CNN 架构演进
  7. 第 6 章:CNN 实战
  8. 第 7 章:RNN 原理
  9. 第 8 章:LSTM 与 GRU
  10. 第 9 章:RNN 实战
  11. 第 10 章:GAN 原理
  12. 第 11 章:GAN 变体与训练
  13. 第 12 章:对比与选型