CoNRec:推荐里的 LLM-RL,开始显式补负反馈过滤层

背景

补完 R2RankDeepRecVRec 和跨域新闻推荐里的 query carrier 之后,我原本已经比较习惯这样理解推荐里的 RL

  1. 要么直接优化正向推荐列表。
  2. 要么控制 reasoning / tool-use 轨迹。
  3. 要么把推荐信号压成 profile、verbalized context 或 retrieval query。

但这轮用 arXiv API 按 recommendation + reinforcement learning + large language model 做增量检索,再回到论文摘要页、arXiv HTML、PDF 和 GitHub API 做定向核验后,我补到一个此前还没进 Story Lab 的入口:

  1. CoNRec: Context-Discerning Negative Recommendation with LLMs

核完之后,我更倾向于把它记成:

推荐里的 LLM-RL,不只在学“该推什么”,也开始显式学“哪些东西该被过滤掉”

也就是:

negative-interest modeling + offline filtering

核心判断

CoNRec 的关键,不是又一个负采样 trick,而是把负反馈建模单独做成系统层

这篇论文最值得单独记住的点,不是“推荐里也可以用 dislike signal”。

真正重要的是,它把负反馈从正向推荐任务的附属信号,推进成了一个独立 consumer:

  1. 输入不是纯正向历史,而是 negative feedback + positive interactions
  2. 输出也不是正向 slate,而是一组“用户可能不想再看到”的 item。
  3. 最终部署位置不是替代 ranker,而是作为现有排序系统的 offline filter

这和此前站里已经记过的大多数路线都不一样。

OneRec / GR4AD / R2Rank 主要还是在修正向推荐产出。

DeepRec / RecThinker 更像在修桥接、tool-use 和中间推理。

CoNRec 则是在补另一条此前没有单独成层的路线:

negative-interest filter

如果不把它单独记出来,后面很容易把它误写成普通负样本构造、普通 rerank penalty,或者普通“加一点 dislike feature”。

这条线的起点,是论文先证明了 next negative item 本身很脏

CoNRec 的动机实验很关键,因为它没有默认接受传统 next-item prediction 这套训练对象。

论文 Figure 2 直接给了两组很硬的数字:

  1. 只看下一个 negative item 时,它只覆盖用户主负兴趣的 7%,Top-4 也只有 17%
  2. 把 horizon 扩到未来 7 天后,主负兴趣覆盖升到 18%,Top-4 升到 48%

这说明负反馈场景里的一个核心问题是:

系统已经把用户讨厌的东西过滤掉了,所以“下一个负反馈 item”未必代表用户真正的负兴趣,只代表系统还放出来了什么。

这和正向推荐里“下一个点击 / 购买通常能代表兴趣”完全不是一回事。

因此 CoNRec 做的第一件事,不是把已有正向目标翻过来,而是先改 Ground Truth Set,把目标从:

single next negative item

改成:

future negative items + collaborative negative items

这也是它为什么要把 reward 重新设计一遍。

它还证明了:在负反馈场景里,正向上下文不是天然有益,反而会淹没真正的负信号

这篇 paper 的第二个关键实验,是它直接挑战了“上下文越多越好”。

论文 Figure 2(b) 写得很明确:

  1. negative 序列本来就远短于 positive 序列。
  2. 把 positive history 一起喂进去后,模型注意力会被长得多的正向上下文吞掉。
  3. LC-Rec 上,negative + positive 相比 negative onlyHR@20 直接掉了 45%,candidate accuracy 掉了 50%

这组结果很重要,因为它说明:

负反馈任务里,“把所有历史都扔给 LLM”并不是一个稳妥默认值。

所以 CoNRecProgressive GRPO 不是花哨训练名词,而是在修一个很具体的问题:

怎样逐步引入上下文,而不是一开始就让正向历史把负向兴趣冲掉。

论文把这件事拆成了三段:

  1. 先只用过去 3 天的负反馈序列。
  2. 再扩到完整负反馈序列。
  3. 最后再把正向历史加进来。

这让它更像一种:

negative-context curriculum

而不是普通 GRPO 套皮。

整条 pipeline 的真正结构,是 semantic compression -> item alignment -> progressive GRPO

CoNRec 不是只在 reward 上改了一点。

论文 Figure 3 写得很清楚,它至少有三层连续结构:

  1. Context Compression

用多模态 encoder + RQ-VAE 把 title / image 压成 hierarchical semantic ID,避免商品文本过长、冗余和冷启动 item 不可生成的问题。

  1. Context Understanding

先做传统 SID <-> title 双向翻译,再额外做 item-level alignment,强迫模型区分“同一用户会买的 item”和“同一用户会点不感兴趣的 item”。

  1. Context Utilization

再进入 Progressive GRPO,用扩展过的 Ground Truth Set 和 future positive penalty 去训最终 policy。

这让它和普通“给 LLM 一个用户画像,让它猜用户不喜欢什么”的 prompt baseline 已经不是同一种对象。

更准确的说法应该是:

CoNRec 在把 negative recommendation 写成一条独立的训练栈,而不是一条推理时 prompt trick。

它最值得记的 reward 设计,是把 future positive 也拉进来做惩罚

CoNRec 对 reward 的处理也很有启发,因为它没有停在“未来负反馈越像越好”。

论文 Table 4 比较了几种 reward scheme,最终最好的是:

future negative similarity - future positive similarity penalty

