← Back to list
SAPO

SAPO: Step-Aligned Policy Optimization for Reasoning-Based Generative Recommendation

生成式推荐 Nokia
Abstract 8 Reading 8 Rating —
2026-05-17
Zaiyi Zheng, Guanghui Min, Yaochen Zhu, Liang Wu, Liangjie Hong, Chen Chen, Jundong Li
University of Virginia, Nokia
SAPO 把 reasoning-based 生成式推荐的 RL credit-assignment 单元从 rollout 下沉到「thinking block + 配对 SID token」这一 reasoning step,配套 per-step verifiable match reward、per-step group-relative advantage 与 step-normalized token aggregation,在三个 Amazon 类目上稳住稀疏 exact-match RL 训练并一致领先 NDCG。
评分原因
摘要评分:针对生成式推荐+reasoning的RL训练,提出按推理step做credit assignment的SAPO算法,直接对应semantic ID的coarse-to-fine结构,思路精确且与GR+RL前沿(TwiSTAR等)高度相关。
精读评分:诊断精准(action-granularity mismatch)、方法简洁、有 Proposition 1 objective-consistency 证明、消融充分;但只在 3 个 ≤4k items 的 Amazon 类目验证,无工业落地与 catalog 规模实验,故未到 9 分。
rl semantic-id process-supervision pretrained-lm academic

SAPO: Step-Aligned Policy Optimization for Reasoning-Based Generative Recommendation

作者:Zaiyi Zheng¹, Guanghui Min¹, Yaochen Zhu¹, Liang Wu², Liangjie Hong², Chen Chen¹, Jundong Li¹ 所属:¹University of Virginia · ²Nokia ArXiv:2605.17648 · 2026-05-17 · 代码:https://github.com/zhengzaiyi/SAPO

1. 研究动机与背景

生成式推荐(Generative Recommendation, GR)正在用「自回归生成 item 标识符」的范式取代传统打分式 + 排序的多阶段 cascading。为了避免给每个 item 单独分配一个 token(词表会爆炸),主流做法(TIGER、LCRec、LETTER 等)借鉴 RQ-VAE 思路把每个 item 编码成一个由 $K$ 个层次化 token 组成的 Semantic ID (SID) 元组 $\phi(v) = (s^{(1)}, s^{(2)}, \dots, s^{(K)})$:早期 token 表征粗粒度语义(如品类),后续 token 不断细化(品牌、型号)。模型只需在每个 codebook 上预测一个 token,再用 trie-based constrained decoding 把生成结果约束到合法 item 集合 $\Phi=\phi(\mathcal{C})$ 内。本文设 $K=3$,足以覆盖实验中的所有目录。

近期一条平行的研究路线(OneRec-Think、SIDReasoner、R²ec、ReaRec 等)为 GR 加入了 推理 trace:让模型在输出最终 SID 之前先生成一段 chain-of-thought,再把整个生成过程用 verifiable rewards (RLVR) 做后训练。典型 recipe 是「SFT 对齐 SID 词表 → SFT 激活推理 → GRPO-style outcome reward RL」,奖励信号就是「生成的 SID 元组是否与 ground-truth 完全相等」这个 exact-match 指示。

问题在于:outcome-reward GRPO 给整条 rollout 的所有 token(推理 token + 所有 $K$ 个 SID token)广播同一个标量优势,与 SID 解码的层次结构完全错位。考虑 $K=3$、ground-truth 为 $(s_\star^{(1)}, s_\star^{(2)}, s_\star^{(3)})$ 的情况:

  • near miss $(s_\star^{(1)}, s_\star^{(2)}, \tilde{s}^{(3)})$(最后一位错);
  • coarse error $(\tilde{s}^{(1)}, \tilde{s}^{(2)}, \tilde{s}^{(3)})$(全部错)。

两者拿到的 outcome reward 完全一样(都是 0),group-relative advantage 也一样,于是「near miss 的前两位预测对了」这一信息被完全抹掉、和「全错」的 rollout 一视同仁地受罚。作者把这条核心病灶命名为 action-granularity mismatch:rollout 太粗,单个 token 又太细,真正适配的 credit-assignment unit 是「一个 thinking block + 它配对的 SID token」这一对

Figure 1: Motivating failure mode of outcome-reward GRPO across three recommendation datasets.

图 1 在三个 Amazon 类目上同时展示了 outcome-reward GRPO 的三条特征性曲线:训练 reward 早期上升后塌陷或抖荡、response length 持续漂移、KL 相对参考模型快速增长。reward shaping 不能根治这件事:即使把 outcome reward 换成 $r_{\text{shape}}=\sum_k \mathbb{1}[s_i^{(k)}=s_\star^{(k)}]$ 这种 codebook-level 累计匹配(公式 3),只要 advantage 仍按 rollout 归一化、广播到全部 token,就还是不知道哪个 SID 位置错了。SAPO 的核心论断是:reward 放置、advantage 归一化、token 聚合必须同时下沉到 reasoning-step 这一层

主要贡献: 1. 把「outcome-reward RL 在 reasoning-based SID 解码下失效」诊断为 action-granularity mismatch——rollout 级 reward 不能定位是哪个 SID 位置出错,rollout 级 advantage 会把不相关的推理 token 和正确的 SID token 一并奖惩; 2. 提出 SAPO,把每个 reasoning step(一个 thinking block 配对一个 SID token)作为 RL 的 action unit,由此自然导出 per-step verifiable match reward、per-step group-relative advantage、step-normalized token 聚合三件套,全程不引入额外的 learned reward model; 3. 在三个真实推荐数据集上验证 SAPO 既能稳定 RL 训练动态,又能持续提升 Recall / NDCG,且 SID-token credit-assignment 越关键的设定下收益越大。

