跳到主要内容

大纲 — handbook-of-deep-learning-models(11 章)

主线(我们自己的讲法,不照搬原书目录):约束即智能——这本手册里每一代架构的更新, 本质都是往网络里注入一种新的先验(对数据结构的假设):先验越贴合数据,要学的参数越少、 要喂的数据越少。原书 ch4 那条参数量论证链(10¹² → 4×10⁶ → 几百)是全书最好的锚点。 原书 8 章互相独立、像 46 张模型卡片;我们把它重排成一条线:先看神经网络之前的工具箱 (人递特征)→ 神经网络本体与优化器(特征自己学)→ 三大主力架构各注入什么先验 (CNN=空间,RNN=时间,GAN=博弈)→ 两个前深度学习时代的原型架构(RBF/SOM=距离) → 每章如实标注「作者给了证据还是只有断言」。

章节切分(一节一行 = 「进来时以为… → 出去时知道…」)

01-handbook-map.md(原书 ch1)

  • 这是一本什么书:进来时以为是系统教材 → 出去时知道是六位作者(教授+工程师+一名刚高中毕业的学生)合编的 Keras/PyTorch 实验手册,章节质量参差,要先拿质量地图再读。
  • AI/ML/DL 三层套娃:进来时以为三个词随便换用 → 出去时知道是三层包含关系,DL 专指「用深层神经网络自动学特征」。
  • DL 与传统 ML 的分界:进来时以为只是「网络更深」 → 出去时知道是三条:表示学习(特征不再靠人递)、端到端、吃数据吃算力。
  • 里程碑时间线:进来时以为 DL 是 2012 年突然出现 → 出去时知道是 1958 感知机→1986 反向传播→2006 预训练→2012 AlexNet 一条被算力和数据解锁的老 idea。
  • 质量地图:进来时以为每章同等可信 → 出去时知道哪些章可引(ch4/6.1/7/8.4)、哪些章要带怀疑(ch2、3.4-3.5、代码层)。

02-classic-line-models.md(原书 ch2 上:2.1-2.10)

  • 监督/无监督之分:进来时以为是算法分类 → 出去时知道是「有没有标准答案」的问题分类,F(X)=Y。
  • 线性回归:进来时以为是画直线 → 出去时知道是最小二乘找系数,以及它对离群点和非线性的脆弱。
  • 正则化(Lasso/Ridge):进来时以为是高深技巧 → 出去时知道是「给系数上刑」防止背题,一条治稀疏一条治共线;并知道书里这段代码贴错了。
  • 逻辑回归:进来时以为是回归 → 出去时知道是分类:先线性打分,再压到 0-1 当概率。
  • SVM/KNN/LDA:进来时以为是一堆缩写 → 出去时知道三种不同的「画线/找邻居/投影」思路和各自的死穴(K 的选择、维数灾难、高斯假设)。

03-trees-and-ensembles.md(原书 ch2 下:2.11-2.18)

  • 决策树:进来时以为是流程图 → 出去时知道是递归选「最会分开数据的那个问题」,主走查:就诊次数阈值 4。
  • 随机森林与 Extra Trees:进来时以为是两个产品名 → 出去时知道都是「一群树投票」,差在抽样方式和分裂点选择(两处随机 vs 三处随机)。
  • AdaBoost 与 GBM:进来时以为 boosting 是一个东西 → 出去时知道是两种纠错哲学:改样本权重 vs 拟合残差。
  • 过拟合/欠拟合与偏差-方差:进来时以为是背概念 → 出去时知道是「背题」与「太笨」的一根轴,以及 k 折交叉验证怎么把一次运气变成平均成绩。
  • 指标:进来时以为准确率万能 → 出去时知道类不平衡时准确率会说谎,precision/recall 的取舍要看「漏报贵还是误报贵」。

04-neural-network-units.md(原书 ch3.1-3.2)

  • 神经元是什么:进来时以为是仿脑黑科技 → 出去时知道就是「加权求和+过一个函数」,主走查:weight=2.0、bias=1.0 的线性单元手算。
  • 为什么需要激活函数:进来时以为可有可无 → 出去时知道没有非线性,一百层也等价于一层线性变换。
  • sigmoid 之死:进来时以为它是标配 → 出去时知道它两端饱和导致梯度消失,被 ReLU(正侧导数恒 1)取代;leaky ReLU 治「死了的 ReLU」。
  • softmax:进来时以为是个函数 → 出去时知道是把一串打分变成「和为 1 的概率分布」的输出层专属件。
  • 层的三种形态:dense(全连)、卷积(局部共享)、循环(带时间),为后面三章埋钩子。

