推荐系统基础(5):推荐系统技术演进趋势

1. 简介

最近两年,由于深度学习等一些新技术的引入,推荐系统表现出了一些比较明显的技术发展趋势。

推荐系统基础(5):推荐系统技术演进趋势
召回,主要根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品,然后交给排序环节,排序环节可以融入较多特征,使用复杂模型,来精准地做个性化推荐。召回强调快,排序强调准。
推荐系统基础(5):推荐系统技术演进趋势
四个环节是:召回,粗排序,精排序,重排。
由于每个用户召回环节返回的物品数量还是太多,怕排序环节速度跟不上,在召回和精排之间加入一个粗排环节。通过少量的用户和物品特征,简单模型,对召回的结果进行粗略的排序,粗排往往是可选的,可用可不用,和场景相关。

精排环节,使用更多的特征,尽量精准地对物品进行个性化排序。排序完成后,进行重排环节。重排,往往根据各种技术及业务策略,比如去已读,去重,打散,多样性保证,固定类型物品插入等等。这个阶段是技术产品策略主导或者为了改进用户体验。

2. 召回技术的演进趋势

召回环节的技术含量不太高,偏向策略型导向。可以通过策略增加一路新的召回。这与它的策略导向相关。
推荐系统基础(5):推荐系统技术演进趋势

传统的召回结构是多路召回的,比如上图的根据用户的兴趣,以及协同过滤和热门推荐。
根据召回路是否有用户个性化因素存在来划分:
(1)无个性化的召回路
比如,热门商品,历史点击率高的物料的召回;
(2)个性化因素的召回路
比如用户兴趣标签召回。
这种召回,可以看作是用户侧和物品侧单特征进行排序的结果。比如,标签召回,可以看作是用户兴趣标签和物品标签进行排序的单特征排序结果。比如,协同召回,可以看作是只包含UID和ItemID两个特征的排序结果。

个性化因素召回路改进的方向,把单特征排序拓展成多特征排序的模型。多路召回,则可以通过引入多特征,被融入到独立的召回模型中,找到它的替代品。
推荐系统基础(5):推荐系统技术演进趋势
上图展示了抽象的通用架构,核心思想是:
将用户特征,物品特征进行分类,各自通过某个具体的模型,分别打出用户Embedding以及物品Embedding。
在线上,可以根据用户兴趣的Embedding,采用Faiss等高效Embedding检索工具,快速找出用户兴趣的物品。
(?这里不是很理解,比如通过user,item的特征建立了一个模型,并且进行训练,训练好的模型可以获得user embedding , item embedding。对所有的物品进行映射得到 item Embedding,在线的时候,user特征得到user Embedding;然后user embedding 和所有的item Embedding进行匹配,匹配高的进行输出? )

模型召回的优势:
(1)多路召回每路截断条数的超参个性化问题等会自然被消解掉。
问题:
(1)召回内容头部问题。
之前多路召回,每路召回个性靠硬性截断,可以根据需要,保证你想要召回的,总能通过某一路拉回来。
模型召回,排在前列得分高的可能聚集在几个物料分布比较多的头部领域。
解决方法是:训练数据对头部领域的降采样,减少某些领域主导,在模型角度顾虑多样性等不同的方法。

注意:
理论上召回阶段和排序模型应该采用相同的优化目标,如果排序阶段采用多目标优化的情况,召回模型也应该采取相同的多目标优化。
如果有粗排环节,也应该采用和精排相同的多目标优化,几个环节的优化目标应保持一致。
如果优化目标不一致,很可能会出现高质量精排目标在前置环节被过滤掉。

用户行为序列召回
用户在使用APP或者网站的时候,一般会产生一些针对物品的行为,比如点击一些感兴趣的物品。而一般用户之所以会对物品发生行为,往往是这些物品符合用户兴趣,而不同类型的行为,可能代表不同程度的兴趣,比如购买就是比点击更能表征用户兴趣的行为。

推荐系统基础(5):推荐系统技术演进趋势
用户行为过的物品序列,其实是具备表征用户兴趣的非常有价值的信息,而这种兴趣表征是细粒度的用户兴趣。利用用户行为过的物品序列,来表征用户兴趣。

输入用户行为过的物品序列,用物品ID表征,融入物品的side information比如名称,描述等,使用一个函数Func,以这些物品为输入,提出到一个Embedding中,Embedding就代表用户兴趣。
在召回阶段,使用这个Embedding进行向量召回;排序阶段,使用这个Embedding作为用户侧的特征。

核心:定义聚合函数Func. 用户行为序列中的物品,是有时间顺序的。理论上,任何体现时序特点或特征局部性关联的模型,都比较适合应用在这里,典型比如CNN,RNN,Transformer等。实验表明,GRU可能是聚合用户行为序列效果最好又比较简单的模型。但RNN不能并行导致低效率。

