众所周知,在搜索、推荐、广告等大规模工业界应用领域,为了平衡性能和效果,排序系统普遍采用级联架构[1,2],如下图 1 所示。以美团搜索排序系统为例,整个排序分为粗排、精排、重排和混排层;粗排位于召回和精排之间,需要从千级别候选 item 集合中筛选出百级别 item 集合送给精排层。
从美团搜索排序全链路视角审视粗排模块,目前粗排层优化存在如下几个挑战点:
本文将围绕上述挑战点来分享美团搜索粗排层优化的相关探索与实践,其中样本选择偏差问题我们放在精排联动问题中一起解决。本文主要分成三个部分:第一部分会简单介绍美团搜索排序粗排层的演进路线;第二部分介绍粗排优化的相关探索与实践,其中第一个工作是采用知识蒸馏和对比学习使精排和粗排联动来优化粗排效果,第二个工作是考虑粗排性能和效果 trade-off 的粗排优化,相关工作均已全量上线,且效果显著;最后是总结与展望部分,希望这些内容对大家有所帮助和启发。
美团搜索的粗排技术演进分为以下几个阶段:
现阶段,工业界粗排模型常用的有双塔模型,比如腾讯[3]和爱奇艺[4];交互式 NN 模型,比如阿里巴巴[1,2]。下文主要介绍美团搜索在粗排升级为 NN 模型过程中的相关优化工作,主要包括粗排效果优化、效果&性能联合优化两个部分。
随着大量的效果优化工作[5,6]在美团搜索精排 NN 模型落地,我们也开始探索粗排 NN 模型的优化。考虑到粗排有严格的性能约束,直接将精排优化的工作复用到粗排是不适用的。下面会介绍关于将精排的排序能力迁移到粗排的精排联动效果优化工作,以及基于神经网络结构自动搜索的效果和性能 trade-off 优化工作。
粗排模型受限于打分性能约束,这会导致模型结构相比精排模型更加简单,特征数量也比精排少很多,因此排序效果要差于精排。为了弥补粗排模型结构简单、特征较少带来的效果损失,我们尝试知识蒸馏方法[7]来联动精排对粗排进行优化。
知识蒸馏是目前业界简化模型结构并最小化效果损失的普遍方法,它采取一种 Teacher-Student 范式:结构复杂、学习能力强的模型作为 Teacher 模型,结构较为简单的模型作为 Student 模型,通过 Teacher 模型来辅助 Student 模型训练,从而将 Teacher 模型的“知识”传递给 Student 模型,实现 Student 模型的效果提升。精排蒸馏粗排的示意图如下图 2 所示,蒸馏方案分为以下三种:精排结果蒸馏、精排预测分数蒸馏、特征表征蒸馏。下面会分别介绍这些蒸馏方案在美团搜索粗排中的实践经验。
粗排作为精排的前置模块,它的目标是初步筛选出质量比较好的候选集合进入精排,从训练样本选取来看,除了常规的用户发生行为(点击、下单、支付)的 item 作为正样本,曝光未发生行为的 item 作为负样本外,还可以引入一些通过精排模型排序结果构造的正负样本,这样既能一定程度缓解粗排模型的样本选择偏置,也能将精排的排序能力迁移到粗排。下面会介绍在美团搜索场景下,使用精排排序结果蒸馏粗排模型的实践经验。
策略1:在用户反馈的正负样本基础上,随机选取少量精排排序靠后的未曝光样本作为粗排负样本的补充,如图 3 所示。该项改动离线 [email protected](指标解释参看附录)+5PP,线上 CTR +0.1%。
策略2:直接在精排排序后的集合里面进行随机采样得到训练样本,精排排序的位置作为 label 构造 pair 对进行训练,如下图 4 所示。离线效果相比策略1 [email protected] +2PP,线上 CTR +0.06%。
策略3:基于策略2的样本集选取,采用对精排排序位置进行分档构造 label ,然后根据分档 label 构造 pair 对进行训练。离线效果相比策略2 [email protected] +3PP,线上 CTR +0.1%。
前面使用排序结果蒸馏是一种比较粗糙使用精排信息的方式,我们在这个基础上进一步添加预测分数蒸馏[8],希望粗排模型输出的分数与精排模型输出的分数分布尽量对齐,如下图 5 所示:
在具体实现上,我们采用两阶段蒸馏范式,基于预先训练好的精排模型来蒸馏粗排模型,蒸馏 Loss 采用的是粗排模型输出和精排模型输出的最小平方误差,并且添加一个参数 Lambda 来控制蒸馏 Loss 对最终 Loss 的影响,如公式(1)所示。 使用精排分数蒸馏的方法,离线效果 [email protected] +5PP,线上效果 CTR +0.05%。
业界通过知识蒸馏实现精排指导粗排表征建模已经被验证是一种有效提升模型效果的方式[7],然而直接用传统的方法蒸馏表征有以下缺陷:第一是无法蒸馏粗排和精排之间的排序关系,而前文已提到,排序结果蒸馏在我们的场景中,线下、线上均有效果提升;第二是传统采用 KL 散度作为表征度量的知识蒸馏方案,把表征的每一维独立对待,无法有效地蒸馏高度相关的、结构化的信息[9],而在美团搜索场景下,数据是高度结构化的,因此采用传统的知识蒸馏策略来做表征蒸馏可能无法较好地捕获这种结构化的知识。
在上文公式 (1) 的基础上,补充对比学习表征蒸馏 Loss,离线效果 [email protected] +14PP,线上 CTR +0.15%。相关工作的详细内容可以参考我们的论文[10](正在投稿中)。
前面提到线上预测的粗排候选集较大,考虑到系统全链路性能的约束,粗排需要考虑预测效率。前文提到的工作都是基于简单 DNN + 蒸馏的范式来进行优化,但是存在如下两个问题:
根据我们的实践经验,直接在粗排层引入交叉特征是不能满足线上时延要求的。因此为了解决以上问题,我们探索并实践了基于神经网络架构搜索的粗排建模方案,该方案同时优化粗排模型的效果和性能,选择出满足粗排时延要求的最佳特征组合和模型结构,整体架构图如下图7所示:
下面我们对其中的神经网络架构搜索(NAS)以及引入效率建模这两个关键技术点进行简单介绍:
通过神经网络架构搜索的建模来联合优化粗排模型的效果和预测性能,离线 [email protected] +11PP, 最终在线上延时不增加的情况下,线上指标 CTR +0.12%;详细工作可参考[13],已被 KDD 2022 接收。
从 2020 年开始,我们通过大量的工程性能优化使粗排层落地 MLP 模型,在2021 年我们继续在 MLP 模型基础上,持续迭代粗排模型来提升粗排效果。首先,我们借鉴业界常用的蒸馏方案来联动精排优化粗排,从精排结果蒸馏、精排预测分数蒸馏、特征表征蒸馏三个层面分别进行了大量实验,在不增加线上延时的情况下,提升粗排模型效果。
其次,考虑到传统蒸馏方式无法很好处理排序场景中的特征结构化信息,我们自研了一套基于对比学习的精排信息迁移粗排方案。
最后,我们进一步考虑到粗排优化本质上是效果和性能的 trade-off,采用多目标建模的思路同时优化效果和性能,落地神经网络架构自动搜索技术来进行求解,让模型自动选择效率和效果最佳的特征集合和模型结构。后续我们会从以下几个方面继续迭代粗排层技术:
传统的排序离线指标多以 NDCG、MAP、AUC 类指标为标准,对于粗排来说,其本质更偏向于以集合选择为目标的召回类任务,因此传统的排序指标不利于衡量粗排模型迭代效果好坏。我们借鉴[6]中 Recall 指标作为粗排离线效果的衡量指标,即以精排排序结果为 ground truth,衡量粗排和精排排序结果 TopK 的对齐程度。Recall 指标具体定义如下:
该公式的物理含义即为衡量粗排排序前 K 个和精排排序前 K 的重合度,该指标更加符合粗排集合选择的本质。
晓江、所贵、李想、曹越、培浩、肖垚、达遥、陈胜、云森、利前等,均来自美团平台/搜索推荐算法部。
搜索推荐算法部/基础算法组是负责美团搜索研发的核心团队,使命是打造世界一流的搜索引擎,依托Deep Learning(深度学习)、NLP(自然语言处理)、Knowledge Graph(知识图谱)等技术,处理美团海量用户、商家、商品数据,不断加深对用户、场景、查询和服务的理解,高效地支撑形态各样的生活服务搜索,解决搜索结果的多业务混排、相关性、个性化等问题,给用户极致的搜索体验。搜索推荐算法部长期招聘搜索推荐算法专家,感兴趣的同学可以将简历发送至:[email protected](邮件主题:美团平台/搜索推荐算法部)。