搜广推面经六十七

阿里云推荐算法

一、多头注意力有什么好处?为什么要多头

多头注意力是 Transformer 中的核心机制之一。它将查询(Q)、键(K)、值(V)分别进行多组线性变换,然后并行执行多次注意力计算(即多个“头”),最后将结果拼接并再做一次线性变换。

多头其实就是仿CNN的多视角局部特征提取。不同的注意力头捕捉不同输入之间的(不同子空间的相关性和结构),可训参数也变多了。

1.1. 捕捉不同子空间的特征

  • 每个注意力头都有独立的线性变换权重。
  • 每个头可以专注于不同的表示子空间或特征维度。
  • 比如一个头可能关注词之间的语法关系,另一个头关注语义相似性。

1.2. 增强模型的表达能力

  • 多个头的并行注意力机制比单一头具有更强的表示能力。
  • 可以从多个角度理解序列中各元素的关系。

1.3. 降低每个头的计算复杂度

  • 每个头处理的是降维后的表示(例如将 512 维拆成 8 个 64 维头)。
  • 减少了单次注意力的计算负担,同时总体表达不减。

1.4. 提高训练稳定性

  • 多头可以起到某种 ensemble 的效果,减少模型对单一注意力路径的依赖。
  • 帮助模型更好地泛化。

二、序列型特征怎么使用的?

实习中确实做过不少序列特征,都是定长阶段当成普通的sparse特征用,基本没有用序列建模。

三、介绍交叉熵和KL散度的区别(写出公式对着讲)

见【搜广推校招面经四十六

3.1. 公式定义

交叉熵(Cross-Entropy)

设真实分布为 P P P,预测分布为 Q Q Q,交叉熵定义为:
H ( P , Q ) = − ∑ x P ( x ) log ⁡ Q ( x ) H(P, Q) = - \sum_{x} P(x) \log Q(x) H(P,Q)=xP(x)logQ(x)

  • 是使用预测分布 Q Q Q 来编码真实分布 P P P 所需的平均 bit 数。
  • 在分类问题中, P P P 通常是 one-hot 向量(只有一个元素为1,其余为0)。

KL 散度(Kullback–Leibler Divergence)

D K L ( P ∥ Q ) = ∑ x P ( x ) log ⁡ P ( x ) Q ( x ) D_{\mathrm{KL}}(P \parallel Q) = \sum_{x} P(x) \log \frac{P(x)}{Q(x)} DKL(PQ)=xP(x)logQ(x)P(x)

  • 衡量预测分布 Q Q Q 与真实分布 P P P 之间的“距离”(非对称)。
  • KL 越小,说明 Q Q Q 越接近 P P P

3.2. 二者关系

D K L ( P ∥ Q ) = H ( P , Q ) − H ( P ) D_{\mathrm{KL}}(P \parallel Q) = H(P, Q) - H(P) DKL(PQ)=H(P,Q)H(P)

  • 即:KL 散度 = 交叉熵 - 熵(真实分布的不确定性)
  • 在分类中,真实标签是已知的, H ( P ) H(P) H(P) 是常数,所以最小化交叉熵等价于最小化 KL 散度

3.3. 举例理解

情况 1:真实标签是 one-hot

P = [ 0 , 0 , 1 , 0 ] , Q = [ 0.1 , 0.2 , 0.6 , 0.1 ] P = [0, 0, 1, 0], \quad Q = [0.1, 0.2, 0.6, 0.1] P=[0,0,1,0],Q=[0.1,0.2,0.6,0.1]

则:

  • 交叉熵:
    H ( P , Q ) = − log ⁡ Q ( 3 ) = − log ⁡ 0.6 H(P, Q) = - \log Q(3) = - \log 0.6 H(P,Q)=logQ(3)=log0.6

  • KL 散度:
    D K L ( P ∥ Q ) = − log ⁡ 0.6 − ( − log ⁡ 1 ) = H ( P , Q ) − 0 D_{KL}(P \| Q) = -\log 0.6 - (-\log 1) = H(P, Q) - 0 DKL(PQ)=log0.6(log1)=H(P,Q)0
    此时两者相等。

四、等距分桶 vs 等频分桶在线上有什么影响?

在特征工程中,分桶(Binning) 是常用的离散化手段,尤其在线上业务中对于稳定性、推理速度、效果等都有直接影响。

4.1. 等距分桶(Equal Width Binning)

  • 将数值范围划分为等宽的区间
  • 每个桶的区间大小相等

4.2. 等频分桶(Equal Frequency Binning)

  • 将数据样本按排序后每个桶含有相同数量的数据点
  • 各个桶的区间大小可能不同(受分布影响)

4.3. 线上影响对比分析

影响维度 等距分桶 等频分桶
分布稳定性 较差(易受偏态数据影响) 更稳定(分布均衡) ✅
区分能力(IV/信息增益) 对偏态分布能力差 对不同分布都能适应 ✅
实现成本 简单(不依赖样本分布) ✅ 需全量排序或分位点计算
推理速度(线上) 快,阈值固定,结构简单 ✅ 稍慢,阈值不均、查找复杂
部署稳定性 较稳定(不会因样本变化频繁变桶) ✅ 易因分位点波动导致桶变动
对模型影响 可能导致信息集中 易于捕捉细粒度变化 ✅

4.4. 实际部署中注意事项

  • 等频分桶更容易导致线上/线下不一致
    • 因为线下统计分位点可能随数据更新而变化
    • 通常要冻结分桶边界,每次重新统计都要人工验证是否上线
  • 等距分桶在业务数据偏态明显时,分布严重倾斜
    • 导致大多数样本集中在少数桶,信息损失严重

4.5. 使用建议

场景 建议分桶方式
数据分布接近均匀 等距分桶 ✅
数据强偏态 / 长尾 等频分桶 ✅
对模型效果要求高 等频 + IV/卡方 优化
对线上性能要求高 等距或量化后查表 ✅
实时部署 / 模型压缩 建议简化为固定分桶(量化) ✅