用户多兴趣拆分

利用用户行为物品序列虽然可以得到用户兴趣Embedding,但是,用户往往是多兴趣的,比如用户行为序列的物品可能有体育类,娱乐类等,因此,需要考虑将不同类型的用户兴趣细分,而不是把用户兴趣用一个Embedding表示。

推荐系统基础(5):推荐系统技术演进趋势
上图中,由输出单独一个用户Embedding,换成输出多个用户兴趣Embedding,这个类似聚类的过程,把不同item聚类到不同的兴趣类别中,目前拆分用户兴趣Embedding的方法中,主要有胶囊网络和memory Network。理论上的聚类方法都是有效的。

Q:有没有必要把一个Embedding拆分成多个Embedding?
召回阶段,用户兴趣拆分成多个Embedding是有意义的。比如,召回阶段有时遇到头部问题,就是比如通过用户兴趣Embedding拉回来的物料,可能集中在头部优势领域中,造成弱势兴趣不太能体现出来。如果把用户兴趣进行拆分,每个兴趣Embedding都能拉回部分相关的物料,缓解头部问题。

对应排序环节,拆分兴趣Embedding不是很大必要性,唯一可能存在的优点是,当行为序列物品比较多是,使用Attention去判断item是类型相关是非常耗时的操作。把Attention计算放到聚类完的几个兴趣Embedding维度计算,极大提升训练和预测的速度。

知识图谱融合召回
推荐系统基础(5):推荐系统技术演进趋势
推荐系统中,最核心的数据是用户对物品的行为数据,因为这直接表明了用户兴趣所在。如上图所示,如果把用户放在一侧,物品放在另一侧,若用户对某物品有行为产生,则建立一条边,这样就构建了用户-物品交互的二部图。

但物品之间是存在联系的,这就是常说的知识图谱,利用物品的联系来增强推荐效果。
比如,利用的是电影领域的知识图谱数据,通过知识图谱中的“电影1—>主演—>电影2”的图路径给出的推荐结果。
推荐系统基础(5):推荐系统技术演进趋势
问题:为什么知识图谱在排序侧效果一般呢

目前有两大类的知识图谱融合方式:
(1)知识图谱Embedding模式;
首先,根据TransE等对知识图谱进行Embedding化编码的工具,将节点和边转换成Embedding表征方式。
根据用户行为过的物品,以及物品在知识图谱中的Embedding和知识图谱中其他知识Embedding的距离,来扩展物品的信息含量。
缺点:可解释性方面较弱,因为知识之间的关联是通过Embedding计算出来的,不好解释为什么从这个知识调到那个知识。

(2)图路径模式。

图路径模式则是根据物品属性之间的关联等人工定义好的所谓meta-path,也就是人工定义的知识图谱中知识的关联和传播模式,通过中间属性来对知识传播进行路径搭建。
比如,电影1 - 主演 - 电影2
这是人事先定义好的meta-path, 把经验写成规则,来利用知识图谱里的数据。因此,非常理解知识传播关系,但是实际应用效果并不好。

图神经网络模型召回

推荐系统基础(5):推荐系统技术演进趋势
知识图谱是图神经网络中比较特殊的具体实例。但是,知识图谱编码的是静态知识,而不是用户比较直接的行为数据,和具体应用距离比较远。

图神经网络中的图结构,可以是上面介绍知识图谱中说过的“用户-物品”二部图, 也可以是常见的有向图或者是无向图。图中的节点是各种不同类型的物品及用户。推荐系统基础(5):推荐系统技术演进趋势
图神经网络的最终目的是,通过一定技术手段,获得图中节点的Embedding编码。最常用的Embedding聚合工具是CNN。对于某个图节点来说,它的输入可以是两类信息,一类是自身的属性信息;一类是图结构信息,即和当前节点有直接关联的其他节点信息。

通过CNN,可以对两类信息进行编码和聚合,形成图节点的Embedding。通过CNN等信息聚合器,在图节点进行计算,并反复迭代更新图节点的Embedding,就能够最终获得可靠的图节点Embedding信息。

早起的图神经网络需要全局信息,计算速度慢,图规模大,应用差。但GraphSAGE则通过一些手段比如从临近节点进行采样等减少计算规模,加快计算速度,很多后期改进计算效率的方法都是从这个工作衍生的;而PinSage在GraphSAGE基础上(这是同一拨人做的),进一步采取大规模分布式计算,拓展了图计算的实用性,可以计算Pinterest的30亿规模节点、180亿规模边的巨型图,并产生了较好的落地效果。

3. 推荐模型技术演进趋势

