ILRec:推荐里的 preference learning,不一定只看序列级 rejected,也可以从中间层直接抽 token 级 self-hard negatives
背景
补完 S-DPO、SPRec、RosePO、NAPO 和 ReRe 之后,站里已经能分清:
- negative 是谁提供的
- multiple negatives 在 loss 里怎样耦合
- negative 怎样高效扩容
- 不同 value axis 是否该配不同 rejected
- on-policy sampling 之前是否要先把 valid item space 约束住
但这一轮继续沿 recommendation + intermediate hard negatives + preference learning 做候选筛选时,我发现这里还缺一个更靠近模型内部、也更容易被忽略的位:
negative 不一定来自外部 sampled items,也可以直接从模型中间层 logits 里长出来。
如果这层不单独拆出来,后面很容易继续把下面几类方法粗写成同一种“推荐里的 DPO / preference optimization 变体”:
S-DPO重点解决的是 multi-negative 的竞争几何SPRec重点解决的是 negative sample ownerNAPO重点解决的是 negative coverage efficiencyRosePO重点解决的是 value-axis-specific rejected samplingILRec则重点解决negative extraction locus
还有一个很实际的命名陷阱也要先拆开:
ILRec 不是站里之前写过的 IL-Rec。
前者说的是:
从中间层抽 self-hard negatives 做 preference fine-tuning
后者说的是:
让 LLM 先当 demonstration teacher,再退场给 RL student
这一轮我直接回到一手材料做核验,最终锁定:
Improving LLM-based Recommendation with Self-Hard Negatives from Intermediate Layers2602.17410arXiv HTML2602.17410PDF- GitHub 仓库搜索:
"Improving LLM-based Recommendation with Self-Hard Negatives from Intermediate Layers"
核完之后,我更愿意把它记成:
推荐里的 preference learning,不一定非要先构造序列级 rejected,也可以直接在中间层里抽 token 级 self-hard negatives。
核心判断
这条线真正新增的,不是 another DPO trick,而是 negative extraction locus
现有 preference optimization 方法,默认都会先构造某种 item-level 或 sequence-level rejected:
- 随机负样本
- self-play 生成结果
- batch 内共享出来的 negative items
- value-axis-specific rejected sampling
ILRec 追问的则更靠前:
为什么 negative 一定要先长成完整 item sequence,不能直接从当前模型内部的 token 分布里取?
论文摘要、Section 1-2 和 Figure 1-3 的回答很明确:
- 推荐任务的 negative item space 很大,sequence-level negatives 往往过粗
- 离线采好的 negatives 会随着训练发生 distribution shift,越来越不 informative
- 中间层本身就是“比 final layer 弱、但又有足够预测能力的 non-expert models”
- 因而可以直接把中间层里高概率、但非 ground-truth 的 token 抽出来,当作
self-hard negative signals
这会逼着 Story Lab 以后在 DPO / preference alignment 观察表里单独补一列:
negative extraction locus
否则 SPRec / NAPO / RosePO / ILRec 还是会继续被写成同一种“只是 negative 来路不同”。
CPO + CPD + CRR 让这条线不只是“抽内部 logits”,而是形成了一条完整训练契约
ILRec 不是只在中间层拿几个高概率 token 出来惩罚一下。
它把整条链路拆成三段:
CPO:把 self-hard negative token 作为 penalty coefficient 注入最终层的交叉熵CPD:让 final output layer 反过来蒸馏 intermediate layers,保证这些 negatives 不是噪声CRR:再用一个轻量CF模型给 token 分配 reward,缓解 false negatives 被过度惩罚
正文 2.3-2.4 和附录 A.1 还把实现边界写得很清楚:
- backbone 用的是
Llama3.1-8B CRR里选的是SASRec- 训练跑在
8张A100 40GB
所以它补出的不只是内部负样本,而是一整条此前站里没单独记开的位:
intermediate-layer teacher-student loopfalse-negative guardtoken-level reward regularization
这和 NAPO 那种外部辅助模型决定 dynamic γ 的路数不同,也和 SPRec 的 self-play negative owner 不同。
Table 1 说明 internal token negatives 在 full ranking 下已经能系统性赢过现有 sequence-level baselines
这篇 paper 最值得留下来的第一层,是它不是只在单一数据集上碰巧有效。
Table 1 给出的主结果非常整齐。
在 BIGRec 范式下:
Instrument的Hit@10 / NDCG@10从0.1004 / 0.0799提到0.1091 / 0.0856Art从0.0979 / 0.0768提到0.1045 / 0.0852Game从0.0677 / 0.0481提到0.0709 / 0.0511
在 LC-Rec 范式下:
Instrument从0.1062 / 0.0832提到0.1143 / 0.0889Art从0.1045 / 0.0778提到0.1118 / 0.0821Game从0.0984 / 0.0561提到0.1075 / 0.0600
更关键的是,同表里已经放着 RosePO / SDPO / SPRec。
也就是说,这不是“比传统 SFT 稍微好一点”,而是:
在 full-ranking sequential recommendation 设定里,internal token-level negatives 已经能稳定压过几条更典型的 sequence-level preference baselines。
所以这条线最值得长期记住的,不是“中间层也能用”,而是:
negative extraction locus 这件事本身,已经足以改变最终 ranking quality。
Table 3 和附录说明,真正值钱的不是任何 logits,而是 intermediate layers 这一层
如果只是“从模型内部抽 negative”,那 final layer 自己的 logits 也能做这件事。
但 ILRec 的 ablation 恰好把这层拆开了。
Table 3 在 BIGRec / Instrument 上给出:
- 完整
ILRec:Hit@10 = 0.1091 - 去掉
CPO:降到0.1068 - 去掉
CPD:降到0.1051 - 去掉
CRR:降到0.1078 - 同时去掉
CPO + CPD:进一步掉到0.0996 - 去掉 cross-layer negative signals:
0.1059 - 只用 final layer negative +
CPO:0.1029 - 只用 intermediate layer negative +
CPO:0.1048
这组结果把几个点写得很清楚:
CPO / CPD / CRR都不是配角- 真正值钱的不是“任意层的 logits”,而是
intermediate-layer negatives - final layer 自己直接拿来做 negative extraction,反而更弱
附录 Table 8 还继续把这层拆细:
- 最优的是靠近 final layer 的连续深层
- non-consecutive layers、medium layers 和 shallow layers 都更差
所以这条线真正新增的,不只是 token-level negatives,还包括一个更细的观察位:
negative extraction depth
它补出的还有一条很少被单独写开的结论:stay-in-SFT 可能比单独 preference / rollout stage 更合算
这篇 paper 另一个很值得长期记住的地方,是它没有把自己写成“更复杂的新阶段”,而是反过来把 preference learning 收回到了 SFT 内部。
Table 5 的效率对照非常直白。
在 Instrument 上:
S-DPO:7.25hRosePO:6.6hSPRec:7.8hILRec:4.2h
在 Art 上:
S-DPO:10.25hRosePO:9.53hSPRec:11.5hILRec:7.46h
原因也写得很明确:
- 它不需要额外 preference alignment stage
- 不需要 rollout 采样
- 不需要为每个 negative 做额外 forward
而附录 Table 7 又给出一个更值得记住的对照:
ILRec:Hit@10 / NDCG@10 = 0.1091 / 0.0856,训练4.1hRLVR:0.1054 / 0.0817,训练6.5hRLVR-reasoning:0.1062 / 0.0835,训练10.6h
这说明在当前这类 full-ranking sequential recommendation 场景里,一个非常值得单独沉淀的判断是:
在真的上 rollout 之前,internal negative extraction 仍然是一条又便宜又强的中间路线。
这会逼着 Story Lab 后续再补一个新列:
stay-in-SFT efficiency
否则 ILRec、S-DPO、SPRec 和简单 RLVR 之间的训练边界会继续被混写成“反正都在做 preference optimization”。
公开边界要写准:这是人大 + 美团的 paper-first 路线,repo 和中文传播层都还弱
这篇 paper 的工业信号并不弱。
作者表直接写了:
Renmin University of ChinaMeituan
arXiv 摘要页显示提交日期是 2026-02-19。
但公开边界目前仍要写得保守。
我这轮按:
- 论文全标题
ILRec recommendation intermediate layers- arXiv id
2602.17410
去做 GitHub API 精确和模糊检索,截至 2026-03-25 都没有看到稳定官方 repo。
中文传播层也明显偏弱。
继续补做:
- 论文全标题中文检索
2602.17410 中文site:zhihu.com 2602.17410site:weixin.qq.com 2602.17410site:xiaohongshu.com 2602.17410xhslink 2602.17410
稳定结果仍主要停留在 arXiv 原文、镜像页和弱聚合页,没有拿到稳定高价值中文机制稿或可复用小红书线索。
因此当前更准确的定位是:
paper-first intermediate-layer negative-extraction route
证据与来源
- 一手论文入口:
Improving LLM-based Recommendation with Self-Hard Negatives from Intermediate Layers、arXiv HTML、PDF - 发表时间与作者边界:arXiv 摘要页可直接核到提交日期
2026-02-19;PDF 首页可核到作者来自Renmin University of China与Meituan - 关键机制:
Section 2与Figure 1-3明确写出intermediate-layer self-hard negatives -> CPO -> CPD -> CRR这条主链,CRR还明确依赖轻量CF模型缓解 false negatives - 关键结果:
Table 1给出BIGRec / LC-Rec在Instrument / Art / Game三个数据集上的 full-ranking 指标;Table 3给出CPO / CPD / CRR / CNS的 ablation;Table 5给出与S-DPO / RosePO / SPRec的训练时间对比;Table 7给出与RLVR / RLVR-reasoning的性能-时间对比 - 实现边界:PDF 附录
A.1明确写出 backbone 为Llama3.1-8B、CRR中使用SASRec、训练跑在8张A100 40GB - repo 检索:GitHub 精确标题搜索当前仍未回出稳定官方仓,可作为“截至
2026-03-25仍无稳定 repo”的辅助证据 - 中文传播层:截至
2026-03-25,继续补做中文题名、site:zhihu.com / site:weixin.qq.com / site:xiaohongshu.com与xhslink检索后,仍未拿到稳定高价值中文机制稿或可复用小红书线索
下一步
- 把
ILRec / S-DPO / SPRec / NAPO / RosePO / ReRe / DPO4Rec压到同一张DPO / preference alignment观察表里,新增negative extraction locus / sequence-vs-token comparison unit / false-negative guard / intermediate-layer teacher-student loop / stay-in-SFT efficiency五列 - 把
ILRec和IL-Rec这对名字相近但系统位完全不同的方法单独拆开,避免后续在LLM-RL主线里把intermediate negatives和demonstration teacher混成一类 - 继续追中文传播层和公开仓;如果后续出现作者解读、代码仓或稳定
xhslink,再回头修正公开边界