281. 什么是梯度消失与梯度爆炸?如何缓解?
梯度消失指反向传播中梯度逐层衰减至0,导致浅层参数无法更新;梯度爆炸则相反,梯度指数级增长破坏参数稳定性。常见于深度神经网络或长序列RNN。
缓解方法:
- 梯度裁剪:设定阈值,限制梯度最大值(如
torch.nn.utils.clip_grad_norm_)。 - 权重初始化:使用He初始化(ReLU激活)或Xavier初始化(Sigmoid/Tanh)。
- 归一化层:BatchNorm或LayerNorm稳定输入分布。
- 残差连接:通过跳跃连接(如ResNet)缓解深层网络梯度问题。
282. 解释Dropout与DropConnect的区别
Dropout随机屏蔽神经元(输出置0),强制网络不过度依赖特定节点,增强泛化性;DropConnect则随机屏蔽权重连接(权重置0),更灵活但计算成本略高。两者均需在测试时按保留比例缩放激活值。
283. 如何优化Transformer的注意力机制?
- 稀疏注意力:局部窗口(如Swin Transformer)或全局稀疏连接(如BigBird)。
- 低秩分解:用两个小矩阵近似QK^T(如Linformer)。
- 记忆压缩:共享Key-Value或使用固定模式(如Axial Transformer)。
- 相对位置编码:替代绝对位置编码,提升长序列建模能力。
284. 对比BERT与GPT的预训练任务
| 任务类型 | BERT | GPT |
|---|---|---|
| 目标 | 双向上下文理解 | 自回归生成 |
| 预训练任务 | MLM(掩码语言模型) | 因果语言建模(CLM) |
| 典型应用 | 文本分类、问答 | 文本生成、对话系统 |
| 输入处理 | 同时处理左右上下文 | 仅依赖左侧上下文 |
285. 什么是负采样?在Word2Vec中如何应用?
负采样通过随机选择负例(非目标词)替代全量softmax计算,降低计算复杂度。在Word2Vec中,模型需区分真实目标词与负例,优化目标为:
[
\log \sigma(v{o}^T v{c}) + \sum{i=1}^{k} \mathbb{E}{wi \sim P_n}[\log \sigma(-v{wi}^T v{c})]
]
其中(v_c)为中心词向量,(v_o)为目标词向量,(P_n)为噪声分布。
286. 解释Focal Loss的原理与适用场景
Focal Loss通过动态调整类别权重,解决类别不平衡问题:
[
FL(p_t) = -\alpha_t (1-p_t)^\gamma \log(p_t)
]
其中(p_t)为模型预测概率,(\gamma)聚焦参数((\gamma>0)时降低易分类样本权重)。适用于目标检测(如RetinaNet)或分类任务中正负样本比例悬殊的场景。
287. 如何设计多任务学习的损失函数?
加权求和法:为各任务分配静态权重(如(\lambda_1 L_1 + \lambda_2 L_2)),需手动调参。
动态权重法:根据任务难度自动调整权重,如GradNorm通过反向传播梯度范数平衡训练速度。
不确定性加权:引入任务相关噪声参数,自适应调整损失贡献(如《Multi-Task Learning Using Uncertainty to Weigh Losses》)。
288. 什么是知识蒸馏?如何实现?
知识蒸馏将大型教师模型的软标签(含类别间相似性信息)迁移至小型学生模型。实现步骤:
- 训练教师模型(如ResNet-152)。
- 计算软标签:(p_i = \frac{\exp(z_i/T)}{\sum_j \exp(z_j/T)}),(T)为温度参数。
- 联合训练学生模型:最小化KL散度(软标签)与交叉熵(硬标签)的加权和。
289. 对比CNN与Transformer在图像分类中的优劣
| 维度 | CNN | Transformer |
|---|---|---|
| 局部性 | 天然捕捉局部特征 | 需通过位置编码模拟 |
| 计算复杂度 | (O(n))(局部连接) | (O(n^2))(全局注意力) |
| 数据效率 | 小数据集表现优异 | 需大量数据预训练 |
| 迁移能力 | 依赖预训练权重 | 通用性强,适应多任务 |
290. 如何评估生成模型的质量?
- 定量指标:BLEU(机器翻译)、ROUGE(文本摘要)、FID(图像生成,Frechet Inception Distance)。
- 定性评估:人工评分(流畅性、相关性)、A/B测试对比竞品。
- 多样性指标:Distinct-n(n-gram多样性)、Self-BLEU(抑制重复生成)。
291. 解释贝叶斯优化的核心步骤
- 定义目标函数:如模型在验证集上的准确率。
- 选择代理模型:高斯过程(GP)或随机森林,拟合已观测数据。
- 采集函数:如EI(Expected Improvement)选择下一个评估点。
- 迭代优化:更新代理模型,重复步骤2-3直至收敛。
292. 如何处理类别不平衡的分类问题?
- 重采样:过采样少数类(SMOTE)或欠采样多数类。
- 代价敏感学习:为少数类分配更高误分类代价(如XGBoost的
scale_pos_weight)。 - 集成方法:Bagging(如EasyEnsemble)或Boosting(如AdaBoost)。
- 合成数据:使用GAN生成少数类样本(如CTGAN)。
293. 什么是自监督学习?举例说明
自监督学习通过设计预训练任务从无标签数据中学习表征,无需人工标注。典型案例:
- NLP:BERT的MLM任务、GPT的因果语言建模。
- CV:SimCLR的对比学习(同一图像不同增强视图为正例)、MAE的掩码图像重建。
294. 如何优化模型推理速度?
- 量化:将FP32权重转为INT8(如TensorRT量化工具)。
- 剪枝:移除冗余通道或权重(如《The Lottery Ticket Hypothesis》)。
- 知识蒸馏:用轻量级学生模型替代教师模型。
- 硬件加速:使用TPU或GPU优化算子(如cuDNN)。
295. 解释强化学习中的Q-Learning与Policy Gradient
| 维度 | Q-Learning | Policy Gradient | |
|---|---|---|---|
| 输出类型 | 状态-动作值函数(Q(s,a)) | 策略概率(\pi(a | s)) |
| 更新方式 | 离线策略(可利用历史数据) | 在线策略(需当前策略生成数据) | |
| 适用场景 | 离散动作空间(如网格世界) | 连续动作空间(如机器人控制) | |
| 典型算法 | DQN | PPO、A3C |
296. 如何设计一个高效的推荐系统?
- 召回阶段:使用双塔模型(User/Item Embedding)或图嵌入(如Node2Vec)。
- 排序阶段:结合DNN与特征交叉(如Wide&Deep模型)。
- 重排阶段:考虑多样性、新鲜度等业务规则。
- 在线学习:通过FTRL等算法实时更新模型。
297. 什么是联邦学习?其核心挑战是什么?
联邦学习在数据不出域的前提下联合多方训练模型,分为横向联邦(数据特征重叠少)与纵向联邦(样本重叠少)。核心挑战包括:
- 通信开销:通过模型压缩(如量化)或稀疏更新降低传输量。
- 非独立同分布(Non-IID):使用个性化联邦学习(如FedPer)。
- 隐私保护:结合差分隐私或安全多方计算(MPC)。
298. 如何解释模型预测结果?
- 特征重要性:SHAP值、LIME(局部可解释模型)。
- 注意力可视化:展示Transformer中关键token的注意力权重。
- 规则提取:从决策树或规则模型中抽取显式规则。
299. 什么是持续学习?如何缓解灾难性遗忘?
持续学习要求模型在新任务上训练时不遗忘旧任务知识。缓解方法包括:
- 正则化:EWC(Elastic Weight Consolidation)惩罚关键参数变化。
- 回放缓冲区:存储旧任务样本(如iCaRL)。
- 动态架构:为新任务扩展网络(如Progressive Neural Networks)。
300. 如何设计一个自动化机器学习(AutoML)框架?
- 搜索空间定义:包括网络结构、超参数、正则化方法等。
- 搜索策略:随机搜索、贝叶斯优化或强化学习(如NASNet)。
- 评估机制:代理模型加速评估或低保真估计(如减少epoch数)。
- 部署集成:将最优模型导出为标准化格式(如ONNX)。
总结:本文覆盖了深度学习模型优化、机器学习算法对比、NLP与CV核心问题等面试高频考点,结合理论解析与实战案例,帮助开发者系统掌握关键技术点,提升面试竞争力。