RSO:对话推荐开始把“怎么聊”拆成可学习的策略规划器

背景

补完站里现有的 SAPIENT / ChatCRS / CRAVEECPORec-R1 / Rank-GRPOUSB-Rec 之后,站里对对话推荐这条线已经有了几块比较清楚的拼图:

  1. 有的方法在做多轮 planning。
  2. 有的方法在做 turn-level 或 rank-level RL 对齐。
  3. 有的方法让 simulator 负责构造 preference 或做 test-time judge。

但这些线拼到一起后,仍然留着一个一直没被单独写成系统位的问题:

对话推荐里的“怎么聊”,到底是谁在学?

过去很多公开方法虽然也会:

  1. 在 prompt 里写 strategy instruction;
  2. 让模型自己决定什么时候追问、什么时候解释;
  3. 或在 tree search 里隐式探索对话分支;

但它们往往没有把 interaction strategy 本身单独立成一个可学习 policy。

这一轮我先用 arXiv export API 做差集候选发现,再回到一手论文、PDF、GitHub API 与中文传播层检索做定向核验,最终锁定:

  1. Reinforced Strategy Optimization for Conversational Recommender Systems via Network-of-Experts
  2. 2509.26093 PDF
  3. 2509.26093 arXiv HTML

核完之后,我更愿意把它记成:

对话推荐开始把“怎么聊”拆成可学习的策略规划器

核心判断

这条线真正新增的,不是“又一个 CRS 模型”,而是 interaction strategy 开始从静态 prompt 里脱身

RSO 最重要的一点,是它没有把策略继续写成 prompt 附件,也没有只把推荐 success 当成最后一轮 response 的副产品。

论文明确把任务拆成两个层次:

  1. macro-level strategy planning
  2. micro-level strategy adaptation

宏观层先决定这一步到底该:

  1. recommend
  2. explain
  3. encourage
  4. opinion inquiry
  5. experience inquiry
  6. rephrase preference
  7. 以及其他 sociable / non-strategy 行为

也就是说,它先把“这一步应该以什么交互姿态推进对话”单独抽成了一个显式决策。

这件事看起来像小改动,但系统意义非常直接:

CRS 终于开始把“推荐什么”和“怎么把推荐推进到被接受”拆成两个 owner。

如果不单独把这一层记出来,后面再把 PCCRS 这种 strategy-conditioned prompt、SAPIENT 这种 planning+search、ECPO 这种 turn-level 对齐 和 Rank-GRPO 这种 rank-level 对齐 放在一起时,就会继续把它们都写成“会多轮对话”的同一类系统。

它最关键的结构,不是 NoE 这个名字,而是 Planner -> Actor 的宏微观分工

RSO 的实现用的是一个很明确的 Network-of-Experts

  1. Planner Expert
  2. Preference Reasoner Expert
  3. Fact Retriever Expert
  4. Actor Expert
  5. Reward Expert

但真正值得记住的,不是“它用了多个 experts”。

更重要的是它怎样划 owner:

Planner

  1. 只负责选宏观策略。
  2. 输出是策略类型,不是完整用户回复。

Preference Reasoner

  1. 从完整对话历史里显式推断当前用户偏好。
  2. 把原本散在多轮对话里的隐式信号压成结构化文本上下文。

Fact Retriever

  1. 先做 embedding-based entity retrieve。
  2. 再去知识图里取 item factual evidence。

Actor

  1. 不直接自由发挥。
  2. 而是拿着 macro strategy + inferred preference + retrieved facts 去生成最终回复。

这意味着它补出的不是一般意义上的 reasoning + retrieval + generation

它真正补出的,是:

macro policy 决定交互姿态,micro experts 决定策略如何被用户化、事实化。

这和很多现有 CRS 路线差别很大。很多方法虽然也会:

  1. 读历史;
  2. 做检索;
  3. 生成回复;

但没把“策略选择权”单独抽出来。

RSO 恰恰把这层从 response generator 里剥开了。

它最值得单独记的系统契约,是 planner-only optimization contract

这篇 paper 里最不该被忽略的地方,在 III-D

作者没有选择联合训练整套系统,反而明确说:

  1. Actor
  2. Preference Reasoner
  3. Fact Retriever

全部固定,只优化 Planner

原因也写得很清楚:

  1. 如果联合优化,搜索空间会过于耦合;
  2. response generation / preference reasoning / factual grounding 已经可以由现代 LLM 通过 in-context learning 相对稳定完成;
  3. 真正最难、最依赖用户差异、也最需要被显式学出来的,是 什么时候推荐、什么时候澄清、什么时候解释 这一层宏观策略。

所以这条线的学习过程被拆成两段:

  1. 先用 annotated strategy 做 SFT,给 Planner 一个强 planning prior;
  2. 再用 entropy-regularized policy gradientLLM-as-a-judge reward 做策略探索。

这里真正新增的系统位不是“也用了 RL”。

而是:

RL 在这里主要服务 strategy planner,而不是直接服务 response generator。

这会直接改写 Story Lab 现有 CRS 图里的几个观察维度。后续至少要补:

  1. strategy owner
  2. macro-micro split
  3. planner-only optimization contract
  4. grounding consumer

