← 论文沉淀 / 🎯 生成式推荐 · ·RecSys 2026

A Unified Generative Re-ranking Framework with Adaptive Multi-objective Fusion

Heng Zhang, Yifan Gu, Wei Xu, Lei Cheng, Chuan Yuan et al. (6 人)

Ant Group

把重排里的多目标融合权重从生成器-评估器之外的静态手调规则,变成由用户实时多行为历史生成的个性化权重,并在生成器与评估器之间共享,让生成器在训练时就知道最终按什么权重打分,消除两阶段目标错位。机制上用 MoE+任务门控的 MAM 产出 w_k,用 CNN(核 1/2/4)+Transformer 的局部支路与空洞 TCN 全局支路组成的 DCM 做线性复杂度的序列上下文建模,在支付宝双列广告流全量上线。

Generator-Evaluator Re-rankingAdaptive Multi-objective FusionShared MoE WeightingPermutation-level Contrastive LossAlipay Dual-column Feed
📝 我的备注
加载中…

核心思路

在生成器-评估器(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 做排列上下文建模,保持线性复杂度。

整体实现思路

  1. 问题形式化:候选集 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,π)。
  2. 生成器:利用 DCM 特征和 MAM 权重,从大小为 K_g 的候选排列池中挑出有潜力的排列(论文图中生成侧标注 SimHash,具体候选构造方式未给出)。
  3. 评估器:对每个排列用 DCM + Target Attention + 多任务网络输出 q_k(π),再用 MAM 的 w_k 融合,选 top-1 排列下发。
  4. 共享:DCM 与 MAM 在两阶段只计算一次并复用,这也是线上 CPU 下降的来源。
  5. 训练:先预训多任务评估器,再加权 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 或做归一化),复现时需要自行处理。

实验设置与结果

数据集

数据集请求数用户数广告数
Avito53,562,2691,324,10323,562,269
Industrial(支付宝双列广告)375,752,62810,984,728221,012,022

指标:评估器用 CTR AUC / LogLoss;端到端用 HR@1(评估器在 K_g 个候选排列中是否把真实曝光列表排第一);线上看 CTR、GMV、延迟、CPU 核数。

评估器对比(CTR)

方法Avito AUCAvito LogLossIndustrial AUCIndustrial LogLoss
PRM0.71460.05270.91360.0824
EXTR0.70030.05440.91530.0823
Edge-Rerank0.71130.05180.90190.0827
PIER0.71960.05240.91090.0827
Ours0.72620.05210.91830.0821

DCM 消融:去 TCN 后 AUC 为 0.7247 / 0.9154,去 CNN 后为 0.7238 / 0.9161,两支路都有贡献。

多任务结构对比(Industrial AUC)

方法ClickFavoriteAdd-to-CartPurchase
MLP0.91860.86040.83400.7215
MMoE0.91850.87580.84090.7184
PLE0.91890.84950.83870.7364
w/o MAM0.91180.85370.83340.7465
Ours0.91850.87370.84400.7523

注意 Click 上并没有超过 MLP/PLE,收益集中在稀疏目标。

端到端对比

方法Avito HR@1Avito AUCIndustrial HR@1Industrial AUC
PRS0.27310.73280.08180.9207
NAR4Rec0.47120.72450.48210.9201
PIER0.50920.72750.49230.9099
MultiG+E0.48140.72590.49110.9183
MAMGR0.53780.73280.50220.9207

组件消融(Industrial)

方法HR@1ClickFav.CartPur.
Evaluator–0.91850.87370.84400.7523
MAMGR w/o MAM(w_k=1/K)0.45170.92170.88540.85140.7292
MAMGR0.48240.92070.88860.84670.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)

方法CTRGMV延迟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 场景)

  1. 现有链路是否真的存在”多候选序列 + 多目标融合”的结构,融合权重是否为手调常数;
  2. 权重学习的监督信号(BCE 加权)与业务口径(GMV/订单)是否一致,必要时用 reward 直接监督;
  3. HR@1 类离线指标与线上收益的相关性需先校准,避免曝光偏差;
  4. K_g 增大会伤 AUC,候选池规模要与打分器鲁棒性一起调。