2. 预备知识与训练范式

2.1 Hierarchical Semantic ID 化的生成式推荐

设 $\mathcal{C}$ 为 item 目录,$K$ 个 codebook $\mathcal{V}^{(1)}, \dots, \mathcal{V}^{(K)}$。RQ-VAE 风格的量化器 $\phi: \mathcal{C}\to \mathcal{V}^{(1)}\times\dots\times \mathcal{V}^{(K)}$ 把每个 item $v$ 唯一映射成 $\phi(v)=(s^{(1)}, \dots, s^{(K)})$。$\Phi=\phi(\mathcal{C})$ 是合法 SID 元组集合。给定按时间排序的交互序列 $x=(v_1,\dots,v_{T_x})$,目标是预测下一个 item $v^\star=v_{T_x+1}$。在最简单的不带推理的设定下,策略 $\pi_\theta(y|x)$ 直接解码 $K$ 个 SID token,rollout $y$ 终止于一个合法的 SID 元组 $\phi(\hat v)\in \Phi$。

2.2 三阶段训练 setup

沿用 OneRec-Think、SIDReasoner 等已有工作的方案:

  • Stage 1(SFT 词表对齐):让 LM 学会输出合法的 SID token 序列;
  • Stage 2(推理激活):训练模型生成「$K$ 个 thinking block + $K$ 个 SID token」的结构化响应,每个 thinking block 对一个 SID 位置进行推理;
  • Stage 3(强化学习):在 verifiable exact-match 反馈下做 RL;本文聚焦此阶段。

Stage 3 的标准做法是 outcome-reward GRPO:对 prompt $x\in \mathcal{D}_{\text{RL}}$ 采样 $G$ 条 rollout $\{y_i\}_{i=1}^G$,每条赋一个标量 reward $r(x, y_i)$(典型即 exact-match 指示),group-relative 归一化:

$$\hat{A}_i = \frac{r(x, y_i) - \mathrm{mean}_{j\in[G]} r(x, y_j)}{\mathrm{std}_{j\in[G]} r(x, y_j)} \tag{1}$$

token-level clipped surrogate(KL 与 Stage 2 reference 的对齐项在所有变体里共享,记号略去):

$$\mathcal{J}_{\text{GRPO}}(\theta) = \mathbb{E}_{x, \{y_i\}}\left[\frac{1}{\sum_{\ell=1}^{G} |y_\ell|}\sum_{i=1}^{G}\sum_{t\in y_i} \min\bigl(w_{i,t}(\theta)\hat A_i,\ \mathrm{clip}(w_{i,t}(\theta), 1-\epsilon, 1+\epsilon)\hat A_i\bigr)\right] \tag{2}$$

其中 $w_{i,t}(\theta) = \pi_\theta(y_{i,t}|x, y_{i,\lt t})/\pi_{\theta_{\text{old}}}(y_{i,t}|x, y_{i,\lt t})$ 是 per-token importance ratio,$\epsilon$ 是 clipping 半径。

3. 诊断:Outcome-Reward GRPO 的 Action-Granularity Mismatch

公式 (2) 把同一个标量 $\hat A_i$ 广播给整个 response 的每一个 token。但 large-catalog SID 解码下 exact-match 只能告诉你「最终元组对不对」,不能告诉你具体哪一位 SID 错了。

两个具体失败模式: 1. Matched SID-token credit is discarded:near-miss rollout 里前 $K-1$ 个 SID token 都预测对了,但只要最后一位错,整条 rollout 就拿 0 reward;正确的 SID-token 预测因此被当作完全失败处理,无法积累正向信号; 2. Reasoning-step advantage localization is lost:错的 SID-token 位置上的一处错误,被同样广播到所有 thinking block 和所有 SID-token 位置;在长推理响应下,这种弥散式的广播会一起强化或惩罚许多与错误无关的推理 token,导致 length 漂移、format 退化、group-relative contrast 微弱。

reward shaping 无法消除这件事:哪怕用 $r_{\text{shape}}=\sum_{k=1}^{K} \mathbb{1}[s_i^{(k)}=s_\star^{(k)}]$ 这种 codebook-level dense reward(公式 3)替代二值 exact-match,

$$r_{\text{shape}}(x, y_i) = \sum_{k=1}^{K} \mathbb{1}\bigl[s_i^{(k)} = s_\star^{(k)}\bigr] \tag{3}$$

公式 (2) 仍然会把这个分数挤成一个 rollout-level 标量再广播到所有 token——告诉你「partial 对了」但仍然定位不到 哪个 SID-token 预测正确或错误。rollout 太粗,token 太细,自然的 credit-assignment 单元是介于两者之间的 reasoning step——一个 thinking block 配对其 SID token

4. SAPO 方法

4.1 总览与 reasoning step 拆分

Figure 2: Overview of SAPO. Stage 1 aligns the LM to the SID vocabulary, Stage 2 activates level-aware reasoning, and Stage 3 applies step-aligned RL.

为了能跨 SID 位置复用 trie + KV cache,SAPO 沿用「先生成 $K$ 个 thinking block,再生成 $K$ 个 SID token 的连续块」这种 blocked decoding layout:

