文章链接:https://arxiv.org/pdf/2510.11639
机构:快手
发布时间:2025.10
参考文献:
Copyright (c) Wang-Luning. All Rights Reserved.
OneRec等生成式推荐模型只能作为一个隐式的下一个物品预测器,而不具备LLM中的显式的reasoning能力如CoT等。因此,OneRec-Think将对话、推理、个性化推荐进行集成,让模型能够在文本空间内进行reasoning来深度分析用户当前的需求,并生成推荐视频的SID。
其训练阶段主要包含3个阶段:
物品token空间与文本空间的对齐(Itemic Alignment):将SID作为LLM额外的词表去做预训练,来将SID映射到LLM的文本embedding空间中,跨模态地进行物品和文字在语义空间上的对齐,使得LLM既懂文本token又懂视频SID。
推理激活(Reasoning Activation):使得LLM激活在推荐上下文下的推理能力
推理增强(Reasoning Enhancement):设计和推荐相关的奖励函数来表达用户偏好的多重有效性(multi-validity)
另外,为了使得模型能够满足线上服务的延迟要求,还提出了"think-ahead"架构来在线上部署模型。
OneRec-Think在推理阶段的主要功能如下图所示:
可以根据视频的SID来生成对于视频的文字描述
进一步可以根据用户历史交互(产生过各类正/负向行为的视频SID)来生成对于用户兴趣的文字描述,也即将信息从SID空间转移到文本空间
根据用户兴趣的文字描述,进一步在文字空间内做可解释的reasoning来分析用户兴趣,并最终生成出推荐的视频SID
由于LLM本身就具备对话能力,因此在用于推荐场景后可以引入对话来让用户给出一些具体的信息来指导推荐(例如用户表达了想看到些轻松内容的意愿)
注:LLM的输入和输出中仅有SID和text ID两种token,其中视频内容完全由SID表征,并不含有其他的多模态token。也即强迫模型学习SID和其对应的文字意义之间的关联,SID的作用就是被当做视频的多模态token。
任务定义:
设视频的SID表示为:
传统的GR模型的目标即为基于用户历史序列来预测下一个视频
而将reasoning和推荐结合到一个autoregressive pass中之后,则首先基于用户历史交互序列(总结而成的文字prompt
模型训练:
阶段1:物品token空间与LLM文本空间的对齐
通过多任务预训练实现SID空间和LLM原本的文本空间的对齐。具体而言,通过如下4种方式构造多模态的预训练数据,然后把LLM的词表扩大来容纳所有的SID token(共有
任务1:两种token交错的用户画像构建**(Interleaved User Persona Grounding)
将用户交互历史中的视频SID tokens和描述用户画像的文本tokens交错地形成一个序列,从而得到含有两个模态的token的训练序列。该过程的目的是让模型建立起SID和它们的现实意义之间的映射,让模型知道“这些历史序列SID会得出这样的用户画像文字总结”,实现SID和文本空间的基本对齐。
示例:
任务2:用户序列偏好建模(Sequential Preference Modeling)
构建数据来教会模型基于历史交互序列(最近的256个交互)来预测下一个视频的SID,也即学习生成式推荐的主干任务——如何基于历史SID序列来预测用户最感兴趣的下一个视频的SID。loss只在最后的目标视频SID上计算。
示例:
任务3:物品的内容描述(Itemic Dense Captioning)
让模型根据一个视频的SID来生成它的文字描述,让模型建立起对于视频SID和对应的文字信息之间的关联的理解。loss只在视频的目标文字描述上计算。
示例:
任务4:通用语言建模(General Language Modeling)
使用通用的文本语料训练模型,使得模型在迁移到推荐场景后仍能保持其基本的文本语言能力,防止因为上述任务的训练而丧失世界知识。
为了确保在注入推荐知识的同时不丢失语言能力,该部分对齐训练分为2个子步骤:
Token Warm-up:
训练那些视频SID token的embedding,确保它们能顺利对齐LLM原有的文本token的embedding空间。在这个过程中冻结LLM的参数,只学习SID的embedding。该过程使用任务1(交错的用户画像构建)的数据进行训练。
Multi-Task Integration:
将上述4种任务的数据通过一定比例(24.30% : 65.73% : 4.94% : 5.03% )混合后训练全部模型参数,充分实现SID到LLM语义空间的对齐,并在保留文本知识的同时学习基本的推荐能力。
阶段2:推理激活
该阶段希望激活LLM在推荐情境下的显式推理能力,通过SFT来引导模型生成高质量的推理路径。由于现实中用户的历史交互序列通常很长且充满噪声,模型很难直接针对它们生成高质量的CoT。因此,该阶段分为了两个子任务:首先拿清理过的干净上下文来使得模型生成高质量的CoT,从而构造一个高质量CoT的数据集,然后再用这些高质量CoT来作为监督信号,让模型在真实的有噪声的历史序列下学习生成这些CoT:
使用剪枝后的上下文来生成高质量CoT:
首先构建一些逻辑清晰且去除了噪声后的历史序列,作为相对简单的样本来生成高质量CoT。具体而言,通过相似度函数
然后将这个相关的历史序列的SID+目标视频的SID输入模型,并让模型用文字来一步步解释为什么用户会选择这个目标视频(为什么这个目标视频和用户历史序列是align的),从而生成reasoning的过程
其中
学习在有噪声的历史序列上做reasoning:
进一步,将上文剪枝后的历史交互序列换成原始的完整交互序列,并使用SFT的方式来让模型学习生成在该历史交互下的高质量CoT(也即,拿模型在简单条件下自己生成的CoT作为ground truth,然后让模型学习如何在面对有噪声的完整历史序列时也能生成这个高质量CoT)。
SFT的loss会在reasoning tokens以及最后的target视频的SID上进行计算。
阶段3:推理增强
标准的可验证奖励(例如精确匹配)在推荐场景下面临稀疏性的挑战,因为大多数reasoning路径最终都无法精确命中目标物品,使得奖励信号过于稀疏,优势在各种情况下都接近0,难以有效指导模型学习。因此,本文提出使用Rollout Beam奖励,对于每次rollout产生的reasoning路径,进一步通过beam search来生成若干个(
基于上述奖励,使用GRPO来做RL优化模型,每次rollout出
线上部署中的Think-Ahead架构:
为了确保引入reasoning后整个系统依然能够满足线上服务的延时限制,Think-Ahead架构将模型推理分为两个阶段:
离线推理阶段:
使用完整的OneRec-Think模型为每个用户生成若干条reasoning路径,每条路径都代表了一种可能的逻辑推理方式,连接了用户的行为与潜在兴趣之间的联系。
然后,每个推理路径最终都生成一个推荐物品的SID的前缀,在SID长度为3的情况下即为前两个code:
最终,将每个用户
在线推理阶段:
当用户发起请求时,采用实时更新的普通OneRec模型来进行约束解码。也即,给定用户历史序列并预测下一个视频时,纳入考虑的目标视频SID的前两位必须来自该用户缓存的高潜力前缀,在线的OneRec相当于只需要预测第3个code来最终决定具体的推荐物品即可:
可见,OneRec-Think模型并不是直接在线上推理时对于每次request都进行复杂的推理,而是离线地在后台对用户历史进行深入推理,并“预先”猜出根据用户的历史他可能会对哪一类视频感兴趣,但最终的具体推荐决定权留给线上的普通OneRec模型。这种设计是因为Think模型拿到的用户历史并不是绝对实时的,这个历史序列可以用于分析用户的深层兴趣,但用户发起请求时的实时兴趣并不能完全根据这个更新不那么及时的历史序列来推测,因此最后还需要让完全实时的在线OneRec模型在Think模型划定的深层兴趣视频范围内,结合用户的当前兴趣决定最终推荐的视频。