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

SAGE: Sequence-level Adaptive Gradient Evolution for Generative Recommendation

Yu Xie, Xingkai Ren, Ying Qi, Yao Hu (4 人)

小红书 (Xiaohongshu)

把 OneRec-V2 的 GBPO 在推荐里的毛病归结为「对称保守」(Symmetric Conservatism):正负样本共用一个保守上界,冷启动正反馈被压住、被拒绝主导的负反馈又挡不住多样性塌缩。SAGE 用三件事改它:序列级几何平均重要性比(GSPO 式)、正样本放宽上界到 1+eps_boost(DAPO Clip-Higher 式)、负样本按 slate 类目熵低于滑动均值的程度加大惩罚(BAPO 式),再加 GDPO 式先分目标组内归一化再加权聚合的 advantage。实验在 Qwen3-8B 上同时跑 Semantic-ID(OneRec-SAGE)和原生文本(TextRec)两种动作空间。

Asymmetric ClippingSequence-Level Importance RatioEntropy-Aware PenaltyMulti-Objective Advantage DecouplingNative-Text Item Generation
📝 我的备注
加载中…

核心思路

小红书团队把 OneRec-V2 中 GBPO(Gradient-Bounded Policy Optimization)在推荐场景的问题概括为 Symmetric Conservatism(对称保守):

  • GBPO 对正负样本使用对称、保守的边界(有效 ratio r ≤ 1),罕见正信号(冷启动 item 在旧策略下概率极低)拿不到足够的更新;
  • 对负样本的静态约束在「被拒绝主导」的推荐反馈下挡不住多样性塌缩;
  • GRPO 式把多目标 reward 加权求和后再组内归一化,会出现 Reward Collapse,不同表现的样本得到相同 advantage。

文中引用的现象:冷启动视频播放下降 44.7%,cluster density 上升 11.7%(论文没有给出这两个数的实验设置)。

SAGE(Sequence-level Adaptive Gradient Evolution)把 LLM-RL 里已有的几个改进拼到推荐上:GSPO 的序列级重要性比、DAPO 的 Clip-Higher、BAPO 的 Entropy-Clip(改成负样本动态惩罚)、GDPO 的多 reward 解耦归一化。为说明问题出在优化器而不在 tokenization,作者在 Semantic-ID(OneRec-SAGE) 和 原生文本(TextRec) 两种动作空间上都做了评估。

整体实现思路

  1. 数据文本化:用户画像与近期行为按主题聚合成按时间排序的自然语言描述;item 用标题、描述、内容理解标签和统计特征渲染成文本;label 是由后续行为(浏览时长、收藏、分享、评论、关注、点赞)构造出的 item 序列。
  2. SFT 预热:Qwen3-8B,小规模高质量数据训 1 epoch(并回灌 RLHF 阶段的高质量样本),只求学会格式和粗粒度偏好。
  3. RLHF(SAGE):每个用户用旧策略采样 K 个长度 L=10 的 slate → 计算多目标 reward 与 slate 类目熵 → 解耦归一化得到 advantage → 序列级 ratio + 非对称裁剪的 PPO 代理损失 → 更新参数并 EMA 更新历史熵均值。

问题形式化:给定上下文 c,策略 π_θ 自回归生成 S=(i_1,…,i_L),优化 max_θ E_{S~π_θ(·|c)}[Σ_m w_m R_m(S)]。

子模块实现(可复现细节)

1. 序列级重要性比

r_slate(θ) = exp( (1/L) · Σ_{t=1..L} log[ π_θ(i_t | u, S_<t) / π_old(i_t | u, S_<t) ] )

即逐 token 比值的几何平均,L=10。作者的解释是用户反馈作用在 item/列表层面,token 级 ratio 方差大;几何平均相当于「整个 slate 在新策略下的平均概率增益」。

梯度写成:

∇J = E[ r_slate/Φ(S,A) · A_SAGE · (1/L) Σ_t ∇log π_θ(i_t|u,S_<t) ]