推荐系统基础(5):推荐系统技术演进趋势
(1)模型表达能力:
模型是否具备充分利用有效特征及特征组合的能力;特征组合,新型特征提取器,增强学习技术, automl是这方面的技术进行方向;
(2)模型优化目标
我们希望推荐系统去做好什么,往往和业务目标有关联;多目标优化以及ListWise最优是目前最常见的技术进行方向。ListWise优化目标在排序阶段和重排阶段都可采用。

(3)从特征和信息角度,特征的扩充和融合
用户长短期兴趣分离,用户行为序列数据的使用,图神经网络,以及多模态融合等。用户行为序列以及图神经网络,也适合应用在排序部分。

3.1 显示特征组合

推荐系统基础(5):推荐系统技术演进趋势
特征工程和特征组合的自动化是推荐系统演进的主要方向。

推荐系统基础(5):推荐系统技术演进趋势
隐式
所谓隐式,意思是并没有明确的网络结构对特征的二阶组合、三阶组合进行直接建模,只是通过MLP,让不同特征发生交互,至于怎么发生交互的,怎么进行特征组合的,谁也说不清楚,这是MLP结构隐式特征组合的作用。
显示
明确设计一些子网络或者子结构,对二阶特征组合、三阶特征组合,甚至更高阶的特征组合进行表征,这就是隐式特征组合。
比如,FM部分则是明确对特征二阶组合进行建模的子模型。这就是一个典型的显式二阶特征组合的模型。

典型的高阶特征组合建模的有,Deep&Cross, XDeepFM等。

目前基本很多经验已经证明了,显式的二阶特征组合是非常重要的,三阶特征组合对不同类型任务基本都有帮助。四阶特征组合已经说不清楚是否有用了,跟数据集有关系,有些数据集合引入显式4阶特征组合有帮助,有些数据集合没什么用。至于更高阶的特征组合,明确用对应的子结构建模,基本已经没什么用了,甚至是负面作用
这说明:我们在实际做事情的时候,其实显式结构把三阶特征组合引入,已经基本足够了。

3.2 特征抽取器的进化

常用的特征提取器是MLP结构,通常是2层或者是3层的MLP隐层。但是,MLP提取特征组合效率低下。除非把隐层的神经元个数急剧放大。推荐系统基础(5):推荐系统技术演进趋势
CNN捕获局部特征关联是非常有效的结构,但是并不太适合做纯特征输入的推荐模型,因为推荐领域的特征之间,在输入顺序上并无必然的序列关系,基本属于人工定义随机顺序,而CNN处理这种远距离特征关系能力薄弱,所以并不是特别适合用来处理特征级的推荐模型。
Transformer是特别适合来对特征组合进行建模的,一层Transformer Block代表了特征的二阶组合,更多的Transformer Block代表了更高阶的特征组合。但是,实际上如果应用Transformer来做推荐,其应用效果并没有体现出明显优势,甚至没有体现出什么优势,基本稍微好于或者类似于典型的MLP结构的效果。这意味着,可能我们需要针对推荐领域特点,对Transformer需要进行针对性的改造,而不是完全直接照搬NLP里的结构。

3.3 AutoML在推荐的应用

推荐系统基础(5):推荐系统技术演进趋势
推荐系统基础(5):推荐系统技术演进趋势
总体而言,目前AutoML来做推荐模型,还很不成熟,找出的结构相对人工设计结构效果优势也不是太明显。这与DNN Ranking模型比较简单,算子类型太少以及模型深度做不起来也有很大关系。

3.4 增强学习

推荐系统基础(5):推荐系统技术演进趋势
增强学习有几个关键要素:状态、行为以及回报。在推荐场景下,我们可以把状态St定义为用户的行为历史物品集合;推荐系统可选的行为空间则是根据用户当前状态St推荐给用户的推荐结果列表,这里可以看出,推荐场景下,用户行为空间是巨大无比的,这制约了很多无法对巨大行为空间建模的增强学习方法的应用;而回报呢,则是用户对推荐系统给出的列表内容进行互动的行为价值,比如可以定义点击了某个物品,则回报是1,购买了某个物品,回报是5….诸如此类。有了这几个要素的场景定义,就可以用典型的增强学习来对推荐进行建模。

3.5 多目标优化

推荐系统基础(5):推荐系统技术演进趋势
推荐系统的多目标优化(点击,互动,时长等多个目标同时优化)严格来说不仅仅是趋势,而是目前很多公司的研发现状。对于推荐系统来说,不同的优化目标可能存在互相拉后腿的现象,比如互动和时长,往往拉起一个指标另外一个就会明显往下掉,而多目标旨在平衡不同目标的相互影响,尽量能够做到所有指标同步上涨,即使很难做到,也尽量做到在某个优化目标上涨的情况下,不拉低或者将尽量少拉低其它指标。