05-optimizer-family.md(原书 ch3.3 + 3.6-3.14;3.4-3.5 只作「书里插了两章数学」如实标注)

  • 优化在优化什么:进来时以为最小化训练误差就是目标 → 出去时知道优化器只管训练误差,泛化要另想办法(正则化/dropout/早停/数据增强)。
  • 梯度下降三变体:进来时以为 SGD 就是随机版 GD → 出去时知道 batch/随机/mini-batch 是「精度-速度」滑杆,主走查:书里 y=3x₀+2x₁ 的数据上,mini-batch 学到 [0.029, 3.062, 1.948]、batch 学到 [−0.052, 3.111, 1.945] (真实系数 3 和 2)。
  • 优化器进化链(本章主脊):进来时以为 Adam 是魔法 → 出去时知道每代优化器都在修上一代的病:GD 走不动峡谷→动量借历史梯度;动量瞎冲→Nesterov 先前瞻;固定学习率对不同参数不公→AdaGrad 按历史梯度缩放;AdaGrad 学步塌缩→RMSprop 加衰减;RMSprop 没有动量→Adam 合体,偏差修正。
  • 学习率调度:进来时以为学习率设一次 → 出去时知道要随训练退火(阶梯/指数/plateau 降/warmup);并如实标注:本节标题许诺了调度,代码里却没有任何调度器。
  • 书里插的两章数学(凸性/约束):进来时以为是 DL 必修 → 出去时知道它与本书主线关系薄弱,且两个例子输出与自己的约束矛盾(如实记为书的硬伤)。
  • L-BFGS:进来时以为深度学习只有一阶方法 → 出去时知道二阶思想的低成本近似(Hessian 逆的 limited-memory 逼近)适用于参数量中等的问题。

06-birth-of-convolution.md(原书 ch4 上:4.1-4.3)

  • 全连接为何撑不住图像:进来时以为只是慢 → 出去时知道是参数量灾难:1000×1000 图→1000×1000 隐层要 10¹² 个参数(主走查起点)。
  • 两条先验省掉约十个数量级:进来时以为卷积是数学奇技 → 出去时知道是「平移不变(权重与位置无关)→4×10⁶」+「局部性(只看 Δ<10 的邻域)→几百个参数」,inductive bias 概念在此立起。
  • 卷积在算什么:进来时以为是积分 → 出去时知道深度学习做的是不翻核的互相关:3×3 输入×2×2 核,0×0+1×1+3×2+4×3=19(主走查)。
  • 边缘检测:进来时以为要训练才知道 → 出去时知道手写核 [[1,-1]] 就能提竖边:输出列 [0,1,0,0,0,-1,0],转置图全 0——核只认特定方向的边。
  • 学核:进来时以为滤波器要手工设计 → 出去时知道把「设计」换成「从数据里学」正是 DL 的核心动作:已知 X 和 Y,SGD 十轮学出核。

07-convolution-anatomy.md(原书 ch4 下:4.4-4.7)

  • 尺寸公式:进来时以为输出尺寸靠试 → 出去时知道是公式 ⌊(n+2p−k)/s⌋+1;padding=k−1 保尺寸;实测 kernel=3、padding=1:8×8 进 8×8 出;stride=2:8×8 进 4×4 出。
  • 通道:进来时以为 RGB 只是三张图 → 出去时知道卷积核也带通道维、跨通道求和:37+19=56 的双通道走查;1×1 卷积=「在每个像素上放一个全连接层」只混通道不看空间。
  • 池化:进来时以为是缩小图片 → 出去时知道是无参数的「只留最强响应」:[[0,1,2],[3,4,5],[6,7,8]] 经 2×2 max 得 [[4,5],[7,8]];它让「挪一格以内的模式」输出不变(平移容忍的来源)。
  • 感受野:进来时以为每层只看自己那格 → 出去时知道叠两层 2×2 卷积后,一个输出能间接看到全部 9 个输入——深度换视野。
  • 本章的可信度:进来时以为全书一手原创 → 出去时知道这章是最好的章、但底子是 d2l.ai(代码直接 import d2l)且未署名;小结许诺的「图像分类用例」全章不存在。

08-rnn-lstm.md(原书 ch5)

  • 为什么需要记忆:进来时以为网络天然记得上文 → 出去时知道前馈网络每步独立,股价/文本这类「顺序敏感」问题要靠循环连接把上一步的隐状态递给下一步。
  • RNN 的死穴:进来时以为梯度消失只在深网络 → 出去时知道按时间展开后它同样致命,长期依赖学不到,还难并行。
  • LSTM 的门(本章主走查):进来时以为 LSTM 是黑盒 → 出去时知道一行核心公式 C(t)=(C(t−1)⊗f(t))+(i(t)⊗C̃t):遗忘门决定擦掉多少旧记忆,输入门决定写进多少新内容,输出门决定露多少;用书里的股价序列 [100,110,108,120,115] 讲「趋势留在 cell state、噪声被门挡掉」。
  • 文本生成用例:进来时以为生成很神秘 → 出去时知道就是字符级下一字符预测:Macbeth 文本、50 字符窗口、两层 LSTM(300)、训练后从种子续写。
  • 时代注脚:进来时以为 RNN 是现在时 → 出去时知道书里自己承认 transformer 已在部分任务上取代 RNN;这章是「上一个时代的主力」。

