今天给大家介绍一篇阿里在重排(re-rank)方面探索的文章,论文题目为《Revisit Recommender System in the Permutation Prospective》,重点关注排列视角下的重排序过程,其大致思路可以分为两个阶段,第一阶段通过beam-search方法寻找候选的物品排列顺序,第二阶段通过定义的LR(List Reward) 得到最优的排列顺序,一起来学习一下。
1、背景
完整的推荐系统大都分为三个阶段,召回、排序和重排序。随着推荐技术的发展,各个阶段都有多样的技术和手段来提升最终的推荐效果。召回和排序阶段大都使用point-wise的方法,而在重排序阶段,则大都使用list-wise的方法。普遍使用的重排序的过程如下:
1)Ranking:通过排序阶段的排序分,得到初始的排序列表
2)Refining:通过list-wise的模型(LSTM/self-attention)对排序分进行调整
3)Re-ranking:基于Refining阶段的排序分,以贪婪的方式对列表进行重新排序
但是,上述的过程由于没有考虑商品排列因素(permutation-variant influence),因此并不是整体最优的。举个例子来解释一下什么是permutation-variant influence。如下图所示,两个列表A-B-C和B-A-C包含相同的三个物品,但其排列并不相同,用户对B-A-C排列有交互,而对A-B-C这样的排列没有交互,一个可能的原因是,将较贵的B物品放在较为便宜的物品A前面,可以增加用户对于购买物品A的欲望,那么这种由于排列不同导致用户反馈不同的影响因素,就称为permutation-variant influence。
因此,对于重排序来说,一种更好的方式是考虑所有可能的物品排列方式,对每一种排序的结果进行评分,并选择评分最高的排序结果展示给用户。但这种方式又带来了新的挑战,首先,计算爆炸问题,假设rank阶段后有100个物品,重排选择10个进行展示,那么所有的排列的数量是A10010,复杂度接近O(10010)。其次,在重排序下,需要一种对物品排列好坏进行整体评估的方法,而之前的方法大都是point-wise的评估(如物品的点击率,转化率)。
针对上述两个挑战,本文提出了一个两阶段的重排序框架PRS(Permutation Retrieve System),接下来一起来介绍下。
2、PRS框架介绍
2.1 整体介绍
PRS(Permutation Retrieve System)框架的整体架构如下图所示:
可以看到,PRS主要包含两个阶段,分别是PMatch(Permutation-Matching) 和PRank (PermutationRanking)。在PMatch阶段,使用 FPSA (Fast Permutation Searching Algorithm)算法,高效生成候选的物品排列方式,在PRank阶段,定义了LR(List Reward) metric并使用DPWN (Deep Permutation-Wise Network)对每个候选排列的LR进行评估,选择LR最高的进行展示。接下来,对两个阶段的细节进行介绍。
2.2 PMatch Stage
在PMatch阶段,论文提出了一种permutation-wise和结果导向的beam-search算法,称为 FPSA (Fast Permutation Searching Algorithm),其示意图如下图所示:
离线训练
离线部分主要训练两个模型,分别预测每个物品的pctr和继续浏览的概率pNext。
线上服务
线上主要通过一种目标导向的beam-search方法产生候选的物品排列,其具体的过程如下:
1)对于初始队列里的每个物品,都会计算其对应的pctr和pNext,为了提升系统的效率,pctr和pNext的计算与ranking阶段的模型并行
2)使用beam-search方法生成k个长度为n的候选队列,由于是beam-search方法,因此共需要n步。在每一步,基于rPV和rIPV对候选队列进行排序。其中rPV越高,则用户期望的浏览深度越高,rIPV越高,则用户与列表的交互越多,具体计算过程如下图:
2.3 PRank Stage
在PRank阶段,定义了LR(List Reward) metric并使用DPWN (Deep Permutation-Wise Network)对每个候选排列的LR进行评估。
离线训练
DPWN模型的结构如下图所示:
如上图,DPWN主要通过bi-lstm结构,预测队列中每个物品的点击率。具体地,第t个物品经过bi-lstm,得到对应的隐状态ht:
随后将隐状态ht、用户特征xu和物品特征xvt进行拼接,经过多层神经网络得到第t个物品的点击率预测概率:
损失函数为二分类的交叉熵损失。
线上服务
线上通过定义好的LR(List Reward) 对每个候选排列进行评分,来获得能够最大化列表收益的物品排列方式。LR这里定义为队列中每个物品的预测点击率之和:
3、实验结果及分析
最后来看一下论文的实验结果,离线实验结果来看,PRS框架取得了明显的收益提升:
从线上A/B测试结果来看,PRS框架线上平均耗时为7.3ms,满足线上低延时的要求,同时在PV和IPV指标上,都有明显的提升:
好了,论文就介绍到这里,本文也是从一个新颖的视角对重排序阶段做出了较大的改进,感兴趣的同学可以阅读原文~