Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第 1 讲总结 · 深度学习导论

本页把 导览 与 1.1–1.7 压成一张可复习的骨架。用法:先只看表格的「核心问题」列做自问,答不全再读「关键结论」列,最后回到「典型陷阱」列做校核。

节一览

节核心问题关键结论典型陷阱
1.1 从神经元到感知机一个神经元的数学形式与能力边界是什么?神经元 = 加权求和 + 偏置 + 非线性(定义 1.1.1);单层的天花板是线性可分,XOR 是最小反例(例 1.1.1);可分且有界时至多 (R/γ)2(R/\gamma)^2 次更新收敛(定理 1.1.1)以为「换更光滑的激活」就能让单层变强——能力没变,变的只是可训练性
1.2 多层感知机与通用逼近堆成层之后表达能力涨到哪、涨到什么程度?前向是「矩阵混 + 逐元素弯」交替 LL 次(定义 1.2.1);去掉非线性则深度退化为一个仿射映射(定理 1.2.1);形状推演只需三条规则、参数量与批大小无关;通用逼近只保证存在(定理 1.2.2),初始化靠方差守恒:Xavier / Kaiming把通用逼近当成「随便建个大网络就能逼近任意函数」的工程保证
1.3 激活函数:非线性从哪来为什么隐藏层不能用 Sigmoid?现代默认用什么?梯度要连乘每层导数;全 Sigmoid 网络跨 LL 层的衰减有结构性上界 (1/4)L(1/4)^{L}(定理 1.3.1);ReLU 不饱和但有不可自愈的死亡问题;平滑型与门控型(定义 1.3.2)是两条折中路线输出层也用 ReLU 族;把 ReLU 的「稀疏」当普遍优点;以为 GELU / SiLU 一定优于 ReLU
1.4 损失函数:把任务翻译成优化目标损失从哪来?为什么分类不用 MSE?损失 = 负对数似然,配对数表(输出层值域 ↔ 概率模型)现场可推(定理 1.4.1);softmax + 交叉熵的梯度恰是 p^−y\hat{\boldsymbol p}-\boldsymbol y(定理 1.4.2);交叉熵 == KL ++ 常数熵(定理 1.4.3)网络里加了 Softmax 又用 CrossEntropyLoss(算两次);回归有离群点仍用 MSE
1.5 梯度下降与反向传播上百万参数的梯度怎么在有限时间里全算出来?步长有硬上限 η≤1/β\eta\le 1/\beta(定理 1.5.1);反向传播 = 沿计算图逆序执行一串 VJP(定义 1.5.2);输入多输出少选反向模式(定理 1.5.2);误差信号一份两用(定理 1.5.3);梯度检查用中心差分 + 相对误差把反向传播当成「另一种数学」;忘记清空梯度(累加);没做梯度检查就相信实现
1.6 优化器:从 SGD 到 AdamW为什么需要动量、自适应学习率和解耦权重衰减?优化器改的是方向与逐参数步长(定义 1.6.1);动量的有效步长放大 1/(1−β)1/(1-\beta)(命题 1.6.1);Adam 的更新量级约等于 η\eta(定义 1.6.4);L2 与权重衰减在自适应下不等价(定理 1.6.1);批 ×kk ⇒ 学习率 ×kk(定理 1.6.2)以为换了 Adam 就不用调学习率;学习率与批大小只改一个;梯度没裁剪就开混合精度
1.7 泛化、正则化与归一化训练集上对了,为什么测试集上错?泛化误差按近似 / 估计 / 优化三类拆开(推论 1.7.1),三类手段互不通用;正则化是能力预算的再分配(定义 1.7.2);归一化真正改的是曲率(定义 1.7.3);BN 需 running stats、LN 类训练推理一致(定理 1.7.2);深度时代还有双下降(定理 1.7.3)用验证集调参又用它报结果(数据泄漏);在变长序列或小批量上用 BatchNorm

一条主线:因为单个线性单元的能力止于线性可分(1.1),所以必须分层把输入先变换再切分(1.2);因为层一多,唯一的非线性来源就成了能否训得动的开关(1.3),所以还要先回答「什么叫好」才能定义学习目标(1.4);有了目标,用一次前向 + 一次反向拿到全部梯度(1.5)才让「分层 + 目标」变得可计算;算出梯度之后,方向、逐参数步长与约束形式怎么选决定轨迹与最终解(1.6);而训练误差降下去还不等于任务完成,能不能带到没见过的数据上由数据、正则与评估方法共同决定(1.7)。

