• 承上启下:基于全域漏斗分析的主搜深度统一粗排


    1. 背景

    1.1 概述

    淘宝主搜索是一个典型的多阶段检索系统,主要分为召回、粗排、精排等阶段。召回阶段,由文本召回、个性化等多路召回构成,输出商品量级约10^5;粗排阶段,需要从三路召回集合中分别进行筛选,筛选出10^3量级提供给精排;后续经过精排等阶段再进行筛选输出约top10曝光给用户。(注:下文中10、10^3、10^5等均代表数量级,数值只作为示意,只有其相对大小具备参照意义)

    其中,粗排(主搜有时也称之为做海选)本质是从海量候选集中输出一个最佳集合,虽然都是排序但和精排的目标存在很大差异,从目标上来看其实和召回更加相似。同时,我们需要使用排序这个手段来完成,所以常见的论文和方法更倾向于不断的模仿和逼近精排。经过近两年主搜下的探索和实践,从目标上可以总结出的精排与粗排最大的差异是:精排注重头部商品的排序,粗排注重腰部商品的排序。业内很多各种提高精排与粗排一致性的手段通常在主搜都不会有实质性的效果,主要有两个原因:一是精排只用曝光集合作为训练样本,我们离线验证即使把精排直接丢到粗排阶段进行打分,那结果也是惨不忍睹,大量未见过的样本分数趋向于随机;二是粗排最要解决的是如何在召回集合中选出优质的子集,如果这部分子集足够优质,那后续的问题不一定是粗排和精排保持一致,可能是需要精排和粗排保持一致。

    去年我们团队采用多目标优化+负样本扩充+listwise蒸馏这“三板斧”成功在主搜粗排阶段取得了显著的成效(本文的1.2节对去年的模型优化做了简要介绍),也是首次将粗排的训练样本和目标做出了和精排明显的差异,并在每路内召回集合hitrate验证下表明粗排显著超过了精排模型,但是由于时间原因只进行了比较片面的尝试,今年我们继续针对这些问题进行深入的探索和剖析,今年继续新的评价指标和评价体系,我们对所有改进功能都进行了回测,同时进行了进一步改进和提升。

    具体到评价指标方面,由于去年我们只有一个片面的衡量与精排一致性的指标(NDCG),无法衡量召回-粗排的损失,进而无法衡量粗排负采样的好坏进行衡量,且本身这个目标就和粗排实际的优化方向存在很大偏差,实验过程也容易发现盲目提高NDCG且不增加负采样只会让粗排效果更差。因此,今年引入了全新的评测指标“全域成交hitrate”作为粗排最重要的评价标准,并且历经一个月时间对从召回->粗排->精排的全域成交漏斗损失结合不同优化对应的线上GMV的影响进行了系统的分析,不仅对此评价指标的有效性进行了检验,还对各个阶段的优化空间、优化目标进行了一定程度的规范与统一,具体将在下文第2节进行展开。与此同时,具体到对粗排阶段离线优化目标,全域hitrate需要进一步进行拆分,其中粗排前与粗排后、场景内和场景外本身具有天然的不同,且最终我们通过分析和验证提出了两类评价指标分别描述“粗排->精排损失”和“召回->粗排损失”经过分析和细化后的这些粗排评测指标终于能和线上指标具有很强的正相关性,具体的使用方式我们在下文第3节进行阐述。

    在“粗排->精排损失”和“召回->粗排损失”的指标都建立完成后,我们会发现用技术手段去缓解最开始提到的两个问题“与精排目标不一致”和“粗排练样本空间与线上打分空间不一致”就可以在这两种指标上分别得到体现,其中长尾商品问题我们去年的做法只是解决了其“打分过高”的问题,但是实际上加重了其“打分过低”的问题,我们今年也进行了一定的尝试,具体的方法将在第4节阐述。

    1.2 模型基础结构

    为了方便读者理解,在本节中,我们将去年对粗排模型的优化结果做简要的介绍。这是今年粗排模型优化的基础。

    训练样本的选择是粗排模型区别于精排模型的一个重要差异之一。为了拟合在粗排阶段的打分空间,粗排模型的训练样本由三部分构成:曝光样本、未曝光样本和随机负样本。其中曝光样本指经过精排模型排序后曝光的样本;未曝光样本指经过粗排模型排序后,送入精排,但未得到精排阶段曝光的样本;随机负样本指在query相关类目下随机采样的样本。样本采用listwise的组织形式,将一个请求下的三种样本拼接成一个长度为

    的列表,即样本维度为

    ,其中

    分别表示曝光样本、未曝光样本和随机负样本对应的长度。去年只是通过推测和分析进行的这部分样本构造工作,在今年提出和发现全域成交指标后,对此部分工作进行了回测,发现未曝光样本和随机负样本这两部分负样本的扩充共带来约5.5 pt的场景外的hitrate的提升。

    在损失函数方面,我们引入包括曝光、点击、成交在内的三个优化目标,使得user-query向量和item向量能够在多个目标的共同作用下同时优化从而达到最优。对于每个样本的logit,首先经过softmax,使用NLL loss来计算每个任务的损失函数,最后将每个任务的损失函数加和得到最终的损失函数。基于listwise的样本组织形式,我们希望达到对不同样本logit排序的目标,通过多个逐步递进的任务,建立曝光PV -> 点击Click -> 成交Pay的对应关系,三者正例数以此为前者的子集。我们希望多目标粗排模型能够学习到粗排打分商品之间的顺序,优先将用户最可能成交的商品召回并排在最前,其次是用户可能点击的商品和精排模型可能曝光的商品,最后是那些仅相关的商品。此外,为了进一步提高模型与精排模型的一致性,我们还添加了对精排分数学习的蒸馏任务,在曝光样本上让粗排模型学习精排模型的打分分数。

    模型结构方面,我们遵循了业界广泛采用的基于内积模型结构,在分别计算user-query向量和item向量后,计算两个向量的内积作为其相似度(logit),整体模型输入输出如下图所示(注:虽然图中item向量涉及到很多种,但是他们共享一套网络结构和对应的trainable parameters)

    2. 全域漏斗空间分析(新指标的初步检验)

    在本节中,我们利用新提出的全域成交hitrate指标,对搜索全链路漏斗进行了分析。全域成交可以划分为两类成交样本:场景内成交和场景外成交。场景内成交即用户在搜索场景内产生的所有成交,场景外成交即同一个用户关联到的非搜索场景产生的成交。由于非搜索场景不存在query,我们通过相关性作为关联条件,将用户在场景外的成交item,关联到用户在场景内的query上,且要求场景内query和场景外成交item组成的query-item对满足一定的相关性条件。

    我们通过埋点的方式对粗排阶段打分集合归因到对应的场景内和场景外成交。具体的,将多路召回结果统一使用粗排模型打分进行排序,并截断Top K计算搜索引导成交和符合相关性要求的非搜索关联成交对应的hitrate@K,具体见下图:

  • 相关阅读:
    [Linux]shell文本处理记录 - 查找、增删特定行及附近行
    决策树C4.5算法的技术深度剖析、实战解读
    【vue3+ts后台管理】商品列表完成
    【深度学习】吴恩达课程笔记(五)——超参数调试、batch norm、Softmax 回归
    Spring Boot JPA 存储库派生查询示例
    Java基于springboot+vue的企业人事员工工资考勤管系统 nodejs 前后端分离
    大一C语言编程题库
    Unity地面交互效果——4、制作地面凹陷轨迹
    Jquery结合Ajax和Web服务使用三层架构实现无刷新分页
    元器件贸易企业,理应“以快制胜”
  • 原文地址:https://blog.csdn.net/weixin_43970890/article/details/128093049