$$y = \underbrace{\bigl[\langle\text{think}\rangle\tau^{(1)}\langle/\text{think}\rangle \oplus \cdots \oplus \langle\text{think}\rangle\tau^{(K)}\langle/\text{think}\rangle\bigr]}_{\text{reasoning trace with } K \text{ thinking blocks}} \oplus \underbrace{s^{(1)} s^{(2)} \cdots s^{(K)}}_{\text{all } K \text{ SID tokens}} \tag{4}$$

对 credit assignment 而言,SAPO 把第 $k$ 个 thinking block $\tau^{(k)}$ 与第 $k$ 个 SID token $s^{(k)}$ 配对作为 reasoning step $k$,定义 $y_i^{(k)} = (\tau_i^{(k)}, s_i^{(k)})$,对应 token 数 $|y_i^{(k)}| = |\tau_i^{(k)}| + 1$。这只用于 credit assignment,不改变自回归分解:原模型在生成 $s^{(k)}$ 时仍然 condition on 全部 $K$ 个 thinking block 与已生成的 SID token,blocked layout 让 trie-based constrained decoding 与 beam search 在 KV-cache 复用下高效推进,同时允许后面的 thinking block 反向 refine 前面的——这是单方向因果但前向信息流可以「迂回回看」的优势。

4.2 Reasoning-step match reward

reward 必须放到 SID-token 位置(而不是 rollout 末端)才能给出 per-step 监督。对每条 rollout $y_i$,记生成的 SID 序列 $(s_i^{(1)}, \dots, s_i^{(K)})$ 与 ground-truth $(s_i^{\mathrm{gt},(1)}, \dots, s_i^{\mathrm{gt},(K)})$:

$$r_{i,k} = \alpha\cdot\mathbb{1}\bigl[s_i^{(k)}=s_i^{\mathrm{gt},(k)}\bigr] + \beta\cdot\mathbb{1}[k=K]\cdot b_i \tag{5}$$

其中 $\mathbb{1}[\cdot]$ 是指示函数,$b_i=1$ 当且仅当 $y_i$ 含恰好 $K$ 个抽取得到的 thinking block 且以一个合法 SID 元组结尾,否则 $b_i=0$。第一项是 per-step match reward:哪怕其它 SID 位置错了,对的 SID token 仍然能拿到 $\alpha$ 的奖励;第二项是 final-step format bonus:仅在最后一个 SID token 位置加一个小的 format bonus,激励结构上良构的 rollout。

objective consistency:定义 match 分量 $m_{i,k}:=\alpha\mathbb{1}[s_i^{(k)}=s_i^{\mathrm{gt},(k)}]$。原 outcome reward 对应概率 $\mathcal{J}_{\text{out}}(\pi)=\Pr[\phi(\hat v)=\phi(v^\star)]$(联合命中所有 SID 位置),SAPO 的 match 期望累积量 $\mathcal{J}_{\text{match}}(\pi)=\mathbb{E}[\sum_k m_k]$。论文 Proposition 1 证明:

$$\sum_{k=1}^{K} m_{i,k} = \alpha\cdot\bigl|\{k\in[K]: s_i^{(k)}=s_i^{\mathrm{gt},(k)}\}\bigr| \tag{6}$$

Optimum preservation:若策略类 $\Pi$ 中存在 exact-match 最优策略 $\pi^\star$(realizability),则

$$\arg\max_{\pi\in\Pi}\mathcal{J}_{\text{out}}(\pi) = \arg\max_{\pi\in\Pi}\mathcal{J}_{\text{match}}(\pi) \tag{7}$$

也就是 SAPO 没有改变 exact-match 最优解——证明思路:$\mathcal J_{\text{out}}$ 的上界为 1 且在 realizability 下可达,对应 $K\alpha$ 的 $\mathcal J_{\text{match}}$ 上界也仅在 $\phi(\hat v)=\phi(v^\star)$ 时取到。Aligned refinement:若不存在 exact-match 策略,$\mathcal J_{\text{match}}(\pi)=\alpha\sum_k R_k(\pi)$($R_k$ 是 level-$k$ marginal match 概率),是 outcome 联合命中概率 $\mathcal J_{\text{out}}(\pi)=\Pr[\bigwedge_k s^{(k)}=s_\star^{(k)}]$ 的「marginal 求和精化」。两个策略可能联合命中率相同,但各级 marginal 不同,cumulative match reward 能区分它们。

Informative rollout groups(论文中的 Remark):outcome-reward GRPO 的 group-relative contrast 非零仅当组内 rollout 的 exact-match 指示不同。SAPO 的 step-level contrast 在「组内某些 rollout 的第一位匹配而另一些不匹配」时就可以非零——即使所有 rollout 都没拿 exact match。也就是说,SAPO 的 advantage 在一个 strictly larger 的 rollout group 集合上有信息。

4.3 Reasoning-step advantage 与 SAPO surrogate

reward 既在 SID-token 位置发放,advantage 与 surrogate loss 就要同 granularity 定义。对位置 $k$ 的回报 $r_{i,k}$,独立地在该 step 内做 group-relative 归一化:

$$\hat A_{i,k} = \frac{r_{i,k} - \mathrm{mean}_{i'\in[G]}(r_{i',k})}{\mathrm{std}_{i'\in[G]}(r_{i',k})},\quad \tilde A_{i,k} = \frac{\hat A_{i,k}}{|y_i^{(k)}|} \tag{8}$$

「step-normalized」指除以配对单元长度 $|y_i^{(k)}|=|\tau_i^{(k)}|+1$,使更新幅度只取决于推理 step 本身的「质量」,不被 thinking block 的 token 数量主导。沿用 per-token importance ratio $w_{i,t}(\theta)$(与公式 2 同),SAPO 的 surrogate 是:

