深度学习面试核心知识点整理
一、两层网络反向传播、链式法则、梯度消失/梯度爆炸
手搓两层网络:逻辑回归模型 + MSE损失 + sigmoid激活函数
链式法则:反向传播本质就是链式法则的连乘,从损失往输入层逐层求导,把上游梯度乘上当前层局部导数,向前传递。
-
梯度消失
反向传播链式连乘,梯度不断变小趋近于0,参数几乎不更新。
典型现象:靠近输入层的权重很难训练,loss下降极慢甚至停滞。
常见原因:激活函数导数<1(如sigmoid)、权重初始化过小。
解决办法:更换激活函数(ReLU)、合理权重初始化、BN、残差连接。
-
梯度爆炸
反向传播链式连乘,梯度不断变大,参数更新幅度剧烈,震荡不收敛。
典型现象:loss剧烈震荡。
常见原因:权重初始化过大、激活函数导数>1。
解决办法:梯度裁剪、BN、残差结构。
根因:反向传播链式法则的连续相乘。
二、Adam / AdamW 原理与区别;SGD vs Adam
Adam
自适应优化器,利用梯度计算动量(惯性方向),为每个参数单独自适应调整学习率。
AdamW
Adam原生使用L2正则存在缺陷:L2惩罚项混入梯度,一起参与Adam的自适应缩放;梯度波动大时惩罚被稀释,梯度小时惩罚过重。
AdamW改进:权重衰减不参与梯度和矩的自适应计算,在Adam梯度更新完成之后,单独执行权重衰减;衰减力度只由学习率和weight_decay控制,不受梯度波动影响。
现在多用AdamW,权重衰减更稳定可靠。
SGD vs Adam
| 优点 | 缺点 | |
|---|---|---|
| SGD | 泛化能力强,更容易找到平缓极小点;逻辑简单;显存占用低 | 学习率固定,收敛慢、容易震荡;超参数敏感 |
| Adam | 自适应学习率,每个参数独立调整步长,收敛快 | 容易收敛到尖锐极小点,部分任务泛化上限弱于SGD |
三、学习率调优
学习率类比下山步长:步长太大容易震荡,步长太小走得太慢。
常见学习率调度
- 固定学习率:步长全程不变,谷底附近容易震荡不收敛。
- Step Decay:分段衰减,前期大学习率,后期降低。
- Cosine Decay:余弦曲线式衰减;常搭配warmup。
- Warmup:训练初期学习率从小慢慢抬升到目标学习率;避免前期参数不稳定时大步更新震荡。
- 基于验证指标动态调参:验证loss连续多轮稳定,降低学习率精细搜索。
不同场景初始学习率参考
| 场景 | 优化器 | 学习率 |
|---|---|---|
| 小模型从零训练 | AdamW | 1e-3 / 3e-4 |
| 小模型从零训练 | SGD | 0.1 / 0.01 |
| LoRA微调 | AdamW | 2e-4 |
| 大模型微调 | AdamW | 1e-4 |
| 大模型全参数微调 | AdamW | 5e-6 ~ 2e-5 |
Batch size 策略:batch越大梯度越稳定,可承受更大学习率;batch扩大k倍,学习率可放大k倍;数据噪声大时,batch扩2倍,学习率优先×1.5。
根据loss表现调整学习率
| 场景 | loss现象 | 调整策略 |
|---|---|---|
| 从零训练 | 训练loss几乎不降 | 放大3~10倍 |
| 从零训练 | 训练loss剧烈震荡 | 缩小3~10倍 |
| 从零训练 | 训练loss下降、测试loss不降 | 降学习率 + 正则/早停(过拟合) |
| LLM微调 | loss下降,但输出胡说、破坏基座能力 | 降低学习率 |
| LLM微调 | loss不下降、输出效果差 | 提高学习率 |
分层学习率:底层(靠近输入)小学习率,新增/顶层模块大学习率。
组合推荐
- 普通CNN:AdamW + 3e-4 + CosineDecay(可选warmup)
- 小数据集:AdamW + 1e-4 / 3e-4,一般不需要warmup
- LoRA微调:2e-4起步,不稳降到1e-4,建议warmup
- 全参数微调:1e-5起步,强烈建议warmup
- 大batch训练:学习率随batch放大 + 必须warmup
loss突然爆炸到极大值,检查batch,增加梯度裁剪。
四、BatchNorm / LayerNorm
BatchNorm(BN)
背景:内部协变量偏移,每层输入分布随训练持续变化,模型持续适应新分布,训练困难。
核心:对中间特征标准化,稳定分布,加速收敛、稳定训练。
计算(单个batch):
μB=1m∑i=1mxi,σB2=1m∑i=1m(xi−μB)2 \mu_B=\frac{1}{m}\sum_{i=1}^{m}x_i,\quad \sigma_B^2=\frac{1}{m}\sum_{i=1}^{m}(x_i-\mu_B)^2 μB=m1i=1∑mxi,σB2=m1i=1∑m(xi−μB)2
x^i=xi−μBσB2+ϵ,yi=γx^i+β \hat{x}_i=\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}},\quad y_i=\gamma\hat{x}_i+\beta x^i=σB2+ϵ xi−μB,yi=γx^i+β
γ,β\gamma,\betaγ,β 为可学习缩放、平移参数。
CNN维度:输入 X∈RN×C×H×WX\in \mathbb{R}^{N\times C\times H\times W}X∈RN×C×H×W,按通道C归一化 ,在 KaTeX parse error: Can't use function '\(' in math mode at position 1: \̲(̲N,H,W\) 维度求均值方差:
μc=1NHW∑n,h,wXn,c,h,w,σc2=1NHW∑n,h,w(Xn,c,h,w−μc)2 \mu_c=\frac{1}{NHW}\sum_{n,h,w}X_{n,c,h,w},\quad \sigma_c^2=\frac{1}{NHW}\sum_{n,h,w}(X_{n,c,h,w}-\mu_c)^2 μc=NHW1n,h,w∑Xn,c,h,w,σc2=NHW1n,h,w∑(Xn,c,h,w−μc)2

训练 vs 推理
- 训练:使用当前mini-batch的均值方差;同时EMA维护全局运行均值方差
μrunning=(1−m)μrunning+mμBσrunning2=(1−m)σrunning2+mσB2 \mu_{running}= (1-m)\mu_{running}+m\mu_B \\ \sigma_{running}^2= (1-m)\sigma_{running}^2+m\sigma_B^2 μrunning=(1−m)μrunning+mμBσrunning2=(1−m)σrunning2+mσB2 - 推理:直接使用EMA累积好的运行均值、方差,不再用batch统计量。
LayerNorm(LN)
对单个样本、单个token,在特征维度D上归一化:
μn,l=1D∑d=1DXn,l,d,σn,l2=1D∑d=1D(Xn,l,d−μn,l)2 \mu_{n,l}=\frac{1}{D}\sum_{d=1}^{D}X_{n,l,d},\quad \sigma_{n,l}^2=\frac{1}{D}\sum_{d=1}^{D}(X_{n,l,d}-\mu_{n,l})^2 μn,l=D1d=1∑DXn,l,d,σn,l2=D1d=1∑D(Xn,l,d−μn,l)2

BN vs LN 使用场景
- CV常用BN:CNN特征空间结构稳定,batch维度统计可靠;
- Transformer/NLP常用LN:序列长度动态变化,batch维度统计不稳定,适合单样本维度归一化。
五、激活函数:ReLU / LeakyReLU / GELU / Sigmoid / Tanh / Softmax
激活函数作用:引入非线性,让网络拟合复杂映射。
| 激活函数 | 公式 | 优点 | 缺点 |
|---|---|---|---|
| ReLU | f(x)=max(0,x)f(x)=\max(0,x)f(x)=max(0,x) | 计算简单;正数梯度恒为1,缓解梯度消失,收敛快 | 负区间梯度恒0,神经元死亡 |
| LeakyReLU | f(x)={αx,x<0x,x≥0f(x)=\begin{cases}\alpha x,&x<0\\x,&x\ge0\end{cases}f(x)={αx,x,x<0x≥0 | 缓解神经元死亡 | 超参α\alphaα需要调 |
| GELU | f(x)=xΦ(x)f(x)=x\Phi(x)f(x)=xΦ(x),Φ\PhiΦ正态累积分布 | 函数平滑、梯度连续,LLM主流 | 计算开销更大 |
| Sigmoid | f(x)=11+e−xf(x)=\frac{1}{1+e^{-x}}f(x)=1+e−x1 | 输出(0,1),适合二分类概率 | 两端梯度小,易梯度消失 |
| Tanh | f(x)=ex−e−xex+e−xf(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}f(x)=ex+e−xex−e−x | 输出(-1,1),中心化 | 两端饱和,易梯度消失 |
| Softmax | Pi=ezi∑j=1KezjP_i=\frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}}Pi=∑j=1Kezjezi | 输出互斥类别概率,总和=1 | 类别竞争,不适合多标签 |
使用广度:CNN最常用ReLU/SiLU;Transformer/GPT系列常用GELU、SwiGLU。
六、Transformer & 自注意力机制
自注意力:每个token与序列内所有token计算相关性,融合上下文信息。
输入Embedding:X∈RL×DX\in\mathbb{R}^{L\times D}X∈RL×D,LLL token长度,DDD特征维度。
步骤:
- 线性映射得到Q、K、V:Q=XWQ, K=XWK, V=XWVQ=XW_Q,\ K=XW_K,\ V=XW_VQ=XWQ, K=XWK, V=XWV
- Q:查询,我想要什么信息
- K:键,我有什么特征
- V:值,我携带的信息内容
- Q、K点积,计算token相关性分数
- Softmax归一化,得到注意力权重
- 权重和V加权求和,得到融合上下文的新特征
Attention(Q,K,V)=Softmax(QKTdk)V Attention(Q,K,V)= Softmax\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=Softmax(dk QKT)V
- 缩放因子 dk\sqrt{d_k}dk :防止QK点积数值过大,Softmax进入饱和区,梯度变小。
多头注意力:多组独立QKV,各自计算自注意力,结果拼接后线性投影;从多个子空间捕捉不同关联模式,多视角建模。
位置编码:自注意力本身没有时序顺序感知能力;位置编码给每个位置增加位置向量,和embedding相加注入位置信息;常见:正弦余弦位置编码、RoPE旋转位置编码、可学习位置编码。
七、Warmup、梯度裁剪、EMA、混合精度、学习率调度
- Warmup:学习率预热,训练初期学习率由小逐步抬升到目标lr;防止前期参数不稳定,大步更新震荡。
- 梯度裁剪:反向传播后、参数更新前,限制梯度范数/数值大小;抑制梯度爆炸,稳定训练。常用L2范数裁剪。
- EMA(指数移动平均):维护模型权重的滑动平均,平滑权重波动;推理时用EMA权重,泛化、稳定性更好。
- 混合精度训练:FP16/BF16 + FP32混合计算;降低显存占用、提升GPU算力利用率;FP16搭配GradScaler解决梯度下溢。
- 学习率调度:随训练轮次/验证指标动态调整学习率;前期大步快速收敛,后期小步精细优化。
八、Dropout 原理、训练/推理差异
Dropout是正则化手段,用来抑制过拟合。
原理:训练时以固定概率随机屏蔽一部分神经元;避免模型过度依赖少数神经元,近似大量子网络集成。
- 训练阶段:随机失活神经元;
- 推理阶段:Dropout关闭,所有神经元全部参与计算。
