阿里云推荐算法
一、多头注意力有什么好处?为什么要多头
多头注意力是 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)=−x∑P(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(P∥Q)=x∑P(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(P∥Q)=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(P∥Q)=−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/卡方 优化 |
对线上性能要求高 | 等距或量化后查表 ✅ |
实时部署 / 模型压缩 | 建议简化为固定分桶(量化) ✅ |