LLM —— GRs
从传统推荐到生成式推荐
传统推荐/广告系统是如何工作的?
在生成式范式兴起之前,工业界的推荐/广告系统普遍采用 “多阶段、模块化” 的Pipeline架构。这个过程通常是“检索-粗排-精排-重排”的漏斗模型。
- 召回/检索从百万乃至数十亿的候选物品池中,快速、初步地筛选出数百或数千个可能与用户相关的物品。核心要求是快和全。经典方法比如协同过滤是基于“物以类聚,人以群分”的思想,包括User-CF和Item-CF;向量化召回通过双塔模型(如DSSM)将用户和物品分别映射为向量,通过近似最近邻搜索(ANN)寻找最相近的物品向量,这是深度学习时代的主流;基于规则的召回如热门召回、地域召回、新物品召回等作为补充。
- 排序是对召回阶段得到的数百个候选物品进行精准打分,通常使用判别式模型预估的点击率、转化率等。早期经典模型使用逻辑回归,依赖大量人工特征工程。梯度提升决策树如XGBoost、LightGBM在表格数据上表现优异。深度学习模型如Wide & Deep, DeepFM, DCN等能够自动学习特征的高阶交叉,在此基础上出现了DIN、SIM等经典的迭代工作。
- 重排在精排打分的基础上,引入业务规则、多样性、新颖性、公平性等非精度指标,生成最终的用户可见列表。经典方法如MMR、DPP等,或者简单的规则调整。
传统范式的问题
- 模块割裂:召回、排序、重排各阶段目标不一致、模型独立,存在误差累积和信息损失。召回模型看不到最终目标,可能将潜在的高价值物品过早过滤。
- 曝光偏差:模型严重依赖于用户历史已曝光的数据进行训练,对于“用户可能喜欢但从未接触过”的长尾、新颖物品发掘能力有限。
- 目标局限:传统模型大多进行“点估计”,即预测单个物品的反馈概率,从封闭的候选集中集中排序,难以对整个列表的全局最优进行建模。
什么是生成式推荐/召回?
生成式推荐是一种端到端的范式,它将推荐问题重新定义为 “序列生成” 问题。给定用户的上下文信息(如用户画像、历史行为序列),生成式直接生成用户下一个可能感兴趣的物品ID序列。类似于自然语言处理中的任务。
- 在NLP中,给定上文,模型生成下一个词。
"今天天气很好,我们一起去__" -> 生成 “公园” - 在推荐中,给定用户历史行为,模型生成下一个物品。
User历史点击 [item_A, item_B, item_C] -> 生成 [item_D, item_E, ...]
生成式将物品ID/语义ID视为“单词”,整个物品库构成一个庞大的“词表”。将用户行为序列视为“句子”:[item_1, item_2, ..., item_n] 就是一个句子,除了物品id也可以是行为相关的各类特征。使用生成式模型(如Transformer)而非判别式模型学习用户行为序列内部的模式和规律,从而预测下一个或多个物品。模型不仅可以生成一个物品,还可以一步到位地生成一个有序的推荐列表,这相当于将召回和排序/重排多个阶段融合到了一个统一的生成过程中。
生成式推荐的优劣与挑战
生成式推荐的优势/收益来源
- 端到端代替级联式架构:级联式的架构迭代越来越复杂,收益进入瓶颈期,各级之间通信缓存代价越来越高。生成式模型直接以最终推荐列表的质量为优化目标,避免了多阶段 pipeline 的误差传递和信息损失,模型可以学到从海量候选池直接到最优列表的映射。Meta的HSTU工作在工业级数据上验证了scaling law,得以让端到端生成式模型的规模扩大。
- 融合多模态信息与统一序列建模:用户的历史行为可以包含点击、购买、点赞、搜索等多种类型。生成式模型可以将这些异构行为视为一个统一的序列进行建模,从而构建更全面的用户兴趣表示。基于Transformer的架构能够捕捉用户行为序列中复杂的、长期的依赖关系。用户的兴趣可能是动态变化的,生成式模型能更好地理解这种演变,例如从“浏览手机”到“购买手机壳”的跨域兴趣迁移。对长尾和冷启动物品更友好,只要一个物品在训练序列中出现过,模型就有可能根据其上下文模式将其生成出来,而不是像双塔模型那样严重依赖物品侧特征的完善度。
- 全局最优列表生成:传统的列表生成是“贪心”的,即选取top-k打分最高的物品。而生成式模型在生成每一个位置的物品时,可以考虑已经生成的物品,而不仅仅是对单个物品的点击,从而在列表级别上优化多样性、互补性等指标,实现全局最优。
生成式落地面临的挑战
- 样本构造及特征工程问题:NLP中的词表通常在几万到几十万,而推荐系统的物品库动辄数百万甚至数亿,这导致模型的输出层计算(Softmax)成为巨大的性能瓶颈,同时召粗精各个环节样本的构造方式也都不同,如何高效处理超大词表构建样本是首要挑战。工业系统中的特征数及特征类型也很多样,特征处理方式更加复杂,包括DeepFM特征交叉、DIN的target attention、序列间的cross attention、SENet自适应特征选择、MMoE多任务建模,如何做特征工程才能让生成式打败这些累计多年的DLRM行业经验也是一个挑战。
- 生成过程的不可控性与“幻觉”:生成式模型可能会生成不存在的物品ID或重复物品。如何保证生成物品的有效性、多样性和准确性,并融入业务规则,比如不允许出现已购物品,是一个难题。
- 训练与推理的一致性:在训练时,模型使用真实的用户行为序列作为上文(Teacher Forcing)。但在推理时,模型使用自己生成的结果作为上文,这可能导致曝光偏差的累积,即一步错,步步错。
- 评估困难:传统的基于点击率的评估指标可能不足以衡量生成列表的整体质量。如何评估列表的多样性、新颖性和用户长期满意度,需要新的评估体系。
- 系统部署与性能压力:模型参数的scaling后,如何在保证效果的同时,降低在线推理时的计算开销和延迟,适用于广告推荐系统高吞吐、低延迟的场景。
生成式经典工作演进
GRU4Rec: Session-based Recommendations with Recurrent Neural Networks
在GRU4Rec之前,推荐系统大多基于协同过滤或矩阵分解,这些方法主要有2个缺点:静态建模忽略了用户行为内在的时序动态性;缺失序列信息无法捕捉用户兴趣的演变过程。GRU4Rec是发表在ICLR2016的工作,GRU4Rec将用户在一个会话内的交互序列(如点击、购买)视为一个时间序列,使用RNN(GRU)来建模这个序列,从而预测用户下一个可能感兴趣的项目。GRU4Rec为序列推荐奠定了基础。它本质上是在做“下一个物品预测”,可视为生成式召回的雏形。
GRU4Rec的几个主要贡献:
- Session并行miniBatch处理:用户会话长度不一,如何高效地进行批处理训练?GRU4Rec将多个会话组合成一个矩阵进行并行计算。如果一个会话结束,就用下一个会话的初始状态“填充”到同一批次中。极大提高了GPU的利用率。
- 基于排名的损失函数: 传统的交叉熵损失函数在物品库极大(百万甚至上亿)的情况下,计算Softmax非常昂贵,且它平等地看待所有负样本(未交互的物品)。GRU4Rec提出几种基于排名的损失函数,包括1)BPR Loss(Bayesian Personalized Ranking):最大化正样本和负样本得分之差的对数似然。2)TOP1 Loss:一个更简单的正则化排名损失,鼓励正样本得分高于负样本,同时鼓励负样本得分接近于0。3)loss负采样:不需要对所有未交互的物品进行计算,而是随机采样少量(如100-500个)负样本,与一个正样本组成样本对,这解决了超大规模物品库的计算瓶颈。
从GRU4Rec出发,后续发展出很多对其工作的拓展:模型架构(RNN -> CNN -> Transformer/GNN)、信息利用(仅物品ID -> 丰富Side Information)、训练目标(排名损失 -> 对比学习 -> 生成式目标)。
SASRec: Self-Attentive Sequential Recommendation
SASRec之前,序列推荐的主流模型是GRU4Rec等基于RNN的模型。RNN存在的问题:1是由于梯度问题难以学习非常长的序列依赖;2是递归计算无法并行处理序列导致训练速度慢;3是RNN的隐藏状态机制对序列中不同物品的“重要性”是隐式且固定的,难以明确捕捉哪些历史行为对预测下一个物品最关键。SASRec于2018年发表在ICDM,将Transformer架构引入序列推荐(仅含解码器的GPT风格),应用在召回场景,利用自注意力机制捕捉长期依赖,直接、显式地捕捉用户行为序列中任意两个物品之间的依赖关系。SASRec明确地将推荐定义为自回归生成任务。
TDM: Learning Tree-based Deep Model for Recommender Systems
TDM是阿里2018年发表在KDD的工作,是生成式召回的标志。虽然不是严格的NLP式生成,但TDM开创了“使用复杂模型进行端到端检索”的思路。在TDM提出之前,工业界解决大规模推荐尤其是召回阶段的主流方法是:
- 双塔模型:分别学习用户和物品的emedding,通过近似最近邻搜索快速召回。但用户和物品的深度交互仅在最后的内积运算中发生,限制了模型的表达能力。
- 基于物品的协同过滤:简单有效,但难以融入丰富的特征,且泛化能力有限。
我们既希望召回模型能像精排模型一样复杂、强大,能进行深度特征交叉,又需要它能在毫秒内从亿级物品池中完成检索。传统的“内积检索”范式无法容纳复杂的深度模型。TDM将大规模推荐问题转化为一系列在树结构上的层次化分类问题。通过一棵树来组织所有物品,使用一个复杂的深度模型从根节点到叶子节点逐层决策,最终检索出叶子节点物品。召回包括索引构建和排序两部分,TDM中索引构建使用图中右侧树结构,检索算法是beam search。评分部分是图中左侧的DNN网络,用于输出用户对树节点的偏好程度。
TDM构建了一棵最大堆树。每个叶子节点对应一个具体的物品。拥有 N 个物品,就有 N 个叶子节点。非叶子节点都是虚拟节点,不代表具体物品,而是代表其子树下所有叶子节点物品的集合。最大堆树具有的最大堆性质即对于任意一个非叶子节点 n,其被用户 u 喜欢的概率,应该大于或等于其任意一个子节点被 u 喜欢的概率。直观理解就是如果你对“电子产品”这个大类别感兴趣(父节点概率高),那么你更可能对其下的某个子类如“手机”或具体商品如“iPhone”感兴趣。反之则不一定成立。TDM树采用随机初始化,简单随机地将物品分配到叶子节点。再基于内容聚类,利用物品的内容特征如标题嵌入、类别等进行层次化聚类,将相似的物品放在同一个子树下。
传统遍历复杂度是O(N)。双塔ANN检索复杂度是O(d log N),其中 d 是向量维度。TDM树检索复杂度是O(beam_size * D * log N),其中 D 是树的最大度(每个节点的子节点数)。由于 beam_size 和 D 都是常数,因此复杂度是O(log N)。这使得从亿级物品池中检索在毫秒级完成成为可能。
TDM可以看作是生成式推荐的先驱。路径生成即物品生成:在TDM的检索过程中,从根节点到叶子节点的一条路径唯一确定了一个物品。这个“路径”可以被视为物品的一种离散的、层次化的标识符。因此TDM的检索过程,本质上是在自回归地生成一条路径,在每一层,模型选择一个子节点,直到生成完整的路径(即物品)。同时TDM与语义ID的完美对应:生成式推荐中的语义ID为物品分配一个层次化的代码(如 [c1, c2, c3]),TDM中的树路径 [根 -> n1 -> n2 -> 叶子] 就是一个天然的、可学习的语义ID。基于TDM的检索,就变成了基于语义ID的生成式召回。后续从TDM出发的技术发展线:TDM(树+判别模型) -> JTM(联合优化树和模型)-> 语义ID(物品的层次化表示)-> 生成式推荐(自回归生成语义ID路径)。
M6-Rec: Generative Pretrained Language Models are Open-Ended Recommender Systems
M6-Rec阿里达摩院发表在2022KDD上的工作。在M6-Rec之前,推荐系统面临的几个问题:
- 任务割裂:召回、排序、重排各阶段模型独立,目标不一致。用户画像、行为序列、物品内容等异构信息难以统一建模。
- 封闭世界假设:传统模型只能在训练时见过的、固定物品库中进行推荐,无法处理新物品或开放域请求。模型基于统计相关性进行推荐,无法像人类一样进行常识推理和因果推断。
M6是阿里研发的10B中文多模态预训练模型Multi-Modality to Multi-Modality Mega-Transformer。M6-Rec是将用户行为数据表示为纯文本,将任务转换为语言理解或生成任务,利用M6的预训练能力实现的在推荐任务上的下游适配。推荐基础大模型面临的两个挑战是1下游任务的集合可能是无限的;2计算效率问题。对于问题1,M6-Rec将推荐系统重构为一个统一的基于大语言模型的开放域文本生成任务。它不再将推荐视为对固定物品ID的打分或排序,而是视为根据用户上下文生成推荐理由或物品描述的文本生成问题。不仅将物品ID作为token,还将用户属性、用户历史行为序列、物品标题、上下文、任务指令等全部统一成自然语言序列。如输入序列是:“用户:年轻男性。行为:点击了‘Nike篮球鞋’,搜索了‘Java编程书’。推荐:”,模型基于其在大规模语料上预训练得到的语言知识和推理能力生成推荐结果,如 “《Java核心技术卷Ⅰ》, Adidas运动T恤”。对于问题2,M6-Rec通过改进版prompt tuning -> option tuning、late interaction、early exiting、参数共享、剪枝等技术减少推理时间和模型大小。
Tiger: Recommender Systems with Generative Retrieval
现代推荐系统通过先将查询和候选项目嵌入到同一个统一空间中,然后进行近似最近邻搜索,根据查询嵌入选择排名靠前的候选项目,从而执行大规模检索。Tiger: Transformer Index for GEnerative Recommenders是谷歌DeepMind发表在NeurIPS2023的工作,首个用于推荐任务的基于语义ID的生成式模型,给定用户会话中项目的语义ID,检索模型自回归地解码目标候选项目的标识符,预测用户接下来将交互的item的语义ID。
Tiger利用物品的内容特征(如标题、价格、品牌和类别)构建句子,然后将其输入预训练的Sentence-T5模型,得到768维的物品语义embedding,再使用RQ-VAE量化形成一组有序的codeword,即该物品的语义ID。将语义ID embedding序列拼接到用户embedding后,使用双向Transformer encoder实现特征间的充分交叉,一定程度上缓解双塔ui特征交叉太晚的问题。
论文中提到的关于语义ID一些其他点:
- 生成语义ID的其他量化方法对比:局部敏感哈希LSH、分层k-means聚类(会丢失不同簇之间的语义含义)、VQ-VAE(检索时生成候选的性能与RQ-VAE相似,但它没有ID的层次结构),这三个都不如RQ-VAE效果好。
- 语义ID碰撞处理:语义碰撞即多个item映射到同一个语义ID,通常会维护一个将语义ID映射到对应item的查找表来检测碰撞。为解决语义碰撞,在有序语义编码的末尾附加一个额外token确保唯一性,这个过程仅在RQ-VAE模型训练完成后执行一次。
- 生成无效的语义ID:论文中说这种情况很少,由于语义ID的层次结构,可以在模型生成无效token时进行前缀匹配,检索和模型生成token具有相似语义的item。
语义ID的优势:
- codebook缩短了候选Token的个数,从千万级到256,语义ID是整数元组,相比高维embedding查找表(负采样+ANN)的存储效率更高。
- 语义ID中的语义信息可用于冷启动推荐。
- 因为语义ID的层次化特性,在解码过程中基于温度的采样可以控制模型预测的多样性。比如对语义ID的第一个token采样可以检索粗粒度类别的物品,对第二/三个token采样则可以在类别内采样物品。
在实际应用中语义ID是存在一些问题的,后续的一些工作都在尝试通过混合建模、层次化结构等方法来弥补这些不足。
- 区分能力问题:语义ID基于内容特征生成,相似的物品会有相似的ID前缀。这可能导致模型难以区分高度相似但用户偏好不同的物品。
- 迁移能力局限:虽然语义ID理论上能改善冷启动,但实际效果受限。新物品的语义ID可能无法准确反映用户的潜在兴趣。模型需要足够的训练数据来学习语义ID与用户行为之间的复杂映射关系。
Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations
HSTU是Mata AI发表在ICML2024的工作,该工作摒弃了近10年工业级主流的深度学习推荐系统架构DLRMs,首次基于LLM构建工业级生成式推荐系统,并首次验证了LLM的Scaling Law同样适用于推荐系统。
GRs对DLRM中的异构特征空间进行统一,将推荐系统的召回排序重新表达为GR中的纯时间序列顺序推导问题。这样模型就可以用生成式的方式在相同计算量下训练更多数据。GRs的层次推导架构HSTU针对性修改了注意力机制,包括:类似DIN的思想,sigmoid取代softmax,sigmoid可以保留数值本身的强度;QKV->QKVU,类似ResNet,U表示原始向量表征,最终和attention后的表征相乘,同时保留深度交互后和原始的特征表征,增强泛化性;MLP中使用silu(silu=x*sigmoid(x))作为激活函数,同时保留了线性和非线性激活函数,结合了relu和sigmoid的信息,且不会产生神经元死亡的现象,提升了模型的表现和稳定性。GRs还做了很多工程优化,比如结合FlashAttention2和提出新的M-FALCON推理方法加速。
其他业界经典工作
- 阿里妈妈URM《Large Language Model as Universal Retriever in Industrial-Scale Recommender System》:多目标生成式召回。URM将多种检索目标统一至协调的输入-输出框架,利用LLM作为特征生成器。最终URM能根据输入指令动态调整检索输出,在数十毫秒延迟内返回商品集。在淘宝广告平台上在线A/B关键指标提升超3%。
- 美团《MTGR: Industrial-Scale Generative Recommendation Framework in Meituan》:基于HSTU架构升级生成式精排模型。相对HSTU增加了user和item的交叉特征,提出组层归一化GLN对异质token分别归一化来提升不同语义空间内的编码性能,采用动态掩码策略来避免信息泄露。
- 快手《OneRec: Unifying Retrieve and Rank with GenerativeRecommender and Preference Alignment》:统一召粗精的端到端架构。1)使用encoder-decoder结构对用户的历史行为序列编码,并逐步解码出用户可能感兴趣的视频(V2使用decoder-only架构)。用稀疏混合专家模型MoE扩展模型容量数。2)与传统的下一item预测不同,提出会话级生成(实际技术报告中采用的point-wise)。3)结合直接偏好优化DPO(技术报告中使用Early Clipped GRPO, ECPO,V2使用GBPO)提升生成结果的质量,设计一个奖励模型来模拟用户生成,并定制了采样策略。最终在快手主场景实现了1.6%的观看时长增长。
参考
- 生成式推荐会成为下一代推荐系统的范式吗? 王喆老师的回答非常好
- 生成式推荐是不是一个伪范式?
- 现在,我们最好的召回模型来 召回的架构为索引+排序,字节的Streaming VQ
- 聊聊生成式召回的本质 本质上是Streaming VQ
- 万字长文——生成式推荐有几种写法 生成式精排:GRs、HSTU、MTGR;生成式召回:Tiger、COBRA、端到端OneRec,模型架构及原理介绍
- Session-based Recommendations with Recurrent Neural Networks
- Self-Attentive Sequential Recommendation
- Learning Tree-based Deep Model for Recommender Systems
- M6-Rec: Generative Pretrained Language Models are Open-Ended Recommender Systems
- Recommender Systems with Generative Retrieval
- Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations
- Large Language Model as Universal Retriever in Industrial-Scale Recommender System
- MTGR: Industrial-Scale Generative Recommendation Framework in Meituan
- OneRec: Unifying Retrieve and Rank with Generative Recommender and Preference Alignment
- OneRec Technical Report
- OneRec-V2 Technical Report