对应的 scheme (c) 指标是:

  1. FHR@20 = 0.0441
  2. LUF@20 = 0.0297
  3. LIF@20 = 0.0496

而只看 future negative 的 scheme (a) 则是:

  1. FHR@20 = 0.0434
  2. LUF@20 = 0.0268
  3. LIF@20 = 0.0452

这说明这条线不是单纯把更多负反馈聚过来,而是在明确学:

哪些 item 像用户将来会厌恶的东西,同时又要避开那些将来仍可能被用户正向接受的东西。

所以它更像:

negative-interest boundary modeling

而不是普通 hit-based 负向预测。

它最终消费的位置,不是替换现有 ranker,而是作为 ranking 之后的过滤器

这篇论文最容易被忽略,但对系统角色最关键的一点,在 Figure 4

CoNRec 的工业应用并不是“在线实时生成整条负向列表,再重排全系统”。

它的写法更克制:

  1. 现有 ranking stage 先产出 target item。
  2. CoNRec 根据用户正负历史做 beam search,生成一个 Predict Set
  3. 把 target item 和 predict set 都重建回 embedding。
  4. 如果 target 与任一 predict item 的最大相似度超过阈值,就把 target 过滤掉。

也就是说,它在系统里更像:

post-ranking negative filter

这对 Story Lab 很重要,因为这说明 LLM-RL 在推荐系统里不一定总是一个“主推荐器”。

它也可以是:

用户体验保护层

而且这层当前已经能被写成独立的 offline industrial application

这条线也逼着 Story Lab 重新看负反馈任务的评测口径

CoNRec 还做了一件很值得记的事:

它没有继续用正向推荐里熟悉的 NDCG 当默认总指标。

论文明确说,负反馈过滤任务里传统 NDCG 并不合适,于是它另外引入:

  1. FHR@20

未来 7 天只要命中任一真实负反馈 item 就算 hit。

  1. LUF@20

long-tail user 版本的 FHR@20

  1. LIF@20

long-tail item 版本的 FHR@20

  1. Candidate Accuracy

1 个真负例 + 19 个同日曝光 distractors 组成的 20 选 1 设置里测判别能力。

这意味着 Story Lab 后面记录负反馈相关路线时,不能再默认沿用正向 ranking 的指标习惯。

更合理的记法,至少要把:

ground-truth horizon / future-positive penalty / filter-oriented metric

单独记出来。

主结果说明这条线修的不是局部小点,而是整个 negative filter workflow

这篇 paper 的主结果也很整齐。

正文 Quantitative Results 明确给出,相比 LC-Rec (Neg. Only)CoNRec 达到:

  1. HR@20 +11.5%
  2. FHR@20 +13.7%
  3. LUF@20 +15.1%
  4. LIF@20 +24.9%
  5. Candidate Accuracy +101.3%

如果看 Table 2 的增量消融,这个结构也不是靠单个模块硬抬:

  1. baseline 的 candidate accuracy 是 0.2764
  2. Item Level Alignment 后到 0.5088
  3. 再加 Progressive-Context GRPO0.5476
  4. Negative Future Rewards0.6532
  5. 最后加 Positive Future Rewards0.6950

这说明 CoNRec 修的不是某个单点技巧,而是从上下文组织、目标定义到 reward 边界的一整套负反馈 workflow。

对 Story Lab 的直接影响

补完这篇论文之后,我觉得统一方法表里,集成层 至少还要再补一个位置:

negative-interest filter

否则下面这些会被误写成同一种“推荐里的 RL”:

  1. OneRec / GR4AD 这种正向生成器。
  2. DeepRec / RecThinker 这种 bridge / tool-use 系统。
  3. R2Rank 这种 candidate-level reasoning ranker。
  4. CoNRec 这种 offline negative-interest filter

更进一步说,这条线还逼着 Story Lab 给负反馈任务单独记:

  1. ground-truth horizon
  2. positive-signal penalty
  3. filter-oriented metric

否则 negative recommendation 会被粗暴并入正向 ranking。

公开边界

这条线当前更适合先记成:

paper-first negative-feedback filtering route

我这轮按论文全标题和 arXiv id 2601.15721 做 GitHub API 精确检索,截至 2026-03-22 仍未看到稳定官方仓。

所以当前可以稳定回溯的是:

  1. arXiv 摘要页
  2. arXiv HTML / PDF 正文
  3. GitHub 搜索结果里“暂无官方 repo”这条公开边界

还不能把它写成已公开 workflow。

中文传播层

这一轮我也继续补做了:

  1. CoNRec 推荐 中文
  2. Context-Discerning Negative Recommendation with LLMs 中文
  3. site:xiaohongshu.com CoNRec 推荐
  4. site:xiaohongshu.com 负反馈 推荐 大模型
  5. xhslink 负反馈 推荐 大模型

截至 2026-03-22,稳定结果仍主要是 arXiv 原文页、自动摘要页、日报索引和噪声,没有拿到足够强的中文机制稿,也没有拿到可复用的稳定 xhslink

所以这条线当前仍应以 arXiv 一手材料为准。

证据与来源

下一步

  • CoNRecOneRec / GR4AD / DeepRec / R2Rank 并入同一张结构表,新增 negative-interest filter 这一层,避免把正向生成、bridge、reasoning ranker 和负反馈过滤写成同一种对象。
  • 如果后续出现官方仓、数据接口或线上部署细节,再回头修正这条线的公开边界。
  • 继续跟踪中文传播层是否出现更强的机制稿或稳定 xhslink;当前仍然明显偏弱。