这项由厦门大学与Shopee(虾皮购物)联合开展的研究,于2026年8月以预印本形式发布,论文编号为arXiv:2608.02738,有兴趣深入了解的读者可通过该编号查询完整论文。
每次打开购物App,系统都会猜测你想买什么。背后那个"猜你喜欢"的算法,在业内叫做推荐系统。它的核心任务是从海量商品中挑出你最可能感兴趣的那几件,摆在你眼前。为了做到这一点,研究人员通常会让一个大型AI模型先在海量的用户购物记录上"练习",然后再把练出来的能力用到具体的推荐场景中。这个流程就像厨师先在烹饪学校学习基础厨艺,再去某家餐厅按照餐厅菜单做菜一样。
但问题来了:购物平台的用户和商品每天都在变化,昨天流行的东西今天可能已经过时,昨天的用户今天可能换了兴趣。这意味着那位"厨师"不能只在烹饪学校练一次就完事——他需要每天回学校重新学习新食材和新技巧,然后第二天再去餐厅做菜。
然而,这里有一个深藏的矛盾:餐厅要求厨师做的菜,和学校教的基础厨艺,有时候并不完全一致。当两种要求同时施加在同一个人身上,他往往两件事都做不好。这正是厦门大学与Shopee研究团队发现并试图解决的核心难题,他们提出了一个叫做"知识-几何解耦"(Knowledge-Geometry Decoupling,简称KGD)的解决方案,在Shopee的真实平台上部署后,每位用户带来的成交金额提升了1.75%,广告收入提升了1.53%。
一、厨师面临的双重困境:既要学新厨艺,又要改造菜谱
在解释KGD之前,需要先搞清楚推荐系统到底面临着哪些麻烦。
推荐系统的"预训练"阶段,就像厨师在学校里练习基本功。AI模型会翻阅大量用户的购物记录,学习"用户买了A之后,接下来往往会买B"这样的规律。这个学习过程在技术上叫做"下一个词预测",和手机输入法猜下一个字的原理非常相似。
但购物记录和句子有一个本质区别。一个句子里,每个字和下一个字之间通常有紧密的语言逻辑联系。而用户的购物记录,往往是好几段不相关的购物"小插曲"拼在一起的。比如,一个用户先密集浏览了一批自行车配件,买完之后,因为换季又开始看裤子。自行车链条和牛仔裤之间并没有什么实质联系,但如果AI把它们当作"前后相连、因此相关"来学习,就会把噪音当成规律记下来,最终污染它学到的知识。
研究团队在Shopee平台上实际测量了这个问题。他们把用户序列里不同类目商品的相似度画成了一张热力图——同一个购物"小插曲"内部的商品之间,相似度很高,显示为深色的密集方块;而跨越"插曲"边界的商品之间,相似度急剧下降,接近于零。这意味着,如果AI不加区分地学习所有相邻商品之间的关系,大量学到的其实是毫无意义的"牛仔裤跟在链条后面"这类假关联。
这是第一个困境:学的东西不够干净。
第二个困境更微妙。学校里练出来的厨艺(预训练知识),和餐厅要求的具体做菜方式(下游任务),对"厨师的手法"有截然不同的要求。学校强调的是掌握各种食材的基本特性和搭配规律,而餐厅要的是能精准区分顾客喜不喜欢这道菜、愿不愿意付钱点单。
研究团队在实验中直接测量了这两种要求对AI参数的"拉扯方向"。他们发现,预训练阶段的学习指令和下游任务的学习指令,几乎是相互矛盾的——两者的梯度(可以理解为"改进方向")之间的夹角接近90度甚至相反。这意味着,如果让AI用同一套参数同时应对这两种要求,它会陷入一种持续的内耗状态:努力学好预训练的知识,就会干扰下游任务的发挥;专心优化下游任务,又会把预训练辛苦学来的知识覆盖掉。
更糟糕的是,当推荐系统需要每天用新数据更新自己的知识(因为商品和用户每天都在变),这个内耗问题会反复上演,最终导致系统要么越来越迟钝,要么不断忘掉之前学到的有用经验。
二、解决方案一:只学值得学的东西
面对"学的东西不够干净"这个问题,研究团队设计了一种叫做"行为多词元预测"(Behavioral Multi-Token Prediction,简称BMTP)的预训练方式。
核心思路是:不要学所有相邻的商品对,只学那些有真实关联的商品对。
研究团队定义了两种"值得学的关联"。第一种叫做协同关联,就是那些经常被同一批用户一起购买的商品组合,即使这两件商品看起来风马牛不相及。啤酒和纸尿裤就是经典案例——很多年轻父亲会同时购买这两样东西,尽管它们完全属于不同类别。这种关联不是因为商品本身有什么联系,而是因为特定群体的生活方式把它们绑在了一起。判断这种关联的方式,是通过一张提前构建好的"商品共现图"来计算相似度,相似度超过0.5的商品对才会被纳入训练。
第二种叫做语义关联,就是内容上非常相近的商品。一件红色连衣裙和另一件红色连衣裙之间,显然有很强的语义联系。判断这种关联的方式,是用一个预训练好的文本理解模型,把每件商品的标题、类目、店铺等信息转化成一个向量,再计算两个向量之间的余弦相似度,超过0.8才算是有效的语义关联。
这两种相似度的计算都是提前离线做好的,在模型训练的时候直接查表使用,不会增加额外的计算负担。
有了这套过滤机制,AI在"练基本功"阶段,就只会学习那些真正有意义的商品转换规律,而不会被"自行车链条→牛仔裤"这类跨场景噪音所干扰。由此训练出来的商品向量空间,结构会更加清晰——同类目的商品会自然聚集在一起,不同类目之间有清晰的间隔,而协同购买关系强的商品则会相互靠近,即便它们类目不同。研究团队通过t-SNE可视化方法证实了这一点:BMTP预训练出来的商品向量,类目纯度远高于从零开始训练的商品向量。
在八个公开购物数据集上的对比实验中,BMTP预训练方式在大多数情况下都优于传统的"预测下一个商品"方式。尤其是在使用冻结迁移(只把预训练的知识搬过来,不允许下游任务修改它)的情况下,BMTP带来的提升最为显著,在部分数据集上甚至超过20%。这个现象本身就很有启发性——它说明BMTP学到的东西确实更"纯粹",一旦被保护起来不被覆盖,就能充分发挥价值。
三、解决方案二:给知识和任务各自一块独立的"地盘"
解决了"学什么"的问题,还需要解决"怎么用"的问题。
研究团队把这个问题用一个形象的框架来理解:预训练学来的知识,就像一张精心绘制的地图,记录了商品世界的地形和地貌;而下游任务需要的,是在这张地图上标注出特定的道路和目的地,以适应自己的导航需求。
问题在于,过去的方案要么允许下游任务在地图上乱画、改地形(完全微调),要么完全不允许下游任务碰这张地图(冻结迁移)。前者破坏了地图本身的价值,后者则让导航过于僵硬,无法针对具体需求调整路线。
KGD的核心设计,是给预训练的"地图绘制者"(编码器)和下游任务的"导航员"(任务学习器)各自分配独立的参数,让他们互不干扰地工作,同时通过两个精心设计的单向接口保持联系。
第一个接口叫做"锚定校准残差"(Anchored Calibration Residual,简称ACR)。它工作在商品向量这个层面。具体来说,下游任务不会直接修改预训练的商品向量,而是在它旁边叠加一个自己拥有的"修正向量"。这个修正向量有一个特殊的约束条件:它必须和原始的预训练向量保持垂直(正交)关系。
为什么要垂直?这里有一个优雅的数学直觉。如果你在一个向量上叠加一个与它平行的向量,你改变的是它的长度(强度),但方向不变;如果你叠加一个与它垂直的向量,你是在它的"侧面"开辟了一个全新的维度,既不会改变原始方向,也不会与之冲突。这样,下游任务就能在预训练向量"看不到"的空间里写入自己需要的判别信息,而不会覆盖掉预训练辛苦学来的协同和语义结构。
ACR的具体实现包含两部分:一个标量参数用于调整预训练向量的"强度",相当于告诉系统"预训练的方向是对的,但力度需要调整";一个低秩矩阵分解出的残差向量负责在垂直方向上写入任务专属信息。为了确保垂直约束被严格遵守,训练过程中会加入一个正交正则化惩罚项,一旦残差向量开始偏向原始向量的方向,就会受到惩罚。
第二个接口叫做"只读跨注意力"(Read-Only Cross-Attention)。它工作在更深的层面,允许任务学习器读取预训练编码器在处理用户行为序列时产生的中间状态,也就是那些能体现用户当前兴趣脉络的隐含表示。
只读的意思是:任务学习器可以"看"编码器的状态,但不能"改"它。在技术实现上,这是通过"停止梯度"(stop-gradient)操作来保证的——任务训练产生的误差信号,在进入跨注意力机制的键和值(Key/Value)之前就被截断了,因此永远不会流入编码器的参数,编码器的参数只接受预训练信号的更新。
这两个单向接口共同构成了KGD的核心架构:编码器拥有预训练知识,任务学习器拥有任务几何,两者通过只读接口交流,但各自的"写权限"完全隔离。
四、为什么每天刷新知识不会把之前的学习成果冲走
上述设计还带来了一个非常关键的好处:适合流式场景下的持续刷新。
在Shopee这样的平台上,商品库每天都在更新,用户的兴趣也在漂移。研究团队测量了平台上每天商品交互分布的变化程度(用一种叫做JS散度的指标来衡量),发现这种变化不是稳定在某个水平上的波动,而是随着时间推移持续累积、单调增长的。这意味着,一个固定不变的预训练模型,其知识会越来越陈旧,最终跟不上平台的实际状态。
所以,推荐系统需要定期(理想情况下每天)用新数据重新学习,刷新预训练编码器的参数。但这带来了新的问题:每次刷新预训练编码器,原来下游任务辛苦训练出来的ACR残差向量,是不是就失效了?
KGD的设计给出了一个精妙的回答:不会失效,因为ACR是以"相对位置"而非"绝对位置"来锚定的。残差向量始终附着在当前预训练向量的垂直方向上,而不是固定在某个绝对的坐标位置。当预训练编码器刷新后,预训练向量的方向可能略有变化,但残差向量会自动随之"漂移",保持垂直关系。就像一根插在地面上的旗杆(预训练向量)和一条绑在它上面、与之垂直延伸出去的横梁(ACR残差),当旗杆稍微转动时,横梁也会跟着转,两者的垂直关系始终保持。
这个特性使得编码器的每日刷新和任务学习器的训练成为两个完全独立的操作,互不干扰。每天的训练流程变得非常清晰:先用当天的新数据对编码器做一次更新(学习新的商品和用户行为规律),然后冻结编码器,让任务学习器通过只读接口读取编码器的状态,更新ACR残差和任务专属参数。整个过程大约需要两个小时,与之前业界已有方案的训练成本基本持平。
五、在真实世界里打败了哪些对手
研究团队在两个层面验证了KGD的效果:八个公开的亚马逊购物数据集,以及Shopee平台90天的真实流量数据。
在公开数据集上,KGD配合BMTP预训练,在所有八个数据集上都取得了最好的成绩,相比此前最强的已发表方案提升了4%到12%不等。值得注意的是,这个提升来自两部分的叠加效果——BMTP带来更干净的预训练知识,解耦架构确保这些知识不被覆盖,两者缺一不可。
在Shopee的工业数据流上,研究团队设计了一个非常严格的对比实验,涵盖了业界所有主流的迁移学习方案,并在28天的短期窗口和90天的长期轨迹两个维度上进行评估。
对比的方案包括:完全不做预训练(基线);只做一次预训练然后冻结(GPSD方案);每天刷新预训练后对同一套参数做微调(共享参数方案);每天刷新预训练后只更新低秩适配器(LoRA方案);历史数据回放(Buffer Replay方案);以及KGD。
结果揭示了一个很有意思的规律:每种方案都有自己独特的失败方式。不做预训练的方案,从一开始就缺乏结构性知识,只能依靠每天的增量学习缓慢进步,效果提升有限。只预训练一次然后冻结的方案(GPSD),在短期内表现不错,但随着时间推移,冻结的知识越来越陈旧,在90天轨迹上呈现出明显的下降趋势。每天刷新后在共享参数上微调的方案,刷新和微调会相互干扰,反复覆盖对方的成果,最终效果甚至低于不做预训练的基线。LoRA方案虽然引入了参数隔离,但低秩适配器的自由度不够,无法充分重塑下游任务所需的判别几何结构。历史数据回放方案则存在一个根本性的问题:被回放的历史数据记录的是已经过时的商品分布和用户兴趣,回放得越多,模型就越倾向于拟合那些已经不再出现的规律,效果单调下降,在90天轨迹上是所有方案中表现最差的。
KGD是唯一在90天内持续保持优势的方案,没有出现知识侵蚀或优势衰减的迹象,因为它从根本上解除了"刷新"和"适应"之间的耦合。
在消融实验(逐步去掉某个组件,看效果如何变化)中,研究团队也证实了KGD三个核心组件——BMTP过滤、ACR残差、只读跨注意力——各自都对最终效果有独立的贡献,缺少任何一个都会带来明显的性能下降。
此外,研究还发现KGD具备良好的扩展性:由于预训练编码器和任务学习器是独立的,可以分别增加它们的容量。增大编码器,提升的是对商品行为规律的建模精度;增大任务学习器,提升的是判别几何的表达能力。两者都增大时,效果进一步提升,而且不会出现共享参数方案中"容量增加反而过拟合"的问题。
六、从实验室走进真实店铺:在线A/B测试的结果
最终,研究团队把KGD部署到了Shopee首页搜索场景的排序阶段,这是一个服务亿级用户的核心流量入口。测试方案是:将用户按ID哈希值随机分成两组,各占10%,一组使用原有生产系统(对照组),另一组使用KGD(实验组),另设一个A/A组用于验证统计方法的可靠性。测试历时两周,时间在2026年上半年。
A/A组验证通过后,KGD的实验结果是:每位用户贡献的成交金额(GMV)提升1.75%,广告收入提升1.53%,点击率提升0.95%,转化率提升0.72%。其中GMV和广告收入的提升在统计显著性检验(p<0.01)下被确认不是随机波动。
研究团队还专门做了人工评估,确认KGD没有降低搜索结果的相关性——每次查询中出现的不相关商品比例没有增加。这排除了"系统为了提升点击率而推荐哗众取宠的内容"的可能性。
成本方面,每天的离线训练时间从原来的一个小时增加到约两个小时(在同等数量的A100 GPU上),在线服务的响应延迟维持在120毫秒,与之前持平。内存使用量因为引入了独立的任务学习器而大约翻倍,这被认为是在可接受范围内的代价。
测试结束后,研究团队还做了一周的回滚实验,将流量切回原有系统,结果GMV下降了1.21%,广告收入下降了1.50%。这进一步确认了KGD带来的是真实的系统能力提升,而不是测试期间的偶然效应。
说到底,KGD这项研究解决的是一个在推荐系统领域长期被忽视但又至关重要的问题:当"老师"需要每天更新自己的知识,怎样才能让"学生"不用每次都从头开始?答案是让老师和学生各自独立工作,老师负责维护对世界的认知地图,学生通过只读窗口查阅地图,并在旁边的空白区域标注自己的判断,两者的笔迹永远不会混淆。
这对普通购物者来说意味着,未来的推荐系统将能更好地跟上你兴趣的变化,在商品和用户都在不断更迭的动态环境中,持续给出更贴合你当下需求的推荐,而不会因为系统"忘记"过去学到的规律而变得越来越迟钝。当然,推荐系统变得更精准,也意味着你可能会更容易"忍不住"多买几件。这算是一把双刃剑,留给读者自己判断。
如果想了解KGD的技术细节,可以通过arXiv:2608.02738查找完整论文,研究团队也已在GitHub上开放了核心代码实现(FuCongResearchSquad/KGD4REC)。
Q&A
Q1:BMTP和普通的"预测下一个商品"方法有什么本质区别?
A:普通预测下一个商品的方法会把用户购物记录里所有相邻商品对都当作有意义的关联来学习,但用户的记录往往是多个不相关购物意图拼接在一起的。BMTP只学习那些在协同购买频率或商品内容相似度上超过阈值的商品对,把跨越兴趣边界的噪音过滤掉,让模型学到的是真实的购物规律而非偶然的相邻关系。
Q2:KGD中的ACR残差为什么必须和预训练向量保持垂直?
A:垂直关系确保任务写入的信息不会覆盖或削弱预训练向量原有的方向信息。如果残差向量和原始向量方向相同或相反,就会直接修改预训练的判断结果;保持垂直则相当于在预训练知识"看不见"的维度上开辟新空间,两套信息可以同时存在于向量表示中,互不干扰,且预训练编码器每天刷新后这种垂直关系依然自动保持。
Q3:KGD在Shopee的A/B测试里,转化率只提升了0.72%,是不是效果比较有限?
A:转化率提升幅度较小是预期之内的结果。研究团队解释说,订单(转化)标签在数据中非常稀疏,大约只有0.41%的交互最终产生订单,预训练模型在这么稀少的信号上很难学到足够的规律。相比之下,点击行为更频繁(约7.5%),预训练能从中学到更多有用知识,因此点击率提升更显著。成交金额和广告收入的提升幅度更大,是因为这两个指标会同时受益于点击率和转化率的共同改善。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.