三句话带走

  1. 任何深度网络的训练都能拆成三件事:定义结构、定义损失、用梯度下降最小化损失。 反向传播只是链式法则在计算图上的高效实现,不是第四件事——它把求全部梯度的代价从 O(参数量)O(\text{参数量}) 次前向降到 O(1)O(1) 次前向加 O(1)O(1) 次反向。
  2. 每一步出错都有固定症状。 结构错 → 形状报错或深层训不动;目标错 → 收敛慢、概率过自信、少数类被忽略;优化错 → 损失不降 / 发散 / 震荡;泛化错 → 训练好验证差、离线好线上差。按症状定位环节,比盲调超参快一个数量级。
  3. 能表示不等于能学会,能学会不等于带得走。 通用逼近只保证存在性(宽度不可寻、可训性无保证、样本效率无保证);而「泛化异常好」的第一嫌疑人常常不是模型,而是评估方法本身(先排除数据泄漏,再相信任何指标)。

值得记住的六个定量结论

结论数值 / 形式出处
感知机收敛步数k≤(R/γ)2k\le(R/\gamma)^2,与学习率无关定理 1.1.1
全 Sigmoid 深层衰减跨 LL 层至少乘 (1/4)L(1/4)^{L}:L=10L=10 约 9.5×10−79.5\times10^{-7}定理 1.3.1
softmax + 交叉熵梯度∇zL=p^−y\nabla_{\boldsymbol z}\mathcal L=\hat{\boldsymbol p}-\boldsymbol y,落在 [−1,1][-1,1] 附近定理 1.4.2
动量有效步长放大 1/(1−β)1/(1-\beta):β=0.9\beta=0.9 约 1010 倍命题 1.6.1
线性缩放规则批大小 ×kk ⇒ 学习率 ×kk(配 warmup)定理 1.6.2
梯度检查实用阈值float64 + 中心差分:rel_err <10−7&lt;10^{-7} 通过,≥10−3\ge10^{-3} 基本可确定有 bug定义 1.5.4

症状 → 环节 → 去处

症状出错环节回去读
直接报形状不匹配定义结构方法 1.2.1、方法 1.2.3
不报错但精度上不去定义结构(静默形状错误)1.2.7
深层网络损失长期不降定义结构 / 优化(激活与初始化错配)推论 1.3.1、1.2.5
收敛慢、概率过自信定义损失1.4.10
损失突然跳到很大值或出现 NaN最小化损失(学习率 / 数值)1.4.9、1.6.9
手写算子怀疑出错梯度实现方法 1.5.1
训练好、验证差带得走吗(估计误差)推论 1.7.1、1.7.8
验证指标异常地高评估方法(先怀疑泄漏)1.7.6 的数据泄漏清单、方法 1.7.2

复习路线与验收

  • 当天:合上书复述本页「一条主线」;写不出就回 导览 的「本讲地图」。
  • 隔天:做 习题集 的 A 组(概念判断)与 B 组前两题;B 组必须手写推导,不许只看答案。
  • 第 3 天:做 C 组(每组都有可运行的验收标准);把不通过的验收标准当成「哪一个环节没接上」的证据。
  • 第 7 天:综合自测卷 闭卷计时一次;错题按文末漏点定位表回查,再用 回忆卡 补漏。
  • 对账:学习目标自检表 十条全部「能」,才可以进入第 2 讲。

与后续的连接

  • 第 2 讲 · 深度序列建模:本讲把一切网络归结为「结构 + 损失 + 梯度下降」,但 MLP 要求输入是固定长度向量、且对维度顺序不作任何假设。序列数据两条都不满足——第 2 讲从这里出发,先给出 RNN 与其梯度病态,再引出注意力与 Transformer。变的只是结构这一环,1.4–1.6 的损失、反传与优化器照旧搬用。
  • Lab 1 · 深度学习入门与音乐生成:第一部分用一层网络把「前向 → 损失 → 反向 → 更新」跑通(对应 1.4 与 1.5 的两条盒子,并会亲手验证去掉激活后拟合退化,即 定理 1.2.1);第二部分的字符级 RNN 属于 第 2 讲 的主题,但训练循环完全沿用本讲的 1.6。
  • 公式与推导的收口:附录 C.1 给矩阵形式的反向传播,附录 C.2 给梯度检查的原理,附录 C.15 给 Adam 偏差修正的另一种写法。
  • 排错入口:训练不收敛 / 过拟合 / 指标异常时,先按 工程工具箱 的排查树走一遍,再回到本讲 定理 1.7.1、定理 1.7.2、定理 1.7.3、推论 1.7.1定位是容量问题、优化问题还是评估问题。
  • 自检路径:习题集(A/B/C/D 四组)→ 回忆卡(当天 / 隔天 / 第 3 天 / 第 7 天)→ 综合自测卷(闭卷计时 100 分);学习目标自检表 用来逐条对账 K1.x / S1.x / A1.x。