Not All Candidates are Created Equal: A Heterogeneity-Aware Approach to Pre-ranking in Recommender Systems
HAP 提出异构感知自适应预排序方法,发现预排序阶段训练数据中存在梯度冲突问题——困难样本主导训练而简单样本未被充分利用。通过将候选分为不同优化路径,对简单候选使用轻量级模型、对困难候选部署更强模型,在不增加计算开销的情况下提升预排序效果。已在今日头条生产系统部署 9 个月,并发布了工业数据集。论文被 WWW'26 接收。
INSIGHTHAP 揭示了预排序阶段一个被忽视的核心问题:候选的异构性导致统一模型存在梯度冲突。其解决方案的巧妙之处在于对候选进行难易分流,用不同复杂度的模型分别处理,在保持整体延迟不变的同时提升效果。这对搜索系统中粗排/预排序阶段的优化有直接启示:并非所有候选都需要同等复杂度的打分,分层处理可以在效率约束下获得更好的排序质量。
深度解读:Not All Candidates are Created Equal (HAP)
会议: WWW'26 | 团队: 字节跳动(今日头条)| 关键词: 预排序、样本异质性、梯度冲突、自适应路由
1. 问题与动机
在多阶段推荐系统(召回→粗排→精排→重排)中,粗排(Pre-ranking) 承担着从数千候选中筛选出数百个送入精排的关键角色。粗排的训练样本来源天然具有异质性:
- 简单样本:全局随机负样本(GN)、粗排低分负样本(PRN)——与正样本差距大,容易区分
- 困难样本:曝光未点击负样本(EN)、精排截断负样本(RN)——与正样本高度相似,难以区分
现有方法(如 DSSM、COLD、COPR)将所有候选一视同仁地训练和推理,导致两个核心问题:
- 梯度冲突(Gradient Dominance):困难样本产生的梯度远大于简单样本(论文证明在 InfoNCE 下,困难/简单梯度比为 ,呈指数级差异),导致简单样本的学习信号被淹没,出现"跷跷板效应"——优化一类样本的同时恶化另一类。
- 计算浪费:对简单样本和困难样本使用同等复杂度的模型,但实验发现轻量模型在简单样本上与复杂模型表现相当,仅在困难样本上有明显差距。
这个问题在工业界非常普遍且重要——粗排的质量直接决定了精排的候选质量上界,而粗排又面临严格的延迟约束,必须在效果和效率之间精细权衡。
2. 方法概述
论文提出 HAP(Heterogeneity-Aware Adaptive Pre-ranking) 框架,核心思路是"按难度区别对待":
- 训练侧:通过 梯度调和对比学习(GHCL) 缓解不同难度样本间的梯度冲突
- 推理侧:通过 难度感知模型路由(DAMR) 对简单候选用轻量模型、困难候选用复杂模型,实现计算预算的自适应分配
整体 pipeline:
全部候选 → 轻量模型(过滤简单样本)→ 困难候选 → 复杂模型(精细打分)→ 输出 Top-K
3. 核心技术贡献
3.1 样本异质性的形式化分析
论文首先定义了五类训练样本,并从梯度角度严格证明了异质性问题:
| 样本类型 | 来源 | 难度 |
|---|---|---|
| EP(曝光正样本) | 曝光且点击 | 正样本 |
| EN(曝光负样本) | 曝光未点击 | 困难 |
| RN(精排截断负样本) | 精排阶段被淘汰 | 困难 |
| PRN(粗排负样本) | 粗排低分候选 | 简单 |
| GN(全局随机负样本) | 随机采样 | 简单 |
在 BCE loss 下,梯度简化为 ,困难样本天然获得更大梯度信号;在 InfoNCE loss 下,困难/简单梯度比呈指数级放大。
3.2 梯度调和对比学习(GHCL)
核心创新:将负样本按难度分组,分别计算 InfoNCE loss,而非混合在同一个 softmax 中。
- 困难组 :EN + RN
- 简单组 :PRN + GN
分别计算对比损失后,梯度比被一个修正因子 压缩:
这保证了 ,有效缓解梯度主导问题,同时避免了完全分离训练导致的信息孤岛。
3.3 难度感知模型路由(DAMR)
两阶段推理架构:
- 轻量模型(3 层浅网络):处理所有候选,使用全类型负样本训练,过滤掉简单样本
- 复杂模型(深层 + Attention + 多塔):仅处理轻量模型留下的困难候选,仅用困难负样本(EN+RN)训练
总损失函数:
其中 是全局 BCE loss,处理无点击请求的情况。
关键洞察:这不是简单的级联过滤,而是让两个模型各自专精于不同难度的候选——轻量模型是"通才",复杂模型是"专家"。
4. 实验结果分析
离线实验
在自建的 ToutiaoRec 数据集(7000万请求、3.13亿样本)上与 DSSM、COLD、COPR、HCCP 对比:
| 测试集 | HCCP (AUC) | HAP (AUC) | 提升 |
|---|---|---|---|
| T_EN(曝光负样本) | 0.7244 | 0.7377 | +1.3pp |
| T_Hard(困难聚合) | 0.7917 | 0.8023 | +1.1pp |
| T_Easy(简单聚合) | 0.9441 | 0.9468 | +0.3pp |
核心发现:HAP 在困难样本上提升显著(这是粗排最需要提升的部分),同时在简单样本上不退化。
消融实验
- 去掉 GHCL:AUC 明显下降,梯度方向的 cosine similarity 降低,验证了梯度冲突的存在
- 去掉 DAMR:统一用大模型,效果不如两阶段路由,且计算开销增加 6%
- 跷跷板效应验证:单独用某一类负样本训练,某些测试集提升但其他测试集恶化
在线 A/B 实验(今日头条,部署 9 个月)
| 指标 | 提升 |
|---|---|
| 用户活跃天数 | +0.05% |
| App 使用时长 | +0.4% |
| CTR | +3.0% |
| CPU 消耗 | -6% |
| 延迟 | 持平 |
在头条这个量级(数亿用户)下,0.05% 活跃天数和 0.4% 时长是非常显著的业务收益,且没有增加额外计算成本,反而降低了 6% CPU。
5. 局限与未来方向
局限
- 数据集单一:离线实验仅在自建的 ToutiaoRec 上进行,缺乏公开数据集的可比性验证。虽然作者承诺开源数据集,但在论文发表时这仍是局限。
- 路由阈值的确定:轻量模型过滤多少、留多少给复杂模型,论文未详细讨论这个阈值的自动化调优方法,实际部署中可能需要大量实验调参。
- 样本类型的泛化性:五类样本的定义强依赖于多阶段推荐系统的架构。对于非标准 pipeline(如端到端系统),框架的适用性有待验证。
- GHCL 的分组策略:当前按来源硬编码为"困难/简单"两组。样本难度实际是连续谱,更细粒度的自适应分组可能进一步提升效果。
未来方向
- 动态路由:基于候选特征实时决定路由到哪个模型,而非简单的分数阈值截断
- 多级级联:扩展到 2 级以上的多级路由,匹配更细粒度的难度层次
- 跨阶段联合优化:将粗排的异质性感知思想扩展到召回-粗排-精排的全链路联合训练
- 自适应样本比例:动态调整各类负样本的采样比例,而非固定权重
6. 工业实践意义
直接可借鉴的设计
- 样本异质性是被忽视的系统性问题。工业推荐系统的粗排训练普遍混合多来源样本,HAP 给出了从理论到工程的完整解决路径。在搜索广告场景中同样存在类似问题(竞价胜出未点击 vs 未参与竞价的广告)。
- "难度路由"的性价比思路。不需要全部候选都用最强模型,用轻量模型处理简单候选、用重型模型处理困难候选,这个思路可以推广到:
- 搜索系统的粗排/L1 排序
- 广告系统的 eCPM 预估
- 任何有严格延迟约束但候选量大的场景
- 梯度冲突的诊断方法论。论文提供的梯度分析框架(inter-set cosine similarity、intra-set gradient norm)可以直接用于诊断现有系统是否存在类似问题。
- 工程细节值得关注:
- List-wise 样本存储:通过共享特征引用,单次请求存储减少 60%
- 40 分钟反馈窗口 + 异步延迟行为回填:平衡实时性与标签完整性
- 3000 CPU、12 小时、1000 万步的训练配置,给出了工业级规模参考
- 效果-效率帕累托改进。在头条 9 个月的线上验证表明,HAP 实现了罕见的"效果提升 + 成本降低"双赢,这在工业系统中极为珍贵。
适用场景判断
如果你的系统满足以下条件,HAP 的思路值得尝试:
- 多阶段漏斗架构(召回→粗排→精排)
- 粗排候选量在千级以上
- 训练样本来自多个阶段的混合反馈
- 粗排有严格的延迟/算力约束