跳转至

深度学习基础面试题 — 20 道高频原理 + 推导题

重要性: AI 算法岗面试中 CNN/RNN/优化/正则化等经典 DL 知识仍是基本功 难度标注:🟢 基础 | 🟡 进阶 | 🔴 困难 公司标签:[字节] [百度] [Google] [Meta] [阿里] [华为] 等

⚠️ 标签说明(2026-04-03):本页公司标签表示“公开面经与岗位讨论里常出现这类题”,用于帮助你建立提问场景,不代表一一对应的官方真题。来源口径见 27-2025-2026大厂真实面经题型地图29-2025-2026大厂公开面经题目全量索引28-题目真实性与来源维护说明


一、基础概念( 6 题)


Q1: 反向传播算法的推导 🟡 [Google] [字节] [华为]

题目:以一个两层全连接网络为例,推导反向传播的梯度计算过程。

参考答案

网络结构:输入 \(x\) → 隐层 \(h = \sigma(W_1 x + b_1)\) → 输出 \(\hat{y} = W_2 h + b_2\)

前向传播

\[ z_1 = W_1 x + b_1, \quad h = \sigma(z_1), \quad z_2 = W_2 h + b_2, \quad \hat{y} = z_2 \]

损失\(L = \frac{1}{2}(\hat{y} - y)^2\)

反向传播(链式法则)

