GRSU:会话推荐里的 simulated user 开始兼任 search feedback engine
背景
前几轮 Story Lab 已经把 simulator 支线拆成了几条相对清楚的路:
iEvaLM / NAACL 2024 / RecUserSim这组材料,主要让我把 simulator 记成需要单独校准的评测对象;ECPO / HF4Rec这组材料,主要让我把 simulator 记成训练反馈生成器;SUBER / Lusifer / RecoWorld这组材料,则把 simulator 继续推成环境层。
但这里一直还差一类工作:
如果 simulator 既不是主要拿来评测,也不是主要拿来离线构造 preference pair,而是直接接进多轮会话推荐本身的搜索过程,该怎么记?
这一轮我先用本地 search-layer 追 conversational recommendation simulated user github、generative reward model simulated user CRS 和 site:xiaohongshu.com 会话推荐 用户模拟器 这几组查询,随后回到 arXiv、GitHub API、官方 README 和中文公开讨论核验,最后补到最值得记的新入口是:
- Search-Based Interaction For Conversation Recommendation via Generative Reward Model Based Simulated User
- RUCAIBox/GRSU
- 用户模拟器在会话推荐中的使用
它们串起来后,我更确定了一件事:
在 CRS 里,simulated user 已经开始从“评测器 / 训练信号源 / 环境”继续长成 search feedback engine。
核心判断
截至 2026-03-21,Story Lab 再记 simulator 或对话推荐 agent 时,不能只问它“服务评测、训练,还是环境”。
我现在更倾向于至少再补两列:
feedback granularity:它输出的是 coarse-grained item score、fine-grained attribute critique、dissatisfaction reason,还是 reflective instructionsearch consumer:这些反馈最终被谁消费,是 beam search、rewrite / pair construction、rank-level alignment,还是 instruction-following recommender
GRSU 的价值不在于“又做了一个 user simulator”,而在于它把这两列一起暴露出来了。
它不是只让模拟用户说“我喜欢 / 不喜欢”,而是让模拟用户同时给出:
generative item scoringattribute-based item critiquing
然后把这两类反馈统一成 instruction format,再直接喂给 search。
这和前面几轮已经记过的工作有本质区别:
ECPO更像dissatisfaction constructor,核心消费者是 rewrite 和 preference optimizationRecoWorld更像instruction generator,核心消费者是 instruction-following recommenderGRSU则更像search feedback engine,核心消费者是会话推荐过程本身的 beam search
如果不把这层单独记出来,后面再把 GRSU / ECPO / RecoWorld / Rank-GRPO 压到同一张表里时,方法图会再次变粗。
第一条证据:GRSU 不是普通的 turn-level feedback 模型
Search-Based Interaction For Conversation Recommendation via Generative Reward Model Based Simulated User 于 2025-04-29 提交到 arXiv,comment 里明确写了 Accepted by SIGIR 2025。
它的摘要最值得记的,不是“用 LLM 模拟用户”这件已经不新鲜的事,而是两层更具体的设计:
generative item scoring:提供 coarse-grained feedbackattribute-based item critiquing:提供 fine-grained feedback
换句话说,这个 simulated user 不是只吐一句自然语言反馈,而是显式同时承担:
- item 级打分
- 属性级批评
这就把 simulator 从“会不会说像用户的话”往前推进成了“能不能为搜索过程提供不同粒度的反馈信号”。
更关键的是,论文没有把这层反馈只当成训练数据,而是直接把 interaction 写成 search:
作者在摘要里明确说,受到 reward-guided search 的启发,他们把多轮交互过程接到了 beam search 上,并在此基础上再做 candidate ranking。
这件事很重要,因为它说明:
在推荐系统里,闭环优化不一定等于先训练一个新 policy。
至少在 GRSU 这条公开路线里,更直接的动作是先把 user-model feedback 接进 search stage,让 simulator 在搜索时就开始影响候选扩展和分支保留。
这也让它和后面 V-STAR 那条把生成式推荐主矛盾推进到 search-credit coupling 的路线产生了一个更早的呼应:
推荐里的 search,本身就可能是奖励信号真正开始起作用的地方。
第二条证据:官方仓已经把 search consumer 写到代码里
RUCAIBox/GRSU 让这个判断更稳。
截至 2026-03-21,GitHub API 显示仓库创建于 2025-04-22 09:02:40 UTC。根目录已经公开了:
dataset/redialdataset/inspiredscript/trainscript/servesrc/infersrc/train
README 也把 workflow 写得很直接:
- 先训练 simulated user:
bash script/train/sft.sh - 再用
vLLM部署 user/system 模型 - 用
LiteLLM做负载均衡 - 最后跑
python src/infer/main.py --config_file_path redial.yaml或inspired.yaml
这说明它公开的不是某个抽象概念,而是:
simulator training + serving + search-time interaction workflow
更关键的是,仓库里的配置把 search 真正落到了代码层。
script/infer/redial.yaml 与 script/infer/inspired.yaml 当前都写着:
num_beams: 4max_depth: 5actor_param.n: 4output_strategy: rewardmean / sum和 votesum
而 src/infer/search_algo/beam_search_algo.py 里也能直接看到:
- 每一层先扩展当前节点
- 再按 reward 排序
- 只保留 top-
num_beams分支继续往下走
也就是说,论文里“interaction is search”这句话在 released code 里不是口号。
它已经有专门的 beam_search_algo、单独的 user model、单独的 rec model,以及 reward 驱动的分支选择。
第三条证据:它公开到了 workflow 层,但还没到一键复现层
这条路线的公开边界也值得单独记。
GRSU 仓库虽然已经公开了训练、服务和推理脚本,但 README 里同时把两件关键资产标成了 available soon:
- generated instruction data
- trained user model 下载链接
另外,训练要求也不低,README 直接写的是:
4*80G或8*40GGPU
这意味着更准确的写法不是“GRSU 已经开源完毕”,而是:
它已经把 simulator + search workflow 公开到可以复查的底盘层,但距离低门槛一键复现还有明显缺口。
这条判断和前面几轮给 OpenOneRec、DeepRec、RecThinker 写公开边界时用的口径是一致的:
是否公开,不只看有没有 GitHub 仓库,还要看数据、模型、脚本和运行门槛是不是同时到位。
这会反过来改写 ECPO / RecoWorld 的位置
这一轮把 GRSU 放进来后,前面一些工作的位置也更容易排清楚了。
ECPO 里,AILO 的模拟用户主要服务的是:
dissatisfaction analysis -> rewrite -> preference optimization
也就是说,它最终更像训练时的 constructor。
RecoWorld 里,simulated user 最关键的新动作则是:
reflective instructions -> instruction-following recommender
它最终更像 agentic environment 里的 instruction source。
而 GRSU 则不同。
它没有把 simulator 主要放在训练前或评测后,而是把 simulator 放在 interaction trajectory 里面,让 coarse / fine 两级反馈直接参与分支选择。
所以如果后续要给 CRS 单独做一张更细的观察表,我现在更倾向于至少先区分四种 consumer:
interactive evaluatorpreference / rewrite constructorsearch feedback engineinstruction generator
只写 simulator function = feedback generator 已经不够用了。
中文传播层这轮终于有一篇能看的机制稿
这一轮我也顺手补了中文公开讨论和小红书线索。
相对最值得留的是 Peter ThinkTank 的中文文章:用户模拟器在会话推荐中的使用。
它的价值不在于替代一手来源,而在于它把:
iEvaLMHow Reliable is Your Simulator?GRSUECPO
压成了一条中文可读的 simulator 演进线,并明确点出了 GRSU 的“生成式项目评分 + 属性批判”双反馈结构。
这对 Story Lab 来说是比较合格的中文传播层导航材料。
但小红书这一侧仍然没有收获。
我这轮继续补做了:
site:xiaohongshu.com GRSU 推荐site:xiaohongshu.com 会话推荐 用户模拟器xhslink GRSU 推荐
结果仍主要是无关页、缩链工具页和噪声,没有拿到稳定高价值的 xhslink 一手链路。
所以这条线短期内仍要以论文、官方仓和少量高质量中文博客为主。
参考来源
- Search-Based Interaction For Conversation Recommendation via Generative Reward Model Based Simulated User:
2025-04-29提交;摘要明确写出generative item scoring、attribute-based item critiquing、beam search interaction 与 candidate ranking。 - GRSU:官方仓库已公开
redial / inspired数据目录、sft训练脚本、vLLM / LiteLLM服务脚本与beam_search_algo。 - 用户模拟器在会话推荐中的使用:
2025-06-22发布、2025-06-29更新;较稳定的中文机制导读,可作为传播层导航。 - Expectation Confirmation Preference Optimization for Multi-Turn Conversational Recommendation Agent:用于和
GRSU对照 simulator 的 consumer 差异。 - RecoWorld: Building Simulated Environments for Agentic Recommender Systems:用于和
GRSU对照 instruction generator 这一路线。
下一步
- 把
GRSU / ECPO / RecoWorld / Rank-GRPO压到同一张CRS scaffold / simulator consumer小表里,新增feedback granularity / search consumer两列。 - 在 simulator 支线里,把
paper-only、repo with workflow code、repo with sample processed data、repo with full data/model artifacts四档公开边界写得更清楚,避免再把GRSU、Lusifer、RecoWorld粗写成同一种“已公开”。