2021-06-05 推荐系统技术演进趋势:召回->排序->重排

本文深入探讨了推荐系统技术的演进趋势,从召回、排序到重排阶段的变化。召回阶段,模型召回、用户行为序列召回、用户多兴趣拆分和知识图谱融合召回成为热点,尤其是模型召回和用户行为序列召回能有效提高召回的精准度和效率。排序阶段,多目标优化、增强学习和多模态信息融合成为研究焦点,其中多目标优化能平衡不同指标,增强学习则有助于适应用户兴趣变化。重排技术逐渐转向List Wise重排序,利用RNN和Transformer等模型考虑列表整体优化。这些趋势展示了推荐系统技术的持续创新和深化。
摘要由CSDN通过智能技术生成

推荐系统技术演进趋势:召回->排序->重排

在这里插入图片描述

实际的工业推荐系统,如果粗分的化,经常讲的有两个阶段。首先是召回,主要根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节,排序环节可以融入较多特征,使用复杂模型,来精准地做个性化推荐。召回强调快,排序强调准。当然,这是传统角度看推荐这个事情。

但是,如果我们更细致地看实用的推荐系统,一般会有四个环节,如下图所示:
在这里插入图片描述
四个环节分别是:召回、粗排、精排和重排。召回目的如上所述;有时候因为每个用户召回环节返回的物品数量还是太多,怕排序环节速度跟不上,所以可以在召回和精排之间加入一个粗排环节,通过少量用户和物品特征,简单模型,来对召回的结果进行个粗略的排序,在保证一定精准的前提下,进一步减少往后传送的物品数量,粗排往往是可选的,可用可不同,跟场景有关。之后,是精排环节,使用你能想到的任何特征,可以上你能承受速度极限的复杂模型,尽量精准地对物品进行个性化排序。排序完成后,传给重排环节,传统地看,这里往往会上各种技术及业务策略,比如去已读、去重、打散、多样性保证、固定类型物品插入等等,主要是技术产品策略主导或者为了改进用户体验的。


一、召回技术演进趋势

推荐系统的召回阶段是很关键的一个环节,但是客观的说,传统地看,这个环节,技术含量是不太高的,偏向策略型导向,往往灵机一动,就能想到一个策略,增加一路新的召回。你在网上搜,发现讲推荐模型的,95%是讲排序阶段的模型,讲召回的别说模型,讲它本身的都很少,这与它的策略导向有关系,大家觉得没什么好讲的。总体而言,召回环节的有监督模型化以及一切 Embedding 化,这是两个相辅相成的总体发展趋势。而打 embedding 的具体方法,则可以有各种选择,比如下面介绍的几个技术发展趋势,可以理解为不同的给用户和物品打 embedding 的不同方法而已。

模型召回

在这里插入图片描述
传统的标准召回结构一般是多路召回,如上图所示。如果我们根据召回路是否有用户个性化因素存在来划分,可以分成两大类:一类是无个性化因素的召回路,比如热门商品或者热门文章或者历史点击率高的物料的召回;另外一类是包含个性化因素的召回路,比如用户兴趣标签召回。我们应该怎么看待包含个性化因素的召回路呢?其实吧,你可以这么看,可以把某个召回路看作是:单特征模型排序的排序结果。意思是,可以把某路召回,看成是某个排序模型的排序结果,只不过,这个排序模型,在用户侧和物品侧只用了一个特征。比如说,标签召回,其实就是用用户兴趣标签和物品标签进行排序的单特征排序结果;再比如协同召回,可以看成是只包含 UID 和 ItemID 的两个特征的排序结果….诸如此类。我们应该统一从排序的角度来看待推荐系统的各个环节,这样可能会更好理解本文所讲述的一些技术。

如果我们换做上面的角度看待有个性化因素召回路,那么在召回阶段引入模型,就是自然而然的一个拓展结果:无非是把单特征排序,拓展成多特征排序的模型而已;而多路召回,则可以通过引入多特征,被融入到独立的召回模型中,找到它的替代品。如此而已。所以,随着技术的发展,在 embedding 基础上的模型化召回,必然是个符合技术发展潮流的方向。

在这里插入图片描述
那么如何在召回阶段利用模型来代替多路召回呢?上图展示了一个抽象的模型召回的通用架构,核心思想是:将用户特征和物品特征分离,各自通过某个具体的模型,分别打出用户 Embedding 以及物品 Embedding。在线上,可以根据用户兴趣 Embedding,采用类似 Faiss 等高效 Embedding 检索工具,快速找出和用户兴趣匹配的物品,这样就等于做出了利用多特征融合的召回模型了。理论上来说,任何你能见到的有监督模型,都可以用来做这个召回模型,比如 FM/FFM/DNN 等,常说的所谓 “双塔” 模型,指的其实是用户侧和物品侧特征分离分别打 Embedding 的结构而已,并非具体的模型。