既然存在多个优化目标,最简单直接的方式,也是目前最常用的方式是:每个优化目标独立优化,比如点击目标训练一个模型,互动目标训练一个模型,时长目标训练一个模型,各自优化,然后每个目标独立给实例预测打分,给每个目标设定权重值,各个目标打分加权求和线性融合,或者引入权重指数及根据目标关系引入非线性融合。这是目前最常见的落地方案。因为目标之间独立优化,模型是通过分数融合来实现多目标的,所以可以把这种多目标方式称作“Share-Nothing”结构。这个结构实现和优化方式很简单。

Share-Bottom:
核心思想是,在网络的底层参数,所有任务共享参数,上层网络不通任务各自维护自己的参数,通过共享参数思想知识迁移的目的。
缺点:如果两个任务不相干,强制共享任务会相互干扰。

MMOE:
核心思想是,底层全部共享的参数切分成小的子网络,不同任务更加特点,学习配置不同权重的小网络来进行参数共享。

3.6 多模态信息融合

所谓模态,指的是不同类型的或者模态形式的信息存在形式,比如文本、图片、视频、音频、互动行为、社交关系等,都是信息不同的存在模态形式。推荐系统基础(5):推荐系统技术演进趋势
多模态信息融合,不仅仅是排序端的一个发展方向,在召回侧也是一样的,比如用用户点击过的图片,作为图片类型的新召回路,或者作为模型召回的新特征。明显这种多模态融合是贯穿了推荐领域各个技术环节的。

3.7 长期兴趣,短期兴趣分离

目前常用的描述用户兴趣的方式主要有两类。一类是以用户侧特征的角度来表征用户兴趣,也是最常见的;另外一类是以用户发生过行为的物品序列作为用户兴趣的表征。推荐系统基础(5):推荐系统技术演进趋势
用户短期兴趣往往使用用户点击(或购买,互动等其它行为类型)过的物品序列来表征,尤其对于比较活跃的用户,用点击序列更能体现短期的含义,因为出于工程效率的考虑,如果用户行为序列太长,往往不会都拿来使用,而是使用最近的K个行为序列中的物品,来表征用户兴趣。RNN/CNN和Transformer都比较适合用来对用户短期兴趣建模。

长期兴趣:
比如,群体人群属性,是种间接刻画用户长期兴趣的方法;再比如类似用户兴趣标签,是种用用户行为序列物品的统计结果来表征用户长期兴趣的方法。
这些方法当然可以用来刻画用户长期兴趣,但是往往粒度太粗,所以我们其实需要一个比较细致刻画用户长期兴趣的方式和方法。目前在对长短期兴趣分离的工作中,关于如何刻画用户长期兴趣,往往还是用非常简单的方法,就是用UID特征来表征用户的长期兴趣,通过训练过程对UID进行Embedding编码,以此学习到的UID Embedding作为用户长期兴趣表征,而用户行为序列物品作为用户短期兴趣表征。当然,UID如果用一些其它手段比如矩阵分解获得的Embedding初始化,也是很有帮助的。

(这里是说,先对UID随机Embedding,然后,训练模型获得训练好的UIDEmbedding, 作为长期兴趣吗)

4. 重排技术

在重排环节,常规的做法,这里是个策略出没之地,就是集中了各种业务和技术策略。比如为了更好的推荐体验,这里会加入去除重复、结果打散增加推荐结果的多样性、强插某种类型的推荐结果等等不同类型的策略。

4.1 List Wise 重排序

主要从两个角度说明:
一个是优化目标或损失函数;一个是推荐模块的模型结构。

常见的有三种优化目标:Point Wise、Pair Wise和List Wise。
(1)point wise
输入用户特征和单个物品特征,对这个物品进行打分,物品之间的排序,就是谁应该在谁前面,不用考虑。
特点:
效率高,简单。
缺点:
没有考虑物品直接的关联。
(2)pair wise
使用两个物品的顺序关系来训练模型。
(3)List Wise
更关注整个列表中物品顺序关系,从列表中物品顺序的角度考虑。
List Wise损失因为训练数据制作困难,训练速度慢,在线推理速度慢,很少应用。
推荐系统基础(5):推荐系统技术演进趋势
从模型结构上来看。因为重排序模块往往是放在精排模块之后,而精排已经对推荐物品做了比较准确的打分,所以往往重排模块的输入是精排模块的Top得分输出结果,也就是说,是有序的。

一般的做法是:排序Top结果的物品有序,作为RNN或者Transformer的输入,RNN或者Transformer明显可以考虑在特征级别,融合当前物品上下文,也就是排序列表中其它物品,的特征,来从列表整体评估效果。RNN或者Transformer每个输入对应位置经过特征融合,再次输出预测得分,按照新预测的得分重新对物品排序,就完成了融合上下文信息,进行重新排序的目的。


参考

  1. 张俊林