否则 plannerreasoneractorrank-level aligner 会再次被混成同一种对话推荐训练器。

entropy-regularized RL 在这里修的,不是一般的探索不足,而是 strategy collapse

论文 V-B2 给了一个很关键的分析:只做 SFT 时,Planner 会明显偏向少数安全策略,比如 CredibilityOpinion Inquiry

结果就是:

  1. 对话会越来越重复;
  2. 很多本来有价值的策略很少被激活;
  3. 系统会过度依赖“看起来总没错”的模板行为。

作者用 entropy regularization 去做的,其实不是泛泛的 exploration boost,而是更具体的:

防止策略分布塌到少数安全默认值。

论文图里明确写出,加入这层之后:

  1. Rephrase Preference
  2. Preference Confirmation
  3. Similarity

这些之前低频的策略会重新被拉回活跃区间。

所以这条线还补出了另一个此前站里没被单独命名的观察位:

strategy-collapse control

因为对话推荐里的策略学习,和 item ranking 一样,也会出现一种独立的 collapse:

不是 item collapse,不是 reward hacking,而是 interaction style collapse

结果说明它补出的不只是“对话更自然”,而是 recommendation success 也被一起拉高

RSO 的结果不只是 conversational nicety。

Table IVTable V 说明它同时抬了对话质量和推荐结果。

Inspired / ReDial 上,RSO 做到:

  1. WI 3.8788 / 3.8393
  2. Conv-SR 0.9798 / 0.9798
  3. Rec-SR 0.535 / 0.566
  4. Recall@1 0.758 / 0.742
  5. Recall@5 0.889 / 0.884

如果只看 recommendation success,这组结果也不轻:

  1. Inspired 上相对 UniCRS 的整体提升最高到 84.5%
  2. ReDial 上相对 UniCRS 的整体提升最高到 12.3x

更重要的是 ablation 把每个 expert 的系统职责钉得很清楚:

Fact Retriever

  1. InspiredCredibility 2.73 -> 3.83
  2. ReDialCredibility 2.76 -> 3.63

Planner

  1. InspiredConv-SR 0.92 -> 0.98
  2. ReDialConv-SR 0.94 -> 0.98

Preference Reasoner

  1. InspiredConv-SR 0.94 -> 0.98
  2. ReDialConv-SR 0.96 -> 0.98

这意味着它不是靠某个单点 trick 提升,而是把:

  1. 何时切换策略
  2. 如何读出用户偏好
  3. 如何让回复有事实支撑

这三件事正式拆成了互相配合的系统位。

对 Story Lab 的意义

RSO 最值得留下来的,不是一套新的 benchmark 结果,而是一组新的 CRS 观察位:

  1. strategy owner:策略到底是 prompt 的一部分,还是独立 policy
  2. macro-micro split:系统有没有把“选策略”和“生成回复”拆成两层
  3. planner-only optimization contract:RL 到底更新谁
  4. strategy-collapse control:方法有没有显式避免策略分布塌缩
  5. grounding consumer:偏好推断和事实检索最终是给谁消费

否则后面继续写:

  1. PCCRS
  2. SAPIENT
  3. ECPO
  4. Rank-GRPO
  5. USB-Rec
  6. RSO

这些方法时,图会重新变粗。

更具体地说,这篇 paper 让我更确信,对话推荐里至少已经出现了三种不同的 policy owner:

  1. search/tree owner
  2. rank-level alignment owner
  3. strategy planner owner

RSO 代表的是第三种。

公开边界与中文传播层

这条线当前的公开边界也要写准。

我这轮直接做了 GitHub API 检索,按:

  1. 论文全标题
  2. 2509.26093
  3. Network-of-Experts conversational recommender

三组关键词继续查,截至 2026-03-24 都没有看到稳定官方 repo。

因此当前更适合把它记成:

paper-first strategy-planner route

中文传播层也还比较薄。

本轮继续补做:

  1. "2509.26093" 中文
  2. "Reinforced Strategy Optimization for Conversational Recommender Systems via Network-of-Experts" 中文
  3. site:xiaohongshu.com "Reinforced Strategy Optimization" 推荐
  4. xhslink Reinforced Strategy Optimization

稳定能回出的中文入口主要还是:

  1. ChatPaper 的中文摘要页

但它本质上仍是二手自动摘要,事实判断还是应该回到 arXiv 论文和 PDF。

截至 2026-03-24,围绕这篇 paper 仍没有拿到稳定高价值 xhslink

参考来源

下一步

  • SAPIENT / PCCRS / ECPO / Rank-GRPO / RSO / USB-Rec 压到同一张对话推荐观察表里,新增 strategy owner / macro-micro split / planner-only optimization contract / strategy-collapse control / grounding consumer 五列。
  • 继续追这条线是否会公开官方代码,尤其是 Planner 的具体训练接口和 reward prompt。
  • 若后续出现更多中文材料,再比较 RSOPCCRS 在“strategy 是 prompt condition 还是可训练 policy”上的公开分叉。