你用单层 LSTM(hidden=128)做一个长度 512 的序列分类任务,只取最后一个时间步的 h 接一层线性分类头。训练集 loss 能降到 0.05,验证集 loss 停在 0.6 左右;更奇怪的是,你把验证集里每条样本的时间步随机打乱后再测,指标几乎不变。请给出你的根因判断、一个能证伪它的实验,以及你接下来会怎么改。
面试官在考什么
判断候选人能否从「打乱时间步指标不变」这一现象反推到「模型实际没在用序列顺序信息」,而不是笼统归因于过拟合;并看他有没有可执行的验证手段和针对长依赖的具体改法。
回答框架 · 前两步
- 打乱时间步后指标不变 ⇒ 模型输出对顺序近似不敏感,序列信息基本没被用上;先排除评测/数据管道 bug(shuffle 打错了维度、pad 后 mask 错误、样本本身标签不依赖顺序)。
- 最直接的证伪实验:固定同一批样本只做时间步置换,比较 logits 差异是否显著;或训练时把输入换成常数/只用最后一步,看指标掉不掉。
还有 3 条答案要点、 3 层追问、 6 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「深度学习基础」方向页
同一能力域的其他题
- 手写版:请推导一下自注意力的计算过程,并说明为什么要除以 sqrt(d_k)?如果不除会出什么问题?
- 场景:线上实时风控,每条请求是一条长度 300 的行为序列(每步 64 维),要求单条推理 P99 < 20ms,只能部署一张 T4,线上 batch=1(请求串行到达但必须低延迟)。候选方案:(A) 2 层 LSTM,hidden=256;(B) 2 层 GRU,hidden=256;(C) 因果膨胀卷积(dilation=1,2,4,...,128,kernel=3,约 8 层)。请给出你的选型,并估算 A/B 在这个延迟预算下能不能达标、为什么。如果实际必须用 RNN,你会怎么改?
- 某实时风控场景,用户行为序列平均长度 2000,QPS 1000,要求单次推理 P99 ≤ 50ms(单卡 T4)。当前用 2 层 LSTM,hidden=256,延迟 120ms,且长序列尾部信息衰减明显。团队有人提议直接换 Transformer,但 GPU 预算只允许推理成本增加 20%。作为技术负责人,你如何做技术决策?请给出你对 RNN/LSTM/GRU 能力边界的判断、可能的中间方案、以及如何验证和推动落地。
- 单层 LSTM,输入维度 64,隐层维度 128,batch=32、序列长度 50。请算出这一层 LSTM 有多少个可学习参数(含 bias,写出计算式);如果把同样的输入维度、隐层维度换成单层 GRU,参数量是多少?并说明这个比例从两者的门结构上看是怎么来的,LSTM 每个门各控制什么。
- 在 d_k=512 的点积注意力里,假设 q 和 k 的每一维近似独立、均值 0 方差 1。请估算 q·k 的量级,说明为什么必须除以 sqrt(d_k),以及如果不除,在 fp16 训练时会具体出现什么现象。另外,如果你把 padding 位置的 score 设成 -1e9 而不是 -inf,可能踩什么坑?
- 场景:单卡 A100 80GB,bf16,batch=1,8 个注意力头,head_dim=64(d_model=512),每层都算 full attention。现在要把长文档分类的序列长度从 4096 提到 32768。请算:attention score 矩阵 S=QK^T 的显存从多少变成多少?只换 FlashAttention 能解决到哪一步?要真正跑得动,你还会改什么?