$$\mathcal{J}_{\text{SAPO}}(\theta) = \mathbb{E}_{x,\{y_i\}}\left[\frac{1}{\sum_{\ell=1}^{G}|y_\ell|}\sum_{i=1}^{G}\sum_{k=1}^{K}\sum_{t\in y_i^{(k)}} \min\bigl(w_{i,t}(\theta)\tilde A_{i,k},\ \mathrm{clip}(w_{i,t}(\theta), 1-\epsilon, 1+\epsilon)\tilde A_{i,k}\bigr)\right] \tag{9}$$

外层归一化 $1/\sum_\ell|y_\ell|$ 与 GRPO 保持一致,只是 token 处的标量从「rollout 标量优势 $\hat A_i$」换成了「step-级优势除以 step 长度 $\tilde A_{i,k}$」

梯度视图(暂时忽略 clipping):

$$\nabla_\theta \mathcal{J}_{\text{SAPO}}(\theta) \propto \mathbb{E}\left[\frac{1}{\sum_\ell|y_\ell|}\sum_{i,k,t\in y_i^{(k)}} \underbrace{w_{i,t}(\theta)}_{\text{importance}}\cdot \underbrace{\hat A_{i,k}}_{\text{reasoning-step advantage}}\cdot \underbrace{\frac{1}{|y_i^{(k)}|}\nabla_\theta\log\pi_\theta(y_{i,t}|x, y_{i,\lt t})}_{\text{step-normalized token gradient}}\right] \tag{10}$$

两点与 rollout-level GRPO 不同:(a) rollout-wide 的标量优势被 step-level $\hat A_{i,k}$ 替换,因此组内只在 SID 位置 $k$ 上有差异的 rollout 才会在 step $k$ 上贡献对比更新,不影响无关 SID 位置;(b) $1/|y_i^{(k)}|$ 把同一 step 内的 token 梯度做了步内平均,使更新幅度依赖「该 reasoning step 的质量」而非该 step 的 token 数。这两点共同解释了为什么 SAPO 能压住 outcome-reward GRPO 下常见的 reasoning verbosity 和 length drift。

5. 实验

5.1 设置

数据集:Amazon Reviews 三个类目——Office-ProductsVideo-GamesIndustrial-and-Scientific。沿用 Kang & McAuley 的 5-core sequential recommendation 协议、leave-one-out split:最后一次交互留作 test,倒数第二次作 valid,其余作 train(含所有有效 (history, next-item) sliding-window 对)。

Category #Users #Items #Train #Valid #Test Avg. seq. len.
Office-Products 4,866 3,459 38,924 4,866 4,866 5.97
Video-Games 6,142 3,858 49,133 6,142 6,142 6.45
Industrial-and-Scientific 4,533 3,686 36,259 4,532 4,533 5.96

每个类目独立训练一个 $K=3$ RQ-VAE codebook(256 entries × 3 levels)。codebook 实际占用如下表:level 1 极稀疏(19–34%),level 2/3 完全占满。这条非对称恰好是 SAPO per-step credit assignment 的天然受益场景——level 1 决定大类,level 2/3 决定具体 item,预测难度差异巨大。

Category Level 1 ($a$) Level 2 ($b$) Level 3 ($c$)
Office-Products 88 256 256
Video-Games 60 256 256
Industrial-and-Scientific 48 256 256

Backbone & 训练:Qwen3-1.7B;4×NVIDIA H100 (80 GB)。Stage 1/2 用 HuggingFace Trainer + AdamW + cosine schedule + 5% warmup(Stage 1 学习率 $3\times 10^{-4}$、Stage 2 学习率 $1\times 10^{-5}$,BF16,max sequence length 1024,batch 1024 samples)。Stage 3 基于 VERL + vLLM rollouts:每个 prompt 采样 $G=16$ 条 rollout(temperature 1.0,top-$p$ 1.0,max response 1024 tokens),mini-batch 256 prompts/update,actor learning rate $1\times 10^{-6}$(2% warmup),KL 系数 $\lambda=10^{-3}$ 对 Stage 2 reference,entropy 0,clip $\epsilon=0.2$(SAPO 与 outcome-reward 都用),SAPO 系数 $\alpha=1.0$(match)、$\beta=0.2$(format),decoding 始终走 trie-based constrained decoding。compute:Stage 1 约 20h、Stage 2 约 1h、Stage 3 约 48h/类目(wall-clock)。

Baselines:三类 9 个——

  • 传统序列推荐:GRU4Rec、SASRec、Caser;
  • 不带推理的生成式推荐:TIGER、HSTU、LCRec、LETTER;
  • 带推理的生成式推荐:SIDReasoner(用官方 checkpoint)、OneRec-Think、R²ec、ReaRec。SAPO 与 outcome-reward 的对照实验共享 Stage 1/2 checkpoint,使差异只来自 Stage 3 算法。

5.2 主结果(RQ1)

Table 1. Main results on three Amazon-review datasets. The best result is bolded and the second best is underlined.

