作者:小江所归,李想等粗排是业界搜索推广系统的重要模块。在优化粗排序效果的探索与实践中,美团搜索排序团队结合实际业务场景,从细排序联动和效果性能联合优化两个方面对粗排序进行了优化,提升了粗排序的效果。一、前言众所周知,在搜索、推荐、广告等大型行业应用中,为了平衡性能和效果,排名系统一般采用级联架构[1,2],如下图1所示.以美团搜索排序系统为例,整个排序分为粗排序、细排序、重排和混合排序层;粗排序位于召回和精排序之间,需要从千级候选项集中过滤出百级项集送至整理层。图1排序漏斗从美团搜索排序的全链路来看粗排序模块。目前,粗排序层的优化存在以下挑战:样本选择偏差:在级联排序系统下,粗排序距离最终结果展示环节较远,导致其离线训练样本空间差异较大。粗排序模型和待预测的样本空间,存在严重的样本选择偏差。粗排和细排联动:粗排介于召回和细排之间,粗排需要更多的获取和利用后续链接信息来提升效果。性能约束:在线粗排序预测的候选集远高于细排序模型。但是实际整个搜索系统对性能有严格的要求,所以粗排序需要关注预测性能。本文将围绕上述挑战,分享美团搜索粗排序层优化的相关探索与实践,解决细排序联动问题中的样本选择偏差问题。本文主要分为三个部分:第一部分将简要介绍美团搜索排序粗排序层的演进路线;第二部分将介绍粗排序优化的相关探索与实践。通过排序和粗排序的联动优化粗排序的效果。第二个工作是考虑粗排序的性能和粗排序的权衡优化。相关工作全面展开,成效显着;最后一部分是总结与展望。希望这些内容对大家有所帮助和启发。2、粗排序演进路线美团搜索的粗排序技术演进分为以下几个阶段:2016年:基于相关性、质量、转化率等信息进行线性加权,这种方法简单但表达特征的能力较弱,权重是人工确定的,排序效果还有很大的提升空间。2017年:使用基于简单机器学习的LR模型进行逐点预测排名。2018:采用基于向量内积的双塔模型,两边分别输入查询词、用户、上下文特征和商家特征,经过深度网络计算,分别输出用户&查询词向量和商家向量,然后通过内积计算排序的估计分数。这种方式可以提前省去商户向量计算,所以在线预测速度快,但是双方信息交叉的能力有限。2019:为了解决双塔模型不能很好地对交叉特征建模的问题,通过GBDT树模型将双塔模型的输出作为特征与其他交叉特征融合。2020年至今:由于算力的提升,我们开始探索NN端到端粗排序模型,并不断迭代NN模型。现阶段产业粗略布局模式中常用的双塔模式,如腾讯[3]、爱奇艺[4];交互式神经网络模型,如阿里巴巴[1,2]。下面主要介绍美团搜索在粗排序升级为NN模型过程中的相关优化工作,主要包括两部分:粗排序效果优化和联合效果&性能优化。3.粗排序优化实践随着在美团搜索的精排序NN模型中实现了大量的效果优化工作[5,6],我们也开始探索粗排序NN模型的优化。考虑到粗排序具有严格的性能约束,直接将细排序优化的工作重用到粗排序是不适用的。下面将介绍将细排序的排序能力迁移到细排序的粗排序联动效果的优化工作,以及基于神经网络结构的自动搜索的效果和性能权衡优化。3.1优化精排序的联动效果粗排序模型受限于打分性能约束,会导致模型结构比精排序模型更简单,特征数量也比精排序模型少很多,因此排序效果比精细排序模型差。为了弥补粗排序模型结构简单、特征少带来的效果损失,我们尝试了知识蒸馏法[7],通过链接细排序来优化粗排序。知识蒸馏是业界常用的一种简化模型结构、最小化效果损失的方法。它采用了Teacher-Student范式:将结构复杂、学习能力强的模型作为Teacher模型,将结构较简单的模型作为Student模型。辅助Student模型的训练,从而将Teacher模型的“知识”传递给Student模型,提高Student模型的效果。精馏和粗馏示意图如下图2所示。蒸馏方案分为以下三种类型:细行结果蒸馏、细行预测分数蒸馏和特征表示蒸馏。下面将介绍这些蒸馏方案在美团粗搜中的实践经验。图2精排序、蒸馏和粗排序示意图3.1.1精排序结果列表蒸馏和粗排序作为精排序的前置模块。它的目标是初步筛选出质量较好的候选集进行精细排序。从训练样本选择的角度来看,除了将有用户行为(点击、下单、支付)的正则item作为正样本,没有曝光的item作为负样本外,还可以引入一些对结果进行排序构建的正负样本精化模型,这样既可以在一定程度上缓解粗排序模型的样本选择偏差,也可以将精排序的排序能力迁移到粗排序。下面将介绍在美团搜索场景下使用细排序结果提炼粗排序模型的实践经验。策略一:在用户反馈的正负样本的基础上,随机选取少量精排排名靠后的未曝光样本作为粗排负样本的补充,如图3所示。这种改变离线召回@150(指标解释见附件)+5PP,在线点击率+0.1%。图3补充反例策略2:直接在fine-sortedset中随机抽样得到训练样本,以fine-sortedsort的位置作为标签构造pair进行训练,如图4以下。线下效果对比策略1Recall@150+2PP,线上CTR+0.06%。图4从前向后排序形成一对样本策略3:基于策略2的样本集选择,通过分类细排序的位置构建标签,然后根据训练的类标签。线下效果对比策略2Recall@150+3PP,线上CTR+0.1%。3.1.2精细排序预测分数的蒸馏排序结果的蒸馏是一种使用精细排序信息的粗略方法。在此基础上,我们进一步加入预测分数蒸馏[8],希望粗排序模型输出的分数与细排序模型输出的分数分布尽可能一致,如图5所示下图:Figure5:Predictionscoresforfinerankingtoconstructauxiliaryloss在实现上,我们采用两阶段蒸馏范式,在预训练好的fineranking模型的基础上,对粗排序模型进行蒸馏,并蒸馏出Loss的最小平方利用粗模型和精模型的输出误差,加入一个参数Lambda来控制distillationLoss对最终Loss的影响,如式(1)所示。使用分馏的方法,离线效果为Recall@150+5PP,在线效果为CTR+0.05%。3.1.3FeatureRepresentationDistillation在业界已经验证知识蒸馏是通过细排序指导粗排序来提升模型效果的有效方式。无法提炼出粗排序和精排序之间的排序关系。如前所述,排序结果在我们的场景中进行了蒸馏,线上线下都提升了效果;二是传统的使用KL散度作为表征度量的知识蒸馏方案将表示的每个维度独立对待,无法有效地提取高度相关和结构化的信息[9]。在美团搜索场景中,数据是高度结构化的,因此传统的知识蒸馏采用表示蒸馏的策略可能无法很好地捕捉到这种结构化的知识。我们将对比学习技术应用于粗排序建模,使得粗排序模型在提取精细排序模型的表示时也可以提取顺序关系。我们用它来表示粗略模型和表示精细模型。假设数据集中q是一个request,是request下的正例,但是对应k个request下的负例。我们将它们分别输入到粗排序网络和精排序网络中,得到它们对应的表示。同时,我们将它们输入到粗排序网络中,得到粗排序模型的编码表示。对于对比学习中负例对的选择,我们采用策略3中的方案对细排序的顺序进行分类,将同一类中的细排序和粗排序的表示对视为正例。将特征对视为负例,然后使用InfoNCELoss来优化这个目标:其中表示两个向量的点积,即温度系数。通过分析InfoNCEloss的性质,不难发现,上式本质上等价于一个最大化粗糙表示和精细表示的互信息的下界。因此,该方法本质上是在互信息层面上最大化了精细表示和粗略表示之间的一致性,从而能够更有效地提炼结构化知识。图6Contrastivelearningrefinementinformationtransfer在上述公式(1)的基础上,补充contrastivelearningrepresentationdistillationLoss,离线效果Recall@150+14PP,在线CTR+0.15%。有关相关工作的详细信息,请参阅我们的论文[10](提交中)。3.2效果和性能的联合优化前面提到,在线预测的粗排序候选集比较大。考虑到系统全链路性能的约束,粗排序需要考虑预测效率。上面提到的工作是基于简单DNN+蒸馏的范式进行优化,但是存在两个问题:目前受限于在线性能,只使用了简单的特征,没有引入更丰富的交叉特征,导致模型效果还有空间为进一步改进。具有固定粗模型结构的蒸馏将失去蒸馏效果,导致次优解[11]。根据我们的实践经验,直接在粗排序层引入交叉特征是无法满足在线时延要求的。因此,为了解决上述问题,我们探索并实践了一种基于神经网络架构搜索的粗排序建模方案,同时对粗排序模型的效果和性能进行优化,选择最佳的特征组合和模型满足粗排序延迟要求的结构,整体架构图如下图7所示:图7基于NAS的特征和模型结构选择下面我们简单介绍一下神经网络架构搜索(NAS)的两个关键技术点和介绍效率建模的方法:神经网络架构搜索:如上图7所示,我们采用基于ProxylessNAS[12]的建模方法。整个模型训练除了网络参数外,还增加了featureMasks参数和网络架构参数。这些参数是可微分的并且与模型目标研究一起。在特征选择部分,我们为每个特征引入一个基于伯努利分布的Mask参数,见式(4),其中通过反向传播更新伯努利分布的θ参数,最终得到每个特征的重要性。在结构选择部分,使用L层Mixop表示,每组Mixop包含N个可选的网络结构单元。在实验中,我们使用具有不同隐含层神经单元个数的多层感知器,其中N={1024,512,256,128,64},我们还添加了隐含单元数为0的结构单元用于选择神经元具有不同层的网络。效率建模:为了对模型目标中的效率指标进行建模,我们需要使用一个可微分的学习目标来表示模型耗时。粗排序模型的耗时主要分为特征耗时和模型结构耗时。对于特征耗时,可以对每个特征fi的延迟期望进行建模,如公式(5)所示,其中是服务器记录的每个特征的延迟。在实际情况中,特征可以分为两类,一类是上行透传特征,其延迟主要来自于上行传输延迟;另一类特征来自于本地获取(读取KV或者计算),那么每一种特征组合的延迟可以建模为:其中和表示对应的特征集的个数,以及建模系统中特征提取的并发度。模型结构的延迟建模请参考上图7右侧部分。由于这些Mixops的执行是顺序执行的,我们可以通过递归的方式计算模型结构的延迟。整个模型部分的耗时可以通过计算最后LayerMixop来表达,示意图如下图8所示:图8ModelDelayCalculationDiagram图8左侧是网络架构选择的粗略网络,表示第一层第一个神经元的权重。右边是网络延迟计算的示意图。因此,整个模型预测部分的耗时可以用模型的最后一层来表示,如式(7)所示:最后,我们在模型中引入效率指标,最终模型训练的Loss为如下式(8)所示,其中f代表细排序网络代表平衡因子,分别代表粗排序和细排序的打分输出。通过神经网络架构搜索建模,联合优化粗排序模型的效果和预测性能,离线Recall@150+11PP,最终在线指标CTR+0.12%,不增加在线延迟;详细工作请参考[13],被KDD2022接受。4.总结从2020年开始,我们进行了大量的工程性能优化,将粗排序层实现到MLP模型中。2021年我们将在MLP模型的基础上继续迭代粗排序模型,提升粗排序效果。首先,我们参考业界常用的蒸馏方案,将细分选链接起来,对粗分选进行优化。我们在精排序结果蒸馏、精排序预测分数蒸馏、特征表示蒸馏三个层次上进行了大量的实验。在不增加在线延迟的情况下,接下来提升粗模型效果。其次,考虑到传统的蒸馏方法不能很好地处理排序场景中的特征结构化信息,我们开发了一套基于对比学习的精排序信息迁移和粗排序方案。最后,我们进一步认为,粗排序优化本质上是一种效果和性能的权衡。我们采用多目标建模的思想同时优化效果和性能,实现神经网络架构的自动搜索技术来解决问题,让模型自动选择效率和性能。最佳特征集和模型结构。未来我们会从以下几个方面继续迭代粗排序层技术:粗排序多目标建模:目前的粗排序本质上是单目标模型,我们目前正在尝试应用多目标建模细分选层到粗分选层。排。粗排序联动的全系统动态算力分配:粗排序可以控制召回和细排序的算力。针对不同的场景,模型需要的算力是不同的,因此可以在不减少线路的情况下实现算力的动态分配。在上述效果的情况下,降低了系统计算功耗。目前,我们在这方面取得了一定的线上效果。5.附录传统的线下指标排序大多基于NDCG、MAP、AUC指标。对于粗排序,其本质更偏向于以集合选择为目标的召回任务。因此,传统的排序指标不利于衡量粗排序。行模型迭代效果好坏。我们将[6]中的Recall指数作为衡量粗排序离线效果的指标,即以精排序结果作为groundtruth来衡量粗排序和精排序结果的TopK的对齐程度。Recall指标的具体定义如下:这个公式的物理意义是衡量粗排序中的topK和细排序中的topK的重合程度,这个指标更符合本质粗略的排序集选择。6.AuthorbriefintroductionXiaojiang,Suogui,LiXiang,CaoYue,Peihao,XiaoYao,Dayao,ChenSheng,Yunsen,Liqian,etc.areallfromtheMeituanplatform/searchrecommendationalgorithmdepartment.
