推荐系统个性化重排序

推荐系统个性化重排序_第1张图片

本文是阿里巴巴团队在2019 RecSys上发表的关于推荐系统中重排序的算法,论文标题为《Personalized Re-ranking for Recommendation》,论文地址:https://arxiv.org/pdf/1904.06813.pdf

1

前言

推荐系统分为4个步骤:召回、粗排、精排、和重排序。重排阶段是整个流程中的最后一环。

推荐系统个性化重排序_第2张图片

精排模型之后为啥还要进行重排序呢?主要是因为:(1)精排模型是基于Pointwise的方式进行Item点击率预估的,未考虑展现Item之间的关系;(2)用户对 “展示Item互相影响” 的反馈行为不一致,推荐系统的重排序是针对于用户的,取决于用户的偏好和意图。对于一个价格敏感的用户,在重排序模型中,“价格”特征之间的交互作用应该更为重要。典型的全局Encoding Function可能不是最优的,因为它忽略了每个用户的特征分布之间的差异。例如,当用户关注价格比较时,具有不同价格的类似项目往往会在列表中更加聚集,用户比较倾向于点击价格更便宜的商品。当用户没有明显的购买意向时,推荐列表中的商品往往需要多样化,更有助于用户发现自己感兴趣的商品。

2

原理介绍

本文主要创新点是利用大火的Transormer中Multi-head结构去拟合Item间的关系和影响,主要框架如下图所示:

推荐系统个性化重排序_第3张图片

主要有Input Layer, Encoding Layer和Output Layer三部分组成。输入Initial List是一个精排模型输出的推荐集合,输出Re-ranked List是重排序后的结果。

Input Layer:

(1)   是该Item在精排模型时的特征。

(2)   是用户与该Item的一个交叉特征,它通过一个DNN的方法Pre-train得到的,如下图所示,作者在后文的实验中证明了,这种方法确实对整体的Precision有一定程度提升。

推荐系统个性化重排序_第4张图片

(3)   是一个位置的Embedding,是利用精排模型产出的排名,通过实验,作者发现    设置为Trainable的效果更好一些。上述的三组Embedding是输入层的组成部分。

基于(1)、(2)、(3)的特征和Embedding,拼接生成一个输入数据   ,再使用一个前向神经网络将   转化为最终的输入向量   ,公式表示如下:

推荐系统个性化重排序_第5张图片

   

其中:

   

Encoding Layer:

Encoding Layer利用Transformer中Self-attention结构,实现任意两个Item的交叉从而获得他们互相间的影响。Encoding Layer就是一个传统的Transformer结构,Q、K、V都是同一个Matrix,如下图所示。


其中:

 
是多头数量

推荐系统个性化重排序_第6张图片

Output Layer:

输出层使用Softmax输出一个Score列表,根据Score就可以实现重排。具体来说, 


其中 : 是Transformer部分的输出。对应的损失函数为:

其中:  是所有用户的请求的集合,即保证重排后的列表尽可能的符合每个用户的需求。

讨论:

Last but not the least,作者通过实验发现,各种成熟的Re-rank算法都是有正向的收益的,这个很好理解,Re-rank是一个增量的过程,可以起到一定Listwise的作用。

基于文章的介绍,感觉Rank和Re-rank两个步骤的数据特征和标签相似,所以本论文中的Re-ranks是采用Transformer结构的模型学习Rank的残差?

你可能感兴趣的:(算法,推荐系统,人工智能,python,深度学习)