其中 1/L 把序列级 log-prob 之和的尺度对齐到 r_slate(约等于 1),避免偏好长序列;Φ 是自适应分母。

2. 非对称自适应裁剪

Case A:正样本 Boost(A ≥ 0)

  • 论文式(4):r_slate > 1+ε_boost 时 Φ_pos = 1/(1+ε_boost),否则为 1;文字说明是「有效梯度系数维持在 1+ε_boost」,让成功的冷启动 item 以超线性方式涨概率。
  • ε_boost 建议区间 [0.2, 0.5],实验取 0.3。
  • 算法 1 的实现写法:下界 ε⁻ = ε_clip,上界 ε⁺ = ε_boost。

Case B:负样本熵感知惩罚(A < 0)

  • 论文式(5)(6):Φ_neg = max(1, (1 − r_slate)/λ(H(S))),λ(H(S)) = 1 + β · tanh(max(0, H̄ − H(S)))。
  • H(S) 为 slate 多样性分(如类目熵),H̄ 为历史多样性的滑动平均,β 为多样性温度,实验取 0.5。
  • H(S) < H̄ 时 λ > 1,惩罚加大;否则 λ ≈ 1,退回 GBPO 边界。
  • 算法 1 的实现写法:下界 ε⁻ = λ − 1,上界 ε⁺ = ε_clip。

PPO 代理损失:r_clip = clip(r, 1−ε⁻, 1+ε⁺),ℓ = min(r·A, r_clip·A),L_SAGE = −(1/(|B|·K)) Σ ℓ。

注意:式(4)/(5) 的分母形式和算法 1 的 clip 区间并不等价(例如按式(4) r/Φ = r·(1+ε),并不会「锁在 1+ε」),复现时建议以算法 1 的非对称 clip 为准(推断)。

3. 多目标信号解耦(Decouple-then-Aggregate)

A_SAGE(S) = Norm_batch( Σ_m w_m · (R_m(S) − μ_m^group)/(σ_m^group + ε) )

对每个目标先在同一用户的 K 个采样组内做 z-score,再按 w_m 加权求和,最后在整个 batch 上再做一次 z-score,使 advantage 近似标准正态。目标示例为点击、时长、评论。

4. TextRec 动作空间

  • 每个上下文提供候选池 I(c),item 用标题/标签/类目关键词渲染;
  • 模型输出长度 L 的 slate,只能从候选池里选,确定性解析与合法性检查,匹配不到的输出丢弃或映射为 null action;
  • 采样用 nucleus sampling,温度 0.9。

5. 训练配置

项取值
BackboneQwen3-8B
Slate 长度 L10
SFT1 epoch
RLHF 优化器 / lrAdamW / 5e-6
ε_boost0.3
β0.5
组大小 K、ε_clip、RL 步数、w_m未报告

实验设置与结果

数据:Amazon Product Reviews(Beauty / Sports / Toys,1996-05 至 2014-07);RecIF-Bench(约 1.2 亿交互、20 万用户,短视频/广告/商品三域,按用户留出 20% 测试)。

基线:SASRec;ReaRec、TIGER、LC-Rec-8B;OneRec-GRPO、OneRec-GBPO、OneRec-SAGE(基于 OpenOneRec 公开 checkpoint);Only SFT (TextRec);TextRec(SAGE)。

Amazon 准确率(Table 1,节选 R@10 / N@10)

方法Beauty R@10Beauty N@10Sports R@10Sports N@10Toys R@10Toys N@10
SASRec0.06390.02890.03890.01780.06580.0294
LC-Rec0.07640.04240.04180.02250.05490.0285
OneRec-GRPO0.09240.05450.05470.03100.09530.0579
OneRec-GBPO0.09280.05500.05510.03170.09580.0581
OneRec-SAGE0.09320.05570.05530.03200.09600.0585
Only SFT (TextRec)0.04950.02040.02630.01390.05710.0212
TextRec0.09730.05900.05750.03390.10180.0622
相对 GBPO+4.84%+7.27%+4.35%+6.94%+6.26%+7.05%

Amazon 多样性与冷启动(Table 2,Cold = 训练集交互频次最低 5%)

