AI-Agent 面试题汇总 - 深度学习篇
1. 谈谈深度学习中的归一化问题
深度学习中的归一化,核心目的是让不同层、不同特征的数值分布更稳定,从而加速训练并提高收敛稳定性。常见归一化包括输入归一化(如像素缩放到[0,1])、BatchNorm、LayerNorm、GroupNorm。BatchNorm在mini-batch维度统计均值方差,适合CNN场景;LayerNorm在特征维度统计,常用于NLP和Transformer。归一化可以缓解梯度消失/爆炸、允许更大学习率、降低参数初始化敏感性。
import torch.nn as nn
# CNN里常见 BatchNorm2d
cnn_block = nn.Sequential(
nn.Conv2d(3, 64, 3, padding=1),
nn.BatchNorm2d(64),
nn.ReLU()
)
# Transformer里常见 LayerNorm
ln = nn.LayerNorm(768)
2. LSTM结构推导,为什么比RNN好?
LSTM在RNN基础上引入“门控机制”和“细胞状态”:
- 遗忘门:控制历史信息保留多少
- 输入门:控制当前输入写入多少
- 输出门:控制输出多少状态它通过加法路径维护长期记忆,能显著缓解普通RNN在长序列上的梯度消失问题。因此在长文本、语音等时序任务中,LSTM通常比基础RNN记忆能力更强、训练更稳定。
import torch.nn as nn rnn = nn.RNN(input_size=128, hidden_size=256, batch_first=True) lstm = nn.LSTM(input_size=128, hidden_size=256, batch_first=True)
3. Sigmoid、Tanh、ReLU这三个激活函数有什么优点或不足?
- Sigmoid:输出(0,1),适合概率建模;缺点是两端饱和导致梯度接近0,且输出非零中心。
- Tanh:输出(-1,1),零中心,通常比sigmoid收敛好;但仍有饱和区梯度消失问题。
- ReLU:正半轴梯度恒定、计算简单、收敛快;缺点是负半轴梯度为0,可能出现“神经元死亡”。工程上隐藏层多用ReLU族(ReLU/LeakyReLU/GELU),输出层按任务选择sigmoid或softmax。
import torch import torch.nn.functional as F x = torch.tensor([-2.0, -0.5, 0.0, 1.0, 3.0]) print(torch.sigmoid(x)) print(torch.tanh(x)) print(F.relu(x))
4. 为什么引入非线性激励函数?
如果网络每层都只做线性变换,多层叠加后仍等价于一层线性变换,模型表达能力有限,无法拟合复杂非线性关系。引入激活函数后,网络可以逼近复杂函数,实现高层语义抽象,这是深度学习有效的核心原因之一。
5. 为什么在神经网络中 ReLU 往往优于 Tanh 和 Sigmoid?
ReLU的正区间梯度不衰减,能减少深层网络训练时的梯度消失;同时计算仅需阈值操作,速度快。相比Sigmoid/Tanh,ReLU在深层网络中通常收敛更快、效果更稳。但ReLU也有“死亡神经元”问题,因此很多场景会用LeakyReLU、PReLU、GELU改进。
import torch.nn as nn act1 = nn.ReLU() act2 = nn.LeakyReLU(0.1) act3 = nn.GELU()
6. 为什么LSTM里既有Sigmoid又有Tanh,而不是统一一种?
Sigmoid输出0~1,天然适合作“门控开关”(保留/过滤信息比例);Tanh输出-1~1,适合作状态候选值,便于表达正负语义。两者分工明确:Sigmoid负责“控制流量”,Tanh负责“表达内容”。统一成一种会削弱门控机制或表达能力。
7. 如何解决RNN梯度爆炸和梯度消失问题?
常见手段:
- 使用LSTM/GRU替代基础RNN
- 梯度裁剪(gradient clipping)防止爆炸
- 合理初始化(如Xavier/He)
- 调整学习
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.
查看8道真题和解析