排序

问题背景

    说起排序,对排序的认知还停留在召回阶段召回的item经过粗排过滤,剩下较少的item在精排中打分,按epcm或者其他策略挑选出最终要曝光的item。重排是一种考虑到推荐items之间关系和影响的排序模式,常规的推荐系统仅仅考虑<user, item>对的角度,并不会考虑items间作为一个list进行推荐之后的互相影响

图片

    举个例子,排序模型往往都是point-wise的,一个DNN加丰富的user/item/上下文特征预估点击率,在召回的100个item候选集中排序取出Top10的item进行推荐展示。但是,在实际情况里,这10个item展示给用户时是会相互影响的,这样就导致排序模型线下预估与线上实际点击情况之间是有偏差的。

    那么,产生这种情况的原因是什么呢?

    首先是我们在排序阶段并没有考虑到item之间的影响,其次用户对不同场景(或者逻辑)下看到的item list的反馈是不同的。比如,在信息流场景中,如果展示的20个内容中有同一主题(理财科普),对于有点击意图的用户,类似的内容排在一起时,用户点击颜值较高或者知名大V的内容的概率会增大;对于没有点击意图的用户,展示给用户更加多样性的内容,更适合用户去探索与发现,这时推荐的多样性就变得更重要了。

    Re-rank模型将常规rank模型的输出作为模型输入,强化item之间的关系以及item与用户的关系进行One more time排序。对于不同用户来说,list中item的分布应该具有比较大的差异。

模型结构

图片

图片

    PRM的模型结构,是一个比较传统的multi-head结构,输入Initial List是一个精排模型输出的推荐集合,然后依次经过输入层, 编码层和输出层三部分后,输出的Re-ranked List是重排序。

 

输入层Input Layer

图片

    输入层由原始特征、个性化特征、位置特征三部分组成。

编码层Encoding Layer

 

 

图片

    编码层目标在于整合对列表中物品的相互影响,以及用户行为和列表中物品的相互影响。这里利用Transformer中self-attention结构来实现任意两个Item的交叉,从而获得Item互相间的影响。

    在Attention中, Query,Key和Value都是同一个输入的embedding矩阵,然后经过Multi-Head Attention。公式如下:

图片

图片

图片

    经过FFN增强模型和输入向量不同维度之间的交互,将多个Attention进行stack,组合成更复杂和更高维的交互信息。

 

输出层Output Layer

图片

    经过FFN增强模型和输入向量不同维度之间的交互,将多个Attention进行stack,组合成更复杂和更高维的交互信息。

图片

图片

    最后,以点击预估作为目标,通过Softmax和Cross-entropy进行训练后通过Score排序依次展示给用户。

个性化预训练:Pre-train

图片

图片

    

实验效果

图片

图片  

拓展总结

    我们知道,最常见的考虑时序性的模型是RNN和Transformer,所以经常把这两类模型用在重排模块,这是很自然的事情。一般的做法是:排序Top结果的物品有序,作为RNN或者Transformer的输入,RNN或者Transformer明显可以考虑在特征级别,融合当前物品上下文,也就是排序列表中其它物品的特征,来从列表整体评估效果。RNN或者Transformer每个输入对应位置经过特征融合,再次输出预测得分,按照新预测的得分重新对物品排序,就完成了融合上下文信息,进行重新排序的目的

    除了本篇Re-Rank文章之外,炼丹笔记还分享了《Revisit Recommender System in the Permutation Prospective》一文,论文提出了两阶段的重排序框架PRS(Permutation Retrieve System),分别是PMatch阶段和PRank阶段,图片

    PMatch一句话总结就是,把上百个item的排列都给list-wise模型预估排列分不现实,PMatch负责挑选出候选的排列。

    PRank就比较简单了,先离线训练一个模型,该模型输入是一个长度为n的序列 (x1, x2, ..., xn),然后输入到Bi-LSTM里,就会得到n个隐向量,每个隐向量concat用户特征和序列中每个item的原始特征,过mlp预测点击率即可。

参考文献

  • Personalized Re-ranking for Recommendation

  • https://zhuanlan.zhihu.com/p/100019681

  • https://www.zhihu.com/people/yuconan

  • https://zhuanlan.zhihu.com/p/358568019

  • 排序rank后重排re-rank

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值