模型召回具备自己独有的好处和优势,比如多路召回每路截断条数的超参个性化问题等会自然被消解掉。当然,它也会带来自己的问题,比较典型的是召回内容头部问题,因为之前多路,每路召回个数靠硬性截断,可以根据需要,保证你想要召回的,总能通过某一路拉回来;而由于换成了模型召回,面向海量物料库,排在前列得分高的可能聚集在几个物料分布比较多的头部领域。解决这个问题的方法包括比如训练数据对头部领域的降采样,减少某些领域主导,以及在模型角度鼓励多样性等不同的方法。

另外一点值得注意的是:如果在召回阶段使用模型召回,理论上也应该同步采用和排序模型相同的优化目标,尤其是如果排序阶段采用多目标优化的情况下,召回模型也应该对应采取相同的多目标优化。同理,如果整个流程中包含粗排模块,粗排也应该采用和精排相同的多目标优化,几个环节优化目标应保持一致。因为召回和粗排是精排的前置环节,否则,如果优化目标不一致,很可能会出现高质量精排目标,在前置环节就被过滤掉的可能,影响整体效果。

典型工作:

FM 模型召回:推荐系统召回四模型之:全能的 FM 模型

https://zhuanlan.zhihu.com/p/58160982

DNN 双塔召回:Sampling-Bias-Corrected Neural Modeling for Large Corpus Item Recommendations

用户行为序列召回

用户在使用 APP 或者网站的时候,一般会产生一些针对物品的行为,比如点击一些感兴趣的物品,收藏或者互动行为,或者是购买商品等。而一般用户之所以会对物品发生行为,往往意味着这些物品是符合用户兴趣的,而不同类型的行为,可能代表了不同程度的兴趣。比如购买就是比点击更能表征用户兴趣的行为。
在这里插入图片描述
而用户行为过的物品序列,其实是具备表征用户兴趣的非常有价值的信息,而且这种兴趣表征,是细粒度的用户兴趣,所以对于刻画用户兴趣具备特别的价值。利用用户行为过的物品序列,来表征用户兴趣,具备很好的实用价值。

如果我们抽象地来看的话,利用用户行为过的物品序列对用户兴趣建模,本质上就是这么个过程:输入是用户行为过的物品序列,可以只用物品 ID 表征,也可以融入物品的 Side Information 比如名称,描述,图片等,现在我们需要一个函数 Fun,这个函数以这些物品为输入,需要通过一定的方法把这些进行糅合到一个 embedding 里,而这个糅合好的 embedding,就代表了用户兴趣。无论是在召回过程,还是排序过程,都可以融入用户行为序列。在召回阶段,我们可以用用户兴趣 Embedding 采取向量召回,而在排序阶段,这个 embedding 则可以作为用户侧的特征。

所以,核心在于:这个物品聚合函数 Fun 如何定义的问题。这里需要注意的一点是:用户行为序列中的物品,是有时间顺序的。理论上,任何能够体现时序特点或特征局部性关联的模型,都比较适合应用在这里,典型的比如 CNN、RNN、Transformer 等,都比较适合用来集成用户行为序列信息。而目前的很多试验结果证明,GRU ( RNN 的变体模型 ) 可能是聚合用户行为序列效果最好又比较简单的模型。当然,RNN 不能并行的低效率,那是另外一个问题。

在召回阶段,如何根据用户行为序列打 embedding,可以采取有监督的模型,比如 Next Item Prediction 的预测方式即可;也可以采用无监督的方式,比如物品只要能打出 embedding,就能无监督集成用户行为序列内容,例如 Sum Pooling。而排序侧,必然是有监督的模式,需要注意的是:排序侧表征用户特征的时候,可以只用用户行为过的物品序列,也可以混合用户其它特征,比如群体属性特征等一起来表征用户兴趣,方式比较灵活。比如 DIEN,就是典型的采用混合模式的方法。

典型工作:

GRU:Recurrent Neural Networks with Top-k Gains for Session-based Recommendations

CNN:Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding

Transformer: Self-Attentive Sequential Recommendation

❸ 用户多兴趣拆分

上文讲了利用用户行为物品序列,打出用户兴趣 Embedding 的做法。但是,另外一个现实是:用户往往是多兴趣的,比如可能同时对娱乐、体育、收藏感兴趣。这些不同的兴趣也能从用户行为序列的物品构成上看出来,比如行为序列中大部分是娱乐类,一部分体育类,少部分收藏类等。那么能否把用户行为序列物品中,这种不同类型的用户兴趣细分,而不是都笼统地打到一个用户兴趣 Embedding 里呢?用户多兴趣拆分就是解决这类更细致刻画用户兴趣的方向。

在这里插入图片描述
用户多兴趣拆分,本质上是上文所叙述的用户行为序列打 embedding 方向的一个细化,无非上文说的是:以用户行为序列物品作为输入,通过一些能体现时序特点的模型,映射成一个用户兴趣 embedding。而用户多兴趣拆分,输入是一样的,输出不同,无非由输出单独一个用户 embedding,换成输出多个用户兴趣 embedding 而已。虽说道理如此,但是在具体技术使用方向上却不太一样,对于单用户兴趣 embedding 来说,只需要考虑信息有效集成即可;而对于多用户兴趣拆分来说,需要多做些事情,多做什么事情呢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值