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

入学诊断自测

用 15 分钟做这张卷子,目的是决定你从哪里开始:是直接通读,还是先补数学、先补编程,或直接跳到你真正关心的那一讲。

做法:闭卷、不看资料、每题 30–60 秒;不会的题直接跳过(跳过比猜更有信息量)。

一、数学与张量(5 题)

M1. 设 A∈R3×4A\in\mathbb R^{3\times4}、B∈R4×2B\in\mathbb R^{4\times2},ABAB 的形状是?ATBA^{\mathrm T}B 呢?

M2. 写出链式法则:若 y=f(u)y=f(u)、u=g(x)u=g(x),则 dydx=\dfrac{dy}{dx}=?

M3. 一个标量函数 f(x)f(\boldsymbol x) 在 x0\boldsymbol x_0 处的梯度 ∇f(x0)\nabla f(\boldsymbol x_0) 的几何含义是什么?

M4. 设随机变量 XX 取 0 与 1 的概率各为 1/21/2,E[X]\mathbb E[X] 与 Var(X)\mathrm{Var}(X) 分别是多少?

M5. 张量形状 32×78432\times784 与矩阵 784×128784\times128 做矩阵乘,结果是?这一运算里「32」代表什么?

二、编程与工程直觉(3 题)

P1. 在 PyTorch 里,一行代码完成「把 x 从 CPU 搬到 GPU 并把 dtype 变成 bfloat16」:x = ______。

P2. 训练脚本出现报错 Expected all tensors to be on the same device,你的第一反应是查什么?

P3. 你有一个训练损失曲线:训练损失持续下降、验证损失第 5 轮后开始上升。用一句话说出最可能的现象和一个对策。

三、深度学习概念(7 题)

D1. 一个十层网络如果把所有激活函数都去掉,它等价于什么?

D2. 交叉熵和均方误差各自适合什么任务?为什么分类一般不直接用 MSE?

D3. 反向传播为什么比「逐参数数值求导」快得多?

D4. 卷积层比全连接层省参数的根本原因是什么(两条)?

D5. 自注意力里为什么要除以 dk\sqrt{d_k}?

D6. VAE 的损失里为什么要有一项 KL 散度?去掉它会怎样?

D7. 「显存 16N 字节」这条经验公式里的 NN 是什么?它适用于什么配置?


答案与解析

第一部分 · 数学与张量

M1. AB∈R3×2AB\in\mathbb R^{3\times2};AT∈R4×3A^{\mathrm T}\in\mathbb R^{4\times3},故 ATBA^{\mathrm T}B 不可乘(3≠43\ne4)。→ 形状规则是本书的第一基本功。

M2. dydx=dydu⋅dudx\dfrac{dy}{dx}=\dfrac{dy}{du}\cdot\dfrac{du}{dx}。→ 反向传播就是它在计算图上的系统化应用(1.5)。

M3. 梯度指向 ff 增长最快的方向,其模长是该方向的方向导数。→ 所以梯度下降走负梯度方向(1.5)。

M4. E[X]=1/2\mathbb E[X]=1/2;Var(X)=E[X2]−(E[X])2=1/2−1/4=1/4\mathrm{Var}(X)=\mathbb E[X^2]-(\mathbb E[X])^2=1/2-1/4=1/4。→ 方差与期望是理解批大小、梯度噪声的基础。

M5. 结果是 32×12832\times128;「32」是批大小(batch size),本书约定批维恒定在第 0 位(1.1)。

第二部分 · 编程与工程直觉

P1. x = x.to("cuda", dtype=torch.bfloat16)(或 x.to(device=..., dtype=...))。

P2. 先查「模型参数/缓冲区与输入是否在同一设备」,以及是否有手写的常量张量没跟着搬(例如 mask、位置索引)。→ 工具箱第一节。

P3. 最可能是过拟合;一个对策是加正则(Dropout / 权重衰减)或早停。→ 但先别急着下结论,完整诊断顺序见工具箱与1.7。

第三部分 · 深度学习概念

D1. 等价于一个线性变换(多层矩阵相乘仍是一个矩阵)。→ 非线性才是深度的意义(1.2)。

D2. 交叉熵配 softmax 用于分类,MSE 用于回归。分类不用 MSE 的原因:MSE + softmax 的梯度含 y^(1−y^)\hat y(1-\hat y) 因子,预测饱和时梯度消失,学习变慢。→ 1.4。

D3. 反向传播复用中间结果:一次前向 + 一次反向即可得到全部参数的梯度(代价与参数量成线性);数值求导每个参数都要独立扰动一次前向。→ 1.5。

D4. ① 局部连接(每个输出只连感受野内的输入);② 权值共享(同一个核在空间所有位置复用)。→ 因此参数量与输入分辨率无关(3.1)。

D5. 点积的方差随 dkd_k 线性增长,不缩放会让 softmax 进入饱和区、梯度趋零。→ 严格论证见附录 C.3。

D6. KL 项把近似后验拉向先验,使潜空间可采样;去掉它(或权重过小)退化成普通自编码器,任采样的 zz 会落在训练未覆盖区域、解码出无意义结果;权重过大则后验坍塌。→ 4.3。

D7. NN 是参数量;该口径对应「混合精度训练 + Adam 系优化器 + 保留 fp32 主权重」(参数 2N2N + 梯度 2N2N + 优化器状态 8N8N + 主权重 4N4N = 16N16N 字节)。换 8-bit 优化器约降到 10N10N。→ 9.1、工具箱。

计分与去向

得分(共 15 题)建议起点
13–15 题基础扎实:直接从第 1 讲导览通读;重点花在推导与工程细节上,工具箱与附录 C会是你的主要增量
9–12 题概念在但细节松:先读 1.1–1.5(把范式焊牢),再按方向跳到第 2 或第 3 讲
5–8 题先补基础:读先修工具箱,然后从第 1 讲完整通读;每节都做「即时自测」
< 5 题从零开始:先修工具箱 → 第 1 讲 → Lab 1;宁慢勿跳,前五讲的概念是后面所有内容的语法
按错题定位补漏
错在哪 回去补 立刻做
M1 / M5 1.1 形状约定、先修工具箱的线性代数部分 手推三个矩阵乘的形状
M2 / M3 1.5 反向传播 手推一次两层网络的反向传播
M4 先修工具箱的概率部分 推导「批大小与梯度方差」的关系
P1 / P2 工具箱第一、二节 搭一个最小训练脚本并跑通
P3 工具箱、1.7 写出你自己的诊断顺序(≥4 步,每步带判据)
D1–D3 第 1 讲 做第 1 讲习题 A、B 组
D4 3.1、3.2 算一次卷积的输出尺寸与参数量
D5 2.4 推一遍 Var(q⋅k)=dk\mathrm{Var}(q\cdot k)=d_k
D6 4.3 写出 ELBO 的两项
D7 9.1 对 7B 模型算一次显存账
别把这张卷子当成「考试」

它唯一的作用是给出一条省时间的路径。答错不丢人,跳过才说明你可能需要先补基础——这也是这张卷子刻意放了三道「工程直觉题」(P1–P3)的原因:这门课从第一天起就是动手的课。