09-gan.md(原书 ch6)

  • 生成 vs 判别:进来时以为神经网络只会分类 → 出去时知道生成模型要学「数据本身的分布」。
  • 博弈式训练:进来时以为造假者是孤军奋战 → 出去时知道 GAN=生成器造假、判别器打假、互相逼着进步;损失函数三件套(D 的交叉熵、G 的 −log(1−D(G(z)))、G 太强时改 −log D(G(z)))。
  • MNIST 全流程(本章主走查):进来时以为 GAN 难落地 → 出去时知道能一步步复现:像素归一化到 [−1,1]→生成器把 100 维噪声放大成 28×28→判别器两层 Dense→Adam(0.0002, 0.5)→交替训练;第 0 轮是噪声,十轮后成形。
  • 训练的病:进来时以为 GAN 只是难训 → 出去时知道病有名字:模式坍塌(生成器只会画一样东西)、不稳定、没法评估。
  • DCGAN 与本章的可信度:进来时以为是同一套代码 → 出去时知道 Keras 版与 PyTorch 版是两个来源拼的,PyTorch 版直接用 d2l 库;书里残留聊天腔(「beyond the scope of a single response」)且引用错位——引数量时要绕开它的参考文献。

10-rbf-networks.md(原书 ch7)

  • 原型思想:进来时以为神经网络都要层层抽象 → 出去时知道 RBF 反其道:隐层每个神经元就是输入空间里一个「中心」,只对靠近自己的输入强响应。
  • 训练三步走(本章主走查):进来时以为训练必用反向传播 → 出去时知道 RBF 把训练拆成:k-means 定中心(无监督)→ σ=d/√(2M) 定宽度 → 输出权重解一次线性方程组 (GᵀG)⁻¹GᵀY——没有梯度下降。
  • 与 MLP 的实测对比:进来时以为是理论优劣之争 → 出去时知道书里给了同题实测:银行定期存款预测上两者都是 88% 准确率,但 RBF 训练便宜得多。
  • 为什么被边缘化:进来时以为它是「更好的网络」 → 出去时知道它赢在低维局部模式,输在「特征要自己学」的时代——高维感知任务全让给了 CNN;书没说的是它至今活在插值和控制领域。

11-self-organizing-maps.md(原书 ch8)

  • 无监督的邻居:进来时以为无监督=聚类 → 出去时知道 SOM 多一样东西:网格上的邻居关系——相似的数据不仅归一类,还要落在相邻的位置(拓扑保持)。
  • 竞争+合作(本章主走查):进来时以为训练必有损失函数 → 出去时知道 SOM 没有损失:每个样本找「最像自己的神经元」(BMU),拉着它的邻居一起向输入挪;用书里的完整数值:X=[0.7,0.6,0.9]、节点 3 距离 0.4 胜出、学习率 0.5,权重 [0.39,0.42,0.45] 更新为 [0.545, 0.51, 0.675]。
  • 收缩的邻域:进来时以为邻域大小拍脑袋 → 出去时知道 σ(t)=σ0·exp(−t/λ) 先大后小:先粗排后细调,和优化器的学习率退火是同一个思想(与 05 章呼应)。
  • 欺诈检测用例与它的毛病:进来时以为用例可信 → 出去时知道思路真实(MiniSom 10×10 网格、U 矩阵亮区=异常),但书把两个不同数据集的描述缝在了一起——数据描述别照抄。
  • 全书收束:进来时以为八个架构各自孤立 → 出去时知道 RBF/SOM 是「距离原型」这一先验的监督/无监督两副面孔,而全书每一种架构都是一种先验;先验选对,数据和算力都省。

自查

  • 各章「出去时知道」两两不同;02/03(线 vs 树)、06/07(为什么卷积 vs 卷积配件)、10/11(监督原型 vs 无监督原型)是刻意对照,不重复。
  • 每章一条主走查:01 无(地图章,走查=质量地图的核对动作)——不行,红线二要求每章有主走查。修正:01 的主走查 = 拿「识别一张图里有没有猫」这一个任务,分别走「经典 ML 路线」和「DL 路线」两条流程,对比谁在哪一步递特征。
  • 原书 8 章全覆盖:ch1→01,ch2→02+03,ch3→04+05,ch4→06+07,ch5→08,ch6→09,ch7→10,ch8→11。
  • 预计每章 9-13k 字符,共约 12 万字符。