Method OP R@5 OP N@5 OP R@10 OP N@10 VG R@5 VG N@5 VG R@10 VG N@10 IS R@5 IS N@5 IS R@10 IS N@10
(i) Traditional sequential
GRU4Rec 0.0240 0.0135 0.0386 0.0181 0.0207 0.0139 0.0357 0.0187 0.0457 0.0408 0.0532 0.0432
SASRec 0.1019 0.0824 0.1167 0.0871 0.0501 0.0345 0.0723 0.0416 0.0807 0.0647 0.0964 0.0697
Caser 0.0232 0.0139 0.0347 0.0176 0.0247 0.0161 0.0417 0.0214 0.0459 0.0377 0.0578 0.0415
(ii) Generative w/o reasoning
TIGER 0.0569 0.0415 0.0729 0.0467 0.0475 0.0328 0.0692 0.0397 0.0979 0.0792 0.1291 0.0885
HSTU 0.1204 0.1069 0.1323 0.1107 0.0539 0.0396 0.0746 0.0462 0.1008 0.0898 0.1138 0.0940
LCRec 0.0193 0.0135 0.0370 0.0191 0.0158 0.0115 0.0177 0.0121 0.0552 0.0512 0.0600 0.0527
LETTER 0.1315 0.1074 0.1520 0.1139 0.0445 0.0294 0.0709 0.0378 0.1080 0.0850 0.1389 0.0950
(iii) Reasoning-based generative
R²ec 0.1147 0.0894 0.1486 0.1004 0.0655 0.0399 0.0931 0.0525 0.0880 0.0774 0.1253 0.0774
ReaRec 0.1173 0.0988 0.1385 0.1057 0.0568 0.0381 0.0746 0.0470 0.1196 0.1205 0.0870 0.0870
OneRec-Think 0.1353 0.1107 0.1506 0.1166 0.0413 0.0296 0.0575 0.0349 0.0464 0.0398 0.0520 0.0416
SIDReasoner 0.1381 0.1116 0.1629 0.1197 0.0385 0.0277 0.0578 0.0345 0.1109 0.0905 0.1438 0.1010
SAPO 0.1362 0.1141 0.1643 0.1245 0.0620 0.0413 0.0986 0.0529 0.1176 0.0931 0.1416 0.1012

关键观察

  • SAPO 在三个类目的 NDCG@5 和 NDCG@10 全部第一——这是「ground-truth item 在 top-K 列表中的位置」级别的指标,对 SID 序的细粒度精炼最敏感;
  • 与最直接的可比工作 SIDReasoner(同样三阶段 + reasoning,Stage 3 用 rollout-level shaped reward)相比,SAPO 在 6 个 NDCG 列里有 6 个胜出,3 个 R@10 列里有 2 个胜出,仅在 OP R@5 与 IS R@10 上稍逊;说明「reasoning activation 本身不够,credit signal 还要尊重 SID 层次结构」;
  • R@5/R@10 不一定每个 setting 都领先(VG R@5 上 R²ec 0.0655 略优 SAPO 0.0620),但 SAPO 在所有 Recall 列里都是第一或第二,并未出现单点崩盘;
  • 不带推理的生成式 baseline(HSTU、LETTER)在 Office-Products 这种 catalog 较紧凑的类目上反而强于多数 reasoning-based baseline——这从侧面证明「光加推理并不够,关键在于 RL 信号怎么和 SID 结构对齐」。

5.3 训练动态(RQ2)

Figure 3 / Figure 4-equivalent: RL training dynamics on Industrial-and-Scientific. Blue = SAPO, orange = GRPO.

注:图 3(main text,Industrial-and-Scientific)与 Appendix M 中的 Figure 8 (Video-Games)、Figure 9 (Office-Products) 一致——本节描述以 Industrial-and-Scientific 为代表数据集。

五张诊断图(training reward / response length / stepwise response length / KL to reference / SID match rate)从同一 Stage 2 checkpoint 出发,比较 SAPO 和 outcome-reward GRPO:

  • reward:GRPO reward 上升后塌陷或抖荡;SAPO reward 稳定爬升;
  • response length & stepwise response length:GRPO 响应长度持续漂移(length drift)、单 thinking block 长度也分化;SAPO 把整体推理长度和单 thinking block 长度都控制在更窄的范围内——而且不是靠把单个 thinking block 砍短,而是靠在 SID 位置间稳定 reasoning budget
  • KL to reference:GRPO 对 Stage 2 reference 的 KL 快速攀升(format degradation 的伴随现象);SAPO 显著平稳;
  • SID match rate:SAPO 的 SID-token-level 匹配率持续上升,而 GRPO 在抬高 reward 时未必抬高 SID-token-level 匹配——再次印证 outcome-level reward 提升不等价于 SID 结构上的提升。

Appendix M 的 Figure 8 / 9(Video-Games、Office-Products)扩展了同样的诊断到另两类目:VG 上 GRPO 不稳定模式更剧烈(reward collapse 与 length drift 同时发生),OP 上差异较温和但方向一致——三套数据集都支持「SAPO 通过 reasoning-step credit assignment 把 sparse exact-match RL 稳住」这一结论。

5.4 消融(RQ3)

Table 2. Component ablation of SAPO on three Amazon-review datasets.

Method OP R@5 OP N@5 OP R@10 OP N@10 VG R@5 VG N@5 VG R@10 VG N@10 IS R@5 IS N@5 IS R@10 IS N@10
Reasoning Activation (Stage 2 only) 0.1143 0.0933 0.1410 0.1020 0.0577 0.0375 0.0926 0.0466 0.1032 0.0812 0.1299 0.0899
Full SAPO 0.1362 0.1141 0.1643 0.1245 0.0620 0.0413 0.0986 0.0529 0.1176 0.0931 0.1416 0.1012
w/o per-step advantage 0.1229 0.1008 0.1494 0.1093 0.0625 0.0411 0.0979 0.0528 0.1171 0.0916 0.1401 0.0990
w/o per-step match reward 0.1268 0.1029 0.1535 0.1115 0.0591 0.0385 0.0941 0.0498 0.1149 0.0913 0.1389 0.0990
w/o both (pure GRPO) 0.1235 0.1001 0.1490 0.1083 0.0290 0.0209 0.0427 0.0256 0.1032 0.0846 0.1207 0.0903

