给购物 Agent 造一个"陪练":UserArena 用 6.4 万条真实轨迹和一场生产 A/B 测试拷问用户模拟器

论文:UserArena: Benchmarking Interactive User Simulation for Long-Horizon Shopping Agents arXiv:https://arxiv.org/abs/2610.30932 (Submitted on 22 Oct 2026) 作者:Jujia Zhao, Jiakai Tang, Jing Yu, Wen Chen, Jian Wu, Han Zhu, Fei Sun, Suzan Verberne, Zhaochun Ren 代码与数据:https://github.com/RecGPT-Team/UserArena


核心摘要

想训练一个会帮你逛电商的购物 Agent,最大的麻烦不是模型不够聪明,而是没有一个足够真实的"陪练"——你得有一个能模拟真实用户行为的世界模型,才能离线训练、离线评估策略,而不用每次都上线烧钱做 A/B。UserArena 干的就是这件事:它把 11,010 个真实用户的 64,729 条购物会话轨迹(覆盖 566,102 个商品、13 种动作)重建成一个可交互的推荐环境,配了一套从 L0 到 L4 的五级评估协议,甚至直接拿一场真实的生产 A/B 测试来校验模拟器"算出来的策略效果"靠不靠谱。配套提出的 On-Policy Trajectory Distillation(OPTD)用轨迹级意图给冻结教师模型提供密集 token 级监督,结果在 8 个保真度指标上拿到单会话全部第一,并以 0.713 倍的效果比成为最接近线上 A/B 结果的模拟器。说实话,这篇论文最值钱的不是某个单点技巧,而是"用生产 A/B 结果给离线模拟器打分"这个评测范式的落地——这类工作通常被工业界捂着,能放出来的不多。


🎯 为什么需要这篇论文

做过推荐系统的人都知道一个尴尬的事实:你想优化排序策略,最诚实的评估是上线 A/B,但一次实验动辄几周,还得牺牲一部分用户的体验。于是大家退而求其次——造一个"用户模拟器",让模型扮演用户,在离线环境里跟推荐 Agent 对打。

问题是,现有的模拟器和基准有几个硬伤。

数据太浅。 Amazon Reviews、Qilin、OmniBehavior 这类数据集基本只有评分或点击序列,没有长周期的、跨会话的细粒度轨迹。拿来做交互基准的 OPeRA 只有 51 个用户、527 条会话,平均每用户 1.00 个会话、11.11 个动作——这哪叫长周期,这就是一张快照。

评估太短视。 主流的 next-action agreement 只看"给定真实历史,下一步动作预测对不对"。这有点像只考学生"上一步棋走完,下一步你会不会走同一手",却从不让他自己完整下完一盘棋。单步预测对了,不代表整条轨迹的行为倾向是对的;反过来,单步没对上,也不代表轨迹就是假的——用户本来就有多种合理选择。

最要命的:没人校验模拟器的"策略比较能力"。 模拟器存在的意义,是告诉你"策略 A 比策略 B 好"这类结论。但几乎没有基准验证过:模拟器给出的策略对比,和线上真实 A/B 的结果一致吗?UserArena 的答案是:大多数模拟器给出的结论和线上差得离谱,通用大模型甚至会高估策略效果好几倍。

作者把长周期用户模拟的困难拆成了三个具体挑战:

  1. 行为失校准:学出来的模拟器会偏离真实用户的行为分布;
  2. 监督稀疏:用"精确下一动作"当目标,会惩罚那些其实合理的替代行为,而且完全不管轨迹级质量;
  3. 暴露偏差:teacher forcing 只在真实前缀上训练,推理时模型走自己的路,训测失配。

🏗️ UserArena 基准:真实轨迹 + 可交互环境

数据规模

先看体量,这在同类基准里是碾压级的:

维度 数量
用户 11,010
会话轨迹 64,729
商品 566,102
动作总数 577,670
动作类型 13
商品点击 73,717 次,覆盖 41 个品类

其中跨会话子集包含 5,768 个用户的 59,378 条按时间排序的会话,平均每用户 10.29 个会话、86.36 个动作。对比一下:OPeRA 平均每用户 11.11 个动作,USB 13.24 个——UserArena 直接翻了 6 倍以上。

行为组成也很有意思:信息流下滑占 38.34%,商品点击 12.76%,会话终止 11.21%,加购只有 3.90%,购买仅 1.02%。真实的购物行为就是这么"稀疏而琐碎"——大量时间在刷,偶尔点进去看看,真正下单的百里挑一。点击的商品里服装占 54.90%,92.0% 的被点击商品只出现过一次,长尾得非常真实。跨会话连续性方面,57.8% 的相邻会话重访了前一会话出现过的品类,间隔从几分钟到 12 小时以上都有。

