推荐/搜索系统中,为什么需要重排模块。
推荐系统的架构大致分为如下几个模块:召回、粗排、精排、重排,那么为什么要引入重排模块呢。
在精排阶段,我们希望得到的是一个候选排序队列的全局最优解,但是实际上,通常在精排阶段,我们精排模型是针对用户和每一个候选广告(商品)输出一个分值;而每个候选之间也会相互影响。例如在搜索广告的场景下,这些候选广告之间的广告样式会互相影响,从而影响最终的排序结果(一些图片类型的广告的点击率通常要比纯文字链广告的点击率要高),所以在搜索广告的场景下,重排序模块主要在考虑同屏展现广告样式相关的一些信息,利用这些信息对精排候选广告队列进行一个重新的排序。
如果精排模型除了要负责对召回后的几百几千个item按指标排序,还要操心多样性甚至公平性,这样的模型到底该按什么指标来训练,就算真能找出这种指标,也不可能一劳永逸,各公司各部门的推荐业务的逻辑都不一样,有侧重多样性避免用户觉得腻的,有重视公平性来照顾长尾物品的,怎么设计一个标准的排序模型来同时考虑所有不同业务侧重点,这使得学术界对模型性能提升的探索和工业截具体业务紧紧的耦合在一起,不仅增加了科研的困难也增加了使用的困难,因为更难适应具体的业务需求,变成了一种为了适应大多数需求的平均模型。
所以,排序模型就专心提升精排的效果,后面的交给重排策略去做,根据实际业务的需求,去简单的应用一些重排算法或策略,来保证排序结果不那么死板,从而在整体上做到优化,这种先精排再重排的做法使得排序模型和具体业务可以分离,学术界专心探索效果更好的排序模型,工业街根据自己的需要来设计具体的重排策略,双方解耦来达到整体效率更高
有这几篇文章讲了重排的一些工作:
https://zhuanlan.zhihu.com/p/274500801
《推荐系统如何进行重排序——阿里巴巴PRM模型详解》
https://blog.csdn.net/weixin_37688445/article/details/117627203
MMR,最大边缘相关算法,通过消除Bias的方法对推荐结果进行重排,从而达到资源多样化的效果。