AI模拟用户到底像不像真人:推荐系统测试的新解法
2023年前后,推荐系统行业里流行一句话:上线前先问问AI用户怎么看。听起来挺合理。毕竟真实的A/B测试太贵了,一个推荐策略改坏了,可能几天内就损失一大笔点击率和用户留存。如果能先找一个"假用户"帮你把关,省时省钱又安全。于是各家公司开始用大语言模型扮演用户,让它们在模拟环境里点来点去,提前预判新策略的效果。...
2023年前后,推荐系统行业里流传一句话:策略上线前,先问问AI用户怎么看。
听着挺有道理。真做A/B测试成本太高,一个推荐策略要是改砸了,几天之内点击率和用户留存就可能掉一大截。于是大家开始让大语言模型扮演用户,在模拟环境里点来点去,提前判断新策略的效果——既省时间又省钱,还不用担心线上出事。
但有个问题很少有人正面回答:这些AI模拟出来的用户,真的像人吗?
说得再准确点,它们像的是"人在某一刻说的话",还是像"人在长期使用一个产品后,心态会怎么变化"?这两者差距可能很大。
论文指出,现在多数LLM用户模拟器做的是即时反应式的表演,并没有去刻画一个人随时间推移而疲惫、厌倦或重新提起兴趣的过程。
这篇论文要解决的核心矛盾就在这儿。研究团队提出的方案叫PsyBer-Agent,试图把心理学变量真正嵌进模拟逻辑里。
### 当前方法差在哪
设想玩一款文字冒险游戏:NPC每一步都针对你刚说的话给出一个"看起来合理"的回复。单看任何一句对话,都挑不出毛病。但连续玩上十个小时,这个NPC始终停在同一个状态——你反复问同一个问题,它不会显出烦躁;互动久了,它也不会在"熟悉感"上有什么变化。
论文指出的现状正是如此。研究者统计了八个同类工作,包括RecAgent、Agent4Rec、UserSim、SimUSER等,发现它们大多只是"局部拟真":生成的单条用户行为看着挺真实,但背后缺少一个明确的、能追踪的状态转移机制来连接历史和未来。
**结果就是,局部的小偏差,会在长时间的交互里慢慢累积成巨大的行为漂移。**
这事其实不难理解。
如果一个模拟用户每次决策都独立计算,不记得上一刻的疲劳感,也不延续上一刻的情绪波动,那它和真实用户的差距就会随着交互轮数增加越拉越大。就像两条起点很近、方向却差了0.5度的射线,走得越远分得越开。
论文还给出了一个具体的量化锚点:现有方法大多没有显式的"动态状态建模",用户心理学原理也没被纳入计算过程,跟真实日志对齐的机制同样缺失。表格里列出的七八个代表性方法,几乎都在这三项上只做到"部分实现",或者干脆是"无"。
PsyBer-Agent想做的,是把这三项都补上。
### Psy-Engine:给每个模拟用户装一个"心理仪表盘"
PsyBer-Agent的核心叫Psy-Engine。
它为每个用户维护三个数字,分别代表认知储备、情绪满意度、自我一致性,统一压缩在0到1之间。
心理引擎(Psy-Engine):这是论文设计的核心模块,它用一个三维向量追踪用户的认知、情绪和自我认同状态,并随每次交互动态更新。
这三个数字可以想成一台老式汽车仪表盘上的三个指针:油量表、水温表、电池电量表。司机不必弄懂发动机内部的化学反应,但指针怎么动,直接决定什么时候该加油、什么时候该停下来歇会儿。
这三个指针具体是怎么动的?
论文定义了一套计算规则。用户看到一个推荐内容,系统先算出这个内容本身的新颖度、认知负荷和社会认同感(比如这东西有多少人点赞)这几个特征。再根据这些特征算出一个"吸引力"信号和一个"疲劳"信号,两者相减,就决定了认知指针往哪个方向走。
情绪指针和自我一致性指针则各自朝一个"目标值"靠近,这个目标值由内容和用户长期偏好的匹配程度、加上社会认同感共同决定。
社会认同(Social Proof):一个心理学概念,指人在不确定时倾向于参照别人的行为来判断,比如看到某商品评分高、评论多,就更愿意相信它靠谱。
论文给出的更新公式相当克制:下一时刻的状态,等于当前状态加上一个带衰减系数的调整量,再把结果限制在0到1区间内。衰减系数取0.35,是作者做完参数敏感性测试后定下的,测试显示该值能让状态轨迹的内部一致性误差最小。
论文自己把话说得很直白:这三个数字属于"模型定义的计算构造",并没有经过心理学问卷的验证,算不上真实的心理测量。也就是说,Psy-Engine并未声称自己真能测出用户的心理状态,它做的只是拿一套固定、可控、可解释的规则,去逼近"用户心理会随时间变化"这件事。
这条边界划在哪儿,直接关系到这篇论文能信到什么程度。
要是没有Psy-Engine呢?论文为此做了对照实验:把这个模块拿掉,CTRGap(点击率偏差)从0.26直接飙到0.75,几乎翻了三倍。可见这个心理状态就算是"构造出来的",在实际预测行为时照样起了关键作用。仪表盘上的指针不是发动机本身,可它照样能告诉你车快没油了。
### 怎么让这套心理引擎和真实数据对上号
心理模型光能自洽还不够,还得跟真实的用户日志对得上号。
尴尬的地方在于:历史日志只记下了用户点了什么,用户当时的认知、情绪、自我一致性数值是多少,并没有留下来。这就像手里只有一份写着"血压突然升高"的体检报告,当事人当时是紧张还是兴奋,却无从查起。
论文的办法是拿真实点击的物品当强制输入,"回放"进Psy-Engine,倒推出一套"模型定义的参考心理轨迹"。
教师强制(Teacher Forcing):训练时有这么一种做法,把正确答案提前塞给模型——这里指的就是用户真实点过的物品——逼它顺着这条真路径跑完一遍,从而产出可供对照的参考轨迹。
这样就有了两条轨迹:一条由真实日志回放而来,是参考轨迹;另一条是模拟器自己跑出来的。接下来的问题是,两条轨迹怎么对齐?
论文在这里动用的数学工具,叫非平衡Gromov-Wasserstein最优传输(UGW)。
最优传输(Optimal Transport):这是一个数学工具,最早解决的是把一堆沙土从一个形状挪成另一个形状,最少要花多少代价;放到这里,它算的是模拟轨迹的每一步该怎么跟参考轨迹的某一处对应,才最合理。
为什么不按时间顺序一一对应,偏要用这么复杂的工具?
原因在于真实用户和模拟用户的浏览节奏可能差得很远。真实用户10分钟刷了50条,模拟用户可能慢悠悠只刷20条。硬按位置对齐,好比让两个步速完全不同的人手拉手走钢丝,一个在跳着走,另一个在慢慢爬,强行同步只会让两人都摔下去。
UGW的"非平衡"特性正好允许两条轨迹长度不同、节奏不同,局部对不上也能容忍,真实世界要的就是这种灵活度。
为验证这套对齐机制的价值,论文还做了一个关键消融实验,对比四种方案:完全不做轨迹对齐的直接行为克隆、按位置硬性匹配、UGW但用均匀初始化、以及论文提出的带先验引导的UGW。结果直接克隆的决策准确率只有0.242,带先验引导的完整版本达到0.278,提升了3.6个百分点,CTRGap同时从0.458降到0.406。
这组数字说明,轨迹对齐不是锦上添花的装饰,它实打实地影响着模拟质量。
### WebSim:一个让AI用户真的能"逛网页"的试验场
算法之外,论文团队还搭了一整套实验平台,名字叫WebSim。
这个模拟器用Flask搭起来,属于闭环结构,用户这边的交互和推荐系统的推理是分开的。也就是说,底层推荐算法想换就换,比如把LightGCN换成SASRec,模拟用户的那套逻辑不用跟着改。
Flask:一个轻量级的Python网页开发框架,这里被用来搭建模拟用户和推荐系统交互的后台服务。
界面设计上,WebSim用网格式布局呈现推荐内容,一行四列,用户可以点击、翻页,也能随机重置。整个过程会被完整记录下来,包括用户的心理状态轨迹、点击轨迹和运行摘要,方便后续复现和分析。
这套平台支持七种主流推荐算法的接入测试,从最简单的"按热门度推荐"(PopRec)到图神经网络(LightGCN),再到基于Transformer的序列推荐模型(BERT4Rec)。测试场景覆盖电影推荐、电商购物、短视频浏览等多个真实业务领域。
由此看,PsyBer-Agent并非只能在实验室跑一次的玩具,它是一套能反复套用到不同业务场景、不同推荐算法上的通用评测工具。
### 到底模拟得像不像人?
设计思路讲得再多,最后都要回到一个问题上:这套系统模拟出来的用户行为,跟真人到底有多接近?
论文为此做了一组规模不小的实验。500个真实用户、500个模拟用户,放在完全相同的推荐界面和后台模型下互动,唯一不同的是“做决策的是人还是AI”。
结果摆在三个指标上:命中率(HR@10)、排序质量(NDCG@10)、点击率(CTR)。完整版PsyBer-Agent(底层大模型为Qwen3-VL-235B)与真人的绝对差异分别是0.003、0.0016、0.004。
这个差距有多小?换个说法,100个真人和100个AI分别浏览同一批推荐内容,最终点击概率的差异不到千分之四。基本等于贴脸互动。
可一旦拿掉记忆模块,差距马上拉开到0.016、0.0106、0.022,涨了五倍多。再去掉用户画像信息,差距继续扩大到0.04、0.0246、0.05,接近原来的十几倍。
这组对照实验说清楚了一件事:模拟用户像不像人,关键不在底层大模型有多聪明,而在于有没有给它装上记忆和身份认同这两个支撑结构。
好比让一个完全失忆、也不知道自己是谁的人去逛超市。他每一次挑商品的瞬间反应可能都挺“正常”,但他不记得十分钟前买过什么,也不清楚自己平时的消费习惯,整条购物轨迹就会支离破碎,跟真实消费者的行为模式对不上。
论文还做了跨场景的行为真实性测试,指标是JSD(分布差异)、皮尔逊相关系数、EMD(分布距离),横向对比MM-ML-1M(电影场景)和亚马逊杂志订阅(电商场景)两个数据集。电商场景的拟合度明显更高,JSD普遍在0.2左右,相关系数超过0.5;电影场景则更分散,JSD在0.3到0.65之间波动。
论文的解释是:电商场景的用户偏好相对窄而集中,买杂志的人大多图实用;电影消费的语义空间却极为丰富,动作片、文艺片、纪录片的用户心态可能天差地别,精确模拟自然更难。
和同类产品比,差距有多大
研究团队还做了一轮硬碰硬的横向对比。在同一套固定候选集重放协议下,PsyBer-Agent与四个代表性的用户模拟器同场测试,分别是RecAgent、Agent4Rec、UserSim、DyTA4Rec。
决策准确率上,PsyBer-Agent拿到0.275,五个方法里最高;CTRGap最低,只有0.406;JSD最低,0.286;相关系数最高,0.305;推理延迟也是最短的,2.53秒。
排在第二的DyTA4Rec,准确率0.254,CTRGap为0.455。两者中间差了将近5个百分点。
这说明,显式建模心理状态,再配合真实日志对齐,确实比单纯靠提示词工程生成“看起来合理的行为”更接近真实用户的决策模式。
规模化测试:能不能扛住百万级并发
一个评测系统如果只能跑500个用户,那它顶多算个实验室玩具。要真正用于工业场景,得扛住海量并发任务。
论文把测试规模从500一路拉到500万任务,分别测量吞吐量、延迟、成功率和token消耗。
从100K到500万任务,p95延迟(95%任务的最长响应时间)只是从2.74秒缓慢爬升到3.80秒,涨幅不到40%。成功率始终维持在91%以上。整个500万任务跑完花了大约20358分钟,折合14天多,期间消耗了超过5200万K的token。
这组数据说明的核心事实是:延迟增长可控、线性,并非失控的指数爆炸。
就像一家餐厅从每天接待50桌客人,突然要接待5万桌。后厨要是没有标准化流程,全靠厨师凭感觉掐火候,高峰期必然乱套,出餐速度会随订单量暴增而指数级下滑。但提前做好标准化的备菜流程、分区域的厨师调度,哪怕订单量翻了一千倍,出餐延迟也只会线性地、可预期地增加,不会突然崩溃。
论文还透露了一个关键的工程细节:绝大多数决策(约99.4%)由一个轻量级的“快速策略”模块独立完成,只有大约0.6%的决策需要调用成本更高的大语言模型/视觉语言模型作为兜底,另外0.04%的决策在所有路径都失败时随机兜底。
论文训练出的轻量级决策模块叫快速策略(Fast Policy),它依靠UGW对齐产生的软监督信号来学习,多数情况下能自行拍板,不必每次都去调用开销很大的大语言模型。
这也解释了系统为什么能扛住百万级并发,又不至于把API费用烧穿:真正费钱费时间的大模型调用,被压缩到了不到百分之一的决策量上。
把每个零件拆开看看,哪个最关键
研究团队把系统拆成几个零件,逐个拿掉,看效果怎么变,做了一轮细致的消融实验。
拿掉预处理模块(负责把用户信息、物品信息转成结构化输入),CTRGap从0.26涨到0.87;拿掉Psy-Engine,CTRGap涨到0.75;拿掉UGW对齐机制,CTRGap涨到0.69;拿掉融合记忆模块,CTRGap涨到0.30。
记忆模块的表现有点意思:拿掉它对CTRGap影响相对小,可对CES-MSE(内部心理状态一致性误差)的影响很明显,从0.0636涨到0.1254,接近翻倍。
CES-MSE是论文自己定义的一致性指标,衡量的是模拟器生成的心理状态轨迹,与用真实日志回放出来的参考轨迹之间差了多少。数值越低,内部状态越自洽。
也就是说,记忆模块更偏向"维持内在逻辑的连贯性",而不是直接拉高点击率这种表层指标。人要是突然失忆,短期的购物决策可能看着还算正常,时间一长,整个消费心理状态就会前后矛盾、难以预料。
论文还测了信息通道的消融,依次去掉物品信息、心理变化信号、用户身份画像、场景信息。去掉场景信息对CTRGap的冲击最大(涨到0.52),去掉心理变化信号也相当显著(涨到0.88)。心理状态建模确实在真实发挥作用,不是摆设。
### 这套系统在压力测试下会不会崩
论文另设了一轮鲁棒性测试,从行为层面、决策层面、系统层面三个角度去"折腾"这个模拟器。
行为鲁棒性测试里,研究者给用户历史信息加噪声、改变浏览节奏,甚至把场景直接换成一个模型从没见过的全新领域。轻微扰动和短期历史噪声(10%-20%)影响很小,相对下降幅度在1%到10%之间;长程浏览轨迹(track=100)的相对下降幅度却飙到55%,跨领域迁移的曝光分布差异也明显增大。
这说明一件事:**长时间的持续交互,是这套系统目前最大的软肋。**
好比一个翻译软件,处理一句话时表现得体,让它连续翻译一整本小说,上下文积累的误差会不会越滚越大,这确实值得警惕。论文也坦诚承认了这一点,没有回避。
决策鲁棒性测试里,研究者随机遮盖点击历史、打乱候选排序、插入干扰项,甚至故意制造矛盾信号。大部分扰动下决策一致性都保持在100%,只有"矛盾信号"这种极端情况才降到98.33%,策略偏移也只有0.03。
研究者给记忆模块安排了截断、乱序、塞进过期信息、随机丢弃这几种折腾。结果成功率一直稳在100%,延迟最多涨了7.6%。
**这组数据传达的信号是:这套系统面对局部的小扰动相当稳健,真正的脆弱点在于长时间跨度的累积误差。**
### 群体行为:社会线索会不会引发"从众效应"
论文还做了一个挺有意思的附加实验,专门看模拟用户遇到社会线索(比如评分很高、热度徽章、评论区情绪倾向)时,会不会出现从众行为。
结果显示,模拟用户对评论情绪的"响应度"相当高,情感一致性指标普遍在0.99以上,几乎逐字逐句跟评论区情绪对齐。可这种情绪对齐并没有转化成强烈的从众点击(herding gain普遍很小,有些甚至是负数),也没有造成明显的群体极化。
论文下笔留了余地:模拟用户确实"感知"到了社会线索,可这种感知并没有强到变成"行动层面"的从众。说白了,它会在评论区留言附和,却不一定会为了那句话去点开那个被吹上天的商品。
这个发现挺值得琢磨。现实世界里,"口头上说认同"和"实际行动"到底更吻合,还是会出现脱节,恐怕本身就是个复杂的社会心理学问题,这个实验只提供了一个模拟器层面的观察角度,没有给出最终答案。
### 写在后面
这篇论文读下来,真正让人停一下的倒不是UGW对齐那套数学工具,而是研究者一再讲的一句话:这些心理状态属于"模型定义的计算构造",并非经过心理学验证的真实测量。
这句话听起来像一种自我保护式的免责声明,仔细想想,它揭示的是一个更深的问题:AI领域里大量使用的"情绪""认知""疲劳"这些词,到底在描述真实发生的东西,还是只是一套方便计算的符号系统?
这个问题论文没绕开,直接摊到了明面上。它没说自己去破解人类心理的奥秘,只老实交代:我们搭了一套三维的、能追踪的数字系统,预测用户行为这件事上它确实好使,但别拿它当心理学的真相。
这种克制挺难得。当下人人都想把AI吹得更"懂人心",一篇论文主动承认自己的局限,反而让它的那些亮眼数据显得更可信。
还有一个细节出乎我意料:拿掉记忆模块后,点击率这块的跌幅其实不算大,可内部心理状态的一致性误差却差不多翻了一倍。这说明什么?有些设计带来的价值,压根不会落在表层的转化率上,它管的是系统“内在逻辑自不自洽”这个更隐蔽的层面。
现实里也有类似的情形。一个人记性出了问题,短时间内日常举动看着还挺正常,但身边熟悉他的人,总能从一些细微的、说不太清的地方感觉出“这人不太对劲”。这种“不对劲”,出在内在一致性上,而不是哪一次具体行为做错了。
论文留下的疑问,比它给出的答案还多。长程交互中误差怎么累积、怎么处理,跨领域迁移时的失真又该怎么补,这些都还没有着落。不过它起码说明了一点:给AI用户配一套清晰、可追踪、哪怕是人造的心理状态系统,比只让它“演得像”,更能扛住长期而真实的交互检验。
Q&A
Q1:PsyBer-Agent是什么?
A:它是一个按心理学原理设计出来的用户模拟器,内核为Psy-Engine引擎,靠认知、情绪、自我一致性这三个动态变量来追踪模拟对象的心理状态变化,用途是在推荐系统上线之前预测用户行为。
Q2:PsyBer-Agent和真实用户的行为差距有多大?
A:在固定推荐后台的对照实验里,命中率、排序质量、点击率与真人用户的绝对差异分别为0.003、0.0016、0.004,差距很小;可一旦去掉记忆和用户画像模块,差距就会被拉大到五到十几倍。
Q3:这套系统能支持多大规模的并发模拟?
A:论文测到的最高并发是500万任务,p95延迟从2.74秒只涨到3.80秒,成功率保持在91%以上。绝大多数决策由轻量级快速策略自己搞定,需要调用大语言模型兜底的不到1%。