跨会话动作序列示例

图:一个真实用户的跨会话购物案例。(a) 三个会话共 26 个动作的完整序列——第一次访问刷了两下信息流,点了睫毛膏加购,又点了眼霜加购后离开;第二次访问刷了四下、点开妆前乳看了看就走;第三次回来直奔眼影,触发购买动作、加购,还在商品详情页上下滚动仔细看了一番才结束。(b) 四次点击发生前的信息流观察——红框标出被点的商品。注意这类美妆跨会话轨迹里"看了不买、下次再看"的犹豫行为,正是短会话基准完全捕捉不到的东西。

环境设计

环境这块是工程活。作者在离线 React 环境里用去标识化数据重建了生产环境的推荐信息流页和商品详情页,界面是批量预渲染的(不含真实用户截图)。滚动时通过裁剪预渲染信息流的对应视口更新可见内容;点击任何当前曝光的商品——包括真实用户当时没点的那些——都会打开一个由预渲染视图重建的交互详情页。这一点很关键:环境必须支持反事实动作,否则模拟器只能复读真实轨迹,没法做 rollout。

每个记录的决策步都对齐了四样东西:用户画像(6 个属性,覆盖率 99.0%–99.9%)、视觉观察(界面截图)、可见商品上下文、动作。这就是标准的 observation-action 世界模型范式。


📏 五级评估协议:从"能不能动"到"像不像真人"

这套评估协议是我觉得全文设计得最扎实的部分。先区分两种评估模式:

  • Replay(回放):喂真实会话的记录状态,预测下一动作,隔离局部保真度;
  • Rollout(自由展开):模拟器自己选动作、自己驱动状态转移,直到会话结束——这才是真正的世界模型考验。

然后五个级别逐级加码:

级别 名称 模式 指标
L0 环境合规 两者 RVA / OVA:输出能否被解析为可执行动作
L1 局部行为保真 Replay Macro-F1(动作类型);Accuracy(还要求目标商品/评论匹配)
L2 序列行为保真 Rollout DM-JSD(商品页首个决策分布的 JS 散度);TE(轨迹长度误差)
L3 个性化群体保真 Rollout PF:按活跃度/购买倾向/品类广度分组,比较 8 个行为块的组内保真度
L4 结果保真 Rollout ΔCTR、ΔACR、T-JSD(终态分布:购买 > 截断 > 仅加购 > 仅浏览)

这个递进的逻辑很清晰:L0 不过,模拟器连"合法玩家"都算不上;L1 只看单步;L2 开始看整条轨迹的决策模式;L3 拷问"不同人群的行为差异你学没学到";L4 直接对齐业务最关心的转化漏斗。

DM-JSD 的设计值得一提:对每次商品页访问,只记录首个决策(return/cart/buy/end/open 五类),算真实与模拟分布的 base-2 Jensen–Shannon 散度。这比逐步对齐宽容得多——用户进了详情页,"先看评论再决定"和"直接加购"的顺序差异不会被过度惩罚,但"这个用户群到底爱不爱加购"这种倾向性差异会被抓住。


🧠 OPTD:把轨迹级意图变成密集教师信号

数据基准之外,论文还顺手提出了一个用户模拟器的训练方法:On-Policy Trajectory Distillation(OPTD)。

一句话讲清核心思路

让学生模型在自己生成的 rollout 上训练(治暴露偏差),由冻结的教师模型提供逐 token 的密集分布监督(治监督稀疏),而教师知道整条轨迹的意图(治行为失校准)——但意图只给教师,不给学生,学生只能间接学。

三个关键组件

On-policy 采样。 每个训练步从真实分布采一个状态 \(x_t\),然后让学生从当前策略 \(\pi_\theta\) 采样完整响应 \(y_t\)("简短理由 + 结构化动作"的 token 序列)。教师对学生自己的前缀打分。和 teacher forcing 的区别在于:训练时的前缀分布就是推理时的前缀分布,失配被消除。

轨迹级意图监督。 用大模型提取器 \(E\) 把整条轨迹压成结构化意图 \(z_u = E(\tau_u)\)——偏好、顾虑、信息需求、比较标准、条件决策倾向这类类型化锚点。提取规则明确排除具体动作、具体商品 ID、精确价格、轨迹结果和步骤索引,防止意图变成"答案钥匙"直接泄题。学生从头到尾见不到 \(z_u\),它只通过教师的 token 分布间接渗透进来。教师是冻结的 SFT checkpoint,不回传梯度。

