1 粗排简介
主流的推荐系统采用多阶段级联结构,主要分为召回(match)、粗排(pre-rank)、精排(rank)、重排(rerank)几部分,每阶段可以视为一个漏斗,候选物品数量逐渐减小。召回作为第一级漏斗,从海量物品池中尽可能召回所有用户可能感兴趣的物品,输出数千个候选物品;粗排作为第二级漏斗,对数千个候选物品快速进行初筛,将候选物品减少到数百个;精排阶段对候选进行精准排序;重排阶段结合业务目标,决定最终结果的顺序。
推荐系统漏斗
在推荐系统整个流程中,粗排作为承上启下的一个环节有独特的挑战。一方面,它决定了后续环节的输入,既要保证输出足够优质,又要有一定多样性,避免多样性策略“巧妇难为无米之炊”;另一方面,与精排相比它的候选物品量级更大,这就限制了模型的复杂度,精度优化必须在保证效率前提下进行。
2 业界工作
2.1 模型优化
目前业界主流的粗排模型都基于深度学习,总体分为两种:基于向量积的DNN模型(也称为双塔模型)、全连接DNN模型。
2.1.1 双塔模型
粗排对性能有较高的要求,而精度要求没有精排高。双塔模型在高效的同时也有不错的精度,得到了工业界的广泛应用。
双塔模型结构分为用户塔、物品塔两部分,分别输入用户及上下文特征、物品特征,经过DNN得到向量表示后计算相似度,最终得到打分。双塔模型的两部分相对独立,通常会离线将物品向量算好并存入缓存,在线仅计算一次用户向量,再与缓存中的物品向量计算相似度。物品向量离线计算使得物品侧可以使用复杂的网络结构,而不用担心在线计算物品向量带来的耗时问题。然而,简单的结构是一把“双刃剑”,双塔结构导致模型无法使用用户与物品的交叉特征,同时两侧特征交互太晚,细粒度特征经过DNN后可能已丢失,这两点限制了双塔模型的精度。
双塔模型
为了减少特征交互晚带来的效果损失,一种方法是在双塔模型的特征embedding层上增加SENet[1]。SENet分为Squeeze、Excitation两个阶段,在Squeeze阶段将每个特征的embedding向量压缩为一个数值,在Excitation阶段得到各特征的权重,用来对原始embedding加权。SENet的加入使得重要特征被放大,噪音和无效低频特征被动态抑制,从而改善了特征交互的效果。
双塔模型中的SENet
2.1.2 全连接DNN模型
与强调效率、兼顾精度的双塔模型不同,粗排模型的另一个分支是以最大限度提高精度为目标的全连接DNN模型。粗排全连接DNN模型的特征选取更加自由,可以像精排模型一样使用交叉特征,但是为了提升效率,往往需要算法和工程的协同优化。这一方向的代表性工作是阿里的COLD[2]和FSCD[3]。
COLD模型通过特征筛选、计算逻辑优化来实现效果和性能的折中。模型结构基于GwEN,训练时用SE Block计算特征重要度,筛选出重要特征后,重新训练模型供在线使用。工程方面,COLD模型还使用了异构计算、列式计算、降低GPU计算精度的技巧。算法及工程优化双管齐下使得COLD模型效果明显超过双塔模型,但是它的QPS仍比双塔模型小一个数量级。
COLD
FSCD将COLD中的特征筛选过程放在了损失函数里。模型中定义了特征的dropout参数,使得特征复杂度越高保留概率越低。训练分为两个阶段,首先学习特征embedding、网络参数和特征域被保留的概率,然后保留k个高价值特征域,用上一步得到的特征embedding和网络参数初始化,对模型进行微调。FSCD线上表现略好于COLD,但性能仍与双塔有明显差距。
2.2 样本优化
以CTR模型为例,精排模型通常使用曝光样本训练,其中点击为正样本,未点击为负样本。然而,对于粗排,它在线预测的输入为召回结果。若继续只用曝光样本训练,则训练样本和预测样本分布差异大,效果不确定,即存在样本选择偏差(Sample Selection Bias,SSB)。有许多工作提供了缓解SSB问题的方案。
样本分类
2.2.1 负样本采样
负样本采样的目的是使训练数据和线上分布尽可能一致。常见的采样方式有以下几种:
全局随机选择
从全局候选物品中随机抽取,代表工作为Youtube DNN[4]。这种方式的缺点是负样本和正样本可能太容易区分,模型学习不充分。此外,推荐系统中也存在二八定律,即少数热门物品占据了大多数的曝光和点击。由于正样本被热门物品“绑架”,采样时也需要提高热门物品在负样本中的比例,同时保证冷门物品有可能被采到。实现时通常参考word2vec的方法计算各物品成为负样本的概率。
batch内随机选择
训练时仅输入正样本,在batch内对于当前用户,随机采样除当前物品外的其他物品作为负样本,即用其他用户的正样本作为当前用户的负样本。代表工作为Google双塔召回模型[5]。
困难负样本选择
困难负样本是与正样本相似的负样本,适当增加这种样本可以使得模型关注细节。具体选取方法多种多样。Airbnb[6]根据业务逻辑挖掘困难负样本;Facebook[7]选取召回位置中段的物品;也有其他工作根据精排序选取,例如美团[8]使用精排结果蒸馏粗排模型的一系列实验。
2.2.2 正样本采样
一般情况下,粗排模型的正样本与精排相同,即曝光且有正反馈的样本。当业务有多个场景时,例如淘宝有搜索、推荐等场景,我们可能希望将场景外的点击、成交等收益转化到场景内。淘宝主搜[9]通过引入场景外正样本来实现这个转化,实现分为修正样本、补充样本两种。修正样本时,对于原始的成交负样本,如果在场景外有成交则修正为正样本。与之相对,补充样本将不存在于原始样本中的场景外成交加入曝光样本,同时设为曝光、点击、成交任务的正样本。淘宝主搜通过组合两种扩充正样本的方法,提升了场景外hitrate。
3 转转首页推荐粗排实践
转转首页推荐场景的粗排模块分为两部分:第一部分为粗排模型,对召回的商品进行品类内排序,目标是最大化品类内预估精度;第二部分为流量池,负责分配各品类quota,目标是平衡粗排输出的效率和多样性。
3.1 模型优化实践
粗排模型为CTR模型,目标是提升品类内预估精度。
转转首页推荐粗排-模型部分
粗排模型以双塔结构为基础,在样本、网络结构方向进行了多次优化。
样本优化
最初粗排训练样本与精排相同,即曝光点击为正样本,曝光未点击为负样本。此后对正样本、负样本都进行了扩充。扩充正样本参考了淘宝主搜的做法,补充了其他场景的点击样本,尝试将推荐场景外的点击转化到场景内。具体实现时,尝试了修正曝光未点击样本、补充未曝光样本两种方案,实验证明补充未曝光样本效果更显著。为缓解SSB问题,在曝光未点击负样本基础上,补充了未曝光的随机负样本。未曝光负样本细分为两种,即在全场景有曝光无点击、在全场景无曝光两种,第一种相当于将其他场景的知识迁移到推荐场景。离线用hitrate评估各种负样本组合的效果,发现同时补充两种未曝光负样本的模型效果最佳,在线AB实验也印证了这一结论。
网络结构优化
粗排由一个模型承接多个品类的CTR预估,各品类的样本量级、流量效率乃至特征都存在较大差异,模型训练容易被优势品类主导。因此,网络结构的设计需要使得模型能学到各品类的共性和差异性。将点击视为任务,品类视为场景,则粗排预估属于多场景单任务问题,可以参考业界多场景多任务的解决方案。我们参考PEPNet[10]设计了网络结构,在双塔的物品侧通过EPNet进行特征选择和融合。物品侧特征包含品类共享特征(例如价格、类目)及品类特有特征(例如CPU、GPU),通过EPNet实现特征权重调整,使得对于不同品类的样本,重要特征得到强化,无关特征得到削弱。
转转首页推荐粗排模型结构
3.2 流量池简介
转转首页推荐链路中精排环节无截断,因此粗排输出商品集合的多样性直接决定了重排阶段的多样性策略能否开展。粗排结果的品类多样性由流量池模块保证。
流量池涉及召回、粗排等阶段,保证了粗排输出的品类多样性,有效避免了优势品类独占流量,给非优势品类的流量增长创造了空间。召回阶段,流量池干预触发,使得用户点击过的品类召回充足,保证了召回结果的多样性。粗排进精排是流量池的主要生效阶段,对应下图中proportion部分。由于优势品类、非优势品类打分天然存在差距,如果一起竞争非优势品类必然难以透出。为了保证非优势品类能获得流量,流量池对模型排序结果先拆分后融合。拆分阶段将模型打分后的完整商品列表按品类拆分,每个品类对应一个有序列表。融合阶段综合用户行为、商品供给等情况,为每个品类计算quota,取各品类列表头部结果融合后输出,保证各品类都有机会透出。
转转首页推荐粗排-流量池部分
3.3 未来规划
未来转转首页推荐的粗排优化仍会分为模型、流量池两方面进行。模型方面,尝试更先进的网络结构,增加更强的特征等提高模型精度。流量池方面,优化流量分配逻辑,更好地平衡效率与多样性。
参考文献
[1] SENet双塔模型:在推荐领域召回粗排的应用及其它:https://zhuanlan.zhihu.com/p/358779957
[2] COLD: Towards the Next Generation of Pre-Ranking System:https://arxiv.org/pdf/2007.16122
[3] Towards a Better Tradeoff between Effectiveness and Efficiency in Pre-Ranking: A Learnable Feature Selection based Approach:https://arxiv.org/pdf/2105.07706
[4] Deep Neural Networks for YouTube Recommendations:https://dl.acm.org/doi/pdf/10.1145/2959100.2959190?utm_campaign=Weekly%20dose%20of%20Machine%20Learning&utm_medium=email&utm_source=Revue%20newsletter
[5] Sampling-bias-corrected neural modeling for large corpus item recommendations:https://dl.acm.org/doi/10.1145/3298689.3346996
[6] Real-time Personalization using Embeddings for Search Ranking at Airbnb:https://dl.acm.org/doi/abs/10.1145/3219819.3219885
[7] Embedding-based Retrieval in Facebook Search:https://arxiv.org/pdf/2006.11632
[8] 美团搜索粗排优化的探索与实践:https://mp.weixin.qq.com/s/u3sw_PatpwkFC0AtkssmPA
[9] 承上启下:基于全域漏斗分析的主搜深度统一粗排:https://zhuanlan.zhihu.com/p/587353144
[10] PEPNet: Parameter and Embedding Personalized Network for Infusing with Personalized Prior Information:https://arxiv.org/pdf/2302.01115