三种消融变体:

  • w/o per-step group-relative advantage:把 $\hat A_{i,k}$ 换成 sequence-level scalar advantage,但保留 per-step match reward 与 step-normalized token aggregation;
  • w/o per-step match reward:把 per-step match 换成最末位置的整 SID 元组 exact-match reward(被所有 step 共享);
  • w/o both (pure GRPO):纯 rollout-level reward + rollout-level advantage 广播。

观察:

  • pure GRPO 在 Video-Games 上 NDCG@10 跌到 0.0256,相对 full SAPO 损失 ~52%,SAPO 的两个组件加在一起才能避免最糟的 rollout-level 信号塌陷
  • 单独去掉任一组件,性能下降是「moderate」(OP NDCG@10 从 0.1245 跌到 0.1093/0.1115),都仍优于 pure GRPO 与 Reasoning Activation only,说明两个组件互补而非冗余

Figure 4: Ablation diagnostics: reward and gradient norm (log₁₀ scale) on Industrial-and-Scientific.

图 4 与 Industrial-and-Scientific 的训练 reward 与梯度范数 log₁₀ 曲线。Full SAPO(蓝)与去掉任一组件的变体(粉/橙)相比,pure GRPO(黄)单独表现出 gradient-norm explosion

图 4 进一步说明组件互补:单组件消融变体并不会触发 pure GRPO 那样的 gradient-norm 爆炸——意味着「保留 per-step match reward」或「保留 step-aligned surrogate」任意一个都足以避免 rollout-level update 的最差放大。但两者都保留时 ranking 才达到最佳——stability alone is not sufficient,需要 denser SID-token feedback reasoning-step advantage assignment 才能拿到峰值,由此可见 SAPO 不是孤立的 stabilizer,而是「保留完整的 step-aligned credit structure」。

5.5 训练效率

Table 7. Training efficiency comparison on Office-Products (Qwen3-1.7B, 4× GPU).

Method Wall-clock / step (s) Peak GPU mem. (GB) Reward+adv. / step (s)
Outcome 85.15 74.83 0.59
SAPO 85.03 74.89 1.13

SAPO 与 outcome-reward 的 wall-clock per step 差距在 0.15% 以内(85.03 vs 85.15s),峰值显存几乎不变(74.89 vs 74.83 GB)。reward + advantage 计算耗时从 0.59s 升到 1.13s,但这只占整步的 0.63%——剩余开销由 rollout 生成与 actor update 主导。结论:SAPO 的额外开销不可测量,几乎是 free。

5.6 案例研究(Figure 5)

Figure 5: Case study on Industrial-and-Scientific. Both methods receive the same prompt, with SID tokens highlighted in red.

在 Industrial-and-Scientific 的一个测试 prompt 上,用户历史里既有 3D 打印机相关耗材(喷嘴、PLA filament、柔性联轴器)又有电子设备(pin-header + Dupont 连接器套件、NEMA17 步进电机),target 是 DRV8825 步进电机驱动器 <a_158><b_89><c_233>(3D 打印机电子 / CNC / 机器人电机驱动)。Outcome-reward GRPO 的三段 thinking block 都笼统说「3D 打印爱好者,未来会买兼容耗材」,最终预测 <a_91><b_105><c_93>(喷嘴 + 喷嘴维护套件),漏掉了「filament + extrusion → NEMA17 → motion control」这条真正的迁移信号。SAPO 的三段 thinking block 反而抓住了「电子组件 + 步进电机」这条线索,最终预测命中 ground-truth。