逐 token 信任域。 意图太强会把教师目标拉离学生的行为基础,所以加一个保险丝。设无条件参考分布 \(\tilde{q}\)(同一教师、同状态、不给意图),在意图条件分布 \(q\) 和 \(\tilde{q}\) 之间做 log 空间插值:

\[\hat{q} = \mathrm{softmax}\big(\log \tilde{q} + \lambda (\log q - \log \tilde{q})\big)\]

每个 token 选最大可行系数:\(\lambda_{t,k} = \max\{\lambda \in [0, \lambda_{\max}] : D_{KL}(\hat{q} \| \tilde{q}) \le \varepsilon\}\)。沿几何路径 KL 关于 \(\lambda\) 单调不减,二分查找 8 次即可(区间宽 ≤ 1/256)。直觉上说:意图可以把教师的预测往"这个用户接下来会买眼影"方向拉,但每个 token 最多拉 \(\varepsilon = 0.02\) 的 KL 距离,多了就刹车。

训练目标

\[\mathcal{L} = \mathcal{L}_{dist} + \gamma \cdot \mathcal{L}_{GT}\]

蒸馏项用广义 JS 散度(混合权重 \(\beta = 0.5\))在学生每个生成 token 上匹配正则化目标 \(\hat{q}\);接地项是对记录响应的 teacher-forced 交叉熵,\(\gamma = 0.1\)。两个项的分工:蒸馏项负责"在模型自己的轨迹上学行为倾向",接地项负责"别忘了真实数据长什么样"。

实现配置:先做 SFT 热身(用 Qwen3.5-397B 给每个记录动作生成第一人称理由),冻结为教师并初始化学生;基础模型 Qwen3.5-2B,32k 上下文,BF16,ROLL + vLLM + Megatron-Core。Replay 贪心解码,Rollout 温度 1.0、top-p 0.95。


🧪 实验:OPTD 全面领先,通用大模型集体翻车

基线与设置

8 个基线全部用同一底座 Qwen3.5-2B,分两派:

  • 文本类:RecAgent、Agent4Rec、SimUSER、Shop-R1、Customer-R1、AlignUSER;
  • GUI 类:A/B Agent、STA。

单会话主结果

OPTD 在全部 8 个 L1–L4 指标上排名第一:

指标 OPTD 次优(方法)
F1 ↑ 0.4178 0.4108(Customer-R1)
Acc. ↑ 0.3204 0.3114(Customer-R1)
DM-JSD ↓ 0.0156 0.0245(STA)
TE ↓ 1.72 1.77(STA)
PF ↑ 0.8692 0.7958(STA)
ΔCTR ↓ 0.0026 0.0227(Customer-R1)
ΔACR ↓ 0.0430 0.1880(STA)
T-JSD ↓ 0.0387 0.0664(SimUSER)

几个值得说道的点。L1 的绝对值依然不高(F1 0.42、Acc 0.32),这不是 OPTD 不行,而是逐步行为预测本身就难——同一状态下真实用户本来就有多种合理选择。更值得注意的是 L4 的差距:OPTD 的 ΔCTR 是 0.0026,第二名直接跳到 0.0227,差了将近一个数量级。转化漏斗级别的保真度,恰恰是模拟器能不能替代 A/B 的关键。

GUI 类模拟器里,A/B Agent 的 RVA 只有 0.4113——六成的输出连环境都解析不了。固定动作协议对视觉 Agent 的迁移是个真问题。

跨会话主结果

跨会话设置下 OPTD 拿下 8 项中的 5 项第一、2 项第二:DM-JSD 0.0284、TE 0.72(最低)、PF 0.8929(最高)、Acc. 0.2969、T-JSD 0.0077。STA 在 F1(0.3556)和 ΔCTR(0.0099)上领先。长周期场景下没有全能冠军,但 OPTD 的综合保真度仍然最稳。

生产 A/B 验证:全文最硬核的一张表

这是我个人认为全文最有分量的实验。作者拿同一对排序策略,在 10,000 个冻结用户上均分两臂跑离线模拟,用 ΔPV-CTR 衡量策略效果,再和真实线上 A/B 结果对比(效果比 = 模拟效果 / 线上效果,理想值 1):

