场景 A:用户最近 50 条行为 embedding(无序集合,去重后数量不定),要输出一个用户向量。场景 B:同一批行为按时间排序,要预测下一次点击。你手上只有一套标准 self-attention 层。请回答:两个场景分别要不要加位置编码?场景 A 加了位置编码会引入什么问题?输出那里你会取什么——对 50 个位置做 mean-pool,还是接一个可学习 query 做 cross-attention(PMA)?为什么?
面试官在考什么
判断候选人是否理解 self-attention 的置换等变性、位置编码如何破坏或利用这一性质,以及读出方式(mean-pool vs PMA)对集合任务表达能力的实际影响。
回答框架 · 前两步
- 标准 self-attention 对输入排列是等变的(permutation equivariant),不加位置编码天然适合无序集合;再经过 mean-pool 或 [CLS] 读出后变成置换不变。
- 场景 A 加位置编码等于把「第 i 条」当成真实信号,让模型对输入顺序敏感,而集合本身无序——这是注入错误先验(除非位置是稳定、有语义的 ID)。
还有 3 条答案要点、 3 层追问、 6 个常见坑, 以及针对你简历的追问路径,在定制报告里。
延伸阅读
想看这个方向的整体准备路线? 进入「深度学习基础」方向页
同一能力域的其他题
- 手写版:请推导一下自注意力的计算过程,并说明为什么要除以 sqrt(d_k)?如果不除会出什么问题?
- 你用单层 LSTM(hidden=128)做一个长度 512 的序列分类任务,只取最后一个时间步的 h 接一层线性分类头。训练集 loss 能降到 0.05,验证集 loss 停在 0.6 左右;更奇怪的是,你把验证集里每条样本的时间步随机打乱后再测,指标几乎不变。请给出你的根因判断、一个能证伪它的实验,以及你接下来会怎么改。
- 场景:线上实时风控,每条请求是一条长度 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,可能踩什么坑?