\[ \frac{\partial L}{\partial z_2} = \hat{y} - y \quad (\text{记为} \delta_2) \]
\[ \frac{\partial L}{\partial W_2} = \delta_2 \cdot h^T, \quad \frac{\partial L}{\partial b_2} = \delta_2 \]
\[ \frac{\partial L}{\partial h} = W_2^T \delta_2 \]
\[ \frac{\partial L}{\partial z_1} = W_2^T \delta_2 \odot \sigma'(z_1) \quad (\text{记为} \delta_1) \]
\[ \frac{\partial L}{\partial W_1} = \delta_1 \cdot x^T, \quad \frac{\partial L}{\partial b_1} = \delta_1 \]

核心要点

  • 反向传播本质是链式法则的矩阵形式
  • 误差从输出层逐层向后传播
  • 计算图中每个节点保存前向的中间结果用于反向计算

追问:反向传播的计算复杂度和前向传播相同吗? → 数量级相同,但训练一步通常会比纯前向更贵,因为还要保存中间激活并计算反向梯度。实际开销取决于算子实现、是否重计算、是否启用混合精度以及框架优化,工程上常见的是“前向 + 反向”明显高于单次前向,但不应把 2-3 倍当成固定常数。


Q2: 激活函数对比 🟢 [字节] [百度] [阿里] [通用]

题目:对比 Sigmoid 、 Tanh 、 ReLU 、 GELU 、 SiLU/Swish 的特点。

参考答案

  • Sigmoid:公式为 \(\frac{1}{1+e^{-x}}\)|值域:(0,1)|优点:概率解释|缺点:梯度消失、非零中心|使用场景:二分类输出层
  • Tanh:公式为 \(\frac{e^x - e^{-x}}{e^x + e^{-x}}\)|值域:(-1,1)|优点:零中心|缺点:梯度消失|使用场景:RNN(legacy)
  • ReLU:公式为 \(\max(0,x)\)|值域:[0,+∞)|优点:计算简单、无梯度消失|缺点:Dead ReLU|使用场景:CNN/全连接
  • Leaky ReLU:公式为 \(\max(\alpha x, x)\)|值域:(-∞,+∞)|优点:解决 Dead ReLU|缺点:需调 α|使用场景:替代 ReLU
  • GELU:公式为 \(x \cdot \Phi(x)\)|值域:≈(-0.17,+∞)|优点:平滑、概率解释|缺点:计算稍慢|使用场景:Transformer/BERT
  • SiLU/Swish:公式为 \(x \cdot \sigma(x)\)|值域:≈(-0.28,+∞)|优点:平滑、自门控|缺点:计算稍慢|使用场景:LLaMA/现代 LLM

为什么现代 LLM 用 SiLU/GELU 而不是 ReLU

  • ReLU 在 x<0 梯度为 0 (信息完全丢失)
  • SiLU/GELU 在负值区域有小的非零梯度,信息保留更好
  • LLaMA/Qwen/Mistral 使用 SiLU + GLU (Gated Linear Unit)

追问:什么是 Dead ReLU 问题? → 当输入持续为负时, ReLU 输出恒为 0 ,梯度也为 0 ,该神经元永久"死亡"。可通过 Leaky ReLU 或初始化策略缓解。


Q3: 梯度消失和梯度爆炸 🟢 [字节] [华为] [通用]

题目:解释梯度消失和梯度爆炸的原因,以及解决方案。

参考答案

梯度消失原因

  • 链式法则中多个 <1 的数连乘 → 梯度指数衰减
  • Sigmoid/Tanh 饱和区梯度接近 0
  • 深层网络尤其严重

梯度爆炸原因

  • 链式法则中多个 >1 的数连乘 → 梯度指数增长
  • 权重初始化过大
  • RNN 中尤其常见

解决方案

  • 梯度消失:方案为 ReLU 系激活函数|说明:正区间梯度恒为 1
  • 梯度消失:方案为残差连接|说明:梯度直接传过 shortcut
  • 梯度消失:方案为合适的初始化(He/Xavier)|说明:控制前向/反向方差
  • 梯度消失:方案为 BatchNorm/LayerNorm|说明:稳定训练
  • 梯度爆炸:方案为梯度裁剪|说明:torch.nn.utils.clip_grad_norm_
  • 梯度爆炸:方案为权重正则化|说明:L2 约束权重大小
  • 通用:方案为 LSTM 门机制|说明:选择性遗忘/记忆

追问: ResNet 如何解决梯度消失? → 残差连接 \(y = F(x) + x\),梯度 \(\frac{\partial y}{\partial x} = \frac{\partial F}{\partial x} + I\)。关键不在于“梯度至少为 1”,而在于恒等分支给了梯度一条更直接的传播路径,使深层网络更容易训练;即使残差分支学得不好,信息和梯度也不必完全依赖多层非线性连续相乘。


Q4: BatchNorm vs LayerNorm 🟡 [字节] [Google] [Meta]

题目:对比 BatchNorm 和 LayerNorm 的归一化维度、适用场景和差异。

参考答案

  • 归一化维度:BatchNorm 对 batch 维度归一化;LayerNorm 对 feature 维度归一化
  • 是否依赖 batch:BatchNorm ✅ 是(训练和推理行为不同);LayerNorm ❌ 否(不依赖 batch)
  • 推理时:BatchNorm 使用训练时累积的均值/方差;LayerNorm 对每个样本独立计算
  • 适用场景:BatchNorm 常用于 CNN(图像);LayerNorm 常用于 Transformer/RNN(NLP)
  • batch size 影响:BatchNorm 在 batch 太小时统计量不准;LayerNorm 不受影响

数学

Text Only
BatchNorm: 对每个特征通道,沿 batch 维度归一化
  x̂ = (x - μ_B) / √(σ²_B + ε), 然后 y = γx̂ + β
  μ_B, σ²_B 是当前 batch 在该通道上的均值和方差

LayerNorm: 对每个样本,沿 feature 维度归一化
  x̂ = (x - μ_L) / √(σ²_L + ε), 然后 y = γx̂ + β
  μ_L, σ²_L 是该样本所有特征的均值和方差

为什么 Transformer 用 LayerNorm

  • NLP 中 batch 内不同样本长度不同, BatchNorm 统计量不准
  • LayerNorm 不依赖 batch ,适合变长序列和小 batch
  • 现代 LLM 进一步用 RMSNorm (去掉均值中心化,只做缩放,更快)

追问: GroupNorm 和 InstanceNorm 呢? → GroupNorm 将通道分组归一化(介于 BN 和 LN 之间),适用于小 batch 的图像任务。 InstanceNorm 对每个样本的每个通道独立归一化,用于风格迁移。


Q5: 权重初始化 🟡 [Google] [字节]

题目:解释 Xavier 和 He 初始化的原理和适用场景。

参考答案

动机:如果权重初始化不当,前向传播中激活值会指数放大或缩小,导致训练失败。

Xavier 初始化(适用于 Sigmoid/Tanh ):

\[ W \sim \mathcal{N}(0, \frac{2}{n_{in} + n_{out}}) \quad \text{或} \quad W \sim U(-\sqrt{\frac{6}{n_{in}+n_{out}}}, \sqrt{\frac{6}{n_{in}+n_{out}}}) \]

推导假设:激活函数在 0 附近近似线性( Sigmoid/Tanh 的线性区)

He 初始化(适用于 ReLU ):

\[ W \sim \mathcal{N}(0, \frac{2}{n_{in}}) \]

推导考虑了 ReLU 会"杀死"一半的激活(负区间输出 0 ),所以方差需要 ×2 补偿。

追问: Transformer 的初始化策略? → 不同 Transformer 家族的初始化并不完全一样。教材里常见的是 GPT 系列使用 \(\mathcal{N}(0, 0.02)\) 这一类初始化,而部分实现还会对残差路径做额外缩放,目的是控制深层堆叠时的方差传播。面试里更重要的是讲清“为什么要控制激活和梯度方差”,而不是把某个具体常数当成所有 Transformer 的统一规则。


Q6: Dropout 的原理和为什么有效 🟢 [字节] [百度] [通用]

题目:解释 Dropout 的工作原理,为什么能防止过拟合?

参考答案

工作原理

  • 训练时:每个神经元以概率 \(p\) 被随机置零
  • 推理时:不做 Dropout ,但权重乘以 \((1-p)\) 补偿(或训练时用 inverted dropout 除以 \((1-p)\)

为什么有效

  1. 集成效果:每次训练相当于不同的子网络,最终是指数量级子网络的集成
  2. 减少共适应:神经元不能依赖特定的其他神经元,被迫学习更鲁棒的特征
  3. 近似贝叶斯: MC Dropout 可以估计预测不确定性
Python
# PyTorch中的Dropout
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(784, 256)
        self.dropout = nn.Dropout(p=0.5)  # 50%的神经元被丢弃
        self.fc2 = nn.Linear(256, 10)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.dropout(x)  # 训练时随机丢弃,推理时自动关闭
        x = self.fc2(x)
        return x

追问:为什么 Transformer 中用 Dropout ,但现代 LLM 有些不用? → 一个常见解释是:大模型训练数据往往更大、归一化和残差设计更成熟,过拟合不一定像小模型那样突出;同时 Dropout 会引入额外噪声和训练开销,因此一些现代 LLM 会减少或移除部分 Dropout。但这不是绝对规律,是否使用仍要看数据规模、训练阶段和具体架构。


二、 CNN 相关( 4 题)


Q7: 卷积运算的参数量和计算量 🟢 [字节] [华为] [阿里]

题目:给定输入 \(C_{in} \times H \times W\),卷积核 \(K \times K\),输出通道 \(C_{out}\),计算参数量和 FLOPs 。

参考答案

参数量

\[ \text{Params} = C_{out} \times (C_{in} \times K \times K + 1) \]

(+1 是 bias ,有些网络不用 bias )

输出尺寸

\[ H_{out} = \frac{H - K + 2P}{S} + 1 \]

P 是 padding , S 是 stride 。

FLOPs (乘加运算数)

\[ \text{FLOPs} = C_{out} \times H_{out} \times W_{out} \times (C_{in} \times K \times K) \]

示例:输入 3×224×224 , 3×3 卷积, 64 输出通道, stride=1 , padding=1

  • 参数量: 64 × (3 × 3 × 3 + 1) = 1,792
  • 输出尺寸: 64 × 224 × 224
  • FLOPs : 64 × 224 × 224 × 27 ≈ 8700 万

追问:深度可分离卷积( Depthwise Separable Conv )如何减少计算量? → 分为 Depthwise (每通道独立 K×K 卷积)+ Pointwise ( 1×1 卷积跨通道),参数和计算量减少 \(\frac{1}{C_{out}} + \frac{1}{K^2}\) 倍(通常约 8-9 倍)。 MobileNet 使用。


Q8: 经典 CNN 架构演进 🟡 [字节] [百度] [华为]

题目:简述从 AlexNet 到 ResNet 的 CNN 架构演进。

参考答案

  • AlexNet(2012):关键创新为大规模 GPU 训练 + ReLU + Dropout|深度:8 层|Top-5:16.4%
  • VGG(2014):关键创新为统一使用 3×3 小卷积核|深度:16/19 层|Top-5:7.3%
  • GoogLeNet(2014):关键创新为 Inception 模块(多尺度并行)|深度:22 层|Top-5:6.7%
  • ResNet(2015):关键创新为残差连接 → 可训练上千层|深度:152 层|Top-5:3.6%
  • DenseNet(2017):关键创新为密集连接(所有层互相连接)|深度:121 层|Top-5:-
  • EfficientNet(2019):关键创新为复合缩放(深度 + 宽度 + 分辨率)|深度:-|Top-5:-

ResNet 残差块

Text Only
x → [Conv-BN-ReLU-Conv-BN] → + → ReLU → output
│                             ↑
└─────── shortcut ────────────┘

为什么 ResNet 能训练更深的网络

  • 梯度直接通过 shortcut 传回:\(\frac{\partial L}{\partial x} = \frac{\partial L}{\partial y}(1 + \frac{\partial F}{\partial x})\)
  • 恒等映射保证了最差情况也不会比浅层差
  • 使得千层网络训练成为可能

追问: Vision Transformer ( ViT )和 CNN 的根本区别? → ViT 用 Self-Attention 捕捉全局依赖(感受野=全图), CNN 用局部卷积逐层扩大感受野。 ViT 需大数据预训练,否则不如 CNN 。


Q9: 1×1 卷积的作用 🟢 [字节] [华为]

题目: 1×1 卷积有什么用途?

参考答案

  1. 通道数调整:调整通道数(升维/降维)而不改变空间尺寸
  2. 跨通道特征融合:相当于对每个空间位置做全连接
  3. 降低计算量:在 3×⅗×5 卷积前用 1×1 降通道( Bottleneck 设计)
  4. 增加非线性: 1×1 Conv + ReLU 引入非线性

Bottleneck 结构( ResNet-50+)

Text Only
x (256通道) → 1×1 Conv(64) → 3×3 Conv(64) → 1×1 Conv(256) → + x

计算量从 \(256 \times 256 \times 3^2 = 590K\) 降到 \(256 \times 64 + 64 \times 64 \times 9 + 64 \times 256 = 70K\)(约 8 倍减少)。


Q10: 感受野的计算 🟡 [字节] [华为]

题目:如何计算 CNN 中每层的感受野( Receptive Field )?

参考答案

递推公式

\[ RF_l = RF_{l-1} + (K_l - 1) \times \prod_{i=1}^{l-1} S_i \]

其中 \(RF_l\) 是第 \(l\) 层的感受野,\(K_l\) 是卷积核大小,\(S_i\) 是第 \(i\) 层的步长。

示例: 3 层 3×3 卷积( stride=1 )

  • 第 1 层: RF = 3
  • 第 2 层: RF = 3 + (3-1)×1 = 5
  • 第 3 层: RF = 5 + (3-1)×1 = 7

→ 3 个 3×3 卷积的感受野等价于 1 个 7×7 卷积,但参数量更少( 3×9C² vs 49C²)。这是 VGG 用小卷积核的原因。

追问:池化层/空洞卷积如何影响感受野? → 池化层增大感受野( stride>1 );空洞卷积( Dilated Conv )在不增加参数的情况下指数级增大感受野。


三、 RNN 相关( 3 题)


Q11: RNN/LSTM/GRU 对比 🟡 [百度] [华为] [字节]

题目:对比 Vanilla RNN 、 LSTM 、 GRU 的结构和优缺点。

参考答案

  • 门机制:Vanilla RNN 无门机制;LSTM 有 3 门(遗忘/输入/输出);GRU 有 2 门(重置/更新)
  • 长期依赖:Vanilla RNN ❌ 差(梯度消失);LSTM ✅ 好;GRU ✅ 好
  • 参数量:Vanilla RNN 为 \(4dh\);LSTM 为 \(4 \times 4dh\);GRU 为 \(3 \times 4dh\)
  • 速度:Vanilla RNN 最快;LSTM 最慢;GRU 中等
  • 效果:Vanilla RNN 较差;LSTM 好;GRU 接近 LSTM

LSTM 核心

\[ f_t = \sigma(W_f [h_{t-1}, x_t] + b_f) \quad \text{(遗忘门)} \]
\[ i_t = \sigma(W_i [h_{t-1}, x_t] + b_i) \quad \text{(输入门)} \]
\[ \tilde{C}_t = \tanh(W_C [h_{t-1}, x_t] + b_C) \quad \text{(候选记忆)} \]
\[ C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t \quad \text{(记忆更新)} \]
\[ o_t = \sigma(W_o [h_{t-1}, x_t] + b_o) \quad \text{(输出门)} \]
\[ h_t = o_t \odot \tanh(C_t) \]

LSTM 为什么能解决梯度消失

  • 记忆单元 \(C_t\) 的更新是加法形式(而非乘法)
  • 遗忘门 \(f_t\) 可以选择性保留信息
  • 梯度沿 \(C\) 的回传路径较为通畅

追问: Transformer 出现后 RNN/LSTM 还有用吗? → 在资源受限场景(端侧部署/流式处理)仍有价值。 Mamba/RWKV 等新架构借鉴了 RNN 的线性复杂度优势。


Q12: Seq2Seq 和注意力机制的发展 🟡 [百度] [Google]

题目:描述从 Seq2Seq 到 Attention 到 Transformer 的发展脉络。

参考答案

Text Only
Seq2Seq (2014)
  Encoder RNN → 固定长度向量 → Decoder RNN
  问题: 长序列信息瓶颈(所有信息挤入一个向量)

Bahdanau Attention (2015)
  Decoder每步关注Encoder的不同位置
  score(s_t, h_i) = v^T tanh(W[s_t; h_i])
  解决了信息瓶颈,但仍是RNN,无法并行

Transformer (2017)
  完全基于Self-Attention,丢弃RNN
  优势: 并行计算、长距离依赖、可扩展
  成为所有现代LLM的基础

追问: Cross-Attention 和 Self-Attention 的区别? → Self-Attention 的 QKV 来自同一输入; Cross-Attention 的 Q 来自 Decoder , KV 来自 Encoder (或来自不同模态/来源)。


Q13: Teacher Forcing 🟢 [百度] [华为]

题目:什么是 Teacher Forcing ?有什么问题?

参考答案

Teacher Forcing:训练时 Decoder 使用真实的上一步 token (而非模型自己的预测)作为输入。

优点

  • 训练收敛快
  • 梯度信号更稳定

缺点

  • Exposure Bias (暴露偏差):训练时总能看到正确的前文,推理时看到的是自己的预测(可能有错),导致错误累积
  • 曝光偏差 → 推理时生成质量下降

解决方案

  • Scheduled Sampling :训练后期逐渐增加使用模型自身预测的概率
  • Curriculum Learning :由易到难的训练策略
  • 强化学习( SCST ):用推理模式的结果做奖励信号

四、损失函数( 3 题)


Q14: 常见损失函数对比 🟢 [字节] [阿里] [通用]

题目:对比分类和回归任务中常见损失函数的适用场景。

参考答案

分类损失

  • 交叉熵:公式为 \(-y\log\hat{y}-(1-y)\log(1-\hat{y})\)|适用场景:二分类/多分类标准
  • Focal Loss:公式为 \(-\alpha(1-p_t)^\gamma\log(p_t)\)|适用场景:类别不平衡
  • Label Smoothing CE:将 hard label 变为 soft label|适用场景:防止过拟合/过度自信
  • KL 散度:公式为 \(\sum P\log(P/Q)\)|适用场景:知识蒸馏
  • Contrastive Loss:正样本拉近,负样本推远|适用场景:对比学习/表示学习

回归损失

  • MSE:公式为 \(\frac{1}{N}\sum(y-\hat{y})^2\)|特点:对异常值敏感
  • MAE:公式为 \(\frac{1}{N}\sum\lvert y-\hat{y}\rvert\)|特点:对异常值鲁棒
  • Huber Loss:MSE(小误差)+ MAE(大误差)|特点:平衡鲁棒性和精度
  • Smooth L1:类似 Huber|特点:目标检测常用

追问: Label Smoothing 的数学形式? → 将 one-hot 标签 \([0,0,1,0]\) 变为 \([\epsilon/K, \epsilon/K, 1-\epsilon+\epsilon/K, \epsilon/K]\),通常 \(\epsilon=0.1\)


Q15: 对比学习损失函数 🟡 [字节] [Meta] [Google]

题目:解释 InfoNCE 损失(对比学习核心损失函数)。

参考答案

InfoNCE ( SimCLR/CLIP 等使用)

\[ \mathcal{L} = -\log \frac{\exp(\text{sim}(z_i, z_j^+)/\tau)}{\sum_{k=1}^{2N} \mathbf{1}_{[k \neq i]} \exp(\text{sim}(z_i, z_k)/\tau)} \]
  • \(z_i\): anchor 的表示
  • \(z_j^+\):正样本的表示
  • \(\tau\):温度参数(控制分布锐度)
  • sim :余弦相似度

直觉:将正样本拉近,同时将所有负样本推远。本质是一个 (2N-1) 类分类问题。

温度参数 τ 的作用

  • τ 小 → 分布更尖锐,模型更关注 hard negative
  • τ 大 → 分布更均匀,对所有 negative 一视同仁
  • 通常 τ = 0.07~0.5

追问: CLIP 的训练目标是什么? → 对称的 InfoNCE :图文对之间互相做对比学习,图像查文本 + 文本查图像,两个方向的 InfoNCE 相加。


Q16: 知识蒸馏的损失函数 🟡 [字节] [阿里] [Google]

题目:解释知识蒸馏的损失设计。

参考答案

\[ \mathcal{L} = \alpha \cdot T^2 \cdot D_{KL}(P_T \| P_S) + (1-\alpha) \cdot \text{CE}(y, P_S) \]
  • \(P_T = \text{softmax}(z_T/T)\):教师的软标签
  • \(P_S = \text{softmax}(z_S/T)\):学生的软标签
  • T :温度( T>1 使分布更平滑,暴露类间相似性)
  • α:软标签损失权重

为什么用软标签

  • 硬标签只告诉模型"猫",软标签告诉模型"85% 猫、 10% 狗、 5% 老虎"
  • 软标签包含类间关系(暗知识 / dark knowledge )

追问:温度 T 具体怎么影响? → T=1 时就是正常 softmax ; T>1 使分布变平滑, T 越大类间概率差异越小,暴露更多暗知识。通常 T=3~20 。


五、训练技巧( 4 题)


Q17: 学习率调度策略 🟡 [字节] [Google] [通用]

题目:常见的学习率调度策略有哪些? LLM 训练用什么策略?

参考答案

  • Step Decay:描述为每 N epochs 降低 γ 倍|适用场景:传统 CNN 训练
  • Cosine Annealing:描述为余弦衰减到最小值|适用场景:常用,平滑
  • Warmup + Cosine:描述为先线性升温再余弦衰减|适用场景:LLM 训练标配
  • OneCycleLR:描述为先升后降,单周期|适用场景:快速训练
  • ReduceOnPlateau:描述为 loss 不降时降低 lr|适用场景:微调时常用

LLM 标配: Linear Warmup + Cosine Decay

Text Only
学习率
  |     /\
  |    /  \  Cosine Decay
  |   /    \____
  |  / Warmup    \___
  | /                 \___
  |/_________________________ steps
  0  warmup_steps      total_steps
Python
# 典型配置
optimizer = AdamW(model.parameters(), lr=3e-4, weight_decay=0.1)
scheduler = get_cosine_schedule_with_warmup(
    optimizer,
    num_warmup_steps=2000,    # 预热步数
    num_training_steps=100000  # 总步数
)

追问: Warmup 为什么重要? → 训练初期参数随机,梯度方差大,大学习率会导致不稳定。 Warmup 让模型先"热身"找到合理的参数区域。


Q18: 混合精度训练 🟡 [字节] [华为] [Google]

题目:什么是混合精度训练?为什么能加速训练又不损失精度?

参考答案

核心思想:前向和反向用 FP16 计算(快),参数和优化器状态用 FP32 存储(精度)。

Text Only
FP32主权重 → 复制为FP16 → FP16前向 → FP16反向 → FP16梯度
     ↑                                              ↓
     └────── FP32优化器更新 ← FP32梯度(类型转换)←──┘

关键技术

  1. Loss Scaling: FP16 精度有限(最小正数 ~6e-8 ),小梯度可能下溢为 0 。将 loss 放大(如 ×65536 ),反向传播后再缩小。
  2. 动态 Loss Scaling:自动调整放大倍数,遇到 inf/nan 就减小。

效果

  • 训练速度提升 1.5-3x
  • 显存减少约 50%
  • 精度几乎无损
Python
# PyTorch AMP(自动混合精度)
scaler = torch.cuda.amp.GradScaler()
for data, target in dataloader:
    optimizer.zero_grad()
    with torch.cuda.amp.autocast():  # FP16前向
        output = model(data)
        loss = criterion(output, target)
    scaler.scale(loss).backward()  # Loss Scaling + FP16反向
    scaler.step(optimizer)          # 梯度Unscale + FP32更新
    scaler.update()                 # 动态调整Scale

追问: BF16 和 FP16 的区别? → BF16 有 8 位指数(和 FP32 相同范围 ±3.4e38 )但只有 7 位尾数(精度低于 FP16 )。在很多支持 BF16 的训练栈里通常不需要像 FP16 那样依赖 Loss Scaling;近年在数据中心训练环境中它是常见选择之一。


Q19: 数据增强方法 🟢 [字节] [阿里] [华为]

题目:常见的图像和文本数据增强方法有哪些?

参考答案

图像数据增强

  • 随机翻转/旋转/裁剪:几何变换
  • 颜色抖动/亮度对比度:光照变换
  • Mixup:两张图像线性混合
  • CutMix:将一张图的区域贴到另一张
  • CutOut/Random Erasing:随机遮盖区域
  • AutoAugment:自动搜索增强策略
  • RandAugment:随机组合增强操作

文本数据增强

  • 同义词替换:WordNet / LLM 生成
  • 随机删除/插入/交换:EDA(Easy Data Augmentation)
  • 回译:翻译到其他语言再翻回来
  • LLM 改写:用大模型生成语义相同的变体
  • 合成数据:用 LLM 生成训练数据

追问: Mixup 的数学? → \(\tilde{x} = \lambda x_i + (1-\lambda)x_j\)\(\tilde{y} = \lambda y_i + (1-\lambda)y_j\)\(\lambda \sim \text{Beta}(\alpha, \alpha)\),通常 \(\alpha=0.2\)


Q20: Test-time Compute 和推理链 🔴 [OpenAI] [Google] [字节] [2025-2026 公开热点]

题目:什么是 Test-time Compute (如 o1/DeepSeek-R1 )?为什么它会在 2025-2026 的公开讨论中快速升温?

参考答案

核心思想:在推理时花更多计算(更长推理链、更多采样、搜索),用算力换效果。

Text Only
传统LLM:    输入 → 模型 → 直接输出答案
Test-time:  输入 → 模型 → [思考步骤1] → [思考步骤2] → ... → 最终答案
                           ↑ 可能涉及回溯、验证、多路径搜索

代表系统

  • OpenAI o1/o3:公开资料显示其强调更强的推理能力,但具体内部实现并未完全公开
  • DeepSeek-R1:公开路线强调通过后训练与推理链提升复杂推理表现
  • 商业模型中的 reasoning / extended thinking 模式:通过增加测试时计算改善复杂推理表现

技术方案分类

  1. 推理链生成(内部思考)
  2. 模型生成 <think>...</think> 内部推理步骤
  3. 通过 RL (如 GRPO )训练模型学会推理
  4. DeepSeek-R1 方案:先用 RL 训练冷启动推理能力,再 SFT 对齐格式

  5. 多路径采样 + 验证

  6. Best-of-N :采样 N 个回答,用 Reward Model 选最好的
  7. Majority Voting :多次采样取多数票
  8. Tree Search : MCTS 风格的搜索+回溯

  9. 自我纠错

  10. Self-Refine :生成 → 批评 → 修正 → 再批评 → ...
  11. Reflexion :加入环境反馈

Scaling Law 的新维度

Text Only
传统 Scaling Law: 性能 ~ f(训练计算量)
新 Scaling Law:   性能 ~ f(训练计算量, 推理计算量)

→ 可以用更小的模型 + 更多推理计算,达到更大模型的效果

面试加分点

  • 理解 Train-time Compute 和 Test-time Compute 的权衡
  • 知道 GRPO/PPO 如何训练推理链
  • 了解推理链的好处(可解释性+准确率)和代价(延迟+成本)
  • 能讨论何时值得投入更多推理计算(数学推理 vs 简单对话)

学习检查清单

  • 能推导两层网络的反向传播
  • 理解各种激活函数的优缺点
  • 掌握梯度消失/爆炸的原因和解决方案
  • 能对比 BatchNorm 和 LayerNorm
  • 了解 CNN 的参数量和 FLOPs 计算
  • 理解 LSTM 的门机制和为什么能解决长期依赖
  • 掌握常见损失函数(交叉熵/Focal Loss/InfoNCE )
  • 了解混合精度训练和学习率调度
  • 理解 Test-time Compute 的前沿趋势

⚠️ 核验说明(2026-04-03):本页已完成 2026-04-03 人工复核。BF16、Test-time Compute 和具体模型示例均已改为“公开可观察路线”口径,避免把时点性产品信息写成长期定论。


最后更新日期: 2026-04-03