模拟器 效果比 效果误差
OPTD 0.713× 0.287
GPT-6-Sol 1.576× 0.576
STA 0.297× 0.703
Customer-R1 0.191× 0.809
Shop-R1 0.162× 0.838
GPT-6-Luna 2.154× 1.154
AlignUSER 0.020× 0.980
Qwen3.5-2B 0.004× 0.996

说实话看到这张表我愣了一下。两个通用大模型直接当模拟器用,一个把策略效果高估 58%,一个高估 115%——通用能力和行为校准完全是两回事。裸 Qwen3.5-2B 更惨,效果比 0.004×,约等于什么都模拟不出来。OPTD 的 0.713× 虽然也不完美(低估了 29%),但已经是唯一落进"同一量级"的选手。

消融与人工评估

消融了五个组件:w/o on-policy、w/o intent、w/o trust region、w/o grounding、w/o SFT。移除任一组件都至少拉低一项指标,其中 w/o SFT 退化最严重——SFT 热身建立的指令遵循和动作生成能力是地基,蒸馏是装修,地基塌了装修再好也白搭。

图灵式人工评估也做了:每个模拟器 200 对轨迹、3 名标注员盲评"哪条轨迹是机器生成的"。OPTD 的 Human win rate 最低、Model win rate 最高——最难被识破。

图灵测试标注界面

图:人工评估用的标注界面。顶部是用户画像(性别、年龄段)、最近点击和购买记录;中间并排展示轨迹 A 和轨迹 B,标注员可以逐步翻看每条轨迹的动作序列与对应的界面观察;底部要求填写判断理由,然后选择哪条是机器生成的(A / Unsure / B)。这个界面本身就是个小工程——把轨迹"可回放地"呈现给标注员,是做这类图灵评估的基础设施。


🤔 我的判断

这篇论文最值钱的地方:把"模拟器的策略比较能力要对着生产 A/B 结果校验"这件事做成了基准的一等公民。以前大家刷 next-action accuracy 刷得不亦乐乎,但那个指标和"模拟器能不能告诉你哪个策略更好"之间隔着十万八千里。Table 3 那张表等于公开处刑:通用大模型当模拟器用,结论是系统性高估策略效果——如果你真拿它做离线策略筛选,等于往线上推一堆被高估的方案。

OPTD 本身的定位:思路漂亮,但属于"把已知组件用得恰到好处"的工程整合——on-policy 采样治暴露偏差、意图条件教师治校准、信任域防意图过强,每个零件单独看都不新鲜(RLHF 里的信任域、知识蒸馏里的 on-policy 都有前辈),组合的逻辑闭环做得干净。我不认为它是底层突破,但对做世界模型/用户模拟的团队,这套配方是可以直接抄作业的。

需要泼的冷水:

  • 生产 A/B 验证只有一对排序策略、单一效果量(PV-CTR)。一对策略能对齐,不代表策略空间里的排序都能对齐——模拟器最难的恰恰是"策略 A 和 B 效果接近时排对序"。这块证据还不够。
  • 数据来自单一平台(亚洲某大型电商),品类以服装为主(点击占 54.90%),迁移到其他平台、其他品类,结论是否成立要打问号。
  • L1 指标绝对值偏低(F1 0.42)说明逐步预测天花板就在那里,用这类指标做排行榜时,头部差距的统计显著性需要小心。
  • 峰值学习率 2×10⁻⁵ 对 2B 模型偏高,原文如此记录,复现时建议自己扫一下。

对工程的启发:如果你团队里正在用 LLM 直接扮演用户做策略评估——停一停。UserArena 的结果表明,不做行为校准的通用模型给出的策略效果可能是反向指标。哪怕不用 OPTD 整套方案,至少应该:在你的场景里找一场历史 A/B,先校验模拟器的效果比落在什么量级,再决定信不信它的离线结论。


📝 总结

UserArena 给长周期购物 Agent 的用户模拟立了一个新标杆:64,729 条真实轨迹、13 种动作、跨会话连续性、可交互的反事实环境、五级评估协议,外加一场生产 A/B 测试做终极裁判。OPTD 用"轨迹级意图 + on-policy 密集蒸馏 + 逐 token 信任域"的组合拿下了最强综合保真度(单会话 8 项全第一,生产 A/B 效果比 0.713× 最接近线上)。数据和代码已开源,作者还计划围绕它建 leaderboard。做推荐 Agent、世界模型、离线策略评估的同学,这个基准值得放进工具箱。

资源链接: - 论文:https://arxiv.org/abs/2610.30932 - 代码与数据:https://github.com/RecGPT-Team/UserArena - 项目页:https://recgpt-team.github.io/UserArena-Page


觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我