第 1 讲 · 综合自测卷(100 分 · 建议 60 分钟)
闭卷计时;做完先按文末评分标准自评,再按漏点定位表回查。 范围:本讲 1.1–1.7 与导览。题目与习题集尽量不重叠;凡概念判断题,只写对错不给分,必须给理由或反例。
时间分配建议:第一部分 分钟(每题约 秒)→ 第二部分 分钟 → 第三部分 分钟(每题约 分钟,推导题宁慢勿跳步)→ 第四部分 分钟(每题约 分钟,写清四项)。留最后 分钟只做一件事:回头看第一部分的十条判断里有没有只写了对错的。
- 判断必须带机制词:写「错」不给分,写「错,因为判决面仍是同一个超平面」才拿满。常见的机制词有:超平面、平移自由度、常数熵项、逐元素缩放、中间结果复用、running statistics、插值阈值。
- 形状先行:凡涉及批量、矩阵乘法的推导,先把每个张量的形状写出来再动手——跳过形状核对的答案从「链条完整」里扣分。
- 前提不能省:说「通用逼近保证……」,必须跟上「存在性 / 紧集 / 连续函数」这些条件;说「线性缩放规则」,必须跟上「噪声相对稳定 / 步数足够」。
- 工程题给判据:凡涉及取舍(损失、优化器、归一化、批大小),必须写出验证方式与失败判据,否则第四部分上限 6 分。
- 开放题四件套:方案 + 理由 + 失败判据 + 验证计划,缺一项扣 2 分(第四部分每题 10 分)。
第一部分 · 概念判断(10 题 × 3 分 = 30 分)
1. 把一个 层全连接网络的每一层都去掉偏置(),网络表达的函数族不变。
解答
错。 去掉偏置后超平面被迫过原点(每层都是过原点的线性映射),平移自由度丢失;例如「 归负类、其余归正类」这类问题立刻不可分。给分:判断 1 分 + 理由 2 分(须提到「平移自由度 / 过原点」)。
2. 一次前向 + 一次反向的代价就能得到全部参数梯度,因此反向传播完全不消耗额外显存。
解答
错。 代价部分正确(这正是反向模式自动微分的价值,定理 1.5.2),但反向传播必须保存前向的中间结果(各层激活、门控值),激活显存约 ——这是训练显存远大于推理显存的主因。缓解手段:激活重计算、混合精度、融合算子(1.5.2 的「内存换速度」)。给分:判断 1 分 + 理由 2 分(指出「需保存中间结果」)。
3. 学习率设得越小,训练越稳定,最终精度一定越高。
解答
4. 一个网络在训练集上达到 100% 准确率、验证集 60%,这一定说明模型容量过大。
解答
错。 训练高、验证低确实指向泛化问题,但成因可能是估计误差(数据不足 / 正则不足)也可能是评估问题(数据泄漏、验证集分布不同、指标口径不一致)。按 推论 1.7.1 的框架,应先确认划分与评估流程,再谈容量。给分:判断 1 分 + 理由 2 分(提到「先排除泄漏 / 评估流程」优先)。
5. 交叉熵与 KL 散度都能做分类的损失函数,但两者在优化上并不等价。
解答
错。 在同一数据集上 ,而目标分布的熵 与模型参数无关,故 ,两者优化等价(定理 1.4.3)。注意例外:跨数据集比较绝对值时不可比( 不同)。给分:判断 1 分 + 理由 2 分(须给出关系式或「常数熵项」)。
6. 在 Adam 里把 L2 正则加进损失,与在 AdamW 里设置同样的权重衰减,训练得到的解完全相同。
解答
错。 L2 项进入梯度后被逐元素除以 ,衰减强度取决于各坐标的梯度历史;AdamW 的衰减是更新后的独立一步,对所有坐标施加同一相对衰减 。二者在 SGD 下才严格等价(定理 1.6.1)。给分:判断 1 分 + 理由 2 分。
7. 因为 BatchNorm 与 LayerNorm 都是在做「归一化」,所以在 Transformer 里用 BN 替换 LN 不会带来问题。
解答
8. 既然「参数越多越容易过拟合」,那模型效果不好时应当优先减小参数量。
解答
错。 双下降说明参数量本身既不是过拟合的充分条件也不是必要条件(定理 1.7.3):越过插值阈值后,梯度下降的隐式偏好(范数小、平滑的解)反而让测试误差二次下降。效果不好应先按「近似 / 估计 / 优化」三类误差分类,再决定加容量还是加正则。给分:判断 1 分 + 理由 2 分(提到双下降或隐式偏好)。
9. 梯度裁剪能保证训练不发散,因此开了裁剪就可以放心把学习率调大。
解答
10. 用测试集做早停是标准做法,因为测试集最能反映真实性能。
解答
第二部分 · 填空与简答(5 题 × 4 分 = 20 分)
11. 设计输入 、隐藏层 6 个单元、输出 2 个 logits 的单隐藏层网络(含偏置):不需要运行代码,写出每一层的输出形状与该层参数量(),并给出总参数量。
解答
输入 ;Linear(4,6) → ,参数 ;激活(逐元素)→ ,参数 ;Linear(6,2) → ,参数 。总参数量 ,与 无关(方法 1.2.1)。给分:形状 2 分(错一处扣 1)+ 参数量与总数 2 分。
12. 写出单个神经元的前向公式,并说明 、、 各控制什么;再说明为什么层数一多就必须显式加入 。
解答
(预激活)、。 管各输入的重要性、 管激活门槛(平移自由度)、 管输出形态与值域。层数一多必须加 :若 为恒等,则 层复合仍是仿射映射 ,表达能力与单层相同而参数量更多(定理 1.2.1)。给分:公式与三符号 2 分 + 退化论证 2 分。
13. 某 8 层网络全部使用 Sigmoid 隐藏激活,反向传播中梯度跨过这 8 层时至少被乘上什么因子?给出数值量级;并说明这个上界为什么与数据、学习率无关。
解答
至少乘 (定理 1.3.1)。与数据 / 学习率无关的原因:该上界只来自 这一结构性不等式(在 取等),而链式法则要求逐层连乘;实际梯度还会因权重谱范数与输入尺度不同而更小或更大,但上界不变。给分:因子 2 分 + 数值 1 分 + 结构性理由 1 分。
14. 写出 Adam 与 AdamW 的更新式各一行,并用一句话说明二者的差别在 SGD 下为什么消失。
解答
Adam(含 L2):梯度取 后 ;AdamW:。SGD 下差别消失:SGD 的更新是 ,没有 这个逐元素缩放,两种写法都化简为 ,严格等价(定理 1.6.1)。给分:两式各 1 分 + SGD 等价性 2 分。
15. 某 ReLU 网络每层宽度 ,若所有权重都用 std=0.01 的正态初始化,预判前向激活尺度会怎样变化?应改用哪个公式、增益是多少(给出该层参数的标准差)?
解答
每层方差增益约 ,即每层衰减约 39 倍,多层叠加后前向信号下溢、反向梯度同量级衰减。应改用 Kaiming:,即 std ≈ 0.0884(nn.init.kaiming_normal_(w, nonlinearity='relu'))。给分:衰减因子与结论 2 分 + 公式与数值 2 分。
第三部分 · 推导与计算(3 题 × 10 分 = 30 分)
16.(10 分) 三层 MLP(,批大小 ),记 、。 (a) 写出 与 的表达式; (b) 写出 与 ,并逐步核对形状; (c) 说明为什么只需要一趟反向就能得到全部三层的参数梯度。
解答
(a) 输出层:;回传一层:(激活的雅可比是对角矩阵,VJP 退化为逐元素乘)。
(b) ,形状 ✓;,其中 ,形状 ✓;偏置梯度一律沿批维求和 (定理 1.5.3)。
(c) 因为误差信号是递推的: 只依赖 ,同一条链上每一层的参数梯度都能用已经算出的 与保存的前向激活相乘得到。反向模式一次传播给出对全部输入(全部参数)的导数,代价 、这里 (标量损失),所以一趟就够;前向模式则需要对每个参数各传播一次,即 次(定理 1.5.2)。核心机制是中间结果复用——与动态规划同构。
评分:(a) 3 分(每式 1.5 分,须含输出层与回传两式);(b) 4 分(两式各 1.5 分 + 形状核对 1 分);(c) 3 分(递推依赖 1 分 + 代价对比 1 分 + 复用 / 动态规划 1 分)。
17.(10 分) 某层权重梯度矩阵为 。 (a) 求 ; (b) 取裁剪阈值 ,求裁剪后的梯度; (c) 若训练中从不触发裁剪,你会怎么处理?若频繁触发又说明什么? (d) 为什么说「裁剪只限制单步位移,不放宽学习率上限」?
解答
(a) 。
(b) 因子 ,故裁剪后 ,此时 (恰好等于阈值)。
(c) 从不触发 → 可以去掉裁剪以节省一次全参数归约的开销(但要继续监控梯度范数,阈值应随训练规模变化重估)。频繁触发 → 说明阈值过小或学习率过大、也可能是数据里存在异常样本;应打印裁剪前的梯度范数(clip_grad_norm_ 的返回值)并对照损失曲线(1.6.6)。
(d) 因为裁剪改变的是这一步的位移上限,不改变损失曲面在当前位置的最大曲率;而步长的硬上限 来自 -Lipschitz 光滑性(定理 1.5.1)。学习率仍过大时,裁剪只能把每步「压回阈值内」,参数会在谷底两侧来回震荡而无法收敛。
评分:(a) 2 分;(b) 3 分(因子 1.5 + 结果 1.5);(c) 3 分(两种情形各 1.5);(d) 2 分。
18.(10 分) 你把批大小从 256 放大到 (学习率按某个规则调整),训练损失正常下降但验证指标反而变差。 (a) 写出本题适用的缩放规则并给出学习率倍数; (b) 列出该规则失效的三类情形,并各给一条判据; (c) 若沿用放大后的学习率,你会同时调整哪两个训练细节,为什么?
解答
(a) 线性缩放规则:批大小乘 时 ,这里是 ,即学习率放大 16 倍,并通常同步加长 warmup(定理 1.6.2)。
(b) 三类失效情形与判据:① 过大(从 256 到 32768 这类跨度)——批内梯度噪声不再近似高斯,判据是改用平方根缩放()后曲线是否变好;② 各层参数 / 梯度尺度差异悬殊(深层网络,嵌入层与输出层可差一个数量级)——判据是打印逐层「参数范数 / 梯度范数」比,若相差一个数量级以上考虑 LARS / LAMB 式逐层缩放;③ 训练步数太少——线性缩放的推导要求步数足够多(二阶项可忽略),判据是延长训练后差距是否收窄(定理 1.6.2)。
(c) 至少调整:① warmup 长度(放大学习率后早期统计量更不可靠,需更长的采样时间,否则前几百步容易把参数打进坏区域);② 权重衰减 与梯度裁剪阈值( 与批大小、训练轮数有关,不能跨配置照搬;裁剪阈值需重估,因为大批下梯度噪声更小、触发频率会变)。
评分:(a) 3 分(规则名 1 + 倍数 1 + 提到 warmup 1);(b) 4 分(三类各 1 分,判据各约 0.33 分,需可测量);(c) 3 分(两项各 1.5 分,须给理由)。
第四部分 · 开放题(2 题 × 10 分 = 20 分)
19.(10 分) 某二分类风控任务:正类(风险)占 , 万条样本, 个特征;团队过去只上报准确率。请给出:(a) 损失与输出层的选择及理由;(b) 指标与阈值选择流程;(c) 失败判据(至少三条,须可测量);(d) 验证计划。
解答
(a) 输出层用单个 logit + BCEWithLogitsLoss(二分类的标准配对,对应伯努利分布;注意不要把概率喂给 BCELoss,见 1.4.10 错误 7);若少数类的难分样本被淹没,改用焦点损失(, 逆频率起步)或类别权重。理由: 正类率下「全判负」即有 准确率,损失必须直接作用在少数类的概率上(1.4.6)。
(b) 指标改为精确率 / 召回率 / F1 / AUPRC 并附正类占比;阈值不在训练中固定,在验证集上按业务代价扫「误报-召回曲线」选定(例如风控场景常取「召回 时最小化误报」),只看训练损失无法判断阈值好坏(1.4.9)。
(c) 失败判据:① 验证召回率 (先做阈值扫描排除「只是被默认阈值压住」);② 报出的准确率与基线(全判负的 )差距 个百分点 → 该报告无信息量;③ 离线 AUPRC 与线上业务指标的排序不一致(离线更高而线上更差)→ 先查泄漏与口径,而不是调模型;④ 训练损失降到接近零而召回仍低 → 说明标签噪声或类别严重不可分,回到数据侧(方法 1.4.2 的「过拟合一小撮数据」检查)。
(d) 验证计划:按实体 / 时间分组划分(同一用户的多条记录必须同侧;时序数据按时间切分并留 gap);先做「打乱标签重训」泄漏探测;用三个随机种子报告均值与方差;预留一次性测试集做最终评估,并做一次线上样本与验证集的分布对比(方法 1.7.2)。
评分:(a) 2 分;(b) 3 分(指标 + 阈值流程各得一半);(c) 3 分(三条各 1 分,须可测量);(d) 2 分(分组划分 + 泄漏探测)。
20.(10 分) 你要在一个变长序列任务上替换现有归一化层(现用 BatchNorm),并说明运维影响。请给出:(a) 候选方案与选择理由;(b) 训练 / 推理行为差异的账;(c) 失败判据;(d) 验证计划。
解答
(a) 候选:LayerNorm( 取同一批内样本、跨最后若干特征维)与 RMSNorm(去掉减均值与平移,只用均方根缩放)。理由:变长序列 + 变批 + 推理时 batch=1 的场景下,BN 沿批维统计在语义上不稳定甚至无定义(padding 会污染统计量),而 LN 类对每个 token 独立统计,与批大小、序列长度都无关(1.7.4)。
(b) 训练 / 推理的账:BN 需要累积 running statistics 并在推理时使用,训练期用当前批统计量 → 训练与推理行为不一致,且与批大小耦合;LN 类训练与推理完全一致,不需要额外状态、没有批大小依赖。可选 RMSNorm 的额外收益是省去一次减均值与一次求均值的通信(大模型里可感知),代价是缺少 re-centering——该结论依赖规模与实现,采用前需核实。
(c) 失败判据:① 替换后验证损失不下降或震荡 → 检查是否同步调了学习率(归一化改变可用步长上限,见 定理 1.5.1 与 1.7.4 的曲率论证);② 训练与推理的损失差异显著(用同一批数据在 train() / eval() 两种模式下前向对比)→ 说明切换后仍有状态残留或 Dropout 未关闭;③ 小批量()下表现明显更差 → 说明还在依赖批统计量;④ 长序列上显存 / 速度退化超出预算 → 检查是否误用了带 running statistics 的实现。
(d) 验证计划:固定其他超参、只替换归一化层,做单变量对照(BN / LN / RMSNorm 三组同种子);每组报告验证损失曲线 + 训练-推理一致性检查 + 小批量下的稳定性;结论必须带上完整训练配置(否则不可复现,参见 1.7.5 的实操含义)。
评分:(a) 3 分(方案 + 结构理由);(b) 2 分(训练 / 推理差异);(c) 3 分(四条各约 0.75);(d) 2 分(单变量对照 + 一致性检查)。
评分标准
| 部分 | 题量 | 分值 | 给分要点 |
|---|---|---|---|
| 一 · 概念判断 | 10 | 30 | 判断 1 分 + 理由 / 反例 2 分;只写对错得 1 分 |
| 二 · 填空简答 | 5 | 20 | 结果正确 2 分 + 关键说明 2 分;形状 / 数值错一处扣 1 分 |
| 三 · 推导计算 | 3 | 30 | 首行或形状 3 分 + 链条完整 4 分 + 前提与讨论 3 分;只写结论最多 3 分 |
| 四 · 开放题 | 2 | 20 | 方案具体 4 分 + 判据可测量 4 分 + 验证计划 2 分 |
段位换算: 优秀(可以给同学讲); 良好(能独立写训练代码); 及格(需补推导); 回到对应节的「即时自测」与习题集重做。
自评纪律:① 判断理由必须包含关键机制词(如「超平面」「常数熵项」「」「running statistics」),否则按半对给 1 分;② 推导题凡是跳过形状核对的,从「链条完整」里扣 1 分;③ 开放题只写方案不写失败判据的,第四部分上限 6 分。
漏点定位表
| 错题 | 回去读 | 立刻补做 |
|---|---|---|
| 1、2 | 1.1.4、1.5.2 的「内存换速度」 | 习题集 A2、B1 |
| 3、11、18 | 定理 1.5.1、1.6.6、定理 1.6.2 | 习题集 C5、D3 |
| 4、8、10、19 | 推论 1.7.1、定理 1.7.3、1.7.6 的数据泄漏清单 | 习题集 C6、D2、D4 |
| 5、14、15 | 定理 1.4.3、定理 1.6.1、方法 1.2.2 | 习题集 B3、B6、C4 |
| 6、9 | 定理 1.6.1、1.6.6 | 习题集 C4、C5 |
| 7、13、20 | 定理 1.7.2、定理 1.3.1、1.7.4 | 习题集 B6、C3 |
| 12、16 | 定理 1.2.1、定理 1.5.3、附录 C.1 | 习题集 B1、B2、C2 |
| 17 | 定义 1.5.4、1.6.6 | 习题集 C5 |
最后一句:本卷的目的不是打分,而是把你以为会的地方暴露出来。凡有「写得出来但讲不清机制」的题,回到对应节的 intuition 与 回忆卡 当天再练一遍;连续两轮仍错的条目,写进勘误与补注第四节的待核实条目单独跟踪。