方法Beauty Ent@10Beauty Cold-R@10Sports Ent@10Sports Cold-R@10Toys Ent@10Toys Cold-R@10
OneRec-GBPO2.2850.3262.2740.2822.3150.365
OneRec-SAGE2.5510.6192.5280.5672.5740.705
TextRec2.4200.4872.5100.4602.4850.522
提升(SAGE vs GBPO)+11.64%+89.9%+11.17%+101%+11.19%+93.2%

RecIF-Bench(Table 3,节选)

方法短视频 Pass@32短视频 Recall@32广告 Recall@32商品 Recall@32Label Pred AUCInteractive Recall@32Label-Cond Recall@32
TIGER0.10610.01320.05810.02830.6675-0.0123
LC-Rec0.13060.01800.07230.04160.61390.23940.0170
OneRec-GRPO0.21220.03690.09640.05380.69120.34580.0235
OneRec-GBPO0.21340.03770.09790.05450.69180.34810.0248
OneRec-SAGE0.21420.03810.09830.05540.69190.34950.0254
Only SFT (TextRec)0.09200.01070.02350.01610.60280.16600.0128
TextRec0.21960.03920.10150.05680.70170.36480.0261

RecIF-Bench 短视频多样性与冷启动(Table 4)

方法Entropy@10Cold-Recall@10
OneRec-GBPO4.2840.521
OneRec-SAGE4.4550.637
TextRec4.3170.594

消融(Amazon-Beauty,Figure 5,仅归一化柱状图)

  • 去掉 Positive Boost(ε_boost=0):Cold-Start Recall 下降最多;
  • 去掉 Entropy Penalty:Entropy@10 明显下降;
  • 用加权 reward 求和替代信号解耦:NDCG@10 等指标下降。

论文没有给出消融的具体数值,也没有线上 A/B。

作者的观察:SAGE 增加探索、提升长尾覆盖;在 SID 动作空间上强探索换来多样性,但准确率增益很小;原生文本动作空间在同样探索下更能保持准确率。

思考与可参考价值

可以直接借鉴的

  • 正样本单独放宽上界:如果 RL 阶段新品/长尾曝光被压低,把正 advantage 样本的上界从 1+ε 放到 1+0.3 左右,几乎零成本;
  • 负样本按 slate 熵加权惩罚:熵低于 EMA 的被拒 slate 罚得更重,是在 RL 目标里直接对抗同质化的轻量办法,电商可以换成叶子类目熵或店铺熵;
  • 多目标先组内归一化再加权:点击/加购/成交量级和方差差异很大,GDPO 式解耦能避免高方差目标吞掉低频目标,建议默认采用;
  • 序列级几何平均 ratio:SID 多 token 场景下减少单 token 抖动带来的裁剪噪声。

需要警惕的

  • 公式前后不一致:式(4)/(5) 与算法 1 不等价,复现要自己定规则;
  • SID 空间上 SAGE 相对 GBPO 的准确率提升在小数点后第三、四位,没有方差和显著性;
  • TextRec 的优势混入了「从候选池选」与「全量 SID 生成」的任务难度差异,也没有 TextRec+GBPO 对照,主表准确率提升不能归因到 SAGE;
  • 冷启动指标翻倍、准确率几乎不变,是否是热门命中换冷门命中,论文没有分析;
  • K、ε_clip、reward 定义和权重都未公开,也没有代码。

落地前建议检查(推断):在自己的 SID 体系里做 GBPO vs SAGE 的同空间对照;监控 Boost 对热门品的放大效应;类目分布有季节性时确认熵 EMA 不会漂移;如果考虑原生文本 + 候选池方案,要把召回候选的成本和生成延迟一起算,不能直接和 SID beam search 比。

结论:这篇论文本质上是把 LLM-RL 里成熟的非对称裁剪和多 reward 解耦搬到 OneRec 式生成推荐上,对冷启动和多样性有明确帮助,对准确率帮助有限。适合作为改裁剪规则的参考,结论本身证据偏弱。