OGR:把「先生成、再排序」压成「一次生成即有序」的端到端生成式 slate 推荐¶
Once Generated, Ranked: End-to-End Generative Slate Recommendation with Unified Semantic-Collaborative IDs 作者:Yang Hu*(北京大学 / 快手)、Jiayi Guo*(南京大学 / 快手)、Jingui Ma(北京大学)、Ning Li†(快手)、Jiangling Qin(快手)、Yanming Li(快手)、Yang Deng(北京大学)、Xiaoshuang Chen†(快手)、Kaiqiao Zhan(快手) * 共同一作(实习期间完成于快手)· † 通讯作者 arXiv:2608.17613v1(2026-08-18,cs.IR)· 投稿 AAAI-2027 部署:快手短视频主站,3% 生产流量,A/B 一周
一句话:OGR 把 slate 推荐的「候选生成 → 排序 → 重排」级联整条拆掉,改成一个直接吐出有序列表的生成式模型——先用 TUSID 造一套「推荐感知的语义 + 协同」统一 SID,再用 GL2P 的 list-wise 偏好规划器逐展位产出连续偏好向量、与位置级 SID 解码器流水线重叠(串行深度从 $O(KD)$ 降到 $O(K+D)$),最后用 SPA 的主/辅奖励一致性校准加保守策略优化(clip + KL + 监督回放)在 slate 粒度做偏好对齐。
一、研究动机与背景¶
1.1 Slate Recommendation 的两难¶
Slate Recommendation 把「一整屏列表」而不是「单个物品」当作推荐的基本单位,因此需要联合建模物品间的交互,并优化 list-wise 目标(整个 slate 的效用)。
现有做法基本走级联范式:candidate generation → ranking → reranking,候选池由多级召回和过滤构造出来。这套流水线对部署很友好,但论文指出两条结构性缺陷:
- 优化范围被候选空间锁死。没有被上游召回捞出来的物品,下游无论怎么排都不可能恢复——潜在相关但未被检索到的 item 永久丢失。
- 各阶段目标错配,无法端到端优化。候选生成与最终排序始终是两个被割裂的过程——论文称之为 "Generated, Then Ranked"。
1.2 生成式推荐给了出口,但自己也有两个坑¶
基于 SID 的 Generative Recommendation (GR)(TIGER、OneRec 谱系)把 item 映射到离散 SID 空间,直接从用户历史生成目标 item,天然摆脱候选集约束。但论文认为现有 GR 尚不足以承接 slate 推荐:
- SID 构造缺乏推荐感知语义,且协同信号注入方式不对。现有方法主要做语义离散化,通过表征对齐或对比正则注入协同信息(QARM、LETTER、QuaSID 等),但没有显式编码「按距离加权的局部共现分布」——而这恰恰是构造 slate 时最需要的局部结构。
- NTP 目标与 slate 级优化错配。现有 GR 用 Next Token Prediction 优化自回归 SID 生成,token 级的似然优化关注的是「预测单个 SID token」,而不是「捕捉用户对整个 slate 的偏好」,与「物品选择 + 排序 + 整体效用」的 list-wise 目标天然不一致。
论文在实验里把这个矛盾具象化成一个解码困境(decoding dilemma):自回归逐 item 生成 slate 能捕捉跨物品依赖,但串行延迟 + 误差累积;而基于概率的 Top-5 一次性取分数最高的 K 个 item 虽然高效,却在 NTP 损失下没有 list-wise 对齐(实测 OneRec 的 Hit Rate / Recall 很强,NDCG 却反而输给 PRM / Seq2Slate 这类 list-wise 重排器)。
1.3 OGR 的答案¶
论文提出 OGR("Once Generated, Ranked"),由三块组成:
- TUSID(Two-stage Unified SID Construction):多模态语义 + 高层属性的推荐感知自适应融合,加 CountSketch 局部共现协同注入与置信度加权融合,最后用 RQ-KMeans 量化成层次化 SID;
- GL2P(Global Listwise Preference Planning Architecture):list-wise 偏好规划器建模全局 slate 结构与跨展位依赖,位置级 SID 解码器与规划流水线并行;
- SPA(Slate-Level Preference Alignment):用用户反馈主奖励 + slate 级辅助奖励导出校准偏好信号,做保守策略优化。

二、问题形式化¶
对用户 $u$,令 $H_u = (i_1,\dots,i_T)$ 为按时间排序的交互历史,$i_t$ 是第 $t$ 次交互的物品。每个 item $i$ 用一条层次化的 $D$ 级 SID 表示:$s_i = (s_i^1,\dots,s_i^D)$。给定 $H_u$,参数为 $\theta$ 的 OGR 直接生成一个大小为 $K$ 的有序 SID slate,并映射回物品 slate:
$$\widehat{S}_u = F_\theta(H_u), \qquad \widehat{Y}_u = \mathrm{Map}(\widehat{S}_u) \tag{1}$$
其中 $\mathrm{Map}(\cdot)$ 是 SID → item 的查表。训练用观测到的曝光 slate $Y_u = (y_1,\dots,y_K)$ 及其反馈信号 $W_u = (w_1,\dots,w_K)$,$y_k$ 和 $w_k$ 分别是第 $k$ 个展位上的物品与其反馈。
三、TUSID:两阶段统一 SID 构造¶
3.1 Semantic Fusion:让语义表征「推荐感知」¶

现有 SID 方法主要依赖通用内容表征,容易低估结构化高层属性——而这些属性的相关性是因物品而异的:商品可能更依赖品牌类属性,讲解类视频可能更依赖风格 / 受众类属性。
OGR 从两个互补视角编码每个 item:
- 一个 MLLM 把 item $i$ 的图像、音频、文本编码成细粒度语义表征 $e_i^M$;
- 一个共享文本编码器产出四种高层属性表征 $e_i^a$,$a\in\{b, c, Bt, Ct\}$ 分别为 Brand(品牌)、Category(类目)、B-tags(供给侧内容特征)、C-tags(需求侧用户价值)。
由于不同 item 依赖不同属性,论文保留 MLLM 表征作为语义骨干,用它去自适应聚合属性信息:$e_i^M$ 作 query $Q_i$,$E_i^{\mathrm{attr}} = [e_i^b, e_i^c, e_i^{Bt}, e_i^{Ct}]^\top$ 作 key / value:
$$h_i^{\mathrm{attr}} = \mathrm{CrossAttention}\bigl(Q_i = e_i^M,\; K_i = V_i = E_i^{\mathrm{attr}}\bigr) \tag{2}$$
再由 $[e_i^M; h_i^{\mathrm{attr}}]$ 预测一个标量 sigmoid 门 $g_i$,做门控残差融合:
$$e_i^{\mathrm{sem}} = e_i^M + g_i h_i^{\mathrm{attr}} \tag{3}$$
这个非对称融合的设计动机很明确:MLLM 表征是骨干,属性只以「item 自适应的残差」形式进入,不喧宾夺主。
为了让融合后的表征推荐感知,论文把 $e_i^{\mathrm{sem}}$ 直接当作 SASRec 的 item embedding,用其 next-item 预测损失 $\mathcal{L}_{\mathrm{rec}}$ 训练融合参数,并对属性残差加正则防止属性分支盖过 MLLM 骨干:
$$\mathcal{L}_{\mathrm{fusion}} = \mathcal{L}_{\mathrm{rec}} + \frac{\beta_{\mathrm{res}}}{|\mathcal{B}|}\sum_{i\in\mathcal{B}} \bigl\|g_i h_i^{\mathrm{attr}}\bigr\|_2^2 \tag{4}$$
$\mathcal{B}$ 是 SASRec 中的正样本与采样负样本集合,$\beta_{\mathrm{res}}$ 控制残差正则强度(实验取 $0.001$)。
B-tags / C-tags 的完整分类体系(附录 2):B-tags 刻画供给侧——Positioning(知识分享 / 娱乐 / 日常 / 带货)、Persona(专家 / 朋友型创作者 / 喜剧演员 / 测评者)、Monetization(品宣 / 引流 / 课程转化)、Format(口播 / 剧情 / 测评 / 教程 / 访谈 / Vlog)、Style(专业 / 幽默 / 真实 / 高级 / 快节奏)、Emotion(愉悦 / 温暖 / 治愈 / 紧张 / 激励)、Depth(娱乐 / 介绍 / 实操讲解 / 深度分析)、Operation(蹭热点 / 悬念钩子 / 互动引导 / 连载);C-tags 刻画需求侧——Pain Point(化妆难 / 效率低 / 减肥 / 选品)、Benefit(知识 / 解决问题 / 放松 / 优惠 / 效率)、Scenario(通勤 / 睡前 / 居家 / 办公 / 旅行 / 购买决策)、Audience(学生 / 职场人 / 宝妈 / 新手 / 数码爱好者)。每个维度可多值,两组 tag 各自转文本后由共享文本编码器编码。
3.2 Collaborative Injection:把局部共现结构塞进量化之前¶

