Think Harder Where It Matters: Item-Level Adaptive Recursion for Sequential Recommendation
Zhanshuo Cao, Jiakai Tang, Yuqi Zhou, Sunhao Dai, Jun Xu
cs.IR, cs.AI, cs.CL, cs.LG
2026-10-22
人大 LoopRec 用共享递归块和逐商品早退门换掉固定深度。三个 Amazon 类目、四种骨干共 48 组对比全部为正,Patio 上 NDCG@20 平均提升 11.14%,计算量约为固定深度的 0.41 到 0.76 倍。
序列推荐按时间读完交互历史,再预测下一个商品。从 SASRec 到 LRURec,骨干差很远,默认却一样:每个历史位置走相同层数。重复购买几乎不带新信息,偶发探索和刚发生的点击才定当前意图。固定深度让简单位置空转,关键位置又算不够。
诊断做在训好的三层 SASRec 上,数据是 Amazon Office。饱和深度指把某商品在第 ℓ 层之后的更新冻住,其余位置照常算,Top-30 集合不变的最早层。76.14% 的商品第 1 层就饱和,93.28% 到第 2 层为止,只有 6.72% 跑满 3 层。浅的和深的经常出现在同一条序列里。
第二个诊断冻住参数,只改最近 5 个位置的退出层。能看到真实下一商品的 oracle 选出排序最好的组合。固定深度仅在 4.6% 的测试序列上最优。相对固定深度,NDCG@20 提高 7.1%,MRR@20 提高 6.5%,HR@20 提高 8.8%。这是偷看标签的上界。LoopRec 要在没有深度标签的前提下,把每个位置走多深学出来。
两件事挡住逐位置变深度。出来的向量得落在同一打分空间。一个位置够不够,要等它再吸收一轮上下文。LoopRec 把同一骨干块反复套用,记成 LxRy:每轮 x 层、最多 y 轮。参数共享后,早退和晚退仍在同一特征空间。
前向分三步。先对整段历史做一次共享编码,门只看上下文状态。每个递归边界用轻量二值门打分:当前位置状态加上可学习的轮次嵌入,退出概率取 sigmoid 的补,不低于 0.5 就停,状态冻住。没停的位置保持原顺序,在因果掩码下再进同一块,继续集合逐轮缩小,最后一轮强制全停。停在第 r 轮,相当于编码了 r 乘每轮层数。读出时把该深度隐状态乘上随深度变化的权重,残差加回输入,再去预测下一商品。
预测损失仍是下一商品交叉熵。负载均衡项惩罚所有位置挤进同一深度。z-loss 防止门在表示未稳时锁死。开训先预热若干轮,全部位置强制走满,路由正则关掉,轮数按验证集 NDCG@20 选。
和 Mixture-of-Recursions 相比,这里不做每步的 top-k 截断,也不事先指定总深度。SASRec、BSARec、NextItNet、LRURec 都能换上。
评测用 Amazon Reviews 2023 的 Software、Office、Patio,留一法切分,历史最长 50,全库排序,只保留至少 10 次交互的用户。Patio 最稀疏,达 99.96%,商品 37,179 个,平均历史 15.85。指标是 MRR 与 NDCG 的 @10 和 @20,五次运行取均值,并与同配置的固定深度骨干做配对 t 检验。
48 组对比全部为正,其中 44 组 p<0.05,相对涨幅从 0.69% 到 49.07%。按骨干平均,NDCG@20 提升为 Software 3.92%、Office 4.55%、Patio 11.14%。
| 骨干 | 数据集 | 固定深度 NDCG@20 | LoopRec | 相对提升 |
| SASRec | Software | 0.0944 | 0.0998 | +5.68% |
| SASRec | Office | 0.0582 | 0.0595 | +2.20% |
| SASRec | Patio | 0.0448 | 0.0458 | +2.19% |
| BSARec | Patio | 0.0453 | 0.0469 | +3.48% |
| LRURec | Software | 0.0958 | 0.1001 | +4.51% |
| NextItNet | Patio | 0.0192 | 0.0263 | +37.02% |
SASRec 的 NDCG@20 相对提升在 2.19% 到 5.68%,BSARec 在 0.97% 到 3.48%。BSARec 在 Office 的 NDCG@10 与 @20 只增加 0.92% 和 0.97%,未达显著。LRURec 的 NDCG@20 提升 1.85% 到 4.51%。NextItNet 在 Patio 从 0.0192 到 0.0263,Office 增加 13.18%。Patio 上 NextItNet 固定深度只有 0.0192,SASRec 固定深度已是 0.0448,大百分比来自弱基线。
近期位置在路由和饱和深度探针里都更深。Office 上,训练中只出现 1 次的商品平均深度 2.160,分到深度 4 的占 29.1%;出现至少 100 次的平均深度 1.330,88.6% 停在第 1 层,深度 4 只剩 10.7%。越近的时间等分,平均轮次越高。三层 SASRec 里,最近四分位的平均饱和深度 1.76,更早三段是 1.16、1.17 和 1.20,满深度占 30.3%,几乎都在最近一段。
序列级循环把整段反复送进同一块,没有逐位置早退。它在 Software 和 Office 上超过原版 SASRec,Patio 上没有。LoopRec 三个集都最高。Software 的 NDCG@20 从序列级循环的 0.0950 升到 0.0998;Office 上是 0.0595 对 0.0594。去掉预热,MRR@20 平均降 4.03%,NDCG@20 平均降 3.11%。两项正则一起去掉,MRR@20 平均降 5.36%,NDCG@20 平均降 4.25%。所选计算量是固定深度的 0.407 到 0.755 倍,编码器延迟是 0.869 到 0.995 倍。
骨干结构和下一商品交叉熵都可以不动,改的只是每个历史位置走几层。四种骨干都能套上,增益跟着分配方式走。
强骨干上 NDCG@20 多出来大约 2% 到 6%,是渐进改进。路由器把更深的计算分给近期和低频商品,高频、更早的交互提前停,方向与饱和深度一致。Office 配 SASRec 时,LoopRec 高于按位置或按频率手写的规则,具体数字在附录。
计算量降到固定深度的 0.407 到 0.755 倍,延迟仍有 0.869 到 0.995 倍。服务若卡在墙钟,这一版省不下多少时间。最大递归轮数在训练前就定死。
诊断和路由分析集中在三层 SASRec 与 Office。饱和深度只守住 Top-30 集合,内部名次可以变。oracle 只搜最近 5 个位置,并且看得到真实下一商品,HR@20 提高 8.8% 是上界。LoopRec 在同一数据上只把 SASRec 的 NDCG@20 抬高 2.20%,没有和这个上界对齐比较。
Patio 上 NextItNet 的绝对 NDCG@20 仍是 0.0263,低于 SASRec 固定深度的 0.0448。48 组里 4 组不显著,即 Office 上 BSARec 的两项 NDCG,以及 Patio 上 LRURec 的两项 MRR。Office 上序列级循环与逐位置路由的 NDCG@20 差 0.0001,精度多半来自共享递归,早退更主要在省计算。已停位置不再进入后面的块,长依赖是否受损没有单独测量。最大轮数训练前写死。三个类目同一套 Amazon 预处理,没有在线实验。