前沿重器
栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍: 仓颉专项:飞机大炮我都会,利器心法我还有 。(算起来,专项启动已经是20年的事了!)
2023年文章合集发布了!在这里:又添十万字-CS的陋室2023年文章合集来袭
往期回顾
- 前沿重器[55] | prompt综述的解释和个人思考
- 前沿重器[56] | google search: 用emb模型做个性化语言prompt
- 前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
- 前沿重器[58] | deepseek-V3&R1技术启示
- 前沿重器[48-54] 合集:四万字聊搜索系统
大模型发展至今,在推荐系统已经有非常多的使用,前面写的这篇(前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习)是其中之一。今天给大家分享的内容则比较偏实践风,考虑到众多现实场景的因素,最终落地实现,为具体业务场景获得了收益。
今天给大家分享的是这篇文章:
- LLM在电商推荐系统的探索与实践:https://mp.weixin.qq.com/s/QFV1kJ6ElGyvHK4mXLJNxg
本文首先讨论大模型和推荐系统两者的相性和关系,然后针对两者的关系在业务场景中尝试并得到效果,该文章的讨论整体比较严谨而且具有实战参考价值,因此我也针对这篇文章分享一下自己的理解和看法。
- 电商困境和LLM价值
- 大模型和推荐融合的思路
- 算法方案
- 类目搭配
- 商品语义表征
- 展望
- 一些细节补充
电商困境和LLM价值
电商是非常经典的推荐场景了。经过长期的发展,已经有了一套成熟的基于用户历史行为、兴趣偏好进行个性化匹配商品的推荐系统,在架构上,召回、粗排、精排、重排模块的构造也已经被众多开发者进行尝试并达成了共识。然而,在这个基于数据驱动的系统下,目前的核心的推荐逻辑,更多依赖于用户的历史行为和用户物料本身的内容信息,而缺乏语义和外部知识信息,这些缺点会导致信息茧房、冷启动、多样性不足、跨领域等的问题,这些问题相信大家在很多地方都有听到。
这里给大家举个例子,推荐系统有个概念——Exploration and Exploitation,即经典的EE问题,为了提升多样性,通常会借助试探的方式来探索用户的兴趣,从而体现多样性,避免内容过于单一,但探索这事本身也有风险,万一用户非常反感这一探索内容,这很可能会导致用户脱离平台从而丧失平台的活跃度,因此所谓的探索如果有足够的依据支撑,给出用户更可能喜欢的内容,将会更加高效。
而大模型,具备开放域知识,同时能基于一些现有的信息,提供一些简单且有一定道理的推理,这很可能可以为推荐系统提供目前缺少的“语义和外部知识信息”,因此,在这个分析下,大模型应该是会为推荐系统提供新的信息支撑的。
大模型和推荐融合的思路
作者把推荐系统和大模型的融合分为两个方案,即左边的LLM+推荐和右边的LLM as 推荐。
左边的方式是把LLM当做是特征提取器,旨在把用户和物料原始信息设计成prompt的模式,用LLM生成对应结果来进行表征。作者在这里列举了两种典型用法,一种是LLM生成embedding,可以用作很多下游任务的表征,例如用户行为、商品特征的表征,另一种方式则是生成摘要,可以是对用户的行为的表征总结,另一种则是用LLM生成信息摘要或者推理结果,例如对用户的行为进行总结(说实话最近的DS确实能做一些推理),对新闻等内容做摘要总结,都是可以的,文章中提到了GPT4Rec(GPT4Rec: A Generative Framework for Personalized Recommendation and User Interests Interpretation)根据用户行为历史抽取并生成中间的语义query来做搜索,获取合适的商品,该思路非常有借鉴意义(说不定后面我会专门讲)。
右边的则是比较激进的模式,用LLM直接作为推荐模型,代替一般的推荐系统中更多的工作,即简单地输入任务描述、行为、画像等信息来做推荐,激进地例如用来做ranker,或者是放入到对话式推荐中,通过多轮对话缩小范围从而精准找到用户需要的产品。
算法方案
值得明确的是,对于已有的推荐系统而言,要让大模型直接替代现有的推荐系统,无论是基本的耗时和成本消耗,还是准确、点击等算法和业务指标,都过于激进,因此更多是希望大模型能够提供辅助功能:
- 借助LLM通用知识信息,构建类目搭配体系,去做I2I、类目兴趣拓展建模等,提升多样性。
- 借助LLM文本推理能力,辅助商品、用户理解,优化简化电商Item的内容解析,通过summary能力对用户行为进行总结等。
类目搭配
淘宝内部已经有非常完善的商品类目体系,但是类目之间的关系是相对比较独立的,一般的I2I(item2item)其实非常难做,经典的“啤酒和尿布”的梗,要挖掘更多难度其实非常高,线上商店和线下的商场购物性质有巨大不同,而大模型的推理能力,则可以有效优化这点,直接看例子:
当然,经常做大模型的应该知道,在类似的类目生成、推理、分类任务下,大模型的输出往往并不能很规范,不能很好地命中给定的类目体系,此时除了在prompt中约束(其实在prompt中约束也不现实,类目的数量多,边界模糊后,其实效果也不好),可以考虑通过以下两种方式进行召回:
- 文本相关性的向量召回。把生成的类目的embedding和类目embedding进行匹配,向量召回(额,思路就类似以搜代分(心法利器[60] | 以搜代分的生效机理),或者说KNN)
- 基于站内后验统计的query2cate映射。
这个类目搭配有了以后,怎么用呢,作者给出的答案是在排序中应用,排序模型中增加一个类目点击序列,特定的物料可以用其所在类目及其搭配类目的embedding进行表征,采用pooling模式,
就是上面挖掘到的搭配类目。
商品语义表征
物料理解一直是推荐系统中比较困难的部分,在电商领域,各种商品的物料信息是非常复杂的,简单的muilti-hot的模式,在各种商品下,拓展性不高,而且数据非常稀疏,再者商品类目下还有些内容层面,不好做属性描述,文章举的例子是“特价”、“爆砍”等,而这里我还想补充类似“女朋友看到都哭了”、“儿童节”之类的,简单的文本编码显然不能很好地收集到这些信息,而这些正好是大模型所擅长的。
这里能做的事很多,这里作者着重说了两个任务。
首先是商品正则化,也是之前比较困难的点,即商品标题的解析,大家应该也能发现,淘宝的商品标题大都是一些关键词的组合,而我们需要把这些关键词的信息进行合理整合,形成结构化或者是通畅的产品描述语,可以这么干。
第二块任务则是使用。考虑把上面总结得到的商品信息,做成向量化,然后再放入具体模型中使用。向量化用的是CoROM模型,向量化后,放入DSSM粗排模型中,此处作者很贴心地把一小部分的实验分析结果放了出来,此处直接把结论梳理一下:
- 激进地替换原有的内容理解embedding,负收益明显,原有的向量主要是从用户行为学出来的,说明用户行为体现出来的内容性质,还是十分重要的。
- 大模型的内容理解加入到原有模型汇总,和用户行为向量结合,能有小幅收益,但是不明显,可能还需要调整。
- 收益不明显的考量,按照文章的说法是大模型的向量维度比较高,信息冗余严重,我自己的话可能还会考虑仅有的语义信息可能不够,不够产品特异化,且纯粹的语义应该不能很好地满足用户关键点的体现。
展望
在文章中,作者对3个方向有更高的期待:
- 多模态推荐。考虑电商场景的多模态信息,文本、图片、视频等,多种类型的信息抽取具有很大的空间,因此有必要进行拓展。
- LLM推理加速。老生常谈了,对于在线几十ms级别的耗时要求,大模型的优化任重道远,蒸馏剪枝量化还是很有必要的。
- LLM as 重排。利用LLM的知识拓展能力,在已有的语义标签上,将之与已有的推荐信息融合,直接生成推荐列表。
一些细节补充
这里提几个文章没有或者提的不多,但比较重要的细节,方便大家在选型和设计过程中考虑。
- 性能效率优化。但凡推荐系统,pv量大的产品,使用大模型都需要考虑效率问题。以推荐为例,物料众多,用户也众多,甚至还有在线耗时的要求,全都跑、实时显然是不现实的,需要通过剪枝、压缩、合理调度等方式减少大模型的请求量,确保在需要大模型结果的时候,能及时到位。从上面的落地思路中,可以看得出来所尝试的常见基本都是离线的。最近我也在头疼这个问题,有些解决方案,不过还在总结梳理,这个问题确实挺不容易。
- 有关大模型的准确率监控,时刻记住每个模块的算法效果都需要监控评估,大模型也并非完全正确,每个使用大模型的步骤最好都经过严谨地监控分析再来上线,类似上面的类目搭配等,需要考量一下内部的合理性等,很多时候看了很多case觉得不错就跳过了,这很容易有意料之外的风险。
- 大模型和推荐系统的内在联动问题。因为分工和建模阶段的割裂,两者很可能各干各的,大模型诚然能做一些任务,但他提取的信息,是否是推荐系统所需要的,并不好把控,即使是可以提取,但现有的推荐系统是否能消化,也是个问题,两者联合建模、微调可能是下一步需要考虑的问题。与之类似的,RAG系统中retrieve模块和大模型之间的联动问题,也需要被考虑,这也是为什么,我猜在把商品描述embedding向量放入双塔模型中的时候,收益不大,只要做更多的调整,说不定收益就会体现出来。