两个方法共享同一 prompt 与同一 Stage 2 reasoning-activation checkpoint,所以差异完全归因于 Stage 3 的 credit assignment 目标。Outcome reward 只区分「完整 SID 元组成功」与「失败」,所以一个接近正确(broadly relevant but wrong accessory)的预测与一个完全无关的预测受到同样的标量惩罚;SAPO 把 feedback 落到 reasoning step,使得 update 对「哪一位 SID 位置正确,哪一位 refinement 失败」敏感。Appendix N 提供了另外三个跨类目 case study:

  • Malformed Reasoning and Lost Series Signal (Video-Games):用户历史以 Nintendo 系列为主(Super Mario World、Donkey Kong 64、Cruis'n USA),target 是 Yoshi's Story(任天堂)。GRPO 产出两段重复的 PlayStation 2 段落(malformed:thinking blocks 1 和 2 完全雷同),第三段又跳到 Nintendo 3DS 配件,最终预测 <a_219><b_116><c_229>(28-in-1 3DS 卡盒);SAPO 三段递进地论证 platforming / Nintendo / 经典风格,正确预测 Yoshi's Story。结论:outcome reward 会导致重复/格式异常的 thinking block,SAPO 保持系列信号;
  • Final-SID Refinement (Industrial-and-Scientific):用户历史是 thermal paste、digital audio converter、1000mL filtering flask,target 是 Buchner-style filter funnel <a_94><b_93><c_57>。Outcome GRPO 前两位都对 (<a_94><b_93>),只在最后一位 c_57 上错成 c_171,最终预测 generic glass funnel;SAPO 在前两位与 GRPO 一致,但在最后一位精准选中 c_57。这正是 SAPO 论文中的核心论点:outcome reward 把这种「前 K-1 位对、最后一位错」的近 miss 和完全无关样本一视同仁地惩罚,SAPO 通过保留 matched-step credit 把这种 final-level refinement 学得更稳;
  • Recovery of a Recency-Sensitive Product-Family Cue (Office-Products):用户历史中包含 Brother ink、Canon toner、Avery foam stamp pad、3-ring binder、Staples invisible tape、LINKYO Canon toner、BIC black ballpoint pens、ACCO mini binder clips、BIC blue ballpoint pens,target 是 BIC Round Stic red ballpoint pens。Outcome GRPO 给出一段较 broad 的 office supplies 推断,最终预测 LINKYO HP toner cartridge(target not in top-10);SAPO 抓到了「最近购入两支 BIC ballpoint pens」这条 recency-sensitive cue,正确预测 BIC red ballpoints。Takeaway:SAPO 保留了 outcome GRPO 容易被 broad summary 冲掉的 recency-sensitive product-family cue。

不过 Appendix N 也诚实展示了一个 SAPO 失败 case(Over-Continuity under Sharp Product-Family Shift,Office-Products):用户历史只有两支 Sharpie highlighter,target 跳跃到 Pendaflex file folders。outcome GRPO 借助一种笼统「办公文具」的判断意外猜中,SAPO 因为过度复用 highlighter family 反而预测了 Sharpie pink highlighter。这条 takeaway 是「SAPO 并非消除所有错误:当 next item 与历史出现 sharp family shift 时,SAPO 反而会 over-use 局部连续性」——值得在后续工作里探讨 reasoning-step prior 与 list-level diversity 的折衷。

6. 与已归档相关工作的对比

ReRec ReRec: Reasoning-Augmented LLM-based Recommendation Assistant via Reinforcement Fine-tuning (HK PolyU, 2026-04-09)

关系:独立并发(SAPO 未引用 ReRec,两者殊途同归)· 已加载对方精读

  • 共同关注的问题:reasoning-augmented LLM-based 推荐里,outcome-level / rollout-level RL advantage 会把同条 rollout 的所有 token(包括对的推理段 / 推理 token、对的最终预测 token)一并奖惩,无法区分「中间推理段正确与否」。两篇论文的诊断高度同构:rollout 太粗、需要在 rollout 内部寻找更精确的 credit-assignment unit。
  • 相近的技术骨架:都让 group-relative advantage 下沉到 sub-rollout 单元,再把单元级 advantage 广播到该单元内的 token。
  • 本文 SAPO 的差异与推进
  • 拆分单元:SAPO 把推理 trace 拆成 $K$ 个「thinking block + 配对 SID token」step,是结构层面的 先验固定 拆分(来自 RQ-VAE 的层次 codebook);ReRec 用 \n\n 段落切分自然语言推理,是 文本启发式 拆分。SAPO 的拆分粒度恰好与 verifiable per-step reward 对齐——每个 step 都有 ground-truth SID 可比对——所以 reward placement 与拆分单元天然 1:1 匹配;ReRec 需要额外用 (prediction, object) 元组语义匹配来判定段落对错,缺少天然可验证 supervision;
  • reward design:SAPO 只用 per-SID-token 匹配指示 + 末位 format bonus,没有学习型 reward model,per-step reward 与 outcome 联合的 exact-match optimum 在 realizability 下严格一致(Proposition 1);ReRec 用 NDCG + dual-graph soft reward (QAS + PAS),需要 attribute graph 与预训练 LightGCN,引入额外信号源;
  • 目标场景:SAPO 在 SID-decoded sequential next-item 上(K=3 codebook),ReRec 在 query-driven 复杂查询推荐上(RecBench+),任务形态差异较大但 RL 改造模式高度一致;
  • 训练稳定性诊断:两篇都对比了 outcome-reward GRPO 与自家方法的 reward 与梯度动态(SAPO 强调 length drift / KL 漂移 / SID match rate 解耦;ReRec 强调段落级反馈带来的细粒度信号),结论一致——sub-rollout credit assignment 显著改善 sparse-reward RL 稳定性。

  • 可比的方法差异:SAPO 的拆分有「先 K 段 thinking、再 K 段 SID」的 blocked layout,并依赖 trie-based constrained decoding;ReRec 的段落拆分对解码格式更松;两者结合可能性:把 ReRec 的 dual-graph soft reward 当 SAPO per-step reward 的补充(attribute-level 软监督 + SID-level hard 监督),可能进一步降低稀疏命中下的 group degeneracy。

ReCast ReCast: Recasting Learning Signals for Reinforcement Learning in Generative Recommendation (Huawei, 2026-04-24)

关系:独立并发(SAPO 未引用 ReCast,两者直指同一痛点的不同维度)· 已加载对方精读

  • 共同关注的问题:稀疏 exact-match reward 让 GRPO 在生成式推荐 RL 阶段的优化信号塌陷——SAPO 形式化为「rollout 太粗、单 token 太细,需要 reasoning-step 这一中间单元」;ReCast 形式化为「sampled group 不再是 usable learning unit——85% 的 group 全零、13% single-hit、只有 2% multi-hit」。
  • 相近的技术骨架:两者都拒绝默认的 GRPO advantage 公式,但改造方向正交
  • SAPO 改 rollout 内部 的 advantage granularity:把 rollout 拆成 reasoning step,每个 step 单独做 group-relative 归一化,使「同位置的不同 rollout」直接对比;
  • ReCast 改 rollout 之间 的 advantage 构造:把 all-zero group 注入 ground-truth anchor 修复,再只挑「最强正例 + 结构最相似的 hardest near-miss」做对比更新,弃用整组 reward 归一化。

  • 本文 SAPO 的差异与推进

  • credit-assignment 单元:SAPO 是 step-level(一个 rollout 内拆 K 份);ReCast 是 sample-pair-level(一个 group 内挑一对正负);
  • 是否使用 ground-truth anchor:SAPO 不引入 anchor、只用 ground-truth SID 元组与生成 SID 比对得到 per-step match;ReCast 在全零 group 时把 ground-truth 注入 group 替换最差 sample,最大化保留 informative negative;
  • 理论 anchor:SAPO 给出 Proposition 1(per-step match 与 outcome optimum 在 realizability 下重合),ReCast 给出 group-degeneracy 经验统计(图 1);
  • 补足关系:两者互补而非替代——一篇是「group-level 学得动了之后怎么落到 step」,另一篇是「group 根本无信号时如何修复」。组合用法(先 ReCast 修复全零 group,再用 SAPO step-level advantage 替换全组归一化)值得后续探索;

  • 可比的方法 / 实验差异:ReCast 与 SAPO 都在 Amazon-review 三个类目(OP/IS + Toys,分别配置)上做实验,但 ReCast 用 OpenOneRec 系列设置(不带推理),SAPO 用 Qwen3-1.7B + 三阶段(带推理)。目前两篇没有在同一 setting 下交叉比较,是未来联合实验可补的空白。

7. 讨论与局限性

核心贡献:SAPO 把「outcome-reward GRPO 在 reasoning-based SID 解码下失效」这一长期被混入「reward sparsity」名下的现象,精确诊断为 action-granularity mismatch——rollout 太粗、token 太细,正确单元是「thinking block + 配对 SID token」这一 reasoning step。围绕这个单元,论文同时定义了:

  • per-step match reward(denser supervision,但与 outcome exact-match optimum 在 realizability 下一致);
  • per-step group-relative advantage(更宽的 informative rollout-group 集合);
  • step-normalized token aggregation(让 update 幅度依赖 step 质量而非 step 长度)。

三件套是「同一 granularity 上的三个一致 design choice」,缺一不可(Table 2 + Figure 4 验证)。论文的核心方法论 takeaway——「generation task 凡是天然带层次结构(codebook、tool-call schema、structured answer format)的,hierarchy 本身就可以作为 RL per-step supervision 的根本来源,无需学习型 reward model」——把 SAPO 提升到 PRM-style process supervision 的通用方法论高度,对 tool-use、structured output、多轮 agent 等场景都有迁移潜力。

值得借鉴的设计: 1. 结构先验作为 process supervision 来源:SID codebook hierarchy 本身决定了 RL 的天然 step 划分,不需要标注;这点和 RecCoT、Process-RM 等需要人工或学习型 PRM 的工作形成鲜明对比; 2. 「reward placement / advantage granularity / token aggregation」必须同 granularity:三者错配(如 only per-step reward + rollout advantage)会带来 Table 2 中观察到的 moderate 性能下降; 3. step-normalized aggregation 隐式控制 length drift:用 $1/|y_i^{(k)}|$ 而不是「平均到 rollout 总长」更稳,避免被某条 rollout 内最长的 thinking block 主导,对反向缓解 reasoning verbosity 有实证效果(Figure 3); 4. objective-consistency proof:把 dense per-step match reward 与 outcome optimum 严格相连,避免「reward shaping 改变了 optimum」的常见疑虑。

局限

  • Catalog 规模与 SID 深度:实验只在三个英语 Amazon Reviews 类目(≤4k items、$K=3$);catalog 更大、SID 层次更深或层级更不均衡时,per-step credit assignment 是否仍稳定,尚未验证。论文 Appendix C 也明确指出这是一个 evaluation scope 的限制;
  • Stage 2 reasoning activation 的依赖:SAPO 把 thinking block 作为 已经有结构化推理 的 starting checkpoint;如果 Stage 2 推理激活做得不到位(如某些 thinking block 完全无信息),per-step advantage 的信号质量可能下降。论文未给出对 Stage 2 弱 checkpoint 的鲁棒性分析;
  • Feedback signal 的依赖:当前实验全部是 ground-truth SID exact-match 的 clean per-level verifiable feedback,对噪声 implicit feedback(click、dwell、conversion)、production-oriented 多 ground-truth 场景下的拓展尚需验证;
  • Decoding layout 的局限:blocked layout 要求 K 个 thinking block 在前、K 个 SID token 连续在后,约束了 reasoning–SID 交错布局;如「写完一个 thinking block 立刻输出对应 SID token、再继续下一段 thinking」这种 interleaved 结构在 SAPO 当前框架下是否仍稳定,是一个开放方向;
  • 应用价值:当前仅在公开学术 dataset 上验证,未在工业平台上线,没有 A/B 数据;SAPO 的 free-of-overhead 特性(Table 7)意味着工业落地阻力低,但实际收益需要真实场景验证。

与已有工作的差异

  • 相比 SIDReasoner、OneRec-Think、R²ec、ReaRec 等 reasoning-based GR baseline,SAPO 不是引入新的推理结构或预训练数据,而是改造 Stage 3 RL 算法本身——共享同一 Stage 1/2 checkpoint,单点改造,性能在 NDCG 列上一致领先;
  • 相比 ReRec、ReCast 等独立并发的「sub-rollout credit assignment」工作,SAPO 选择了 hierarchical SID 这条 天然结构 的拆分维度,证明在结构化生成任务里 hierarchy 就是免费的 process supervision 信号。