
期末周的图书馆凌晨两点还坐着一半人桌上摊开的不是《深度学习》就是打印出来密密麻麻的课件。我这门国科大人工智能学院的深度学习课从开课到现在经历了三次作业、一次期中、无数次对着loss曲线发呆的夜晚最后攒下了一份自认为还算能打的复习笔记。这份笔记不是把教材目录抄一遍而是我按考试和面试的双重标准把整门课的骨架重新拆了一遍。它适合两类人一类是正在准备深度学习期末的同学想快速抓住重点另一类是想入门人工智能但被公式劝退的学习者需要一份能说人话的地图。我会把每个知识点为什么重要、考试爱怎么考、实际代码里长什么样讲清楚能推公式的推公式能上代码的上代码。1. 复习前先搞清楚这门课到底在考什么很多人一上来就翻PPT从第一页背到最后一页结果背到卷积那章就崩溃了前面的BP推导也忘了七八成。我踩过这个坑期中就是这么栽的。后来我换了个思路先把整门课画成一张知识地图再决定每一块该花多少时间。这一步看着虚实际上决定了你后面复习效率的上限。1.1 知识地图从数学地基到前沿模型的四层结构我把这门课的内容切成四层。最底层是数学地基包括线性代数、概率论、微积分和一点点信息论考试里它通常不单独出大题但会渗透在推导题的每一步里。第二层是神经网络的核心机制也就是前向传播、反向传播、激活函数、损失函数这一套这是整门课的心脏几乎所有学校的大题都绕不开反向传播的链式推导。第三层是主流网络结构卷积神经网络、循环神经网络、注意力机制和Transformer这部分考察的是你对为什么这样设计的理解。第四层是训练技巧和生成模型包括优化器、正则化、批归一化、GAN、VAE这些偏工程和直觉。这四层不是并列关系而是层层支撑。你如果第二层的反向传播没吃透第三层的CNN反向怎么传、Transformer的梯度怎么流你也只能背结论。所以我的时间分配是这样的数学地基花20%核心机制花30%网络结构花35%训练技巧和生成模型花15%。事实证明这个比例还算靠谱因为考试的大分往往集中在反向传播和几种经典网络上。1.2 我的复习节奏安排与资料取舍资料这块我做了一次狠心取舍。教材、课件、还有那本被大家叫花书的《深度学习》我最后只精读了两样老师的课件和作业题。原因很简单期末出题的人就是老师他的课件里反复出现的公式大概率就是考点。花书适合当字典查不适合当复习主线从头读到尾你会发现读完就忘。节奏上我用了三轮法。第一轮用三天快速过一遍全部内容不求记住只求知道每章在讲什么把不懂的地方标记出来。第二轮用五天精读重点章节边读边手推公式尤其是反向传播、卷积输出尺寸计算、注意力公式这几块我都是在草稿纸上推了三遍以上。第三轮是考前两天只做一件事看自己整理的一页纸速查表和错题。这一轮不碰新知识避免越看越慌。这个节奏的关键是第二轮它决定了你到底是看过还是会了很多人复习失败就失败在只做了第一轮。2. 数学地基别跳过考试就爱在这儿挖坑我身边不少同学觉得深度学习就是调包数学不用管。结果一到考试看到请推导某层梯度就傻眼。数学是这门课的隐性考点它不会单独给你一道纯数学题但它会在每一个推导步骤里等着你。这块我整理了三块最常被考的内容矩阵求导、概率与信息论、泛化误差界。2.1 线性代数与矩阵求导梯度推导的语言深度学习的梯度本质上是向量和矩阵的求导而考试最爱考的就是各种维度变换和链式法则。先记住几个基础结论标量对向量求导得到的是向量形状和原向量一致标量对矩阵求导得到的是矩阵形状和原矩阵一致。这个形状一致性是我用来检查推导对不对的土办法非常好用。再来说关键的那几个。对于 $y Wx$其中 $x \in \mathbb{R}^n$$W \in \mathbb{R}^{m \times n}$那么 $\partial y / \partial x W$。如果损失 $L$ 是标量那么 $\partial L / \partial W$ 和 $W$ 同形状。链式法则在矩阵语境下依然成立只是要注意乘法的顺序因为矩阵乘法不可交换。我当时最容易搞混的就是转置的位置后来总结了一句话把梯度传回前一层时凡是涉及权重的都要用权重的转置去乘上游梯度这样才能保证维度对得上。一个具体例子全连接层的前向是 $z Wx b$反向时已知 $\partial L / \partial z$那么 $\partial L / \partial W (\partial L / \partial z) x^T$$\partial L / \partial x W^T (\partial L / \partial z)$。你可以自己拿维度验一遍$W$ 是 $m \times n$$x$ 是 $n \times 1$那么 $(\partial L / \partial z) x^T$ 就是 $m \times n$和 $W$ 一致完美。这个维度检查法在考场上救过我好几次推导完顺手验一下能抓出大部分低级错误。2.2 概率论与信息论损失函数背后的道理为什么分类用交叉熵而不是均方误差这个问题的答案就在信息论里。交叉熵衡量的是两个概率分布之间的距离当我们用softmax把网络输出变成概率分布后交叉熵刚好对应最大似然估计。具体来说单个样本的交叉熵损失是 $L -\sum_{i} y_i \log \hat{y}_i$其中 $y$ 是one-hot标签$\hat{y}$ 是预测概率。考试里经常让你推导softmax加交叉熵的梯度结果非常优美$\partial L / \partial z \hat{y} - y$也就是预测减真实。这个结论一定要背下来因为它不仅常考而且直观预测偏高就往下压预测偏低就往上拉。概率部分还要掌握极大似然估计和贝叶斯的基本思想。很多损失函数的本质都是负对数似然比如回归用均方误差背后其实假设了噪声服从高斯分布。这个联系考试爱考简答问为什么用MSE你答等价于假设输出服从高斯分布下的极大似然就很到位。另外KL散度也常出现它是交叉熵减去熵衡量两个分布的差异VAE的损失里就用到它。2.3 泛化误差界从直觉到公式这块是很多人觉得最玄的部分但其实考起来套路很固定。泛化误差指的是模型在未见数据上的错误率我们真正关心的是它而不是训练误差。偏差方差分解把期望泛化误差拆成三部分偏差的平方、方差、还有不可避免的噪声。偏差衡量模型预测的平均值偏离真实值的程度方差衡量模型对训练集变化有多敏感。考试里常让你解释过拟合和欠拟合分别对应哪一项。我的记法是欠拟合是高偏差模型太简单怎么学都学不到位过拟合是高方差模型太复杂训练集稍微变一点学出来的函数就大变样。降低偏差的办法是增加模型复杂度降低方差的办法是加正则化、增加数据、用集成方法。这组对应关系几乎每年都考答题时把高偏差-欠拟合-加复杂度和高方差-过拟合-加正则这两条线背熟。泛化误差界还有一类理论工具比如VC维。VC维衡量的是一个假设类能打散多少样本点的能力。直观理解一个模型的VC维越高它能拟合的函数就越复杂理论上它的泛化误差上界也越松。考试一般不会让你算VC维的具体数值但会让你解释为什么VC维高不代表一定过拟合这里的答案是界是上界是理论保证实际泛化还取决于优化过程、数据量和正则化。这道题我期中答偏了只说了VC维高容易过拟合没说出上界是松的、实践还要看优化导致扣分。所以答这类题一定要有辩证的两面。3. 神经网络的核心机制整门课的心脏如果把深度学习比作一台机器数学是图纸那神经网络的核心机制就是这台机器真正转动起来的齿轮。这部分是考试的绝对重点反向传播的推导几乎年年出现而且分值很高。我花了最多时间在这里下面把三个最关键的模块拆开讲。3.1 前向传播与反向传播的手推过程前向传播很直白数据从输入层一路乘权重、加偏置、过激活函数最后到输出层算出损失。真正的难点在反向传播也就是用链式法则把损失对每个参数的梯度算出来。我用一个两层网络完整推一遍这个推法考试直接能用。设输入 $x$第一层权重 $W_1$、偏置 $b_1$激活函数 $\sigma$第二层权重 $W_2$、偏置 $b_2$。前向是$z_1 W_1 x b_1$$a_1 \sigma(z_1)$$z_2 W_2 a_1 b_2$损失 $L$ 由 $z_2$ 算出。反向时先算 $\partial L / \partial z_2$这个取决于损失函数比如softmax加交叉熵就得到 $\hat{y} - y$。然后往回传$\partial L / \partial W_2 (\partial L / \partial z_2) a_1^T$$\partial L / \partial b_2 \partial L / \partial z_2$接着 $\partial L / \partial a_1 W_2^T (\partial L / \partial z_2)$再乘上激活函数的导数 $\partial L / \partial z_1 \partial L / \partial a_1 \odot \sigma(z_1)$最后 $\partial L / \partial W_1 (\partial L / \partial z_1) x^T$$\partial L / \partial b_1 \partial L / \partial z_1$。这里的 $\odot$ 是逐元素相乘。这套推导的关键是记住上游梯度乘本地梯度并且每一步都用维度检查。我在考场上会先把所有变量的维度写出来然后一步步算最后逐个验维度这样即使算错也很容易发现。还有一个高频考点是激活函数导数sigmoid的导数是 $\sigma(1-\sigma)$tanh的导数是 $1 - \tanh^2$ReLU的导数在正区间是1、负区间是0。这几个导数必须做到闭着眼都能写出来。3.2 激活函数怎么选别只会背要懂取舍激活函数是引入非线性的关键没有它再深的网络也等价于一个线性变换。考试爱考的是几种激活函数的对比以及各自的优缺点。我整理了一张表复习时直接看它。激活函数表达式优点缺点典型场景Sigmoid$1/(1e^{-x})$输出在0到1可当概率容易梯度消失输出非零中心二分类输出层Tanh$(e^x-e^{-x})/(e^xe^{-x})$零中心收敛比sigmoid快仍有梯度消失早期RNN隐藏层ReLU$\max(0, x)$计算快缓解梯度消失负区间死亡神经元现代CNN默认Leaky ReLU$\max(\alpha x, x)$解决死亡神经元多了超参数深层网络GELU高斯误差相关平滑效果好计算稍复杂Transformer选激活函数的逻辑是这样的隐藏层优先ReLU系因为它计算便宜又能缓解梯度消失输出层看任务二分类用sigmoid多分类用softmax回归直接线性输出不加激活。这里有个坑我提醒一下ReLU的死亡神经元问题——如果某个神经元的输入长期为负它的梯度一直是0权重就再也不更新了。解决办法是用Leaky ReLU或者把学习率调小一点。这个点在简答题里出现过我当时就是靠这句答对的。3.3 损失函数任务决定选择损失函数是优化的目标选错了模型根本学不对。分类任务最常用交叉熵回归任务常用均方误差。这里要理解一个容易被忽视的点交叉熵配softmax梯度是 $\hat{y} - y$非常干净而均方误差配sigmoid梯度里会带上sigmoid的导数在输出饱和时梯度会非常小导致学习缓慢。这就是为什么分类任务几乎不用MSE。考试里还常考一个变体多标签分类用什么答案是binary cross entropy对每个类别独立做二分类因为标签之间不互斥。如果是多分类且标签互斥就用categorical cross entropy。这个区分我在作业里吃过亏当时用softmax处理多标签结果预测被强行归一化几个标签不能同时为高概率。另外还有对比损失、三元组损失这类度量学习里的损失考试涉及不深但面试会问知道它们是为了拉近同类、推远异类就行。4. 优化算法与训练技巧模型能不能学会就看这里有了网络结构接下来就是怎么把它训好。这部分看着杂但其实围绕一个核心问题如何又快又稳地找到损失函数的低点。我把它分成优化器、学习率和正则化三块来记。4.1 从SGD到Adam优化器演进的主线最基础的优化是随机梯度下降也就是SGD参数更新公式是 $w \leftarrow w - \eta \nabla L$其中 $\eta$ 是学习率。SGD的问题是方向震荡、收敛慢尤其在损失面的峡谷地形里会来回横跳。为了解决这个问题出现了动量法Momentum它引入一个速度项把历史梯度累积起来相当于给下降加了惯性能平滑震荡。公式是 $v \leftarrow \beta v \nabla L$$w \leftarrow w - \eta v$。再往后是自适应学习率方法。AdaGrad会根据每个参数历史梯度的大小自动调整学习率梯度大的参数步子小一点梯度小的参数步子大一点。但它的问题是累积梯度会越来越大学习率最终衰减到几乎为零。RMSProp用指数移动平均代替累加解决了这个问题。最后是Adam它把动量和RMSProp结合起来同时估计梯度的一阶矩和二阶矩还加了偏差修正。我整理了一张对比表优化器核心思想优点缺点适用场景SGD直接沿梯度下降简单泛化有时更好收敛慢需调学习率图像分类微调Momentum累积动量加速收敛抑制震荡多一个超参数通用AdaGrad累积梯度平方自适应学习率学习率单调衰减稀疏数据RMSProp梯度平方的滑动平均缓解衰减问题无偏差修正RNN常用Adam动量加自适应收敛快易上手某些任务泛化略差默认首选考试里最爱问的是Adam为什么需要偏差修正。答案是一阶矩和二阶矩初始化为0训练初期估计会偏向0除以一个偏小的二阶矩会导致更新步长过大偏差修正就是在初期把这个偏差纠正过来。这个点我背了好久才想通其实你只要记住初期估计偏小所以修正就够答题了。4.2 学习率调度与参数初始化学习率是深度学习里最重要的超参数没有之一。太大直接发散太小收敛慢得让人想砸电脑。常见的学习率调度策略有阶梯衰减、余弦退火、以及带热启动的策略。阶梯衰减就是每隔若干epoch把学习率乘以一个因子比如0.1。余弦退火让学习率按余弦曲线从大到小平滑下降训练后期步子越来越小有助于收敛到更精细的解。参数初始化同样关键。如果全部初始化为0那么同一层的所有神经元会输出相同结果反向传播时梯度也相同网络退化成线性模型这叫对称性问题。常用做法是Xavier初始化它让每一层的输出方差保持一致适合sigmoid和tanh。对于ReLUKaiming初始化更合适它考虑了ReLU会把一半激活置零。这个知识点考试常以填空或简答出现你只要记住不能全零初始化Xavier配sigmoidKaiming配ReLU就能拿分。4.3 正则化与批归一化对抗过拟合的武器过拟合是训练中绕不过去的敌人正则化就是对付它的手段。L2正则化在损失里加上权重的平方和让权重趋向于小从而降低模型复杂度。L1正则化加的是权重绝对值之和它有个额外效果会让部分权重变成0起到特征选择的作用。这两个的区别考过记住L1稀疏、L2平滑。Dropout是另一把利器训练时随机让一部分神经元失活测试时全部启用但按比例缩放。它的直觉解释是每次训练都相当于在训练一个不同的子网络最后相当于集成了很多子网络从而降低方差。这里有个细节考试爱考为什么测试时要乘上保留概率因为要保持训练和测试时的期望输出一致。我当时没理解这句后来想明白训练时一个神经元有 $p$ 的概率被保留那么它的期望输出被缩小了测试时乘 $p$ 就能对齐。批归一化BN是对每一层的输入做标准化让均值接近0、方差接近1再做一次可学习的缩放和平移。它的好处是加速收敛、允许更大的学习率、还有轻微的正则效果。BN在训练时用当前batch的统计量测试时用训练阶段累积的滑动平均这个训练测试不一致是高频考点。我之前一直以为测试也用batch统计量直到做实验发现batch size为1时BN会崩才真正记住。层归一化LN则是对单个样本的所有特征做归一化不受batch size影响所以Transformer里用的是LN而不是BN。5. 卷积神经网络视觉任务的看家本领CNN是我这门课里最感兴趣的部分也是考点最密集的地方。它的核心思想是局部连接、权值共享和池化这三个词能解释CNN为什么比全连接网络更适合图像。下面从原理到经典网络再到代码一层层拆。5.1 卷积、池化与感受野尺寸计算是必考项卷积操作是用一个卷积核在输入上滑动每次把对应位置相乘再求和。由于权值共享一个卷积核只有一组参数却能在整张图上复用参数量大大减少。这里最常考的是输出尺寸的计算公式$H_{out} (H_{in} - F 2P)/S 1$其中 $F$ 是卷积核大小$P$ 是padding$S$ 是步长。这个公式必须背熟并能倒推比如已知输入和输出求卷积核大小。举个例子输入 $32 \times 32$卷积核 $5 \times 5$步长1没有padding那么输出是 $(32-5)/11 28$也就是 $28 \times 28$。如果加了padding 2输出就变回 $32 \times 32$。考试特别喜欢在这个上面设陷阱比如问你stride为2时输出是多少你只要老老实实代公式就不会错。感受野是另一个高频概念它指输出特征图上一个点对应输入图上的区域大小。层数越深、卷积核越大、步长越大感受野就越大。理解感受野是理解为什么深层网络能捕捉全局信息的关键。池化层用来降维最常用的是最大池化和平均池化。池化没有可学习参数它只做下采样减少计算量的同时也提供了一定的平移不变性。要注意的是池化会丢失空间信息所以有些现代网络用步长卷积代替池化。5.2 经典网络演进每一步都在解决什么问题从LeNet到ResNetCNN的演进就是一部解决更深网络难训练问题的历史考试很爱考这条线。LeNet是最早的卷积网络之一用于手写数字识别结构简单卷积、池化、全连接。AlexNet把它做大用了ReLU、Dropout和数据增强在当年的大规模图像比赛上一战成名。VGG的核心贡献是用连续的 $3 \times 3$ 小卷积核堆叠两个 $3 \times 3$ 卷积的感受野等于一个 $5 \times 5$但参数更少、非线性更强。ResNet解决的是退化问题网络太深时训练误差反而上升。它的思路是引入残差连接让网络学习残差 $F(x) H(x) - x$而不是直接学 $H(x)$这样至少能保证恒等映射深层网络不会比浅层差。这个设计极其重要现在几乎所有深层网络都用残差连接。我整理一张演进表帮助记忆网络关键创新解决的问题LeNet卷积加池化图像特征提取AlexNetReLU、Dropout、数据增强大规模图像分类VGG小卷积核堆叠参数量与表达力平衡GoogLeNetInception多尺度不同尺度特征融合ResNet残差连接深层网络退化答题时要注意把创新点和解决的问题对应起来这是拿分的关键。很多人只记住了结构却说不出为什么要这么设计这种答法只能拿到一半分。5.3 一个最小可运行的CNN实现光看理论不够我用PyTorch写一个最小的CNN考试里如果有代码填空这个模板基本能套。结构是两层卷积加两层全连接跑在MNIST上。import torch import torch.nn as nn class SmallCNN(nn.Module): def __init__(self, num_classes10): super().__init__() self.features nn.Sequential( nn.Conv2d(1, 32, kernel_size3, padding1), # 28x28 - 28x28 nn.ReLU(), nn.MaxPool2d(2), # 28x28 - 14x14 nn.Conv2d(32, 64, kernel_size3, padding1), # 14x14 - 14x14 nn.ReLU(), nn.MaxPool2d(2) # 14x14 - 7x7 ) self.classifier nn.Sequential( nn.Flatten(), nn.Linear(64 * 7 * 7, 128), nn.ReLU(), nn.Dropout(0.5), nn.Linear(128, num_classes) ) def forward(self, x): x self.features(x) return self.classifier(x) model SmallCNN() criterion nn.CrossEntropyLoss() optimizer torch.optim.Adam(model.parameters(), lr1e-3)这里每一步都有讲究。第一层卷积把单通道变成32通道padding设为1是为了让输出尺寸不变。两次池化把 $28 \times 28$ 降到 $7 \times 7$展平后是 $64 \times 7 \times 7 3136$ 维。全连接层后面加Dropout是为了防过拟合。损失用交叉熵因为它自带softmax所以网络最后不加softmax。这个模板我在作业里改改就能用考前把它默写一遍很有帮助。6. 序列模型与注意力从RNN到Transformer如果说CNN是处理图像的能手那处理文本、语音这类序列数据就要靠RNN和它的进化版。这部分考试重点是LSTM的门控机制和Transformer的自注意力尤其是后者现在几乎是必考。6.1 RNN、LSTM与GRU解决长期依赖的三种思路RNN的核心是隐藏状态在时间步之间传递公式是 $h_t \sigma(W_h h_{t-1} W_x x_t b)$。它的优点是能处理变长序列缺点是长序列上梯度容易消失或爆炸导致学不到远距离的依赖。梯度爆炸可以用梯度裁剪解决梯度消失则要靠门控机制。LSTM引入了三个门遗忘门决定丢弃多少旧记忆输入门决定写入多少新信息输出门决定输出多少记忆。还有一个细胞状态 $C_t$ 贯穿整条链它像一条传送带让梯度能比较顺畅地流动这就是它缓解梯度消失的关键。GRU是LSTM的简化版把遗忘门和输入门合并成更新门还加了个重置门参数更少、训练更快效果在很多任务上和LSTM差不多。考试爱让你画出LSTM的结构并解释每个门的作用这个必须能手画。我提供一个LSTM在PyTorch里的用法注意输入维度是(batch, seq_len, input_size)还要初始化隐藏状态import torch import torch.nn as nn lstm nn.LSTM(input_size128, hidden_size256, num_layers2, batch_firstTrue, bidirectionalTrue) x torch.randn(16, 30, 128) # batch16, seq_len30, feature128 output, (hn, cn) lstm(x) # output: (16, 30, 512) 双向输出拼接 # hn: (4, 16, 256) 每层每方向有个坑我提醒一下如果设置了batch_firstTrue但忘记匹配输入形状很容易报维度错误。另外双向LSTM的输出维度是hidden_size乘2接全连接层时别忘了这个细节。6.2 自注意力与Transformer一个公式打天下自注意力的核心公式是 $\text{Attention}(Q, K, V) \text{softmax}(QK^T / \sqrt{d_k}) V$。这里Q是查询K是键V是值。Q和K点积衡量的是当前位置该关注哪些位置除以 $\sqrt{d_k}$ 是为了防止点积过大导致softmax梯度消失这个为什么除以根号d是高频考点一定要会答。多头注意力就是把Q、K、V分成多组并行计算最后拼接。它的好处是能让模型在不同子空间关注不同类型的关系比如一个头关注语法、另一个关注语义。Transformer整体由编码器和解码器构成编码器里有多头自注意力和前馈网络加上残差连接和层归一化解码器多了一个掩码自注意力防止看到未来信息。位置编码是必须的因为自注意力本身没有顺序概念需要显式地告诉模型每个词的位置。考试里Transformer的题往往出得很细比如让你写出注意力的计算步骤、解释掩码的作用、或者说明为什么用LayerNorm而不用BatchNorm。答LayerNorm那一问的关键是文本序列长度不一BatchNorm对batch维度统计会受padding影响而LayerNorm对每个样本独立归一化更稳定。7. 生成模型与强化学习选修但别裸考这部分在不同学校权重不同我们学院的考法是概念为主、推导为辅。生成模型里重点看自编码器、VAE和GAN强化学习里重点看基本概念。7.1 自编码器、VAE与GAN的核心思想自编码器由编码器和解码器组成目标是让输出尽量还原输入。它中间的瓶颈层逼着网络学出压缩表示常用于降维和特征提取。但它的问题是学到的潜在空间不连续随机采样往往生成不出合理的东西。VAE解决了这个问题它不直接编码成一个点而是编码成一个分布通常是高斯分布的均值和方差然后从分布里采样再解码。它的损失由两部分组成重构损失和KL散度前者保证还原后者让潜在分布接近标准正态这样采样才可控。GAN是另一条路它由生成器和判别器对抗训练。生成器负责造假判别器负责识破两者博弈最终生成器能造出以假乱真的数据。GAN的训练难点是稳定性容易出现模式崩塌也就是生成器只会生成少数几类样本。考试爱考的是GAN的损失函数和训练流程你要能说清楚先固定生成器训判别器再固定判别器训生成器这个交替过程。这三者的区别建议做成个小表AE是确定编码、VAE是概率编码加KL、GAN是对抗训练。7.2 强化学习的基础概念与深度结合强化学习的五个要素是智能体、环境、状态、动作、奖励。智能体的目标是最大化累积奖励。马尔可夫决策过程是它的数学框架核心是状态转移和奖励只依赖当前状态和动作。价值函数衡量某状态或某状态动作对有多好Q学习是经典的基于价值的算法它用贝尔曼方程迭代更新Q值。深度强化学习就是把Q表换成神经网络DQN是代表它用了经验回放和目标网络两个技巧来稳定训练。经验回放是把过去的经验存起来随机采样打破样本之间的相关性目标网络是单独维护一个更新缓慢的网络来计算目标值避免目标一直变动导致训练不稳。这两个点是考试和面试的高频问题。策略梯度是另一类方法直接优化策略REINFORCE是基础版本Actor-Critic结合了价值和策略是现在很多算法的骨架。8. 常见问题与考场应对这些坑我都替你踩了复习到最后知识都会了但考场上和实验里还是会出问题。这一节我把遇到的典型问题和排查思路整理出来考前扫一眼能省不少心。8.1 训练常见问题速查表现象可能原因排查与解决损失不下降学习率太小或太大先试1e-3再上下调整损失变成NaN学习率过大或梯度爆炸降学习率加梯度裁剪训练好测试差过拟合加正则、Dropout、更多数据训练测试都差欠拟合加模型复杂度检查标签准确率卡住学习率太大跳过低点用学习率衰减BN层报错batch size为1换LayerNorm或增大batch这张表是我实验里总结的考试简答题如果问训练中遇到XX问题怎么排查按这个思路答基本能覆盖。这里再补一个经验如果损失突然飙升第一反应是看学习率第二反应是看有没有脏数据这两个覆盖了八成情况。我有个作业就是数据里混了个标签为-1的样本导致算loss时直接爆炸找了好久才发现。8.2 答题技巧与复习收尾理论题答题有个通用套路先给定义再说原理最后补充优缺点或适用场景。比如问卷积你先说它是局部连接加权值共享再说它减少参数、提取局部特征最后说它适用于图像、通过堆叠扩大感受野。这个三层结构几乎能套所有概念题。公式题一定要写推导过程哪怕最后结果错了过程分也很可观。我期中一道反向传播题结果算错了但因为步骤清晰、维度标注到位还是拿到了大部分分。计算题要注意单位和小数点尤其是卷积输出尺寸这类很容易算错一位数。最后考前不要熬夜刷新知识把速查表和错题看熟保证会的题不丢分比多背一个冷门点更划算。考完这门课我最大的体会是深度学习看着花哨内核其实就那么几根支柱梯度怎么传、参数怎么更新、模型怎么防过拟合、结构怎么设计。你把这几根支柱吃透剩下的都是它们的排列组合。我复习时最有用的做法不是把书读厚而是逼自己对着白纸把反向传播和注意力公式默写出来写不出来的地方就是你真正的薄弱点。这份笔记我后来又拿它去准备保研面试问到的CNN、Transformer、优化器问题几乎都在里面算是意外收获。如果你也有类似的复习经历欢迎把你的坑补充进来毕竟每个人的盲区都不一样互相填坑才是最快的进步方式。