Semantic Fusion 虽然通过 $\mathcal{L}_{\mathrm{rec}}$ 把语义与推荐目标对齐了,但捕捉不到 item-item 的局部共现结构。OGR 选择在量化之前注入协同信息,并把协同当成一种证据加权的补充:行为证据充足的 item 可以充分利用协同结构,稀疏 / 冷启 item 则保留原始语义信息。
CCE:基于 CountSketch 的协同嵌入¶
对每个用户 $u$,只从高质量正反馈训练前缀构造共现(验证集与测试集交互被排除,防信息泄漏)。对位置 $p$ 上的中心 item $i$,任何满足 $0<|p-q|\le\omega$ 的位置 $q$ 上的 item $j$ 都算上下文 item,并赋距离权重 $1/|p-q|$——越近的交互越可能表示更强的局部兴趣相关性。
未压缩的局部上下文向量为(附录 4):
$$x_i[j] = \sum_u \sum_{\substack{p,q:\ \jmath_{u,p}=i,\ \jmath_{u,q}=j \\ 0<|p-q|\le\omega}} \frac{1}{|p-q|} \tag{5}$$
显式存储全部 $\{x_i\}$ 需要一个随 item 词表增长的 item–context 矩阵,不可行。OGR 用 Signed CountSketch 把每个 item 的局部上下文分布压成固定维统计向量。所有中心 item 共享一个 bucket hash $h:[n_{\mathrm{vocab}}]\to[n_{\mathrm{bucket}}]$ 与一个 sign hash $\sigma:[n_{\mathrm{vocab}}]\to\{-1,+1\}$:
$$\mathcal{C}_i[\nu] = \sum_{j:\,h(j)=\nu}\sigma(j)\,x_i[j], \qquad \nu = 1,\dots,n_{\mathrm{bucket}} \tag{6}$$
等价的流式更新形式即正文的式子:
$$\mathcal{C}_i[h(j)] \leftarrow \mathcal{C}_i[h(j)] + \frac{\sigma(j)}{|p-q|} \tag{7}$$
共享 $h$ 与 $\sigma$ 使各 item 的压缩上下文分布可直接比较,且原始 sketch 满足:
$$\mathbb{E}\bigl[\langle \mathcal{C}_i, \mathcal{C}_{i'}\rangle\bigr] = \langle x_i, x_{i'}\rangle \tag{8}$$
直觉是:被 $i$ 和 $i'$ 共享的上下文 item $j$ 贡献 $\sigma(j)^2 x_i[j]x_{i'}[j] = x_i[j]x_{i'}[j]$(恒正);而 $j\ne j'$ 的无关碰撞交叉项含 $\sigma(j)\sigma(j')$,期望为零。所以共同局部上下文会一致地正向贡献,无关哈希碰撞不会系统性抬高相似度。
论文特意说明 CCE 不是经典 CountSketch:它只借用「固定维 bucket 哈希 + 随机符号哈希」这两个特征映射操作,不做单坐标恢复、不做多行 median 点查询,只用一行、共享哈希,然后直接接后处理。
后处理三步。先做带符号对数变换压制高频共现的支配性(保号压幅):
$$z_i[\nu] = \mathrm{sign}\bigl(\mathcal{C}_i[\nu]\bigr)\log\bigl(1+|\mathcal{C}_i[\nu]|\bigr) \tag{9}$$
再做逐 item 的 $\ell_2$ 归一化($\vartheta_n>0$ 为数值稳定常数):
$$\bar z_i = \frac{z_i}{\max(\|z_i\|_2,\ \vartheta_n)} \tag{10}$$
最后用一个共享的固定随机投影 $\Lambda^{\mathrm{col}}\in\mathbb{R}^{n_{\mathrm{col}}\times n_{\mathrm{bucket}}}$ 映到与语义同维的协同嵌入空间,并再次归一化:
$$e_i^{\mathrm{col}} = \Lambda^{\mathrm{col}}\bar z_i, \qquad e_i^{\mathrm{col}} \leftarrow \frac{e_i^{\mathrm{col}}}{\max(\|e_i^{\mathrm{col}}\|_2,\ \vartheta_n)} \tag{11}$$
CAW:置信度感知加权¶
构造 sketch 时同时记录 $U_i$——对 item $i$ 贡献了有效上下文更新的不同用户数:
$$U_i = \sum_u \mathbb{1}\Bigl[\exists\, p,q\in\{1,\dots,L_u^+\}:\ \jmath_{u,p}=i,\ 0<|p-q|\le\omega\Bigr] \tag{12}$$
关键设计:每个用户只贡献一个二值指示,同一用户对 item $i$ 的重复交互、多次上下文更新都不增加 $U_i$。于是 $U_i$ 统计的是「有多少个不同用户为 item $i$ 提供了协同证据」,而非交互总量——这样就限制了高活用户重复行为的影响。
由于 distinct-user 支持度长尾,先做对数压缩,再转成 item 级协同置信度与融合权重:
$$\gamma_i = \frac{\log(1+U_i)}{\log(1+U_i)+\tau}, \qquad \alpha_i = \alpha_{\mathrm{col}}\gamma_i \tag{13}$$
$\tau>0$ 控制置信度饱和速度(取 $0.5$),$\alpha_{\mathrm{col}}\in[0,1]$ 是最大协同权重(取 $0.35$)。对数变换压缩了高支持度 item 之间的差距,引入边际递减——避免高热 item 仅凭交互规模就主导协同信息。反过来,$U_i$ 小则 $\alpha_i$ 小,稀疏 / 冷启 item 的不可靠行为证据被降权;$U_i=0$ 时直接 $\gamma_i=\alpha_i=0$,表征完全退回语义分支,与「用内容信息补偿稀疏行为证据」的工业冷启常规做法一致。
语义侧同样归一化后,做置信度加权拼接得到统一表征:
$$e_i^{\mathrm{uni}} = \Bigl[\sqrt{1-\alpha_i}\,\bar e_i^{\mathrm{sem}};\ \sqrt{\alpha_i}\,e_i^{\mathrm{col}}\Bigr] \tag{14}$$
平方根系数是为了保范数:两分支非零且单位归一时,
$$\bigl\|e_i^{\mathrm{uni}}\bigr\|_2^2 = (1-\alpha_i)\|\bar e_i^{\mathrm{sem}}\|_2^2 + \alpha_i\|e_i^{\mathrm{col}}\|_2^2 = (1-\alpha_i)+\alpha_i = 1 \tag{15}$$
也就是说 CAW 只调整语义 / 协同的相对贡献,不引入 item 相关的整体尺度波动——这对下游 K-means 量化很关键(否则范数差异会直接污染欧氏距离的聚类)。
3.3 RQ-KMeans 量化(附录 3)¶
令 $\zeta_i^{(1)} = e_i^{\mathrm{uni}}$ 为初始残差,第 $d$ 层码本 $\Xi^{(d)} = \{\xi_n^{(d)}\}_{n=1}^{n_d^{\mathrm{cb}}}$。RQ-KMeans 把残差分配到最近质心:
$$s_i^d = \arg\min_{n\in\{1,\dots,n_d^{\mathrm{cb}}\}} \bigl\|\zeta_i^{(d)} - \xi_n^{(d)}\bigr\|_2^2 \tag{16}$$
残差递归更新:
$$\zeta_i^{(d+1)} = \zeta_i^{(d)} - \xi_{s_i^d}^{(d)} \tag{17}$$
$D$ 层之后得到 SID 与重建表征:
$$s_i = (s_i^1,\dots,s_i^D), \qquad \hat e_i^{\mathrm{rq}} = \sum_{d=1}^{D}\xi_{s_i^d}^{(d)} \tag{18}$$
早期码字捕捉大尺度变化,后续码字编码残差细节。验证 / 测试 / 在线推理时码本冻结,逐层选最近质心,保证训练与评估的 SID 词表一致。
四、GL2P:全局 list-wise 偏好规划架构¶
现有 GR 用 NTP 优化自回归 SID 生成,与「物品选择 + 排序」的 slate 级优化错配,限制了对全局 slate 偏好与跨物品依赖的显式建模。OGR 不做 next-item 生成,而是把整个 slate 当作基本预测单位,把 list-wise 偏好规划与位置级流水线 SID 解码组合起来。
4.1 History Encoder¶
历史编码器把有序 SID 交互历史转成上下文表征,聚合层次化 SID embedding 并注入时间信息:
$$Z^h = \mathrm{Enc}^{\mathrm{hist}}\Bigl(\bigl[\textstyle\sum_{d=1}^{D}E[s_t^d] + p_t^h\bigr]_{t=1}^{T}\Bigr) \tag{19}$$
$E$ 是共享 SID embedding 表(4 层共享,1,024 个码 token 加一个 anomaly token,512 维),$p_t^h$ 是位置 $t$ 的时间 embedding。
4.2 List-Wise Preference Planner¶
规划器不直接解码 item SID,而是在粗粒度偏好空间建模跨物品依赖。训练用 teacher forcing:对位置 $m$ 的目标 item,聚合其 $D$ 级 SID embedding,构造右移的规划器输入:
$$g_m = \sum_{d=1}^{D}E[s_m^d], \qquad Q^{\mathrm{tr}} = [\mathrm{BOS},\, g_1,\dots,g_{K-1}] \tag{20}$$
一个因果掩码 Transformer decoder 为每个展位产出一个规划好的偏好表征:
$$P = \mathrm{Dec}^{\mathrm{plan}}(Q^{\mathrm{tr}}, Z^h) = [p_1,\dots,p_K] \tag{21}$$
因果自注意力捕捉前序展位间的依赖,交叉注意力从 $Z^h$ 里检索与用户偏好相关的信号。推理时规划器从 BOS 起步,把上一步生成的 $p_{m-1}$ 自回归喂回去产生 $p_m$。
关键的流水线:$p_m$ 一旦就绪,解码器就开始生成展位 $m$ 的 SID chain,而规划器同时推进到 $m+1$——两者在时间上重叠。
4.3 Position-Wise SID Decoder¶
对第 $m$ 个展位,SID token 以规划偏好嵌入 $p_m$、前序 SID token $s_m^{<d}$ 与历史表征 $Z^h$ 为条件自回归生成:
$$s_m = \mathrm{Dec}^{\mathrm{sid}}\bigl(p_m,\ E[s_m^{<d}],\ Z^h\bigr) \tag{22}$$
由于跨展位依赖已由 list-wise 规划器承担,每个展位的 SID chain 在其 $p_m$ 就绪后可独立解码——这就是「当前展位 SID 解码与后续偏好规划重叠」的流水线执行,同时保留了 item 内部的 SID 依赖。
4.4 Feedback-Aware Supervision¶
OGR 在同一个目标 slate 上构造两条互补的监督序列:
- 曝光序列 $Y_u^{\mathrm{eps}}$:保持原始展示顺序;
- 反馈序列 $Y_u^{\mathrm{fb}}$:按观测到的 item 级反馈重排。
对每种监督类型 $o\in\{\mathrm{eps},\mathrm{fb}\}$,SID 生成损失为:
$$\mathcal{L}^{o}_{\mathrm{sid}} = -\frac{1}{|\mathcal{U}|KD}\sum_u\sum_{m=1}^{K}\sum_{d=1}^{D}\log \pi^{o,d}_{u,m}\bigl[s^{o,d}_{u,m}\bigr] \tag{23}$$
$s^{o,d}_{u,m}$ 是深度 $d$ 的目标 SID token,$\pi^{o,d}_{u,m}[\cdot]$ 是其预测概率,$|\mathcal{U}|$ 为训练用户数。监督目标为:
$$\mathcal{L}_{\mathrm{sup}} = \mathcal{L}^{\mathrm{eps}}_{\mathrm{sid}} + \alpha\,\mathcal{L}^{\mathrm{fb}}_{\mathrm{sid}} \tag{24}$$
$\alpha$ 控制反馈感知监督的强度(取 $0.3$)。曝光分支保持对日志 slate 分布的保真度,反馈分支把用户偏好信号注入生成过程——这是一个很轻但很有效的设计:同一批数据、同一套参数,只是换个目标顺序,就把「系统展示了什么」和「用户喜欢什么」两种信号拆开供给。
五、SPA:Slate 级偏好对齐¶
反馈感知的监督学习虽然同时提供了曝光顺序与反馈信息的监督,但本质仍是对固定目标的似然模仿,缺乏在多个生成 slate 之间优化相对偏好的能力。受 LLM 偏好对齐(DPO、InstructGPT)启发,论文加了一个偏好对齐的后训练阶段。
5.1 Candidate Rollouts¶
令 $\theta_0$ 为冻结的监督模型(参考策略)。对每个用户 $u$,在每个展位用其对应的规划偏好嵌入做 beam search,把生成的候选组合成去重的 slate 级动作集 $\mathcal{A}_u$。每个动作 $a = (s_{u,1},\dots,s_{u,K})$ 的参考对数似然为:
$$\ell_0(a\mid u) = \sum_{m=1}^{K}\sum_{d=1}^{D}\log p_{\theta_0}\bigl(s^d_{u,m}\mid Z^h_u,\ p_{u,m},\ s^{<d}_{u,m}\bigr) \tag{25}$$
⚠️ 附录 5 对此有一处重要澄清(与正文表述存在张力):实际操作中,正文所说的 "candidate rollouts" 指的是在策略下评估「已记录的曝光 slate」,而不是生成新的 slate 来赋奖励。对齐动作集 $\mathcal{A}_u\subseteq\mathcal{E}_u$($\mathcal{E}_u$ 是训练曝光日志里该用户的完整 slate 集合),参考策略与当前策略只用于计算 $\ell_0(a\mid u)$ 与 $\ell_\theta(a\mid u)$。新生成的或反事实的 slate 不会被赋予观测反馈奖励,也被排除在奖励校准之外。少于两条日志 slate 的用户直接被剔出对齐批次。
5.2 Reward-Consistent Calibration¶
论文定义两类奖励:主奖励 $r^{\mathrm{pri}}$ 通过在整个 slate 上聚合反馈信号(有效播放、点赞等)度量 slate 级用户偏好;辅助奖励 $r^{\mathrm{aux}}$ 提供 slate 级质量信号(多样性等)的额外引导。
附录 5 给出了完整配方(工业奖励 schema 因保密无法全披露,这里是保留下来的信号与固定权重)。对动作 $a$ 中第 $k$ 个展位的曝光 item,令 $b^{\mathrm{ev}}, b^{\mathrm{comp}}, b^{\mathrm{like}}, b^{\mathrm{share}}, b^{\mathrm{skip}}, b^{\mathrm{dislike}}$ 为有效播放、完播、点赞、分享、即时划走、不喜欢的二值指示:
$$r^{\mathrm{pri}}_{u,a} = \frac{1}{K}\sum_{k=1}^{K}\Bigl(0.10\,b^{\mathrm{ev}}_{u,a,k} + 0.15\,b^{\mathrm{comp}}_{u,a,k} + 0.20\,b^{\mathrm{like}}_{u,a,k} + 0.15\,b^{\mathrm{share}}_{u,a,k} - 0.15\,b^{\mathrm{skip}}_{u,a,k} - 0.25\,b^{\mathrm{dislike}}_{u,a,k}\Bigr) \tag{26}$$
设计意图:六个信号覆盖消费质量、显式正向动作、显式负向动作;有效播放权重最小,完播与分享中等且相等,点赞最大;不喜欢的惩罚大于即时划走;绝对值之和为 1,使每展位尺度易解释。
辅助奖励只保留 slate 内多样性与新颖性。令 $\bar e_i$ 为 item $i$ 的单位归一语义表征,$c_i$ 为其训练集曝光次数,$C=\sum_{j\in\mathcal{I}}(c_j+1)$ 为拉普拉斯平滑总量:
$$d_{u,a} = \frac{2}{K(K-1)}\sum_{1\le p<q\le K}\frac{1-\bar e^\top_{y_{u,a,p}}\bar e_{y_{u,a,q}}}{2}, \qquad n_{u,a} = \frac{1}{K}\sum_{k=1}^{K}\frac{-\log\bigl((c_{y_{u,a,k}}+1)/C\bigr)}{\log C} \tag{27}$$
两者都落在 $[0,1]$:$d_{u,a}$ 是平均成对余弦距离,$n_{u,a}$ 对曝光越少的 item 越大。
$$r^{\mathrm{aux}}_{u,a} = 0.90\,d_{u,a} + 0.10\,n_{u,a} \tag{28}$$
多样性拿主导权重,因为它直接度量 slate 级冗余;新颖性只作为较小的次级修正。
对 $o\in\{\mathrm{pri},\mathrm{aux}\}$,在同一个仅含曝光 slate 的动作集上做用户内标准化:
$$\delta^{o}_{u,a} = \frac{r^{o}_{u,a} - \mathrm{Mean}^{o}_u}{\max(\mathrm{Std}^{o}_u,\ \varepsilon)} \tag{29}$$
$\delta^o_{u,a}>0$ 表示该 slate 优于该用户的候选平均。若某奖励分量在 $\mathcal{A}_u$ 内恒定,其标准化分数对所有动作都为零,不贡献偏好方向。
最终校准偏好信号:
$$\kappa_{u,a} = \begin{cases}\dfrac{\min\bigl(|\delta^{\mathrm{pri}}_{u,a}|,\ |\delta^{\mathrm{aux}}_{u,a}|\bigr)}{\max\bigl(|\delta^{\mathrm{pri}}_{u,a}|,\ |\delta^{\mathrm{aux}}_{u,a}|,\ \varepsilon\bigr)}, & \delta^{\mathrm{pri}}_{u,a}\cdot\delta^{\mathrm{aux}}_{u,a}>0\\[2mm] 0, & \text{otherwise}\end{cases}, \qquad \Delta_{u,a} = \delta^{\mathrm{pri}}_{u,a} + \kappa_{u,a}\delta^{\mathrm{aux}}_{u,a} \tag{30}$$
$\kappa_{u,a}$ 按相对幅度缩放辅助贡献,并在主 / 辅方向冲突时直接把辅助归零(只留主奖励),$\varepsilon>0$ 防除零。这样既保住主推荐目标,又只在可靠时吸收辅助信号——比简单线性加权稳健得多。
5.3 Conservative Policy Optimization¶
给定同一批候选动作集,计算重要性比 $\rho_{u,a} = \exp\bigl(\ell_\theta(a\mid u) - \ell_0(a\mid u)\bigr)$,优化 PPO 式的 clipped 策略目标:
$$\mathcal{L}_{\mathrm{pol}} = -\frac{1}{N_A}\sum_u\sum_{a\in\mathcal{A}_u}\min\Bigl\{\rho_{u,a}\Delta_{u,a},\ \mathrm{clip}(\rho_{u,a},\,1-\epsilon,\,1+\epsilon)\,\Delta_{u,a}\Bigr\} \tag{31}$$
$N_A$ 是保留的 user-action 对数,$\epsilon$ 为裁剪半径(取 $0.1$)。
为进一步约束策略漂移,从参考与当前策略的似然导出候选 slate 分布 $q_0(a\mid u) = \mathrm{softmax}_{a\in\mathcal{A}_u}(\ell_0(a\mid u))$、$q_\theta(a\mid u) = \mathrm{softmax}_{a\in\mathcal{A}_u}(\ell_\theta(a\mid u))$,其散度为:
$$\mathcal{L}_{\mathrm{KL}} = \frac{1}{N_U}\sum_u\sum_{a\in\mathcal{A}_u} q_0(a\mid u)\log\frac{q_0(a\mid u)}{q_\theta(a\mid u)} \tag{32}$$
再叠加监督目标回放,最终对齐目标为:
$$\mathcal{L}_{\mathrm{SPA}} = \mathcal{L}_{\mathrm{pol}} + \gamma\,\mathcal{L}_{\mathrm{KL}} + \eta\,\mathcal{L}_{\mathrm{sup}} \tag{33}$$
$\gamma = 0.05$,$\eta = 0.1$。精调阶段只更新 List-Wise Preference Planner 与 Position-Wise SID Decoder,其余组件全部冻结——slate 级规划与 item 级解码被联合对齐到用户反馈,同时避免过度偏离监督生成策略。
六、实验设置¶
数据集:KuaiRec(公开)与一份快手自有工业数据集。工业集含交互序列、多模态内容、高层属性、曝光日志与 item 级反馈。两个数据集都按时间排序,采用 leave-five-out 协议。
评估指标:在正反馈列表上报 Hit Rate、Recall、NDCG,衡量捕捉用户偏好的能力;另在日志曝光上报 impression-based Hit Rate 与 Recall,衡量捕捉观测曝光模式的能力。
实现细节:全部离线实验在 NVIDIA L20 上跑。最大历史长度 128,slate 大小 $K=5$。SID tokenizer 四级、每级码本 1,024。推理 beam width = 20。所有离线结果是 5 次独立运行(seed 2025–2029)的均值。
主要超参(附录 6):
| 模块 | 配置 |
|---|---|
| Semantic fusion | 语义维 128;投影维 512;4 层 cross-attention;8 头 |
| 残差正则 | $\beta_{\mathrm{res}} = 0.001$ |
| Sketch | $\omega=5$;$n_{\mathrm{bucket}}=256$;seed 2026 |
| 协同分支 | 协同维 128;$\tau=0.5$;$\alpha_{\mathrm{col}}=0.35$ |
| 量化 | RQ-KMeans;$D=4$;每级 1,024 码 |
| History encoder | 4 层;8 头;hidden 512;FFN 2,048 |
| Planner | 2 层;8 头;hidden 512;FFN 2,048 |
| SID decoder | 2 层;8 头;hidden 512;FFN 2,048;beam width 20 |
| SID embedding | 512 维;1,024 码 token + 1 anomaly token;4 级共享 |
| 监督解码 | $\alpha=0.3$ |
| SPA | $\varepsilon=10^{-6}$;$\epsilon=0.1$;$\gamma=0.05$;$\eta=0.1$;lr $10^{-5}$;batch 64;3 epoch |
| 线上 A/B | 1 周 |
七、主要实验结果¶
7.1 整体性能对比(Table 1)¶
三类 baseline:序列推荐(Caser、SASRec、BERT4Rec)、list-wise 重排(PRM、Seq2Slate)、生成式推荐(TIGER、OneRec)。所有生成式 baseline 都实现成与 OGR 可比的参数量(32 MB)。
| Method | Ind. Impr. hit@5 | Ind. Impr. recall@5 | Ind. EV hit@5 | Ind. EV recall@5 | Ind. NDCG@5 | KR Impr. hit@5 | KR Impr. recall@5 | KR EV hit@5 | KR EV recall@5 | KR NDCG@5 |
|---|---|---|---|---|---|---|---|---|---|---|
| BERT4Rec | 0.1137 | 0.0196 | 0.0689 | 0.0152 | 0.0214 | 0.3538 | 0.0908 | 0.2393 | 0.0983 | 0.0870 |
| SASRec | 0.1206 | 0.0220 | 0.0702 | 0.0181 | 0.0223 | 0.3760 | 0.0952 | 0.2348 | 0.1013 | 0.0878 |
| Caser | 0.1094 | 0.0164 | 0.0605 | 0.0134 | 0.0201 | 0.3329 | 0.0813 | 0.1966 | 0.0802 | 0.0765 |
| PRM | 0.1119 | 0.0235 | 0.0819 | 0.0201 | 0.0413 | 0.3705 | 0.0973 | 0.2470 | 0.1102 | 0.1024 |
| Seq2Slate | 0.1212 | 0.0251 | 0.0872 | 0.0220 | 0.0427 | 0.3760 | 0.0982 | 0.2500 | 0.1094 | 0.1017 |
| TIGER | 0.0984 | 0.0125 | 0.0517 | 0.0109 | 0.0181 | 0.3036 | 0.0779 | 0.2012 | 0.0867 | 0.0819 |
| OneRec | 0.1642 | 0.0413 | 0.0953 | 0.0321 | 0.0394 | 0.4448 | 0.1105 | 0.2782 | 0.1117 | 0.0949 |
| OGR (Ours) | 0.2155 | 0.0511 | 0.1227 | 0.0416 | 0.0633 | 0.5468 | 0.1393 | 0.2991 | 0.1475 | 0.1303 |
(Ind. = Industrial,KR = KuaiRec,Impr. = Impressions,EV = Effective Views)
摘要中的 +48.2% / +27.2% 即由此表算得:工业集 NDCG@5 从最强 baseline Seq2Slate 的 0.0427 到 0.0633($\times 1.482$);KuaiRec 从最强 baseline PRM 的 0.1024 到 0.1303($\times 1.272$)。
结论分析(why 而非 what):
- 判别式序列推荐直接估分取 Top-5,因而在 Top-5 推荐上表现稳定;
- List-wise 重排显式建模候选集内物品交互,因此排序能力更强——注意 PRM / Seq2Slate 的 hit@5 并不突出,但 NDCG@5 明显领先序列模型(KuaiRec 0.1024 / 0.1017 vs SASRec 0.0878);
- OneRec 的 Hit Rate 与 Recall 都很强(KuaiRec Impr. hit@5 0.4448,明显高于所有非生成式 baseline),但 NDCG 反而输给 list-wise 重排 baseline(0.0949 < 0.1024)。这正是论文点名的解码困境:自回归 slate 生成能捕捉跨物品依赖但串行延迟 + 误差累积,基于概率的 Top-5 选择高效但在 NTP 损失下没有 list-wise 对齐;
- OGR 通过「全局 slate 规划 + 流水线位置级 SID 解码」同时化解两侧:既保住跨展位依赖,又避免逐 item 串行生成,于是所有指标一致提升。
值得注意的是 TIGER 在两个数据集上都是最差的——低于 Caser。论文没有展开解释,合理推测是 TIGER 的 RQ-VAE SID 在快手这种短视频场景(多模态、无商品文本描述)上语义质量不佳,且 32 MB 的参数预算对它偏紧。
7.2 SID 构造方法对比(Table 2,KuaiRec)¶
在相同 OGR 骨干与码本大小下横比各类 SID 构造方法,从三个维度评估:下游推荐、码本均衡、内容保持。
| SID Method | Recall@5 ↑ | NDCG@5 ↑ | ICR ↑ | CUR ↑ | Min. PPL ↑ | Top-1 Load ↓ | V-measure L1 ↑ | SC ↑ |
|---|---|---|---|---|---|---|---|---|
| RQ-VAE (TIGER) | 0.117 | 0.112 | 0.996 | 0.752 | 7.8 | 0.047 | 0.305 | 0.622 |
| RQ-KMeans (OneRec) | 0.121 | 0.116 | 0.995 | 1.000 | 468.1 | 0.028 | 0.431 | 0.737 |
| R3-VAE | 0.120 | 0.114 | 0.984 | 0.683 | 12.4 | 0.041 | 0.269 | 0.619 |
| GNPR-SID | 0.129 | 0.115 | 1.000 | 0.955 | 836.8 | 0.004 | 0.412 | 0.741 |
| LC-Rec | 0.116 | 0.111 | 1.000 | 0.764 | 52.9 | 0.011 | 0.381 | 0.660 |
| LETTER | 0.114 | 0.109 | 0.999 | 0.335 | 39.8 | 0.030 | 0.241 | 0.608 |
| TUSID (Ours) | 0.148 | 0.130 | 1.000 | 1.000 | 681.7 | 0.005 | 0.424 | 0.747 |
指标含义:ICR / CUR 度量 SID 唯一性与码本覆盖率;Min. PPL / Top-1 Load 通过码利用率与主导码的集中度评估码分配均衡;V-measure / SC 分别评估类目一致性与语义内聚性。
结论分析:TUSID 在两个下游推荐指标上一致优于所有公开 baseline,说明其 SID 更有效地捕捉了用户偏好与协同结构。同时 TUSID 做到 ICR = 1.000(零碰撞)+ CUR = 1.000(满覆盖),且各层级码分配保持均衡(Top-1 Load 0.005,仅次于 GNPR-SID 的 0.004)。语义保持方面 V-measure(0.424)与 SC(0.747)与最好的 baseline 相当甚至更好。
论文由此得出一个值得记的判断:有效的 SID 需要在语义保持、协同结构、码本质量之间取得平衡,而不是把某个单一指标推到极致。这个结论有实证支撑——GNPR-SID 的码本均衡指标(Min. PPL 836.8、Top-1 Load 0.004)比 TUSID 还漂亮,但 NDCG@5 只有 0.115,落后 TUSID 13%。
7.3 TUSID 消融(Table 3,KuaiRec)¶
| 变体 | High-level Attr. | $e^{\mathrm{sem}}$ Fusion | $e^{\mathrm{col}}$ | $e^{\mathrm{col}}$ Fusion | CAW | Eff. Recall@5 | NDCG@5 |
|---|---|---|---|---|---|---|---|
| Base SID (RQ-KMeans) | × | N/A | N/A | N/A | N/A | 0.1214 | 0.1162 |
| + Semantic Fusion | ✓ | Add | N/A | N/A | N/A | 0.1138 | 0.1096 |
| + Semantic Fusion | ✓ | Cross-Attn & Gate | N/A | N/A | N/A | 0.1295 | 0.1198 |
| + Collaborative Injection | ✓ | Cross-Attn & Gate | CCE | Add | × | 0.1387 | 0.1248 |
| + Collaborative Injection | ✓ | Cross-Attn & Gate | InfoNCE Loss | N/A | × | 0.1404 | 0.1275 |
| + Collaborative Injection | ✓ | Cross-Attn & Gate | CCE | Concat | × | 0.1437 | 0.1298 |
| TUSID (Full) | ✓ | Cross-Attn & Gate | CCE | Concat | ✓ | 0.1475 | 0.1303 |
逐项分析:
- 直接相加高层属性反而掉点(0.1138 / 0.1096 < 基线 0.1214 / 0.1162),换成 cross-attention + 门控后才涨到 0.1295 / 0.1198。说明异构语义源的朴素融合会破坏原有语义结构——这一条很有普适价值,属性不是「加进去就有用」。
- CCE + Concat 优于 CCE + Add,也优于 InfoNCE 对比监督(0.1437 vs 0.1387 vs 0.1404)。说明保留语义与协同的互补结构,比把两者塌缩到同一空间更有效。这是对当前主流「用对比学习对齐语义-协同」路线的一次直接反驳。
- CAW 再涨一档(0.1475 / 0.1303)。说明基于置信度缩放协同信息,能防止稀疏或偶然的交互被放大成可靠偏好信号。
7.4 GL2P 与 SPA 消融(Table 4,Industrial)¶
| 变体 | Eff. Recall@5 | NDCG@5 |
|---|---|---|
| GL2P + SPA (Full) | 0.0416 | 0.0633 |
| w/o List-Wise Planner | 0.0201 | 0.0359 |
| w/o SPA | 0.0344 | 0.0419 |
| w/o Primary Reward | 0.0332 | 0.0467 |
| w/o Auxiliary Reward | 0.0403 | 0.0554 |
| w/o Conservative Regularization | 0.0227 | 0.0312 |
逐项分析:
- 去掉 List-Wise Planner 掉最狠(NDCG@5 0.0633 → 0.0359,−43%),而且论文强调这是在把规划器的参数预算重新分配给 Encoder/Decoder 的前提下——排除了「单纯参数变少」的解释,证明全局偏好规划对协调物品选择与 slate 排序是必需的。
- 去掉 SPA(0.0419,−34%)说明仅靠监督生成不足以优化用户偏好的 slate。
- SPA 内部:去主奖励(0.0467)比去辅助奖励(0.0554)掉得更多,确认用户反馈是主导对齐信号,slate 级质量信号只是互补引导。
- 去掉保守正则掉到 0.0312(−51%),甚至低于「完全不做 SPA」的 0.0419——这是全表最有信息量的一行:无约束的策略优化不仅无益,反而有害,验证了约束策略偏移的重要性。
7.5 监督目标消融(Table 5,KuaiRec)¶
| 变体 | Effective-View Recall@5 | NDCG@5 |
|---|---|---|
| $\mathcal{L}_{\mathrm{sup}} = \mathcal{L}^{\mathrm{eps}}_{\mathrm{sid}} + \alpha\mathcal{L}^{\mathrm{fb}}_{\mathrm{sid}}$ | 0.1475 | 0.1303 |
| w/o $\mathcal{L}^{\mathrm{eps}}_{\mathrm{sid}}$ | 0.1382 | 0.1201 |
| w/o $\mathcal{L}^{\mathrm{fb}}_{\mathrm{sid}}$ | 0.1230 | 0.1139 |
去掉任一分支都掉点:曝光顺序监督为 slate 生成提供结构性引导,反馈感知监督按用户响应精修生成。去掉反馈分支掉得更多(NDCG −12.6% vs −7.8%),说明用户反馈顺序承载了更多有效信息,但曝光结构不可或缺——只有联合监督才让 OGR 学到稳定有效的 slate 级序列依赖。
7.6 效率分析(Figure 3)¶

论文为生成式 baseline 考虑两种解码模式,并给出串行解码深度的形式化分析:
- Beam-5:自回归地逐展位串行解码 $D$ 级 SID,全部 $K\times D$ 个 SID token 依次生成,故 $\mathrm{Depth}_{\text{Beam-5}} = KD$;
- Top-5:做一次 next-item beam search 直接返回分数最高的 $K$ 个候选,$K$ 个 item 的 SID chain 在同一次 beam search 内并行解码,深度只取决于 item 内 $D$ 步,故 $\mathrm{Depth}_{\text{Top-5}} = D$;
- OGR:$p_m$ 就绪后 $\mathrm{Dec}^{\mathrm{sid}}$ 即可生成其 SID chain,同时 $\mathrm{Dec}^{\mathrm{plan}}$ 继续产出后续偏好表征。展位 $m$ 的第 $d$ 个 SID token $s_m^d$ 在 $m$ 步规划 + $d$ 步 item 内解码后可用,依赖深度为 $m+d$;整条 slate 在 $s_K^D$ 生成时完成,故 $\mathrm{Depth}_{\mathrm{OGR}} = K + D$。
于是 OGR 把串行依赖深度从 $O(KD)$ 降到 $O(K+D)$。在 $K=5$、$D=4$ 下理想临界路径缩减因子为 $KD/(K+D) = 20/9 \approx 2.22$。实测吞吐相对 TIGER-Beam 提升 2.43×、相对 OneRec-Beam 提升 2.49×,同时拿到最高的 NDCG@5——加速比略高于理论值,说明除临界路径缩短外还有额外的并行调度收益。
反过来,Top-5 变体虽然只需一次 next-item beam search,但推荐质量明显更低(Figure 3 中位于左下),因为它只是返回若干替代性的 next-item 候选,没有显式建模跨展位的依赖与排序偏好。综合来看,OGR 提供了生成式 slate 推荐上一个更好的质量–效率权衡点。
7.7 线上 A/B¶
在快手 3% 生产流量上做 A/B,周期 1 周。相对现有系统:
| 指标 | 相对提升 |
|---|---|
| Effective Views(有效播放) | +1.120% |
| Comments(评论) | +2.954% |
| Likes(点赞) | +0.505% |
| Forwards(转发) | +1.255% |
四项互动指标全线为正,且评论涨幅最大(+2.954%)——评论是短视频里成本最高的互动行为,通常与内容契合度强相关;这条数据侧面支持了「slate 级偏好对齐确实提升了整屏内容与用户兴趣的匹配」这一说法。
八、核心贡献总结¶
- TUSID:一套推荐感知的 SID 构造框架,自适应整合 item 特定语义信息与局部协同信号,构造用于生成式 slate 推荐的层次化 SID。核心创新是用 Signed CountSketch 显式编码距离加权的局部共现分布(而非对比对齐),并用 distinct-user 支持度驱动的置信度门控决定协同信息的介入程度。
- OGR / GL2P:一个端到端生成式 slate 推荐框架,把 list-wise 偏好规划与流水线位置级 SID 解码结合,直接生成有序 slate,串行深度 $O(KD)\to O(K+D)$。
- SPA:通过校准的多目标奖励与保守策略优化,把生成的 slate 对齐到用户偏好——奖励一致性门控 $\kappa$ 在主 / 辅方向冲突时自动关闭辅助信号,是一个简洁而稳健的设计。
- 完整的工业验证:离线覆盖工业集与公开集,消融覆盖三个模块的所有关键组件,线上 A/B 四项指标全正。
九、与已归档相关工作的对比¶
DIRECTOR DIRECTOR: Dynamic Index-based Recommendation with Transport-Optimized Retrieval(快手 / 中科大,2026-07-29)¶
关系:独立并发(本文未引用 DIRECTOR,两者殊途同归)· 已加载对方精读
- 共同关注的问题:两篇论文对「列表生成的解码困境」给出了几乎逐字一致的诊断。OGR 说自回归 slate 生成「捕捉跨物品依赖但受串行延迟与误差累积之苦」,而概率式 Top-K 选择「高效但在 NTP 损失下不 list-wise 对齐」;DIRECTOR 说 AR 路线有「前缀剪枝误杀全局更优排列」与「推理天然串行」两个结构性代价,而朴素 NAR 位置并行「解决了延迟却丢掉了协调」——不同位置会竞争同一批高概率 item。两者都把矛头指向同一个 root cause:跨位置协调能力与解码并行度之间的结构性对立。
- 相近的技术骨架:两者都拒绝「逐位置直接预测离散 item」,改为先在连续空间生成每个展位的意图向量、再把它落成离散 item。OGR 的 List-Wise Preference Planner 用因果 Transformer 产出 $[p_1,\dots,p_K]$;DIRECTOR 的 Generator 用 CVAE/Diffusion 从位置 embedding + 上下文 + 高斯噪声采样出请求条件化的动态检索索引矩阵 $Q$。落地为离散列表后,两者又都用 list-wise 奖励做策略优化(OGR 的 clipped policy + KL,DIRECTOR 的前缀锚定 pathwise 信用分配)。
- 本文的差异与推进:OGR 不受候选集约束——它从全库 SID 空间直接解码,因此真正做到了「拆掉级联」;DIRECTOR 仍然是级联末端的重排模块,输入是上游给定的候选集 $C$(论文自己也承认标题里的 "Retrieval" 指的是「用位置索引去候选池检索」这个内部动作)。反过来,DIRECTOR 在去重协调上做得比 OGR 彻底得多:它用带容量约束的熵正则最优传输在训练时显式耦合各位置对候选容量的竞争,推理时用全局硬匹配保证输出列表合法去重。OGR 完全没有讨论这个问题——GL2P 的 $K$ 个位置各自独立解码 SID chain,理论上完全可能解出重复 item(Figure 1 里的 "Non-Duplicate Slate-Level Action" 去的是动作集内重复的 slate,不是 slate 内重复的 item)。这是 OGR 相对 DIRECTOR 一个实打实的缺口。
- 可比的方法 / 实验差异:DIRECTOR 的信用分配是精确的 telescoping 分解(沿保持合法性的前缀锚定路径,用相邻混合列表的奖励差定义每个位置的优势),从而把不透明 Evaluator 的单个标量奖励拆到位置级;OGR 则停留在 slate 级的单一标量优势 $\Delta_{u,a}$——同一个优势被施加到 slate 内所有 $K\times D$ 个 token 的对数似然上,这正是 DIRECTOR 明确批评的粗粒度监督。另一方面,OGR 的 SPA 用 clip + KL + 监督回放三重保守约束,消融显示去掉保守正则会掉到比不做对齐还差(0.0312 < 0.0419),这个「无约束 RL 有害」的实证在 DIRECTOR 里没有对应证据。
GenRec GenRec: A Preference-Oriented Generative Framework(JD.com,2026-04)¶
关系:独立并发(本文未引用 GenRec)· 已加载对方精读
- 共同关注的问题:两者都认定 point-wise NTP 与「一次请求返回一整页/一整屏」的产品形态存在结构性错配。GenRec 把它命名为 cardinality mismatch:分页机制下同一个用户历史前缀同时对应页内 $K$ 个「正确」的 next item,point-wise 训练把它们拆成 $K$ 个独立训练对,等价于在同一前缀上拟合一个展平的近均匀多模态分布,稀释概率质量、放大梯度方差。OGR 的说法是 NTP「关注预测单个 SID token 而非捕捉用户对整个 slate 的偏好」。两者的 root cause 完全同构:监督粒度低于产品的决策粒度。
- 相近的技术骨架:两者的解法都是「把监督粒度抬到页/slate + 用 RL 做偏好对齐 + 用似然锚定防止 RL 跑偏」这三段式。更惊人的是目标序列的构造方式独立收敛:GenRec 的 $Y_{\text{page}}$ 按交互强度降序排列(已下单 $O$ → 已点击 $C$ → 曝光无交互 $\mathcal{E}$);OGR 的 $Y_u^{\mathrm{fb}}$ 则按观测到的 item 级反馈重排曝光 slate。两篇论文在互不知情的情况下,都想到了「把同一批曝光物品按反馈强度重新排序,当作生成目标」。在 RL 侧,GenRec 的 GRPO-SR 用 $-\alpha\cdot$NLL 正则把策略锚定到真实用户正向轨迹,OGR 的 $\mathcal{L}_{\mathrm{SPA}}$ 用 $\eta\mathcal{L}_{\mathrm{sup}}$ 回放监督目标——同一个反 reward-hacking 的思路,同一个位置,几乎同一个形式。
- 本文的差异与推进:GenRec 明确保留了训练 list-wise / 推理 point-wise 的非对称——线上仍跑单物品粒度的 beam search,理由是「兼容生产 beam search 流水线」。OGR 则把 list-wise 一路贯彻到推理:规划器在推理时同样逐展位自回归产出 $p_m$,输出直接就是有序 slate。换言之,GenRec 用 page-wise 监督间接改善 point-wise 检索,OGR 则直接生成整个 slate。此外 OGR 多了一层 GenRec 没有的贡献:SID 构造本身(TUSID)也被重做了,而 GenRec 直接沿用 Qwen2.5-VL + RQ K-means 的既有配方。
- 可比的方法 / 实验差异:GenRec 的 RL 是真 on-policy rollout(从 $\pi_\theta$ 采样 $G$ 个候选,用 SIM 偏好模型打稠密分并用 gate 抹零无效 SID),面对的核心风险是 reward hacking——生成语法合法但不对应真实物品的 SID 组合。OGR 的 SPA 按附录 5 实为在 logged 曝光 slate 上的 off-policy 重加权,动作集 $\mathcal{A}_u\subseteq\mathcal{E}_u$ 全部来自曝光日志,结构上根本不会产生「不存在的物品」,因此完全绕开了 reward hacking——代价是动作空间被日志覆盖度锁死,无法探索日志之外更优的 slate 组合。这是一组很干净的取舍对照。
GenPage GenPage: Towards End-to-End Generative Homepage Construction(Netflix,2026-06)¶
关系:独立并发(本文未引用 GenPage)· 已加载对方精读
- 共同关注的问题:两者都要用一个端到端生成模型替掉多阶段推荐栈,且都强调输出不是「一个物品」而是一个需要整体优化的结构化单元。GenPage 的动机列表里第一条就是「单个 Transformer 直接消费原始输入信号,替代复杂的多阶段推荐栈——减少需维护的模型数量,避免各阶段目标错配」,第三条是「在页面粒度上操作,使得可以用页面级 reward 做 RL,捕捉跨行跨实体的交互」。OGR 的开篇论述与之几乎重合,只是把 Netflix 的「多行结构化首页」换成了快手的「有序 slate」。
- 相近的技术骨架:两者都是 domain-specific tokenization → 在正反馈日志上做生成式预训练 → 用整体级 reward 做带 KL 约束的策略优化后训练 这条 LLM 式流水线。GenPage 的后训练 RL 目标是 $\max_\theta \mathbb{E}[R_\phi(p)] - \beta\mathrm{KL}(\pi_\theta\|\pi_{\mathrm{ref}})$,用 Dr. GRPO 优化、参考模型由预训练 checkpoint 初始化;OGR 的 $\mathcal{L}_{\mathrm{SPA}} = \mathcal{L}_{\mathrm{pol}} + \gamma\mathcal{L}_{\mathrm{KL}} + \eta\mathcal{L}_{\mathrm{sup}}$ 用冻结的监督模型作参考策略、PPO 式 clip 加候选分布 KL。连「把策略拉回参考模型以防 reward hacking」的论证方式都一致。
- 本文的差异与推进:最大差异在 item 的表示粒度。GenPage 明确选择「每个实体 / 每行 = 单个 token」,理由是这样 per-entity reward 直接落到那一个 token,credit 分配立刻可得——它甚至把「多 token 实体(如 semantic ID)下 WBC 逐 token 打标会失效」列为尚未解决的开放问题,并把 RL 视为处理多 token 实体的唯一出路。OGR 恰好走的就是 GenPage 视为难点的那条路:4 级 SID、每个 item 4 个 token,并且确实只能靠 slate 级 RL(而非逐 token 监督)来做偏好对齐。从这个角度看,OGR 相当于给出了 GenPage 未来工作里那条路线的一个可行实例。另一处差异是并行性:GenPage 是纯自回归逐 token 生成整页,OGR 用规划器/解码器流水线把串行深度压到 $O(K+D)$——GenPage 报告端到端延迟降低 20%(相对多阶段栈),OGR 报告相对生成式 baseline 吞吐 2.4×+。
- 可比的方法 / 实验差异:GenPage 上线的是 WBC 后训练版本(加权二分类,实体级目标),核心用户互动指标 +0.24%($p<0.001$),RL 后训练尚未上线;OGR 上线的正是带 SPA 的完整版本,有效播放 +1.120%。两者的绝对数字不可直接比较(业务与指标定义不同),但方向性有意思:GenPage 认为 RL 是「实现完整愿景的关键路径」却还没敢上线,OGR 则已经把 slate 级 RL 推上了 3% 生产流量——不过这一点需要结合 OGR 的 SPA 实为 logged-data 上的保守 off-policy 重加权来理解,它的上线风险本就远低于 GenPage 那种带 reward model 的 on-policy RL。
十、讨论与局限性¶
10.1 值得借鉴的设计¶
- 「置信度门控的协同注入」是一个可以直接搬走的模式。$\gamma_i = \log(1+U_i)/(\log(1+U_i)+\tau)$ 加 $\sqrt{1-\alpha_i}/\sqrt{\alpha_i}$ 保范数拼接,本质上是一个「按证据量在语义与协同之间连续插值」的机制,$U_i=0$ 自动退化为纯语义(天然的冷启处理)。相比「训一个对齐损失把协同压进语义空间」,它不需要额外训练、不引入竞争梯度、且对量化友好(保范数)。
- 用 distinct-user 计数而非交互计数作为置信度。这个细节很关键:一个高活用户反复刷同一个 item 不应该被当成「这个 item 的协同证据很足」。论文用二值指示器把每个用户的贡献封顶为 1,直接掐掉了这条噪声路径。
- 奖励一致性门控 $\kappa$。主 / 辅奖励方向冲突时把辅助信号归零、方向一致时按相对幅度缩放——比固定权重线性加权稳健,且实现成本几乎为零。
- 消融表里那条「去掉保守正则比完全不做 RL 还差」(0.0312 < 0.0419)。这是做 RL 对齐时最容易踩的坑的一个干净反例,值得单独记住。
- 把「监督目标顺序」当成一个可设计的维度:同一批曝光数据,按展示顺序是一种监督,按反馈强度重排是另一种监督,两者加权求和即可显著提升。零额外数据成本。
10.2 局限与争议¶
- SPA 的 "Candidate Rollouts" 名不副实。正文写「对每个用户在每个展位做 beam search,把生成的候选组合成去重的 slate 级动作集」,读起来像标准的 on-policy rollout;但附录 5 明确澄清「本文的 candidate rollouts 指的是在策略下评估已记录的曝光 slate,而不是生成新 slate」,动作集 $\mathcal{A}_u\subseteq\mathcal{E}_u$ 完全来自曝光日志,新生成 / 反事实 slate 被排除在奖励校准之外。这个落差不小:SPA 实质上退化成在日志曝光 slate 上的保守 off-policy 重加权,其能力上界被日志覆盖度锁死——它永远学不到「日志里从没出现过的更优 slate 组合」,这恰恰与论文「摆脱候选集约束」的核心主张形成张力。正文与附录的表述应当统一。
- slate 内去重完全没有讨论。GL2P 的 $K$ 个展位在各自 $p_m$ 就绪后独立解码 SID chain,没有任何机制阻止两个展位解出同一个 item。论文全文未提及这个问题(Figure 1 的 "Non-Duplicate Slate-Level Action" 说的是动作集内 slate 去重,不是 slate 内 item 去重)。这是并行/流水线解码路线的经典陷阱,DIRECTOR 用最优传输显式解决,NAR4Rec 用 masking + 对比解码解决,OGR 却连提都没提——工程上大概率有兜底逻辑,但论文没有交代。
- +48.2% 的离线增益幅度存疑。所有生成式 baseline 都被限制在 32 MB 参数量下复现,TIGER 甚至跌到全表最差(低于 Caser),这不太符合公开文献里 TIGER 的一般表现。在这个偏紧的预算下,OGR 自己的三段式结构(tokenizer + 规划器 + 解码器)是否获得了额外的隐性容量优势,论文没有澄清。
- 组件多但缺少交叉归因。OGR = TUSID + GL2P + SPA,每块内部都有消融,但两个消融表用了不同数据集(Table 3 在 KuaiRec,Table 4 在 Industrial),无法回答「TUSID 的增益在多大程度上依赖 GL2P」这类交叉问题。Table 2 显示换成 RQ-KMeans SID 时 NDCG@5 从 0.130 掉到 0.116(−11%),Table 4 显示去掉规划器 NDCG@5 掉 43%——量级差异很大,但缺少统一坐标系下的完整归因。
- 主要收益指标的口径偏软。线上 A/B 里涨幅最大的是评论(+2.954%),而作为标题指标的有效播放只有 +1.120%,点赞更是只有 +0.505%。没有报告负向指标(如人均时长、留存、负反馈率),也没有报告 slate 多样性的线上变化——考虑到辅助奖励里多样性占 0.90 的权重,这一项的线上效果本应是重点验证对象。
- 工业数据集不可复现。工业集贡献了最亮眼的 +48.2%,但数据、reward schema(附录明说因保密无法完整披露)、以及现有对照系统的细节都不可得。KuaiRec 上的 +27.2% 才是可复现的部分。
- 推理时的规划器仍是自回归的。$p_m$ 依赖 $p_{m-1}$,所以规划链本身还是 $K$ 步串行;OGR 消除的是「$K\times D$ 串行」中的 $D$ 倍数,而非 $K$ 这条链。在 slate 变长(如 $K=10,20$)时,$O(K+D)$ 里的 $K$ 项会重新成为主导,加速比 $KD/(K+D)$ 也会趋近于 $D$ 的上界(本设定下即 4×)。这条路线在长 slate 上的扩展性有天花板。
10.3 与已有工作的定位¶
OGR 处在 OneRec 谱系的直接延长线上:共享 RQ-KMeans 量化、共享「端到端生成式取代级联」的主张、共享「生成后接偏好对齐」的两段式训练。它相对 OneRec 的实质推进有两点——把生成单元从 item 抬到 slate(用显式的 list-wise 规划器建模跨展位依赖),以及把 SID 构造从纯语义/协同对齐改成证据加权的显式局部共现注入。相对 TIGER 谱系,OGR 完全放弃了 RQ-VAE 的重建目标路线,站在 QARM / OneRec 的 RQ-KMeans 一侧。
从范式命名上看,「Once Generated, Ranked」是对 Gryphon / OneRank / UniSGR 这类 "generate-then-rank"(生成候选后再挂一个打分模块重排)路线的明确反对:那条路线承认生成模型排序能力不足因而补一个 ranker,OGR 则主张把排序能力直接内建进生成过程(通过 list-wise 规划器 + slate 级对齐)。Table 1 中 OneRec「Hit Rate 强但 NDCG 弱」的现象,恰是 generate-then-rank 路线存在理由的实证;OGR 的贡献在于说明这个缺口也可以在生成侧内部补上,而不必外挂一个 ranker。这个分歧点值得持续跟踪。