A Unified Generative Re-ranking Framework with Adaptive Multi-objective Fusion
Ant Group
把重排里的多目标融合权重从生成器-评估器之外的静态手调规则,变成由用户实时多行为历史生成的个性化权重,并在生成器与评估器之间共享,让生成器在训练时就知道最终按什么权重打分,消除两阶段目标错位。机制上用 MoE+任务门控的 MAM 产出 w_k,用 CNN(核 1/2/4)+Transformer 的局部支路与空洞 TCN 全局支路组成的 DCM 做线性复杂度的序列上下文建模,在支付宝双列广告流全量上线。
核心思路
在生成器-评估器(G-E)重排范式里,生成器负责产出若干候选排列,评估器给每个排列打多目标分,再按固定的手工权重融合选出最终列表。作者指出这里存在目标错位:生成器训练时不知道下游会用什么权重融合,产出的排列可能对单目标最优,但在最终多目标标准下次优;而且不同用户的意图差异很大(论文 Fig.1:冷启用户点击占比 0.78,忠诚用户购买占比 0.30),单一权重难以兼顾。
MAMGR(Multi-objective Adaptive Module for Generative Re-ranking)的做法是:
- 用一个 MoE + 任务门控 的模块 MAM,按用户分目标的历史曝光-行为序列,实时产出每个目标的权重 w_k∈(0,1);
- 这组权重在生成器和评估器之间共享,并进入训练损失,实现端到端的序列级动态加权;
- 用 DCM(CNN 多核局部支路 + 空洞 TCN 全局支路) 替代重量级的 Transformer 做排列上下文建模,保持线性复杂度。
整体实现思路
- 问题形式化:候选集 C(N 个),K 个目标各有历史序列 H_k=(h_k,1,…,h_k,T),每个 h_k,t 是一个长度 L 的曝光列表。目标是找长度 L 的排列 π,最大化 R(π;u,H)=Σ_k w_k(u,H)·r_k(u,π)。
- 生成器:利用 DCM 特征和 MAM 权重,从大小为 K_g 的候选排列池中挑出有潜力的排列(论文图中生成侧标注 SimHash,具体候选构造方式未给出)。
- 评估器:对每个排列用 DCM + Target Attention + 多任务网络输出 q_k(π),再用 MAM 的 w_k 融合,选 top-1 排列下发。
- 共享:DCM 与 MAM 在两阶段只计算一次并复用,这也是线上 CPU 下降的来源。
- 训练:先预训多任务评估器,再加权 BCE + 权重正则 + 排列级对比损失联合训练。
子模块实现(可复现细节)
MAM:多目标自适应模块
- 对每个目标 k 的每个历史曝光列表 h_k,t,过 DCM 后做均值池化得到 z_k,t ∈ R^{d’}。
- 全局历史上下文:E_hist = Concat_{k=1..K}( (1/T) Σ_t z_k,t ) ∈ R^{K·d’}。
- E 个共享专家(多层 FFN):z_e = Expert_e(E_hist) ∈ R^{d_z}。
- 每个目标一个门控:g_k = softmax(W_k E_hist + b_k),W_k ∈ R^{E×K·d’};c_k = Σ_e g_ke · z_e。门控输入是全部目标的历史,使每个目标的权重能感知跨目标动态。
- 稀疏兜底:拼接长期统计量 s_k(如该目标历史转化率的 log),c~_k = [c_k; s_k] ∈ R^{d_z+1}。
- 输出权重:w_k = sigmoid(w_k^T c~_k + b_k) ∈ (0,1)。
- 作者强调 w_k 解释为”当前意图下的目标重要性”而非 Kendall 式任务不确定性:漏斗中既未饱和也未完全缺失的目标与即时意图最相关,应获得更高权重。
DCM:双通道上下文模块
- 输入:排列嵌入 B = [e_b1, …, e_bL] ∈ R^{L×d}。
- 局部支路:E_k,local = TransformerBlock(Conv1D_k(B)),k ∈ {1, 2, 4}。
- k=1:用户-物品语义匹配;k=2:相邻交互(连续点击/跳过);k=4:屏幕级行为。
- 动机:自注意力的顺序感知完全依赖位置编码,细粒度局部模式不足;多核卷积补局部归纳偏置。
- 全局支路:E_global = TCN3(TCN2(TCN1(B))) ∈ R^{L×d’},堆叠空洞因果卷积,参数少、延迟低,感受野覆盖”跳过中间直接比较远处物品”的行为。
- 融合:E_seq = Linear(Concat(E_1,local, E_2,local, E_4,local, E_global)) ∈ R^{L×d’}。
训练机制
-
阶段一:用多任务标签(点击/收藏/加购/购买)预训评估器打分函数 q_k。
-
阶段二联合训练:
L_total = Σ_k w_k · L_k + λ Σ_k w_k² + α · L_contrast
其中 L_k 为第 k 个目标的 BCE。
-
对比损失:取生成器候选池(大小 K_g)中评估器打分 Q 最高的 M 个排列 P_top 与最低的 M 个 P_bottom,Q_top、Q_bottom 为平均分,L_contrast = −log σ(Q_top − Q_bottom)。
-
联合阶段对 MAM 的输入表征做 stop-gradient,避免权重学习干扰上游表征。
-
实现:TensorFlow,Adam,lr 0.001,batch 1024,embedding 64,α=0.1,K_g=20,三个随机种子平均;Avito 行为序列截断到 5。专家数 E、λ、M、T 未给出。
-
推断:Σw_k·L_k 与 λΣw_k² 都在把 w_k 往 0 推,若 w_k 直接受该损失梯度,存在平凡解;论文没说明如何避免(例如对 w_k 在该项 stop-grad 或做归一化),复现时需要自行处理。
实验设置与结果
数据集
| 数据集 | 请求数 | 用户数 | 广告数 |
|---|---|---|---|
| Avito | 53,562,269 | 1,324,103 | 23,562,269 |
| Industrial(支付宝双列广告) | 375,752,628 | 10,984,728 | 221,012,022 |
指标:评估器用 CTR AUC / LogLoss;端到端用 HR@1(评估器在 K_g 个候选排列中是否把真实曝光列表排第一);线上看 CTR、GMV、延迟、CPU 核数。
评估器对比(CTR)
| 方法 | Avito AUC | Avito LogLoss | Industrial AUC | Industrial LogLoss |
|---|---|---|---|---|
| PRM | 0.7146 | 0.0527 | 0.9136 | 0.0824 |
| EXTR | 0.7003 | 0.0544 | 0.9153 | 0.0823 |
| Edge-Rerank | 0.7113 | 0.0518 | 0.9019 | 0.0827 |
| PIER | 0.7196 | 0.0524 | 0.9109 | 0.0827 |
| Ours | 0.7262 | 0.0521 | 0.9183 | 0.0821 |
DCM 消融:去 TCN 后 AUC 为 0.7247 / 0.9154,去 CNN 后为 0.7238 / 0.9161,两支路都有贡献。
多任务结构对比(Industrial AUC)
| 方法 | Click | Favorite | Add-to-Cart | Purchase |
|---|---|---|---|---|
| MLP | 0.9186 | 0.8604 | 0.8340 | 0.7215 |
| MMoE | 0.9185 | 0.8758 | 0.8409 | 0.7184 |
| PLE | 0.9189 | 0.8495 | 0.8387 | 0.7364 |
| w/o MAM | 0.9118 | 0.8537 | 0.8334 | 0.7465 |
| Ours | 0.9185 | 0.8737 | 0.8440 | 0.7523 |
注意 Click 上并没有超过 MLP/PLE,收益集中在稀疏目标。
端到端对比
| 方法 | Avito HR@1 | Avito AUC | Industrial HR@1 | Industrial AUC |
|---|---|---|---|---|
| PRS | 0.2731 | 0.7328 | 0.0818 | 0.9207 |
| NAR4Rec | 0.4712 | 0.7245 | 0.4821 | 0.9201 |
| PIER | 0.5092 | 0.7275 | 0.4923 | 0.9099 |
| MultiG+E | 0.4814 | 0.7259 | 0.4911 | 0.9183 |
| MAMGR | 0.5378 | 0.7328 | 0.5022 | 0.9207 |
组件消融(Industrial)
| 方法 | HR@1 | Click | Fav. | Cart | Pur. |
|---|---|---|---|---|---|
| Evaluator | – | 0.9185 | 0.8737 | 0.8440 | 0.7523 |
| MAMGR w/o MAM(w_k=1/K) | 0.4517 | 0.9217 | 0.8854 | 0.8514 | 0.7292 |
| MAMGR | 0.4824 | 0.9207 | 0.8886 | 0.8467 | 0.7539 |
论文称去掉 MAM 后 HR@1 降 6.8%、购买 AUC 降 3.4%。注意本表 MAMGR 的 HR@1(0.4824)与上一张表(0.5022)不一致,原文未解释。
MAM 行为分析:静态融合在四类用户(按主导行为分组)上权重近似均匀;MAM 对购买主导用户给出更高购买权重,点击在各组都保有较大权重。时序案例中,连续两次购买(t=6,7)后购买权重从 0.11 升到 0.43。
超参:α 越大 HR@1 越高但 AUC 下降;K_g 越大 HR@1 单调上升但 AUC 下降。最终取 α=0.1、K_g=20。
线上 A/B(14 天,相对 MultiG+E)
| 方法 | CTR | GMV | 延迟 | CPU 核数 |
|---|---|---|---|---|
| PRS | −8.23% | −11.02% | −8.93% | −7.24% |
| PRM | −4.02% | −3.98% | −9.89% | −28.92% |
| OneG+E | −1.89% | −2.26% | −2.68% | −21.87% |
| MultiG+E(base) | 0% | 0% | 0% | 0% |
| SORT-Gen | – | – | +25.14% | −20.38% |
| MAMGR | +0.78% | +1.43% | +1.12% | −23.53% |
所有提升 p<0.05;GMV 涨幅大于 CTR,作者解读为与高意图转化更对齐。
思考与可参考价值
值得借鉴的点
- “生成器不知道融合权重”在任何 G-E 结构里都存在,包括 SID 生成式推荐的”beam 出多条 + 打分器选优”。把融合权重做成用户条件化的小模块,并在生成侧和打分侧共享,是低成本、易落地的改法。
- 权重模块的输入设计比较实用:分目标的历史曝光-行为序列做时间平均,再拼上长期转化率的 log 作为冷启兜底。
- top-M vs bottom-M 的排列级对比损失,可以当作生成模型与打分器之间的序列级对齐信号。
- 用 CNN(1/2/4)+TCN 替代全注意力,在延迟敏感的双列场景中拿到了 CPU −23.53%,说明模块共享和轻量编码的工程收益可以与效果收益同时拿到。
需要警惕的点
- 生成器几乎是黑盒,“generative”具体指什么不清楚,复现门槛高;无代码。
- 加权 BCE + w² 正则的形式在理论上会把权重推向 0(推断),论文未说明防塌缩手段,实际复现要监控 w_k 分布。
- 多处数字不一致(HR@1 0.5022 vs 0.4824、Avito 上 PRS 与 MAMGR 的 AUC 相同、Avito 广告数疑似笔误),离线结论的置信度打折。
- 消融只对比均匀权重,没有对比调过的静态权重或不确定性加权,MAM 的真实增益可能被高估。
- Avito 本质是单目标点击数据,多目标自适应的结论主要靠工业数据集支撑。
落地前检查清单(电商 GR/SID 场景)
- 现有链路是否真的存在”多候选序列 + 多目标融合”的结构,融合权重是否为手调常数;
- 权重学习的监督信号(BCE 加权)与业务口径(GMV/订单)是否一致,必要时用 reward 直接监督;
- HR@1 类离线指标与线上收益的相关性需先校准,避免曝光偏差;
- K_g 增大会伤 AUC,候选池规模要与打分器鲁棒性一起调。