Rethinking the Role of Pre-ranking in Large-scale E-Commerce Searching system

news2024/11/14 16:36:44

来源:

  • KDD’2023
  • Taobao Search

文章目录

    • ASH
    • ASMOL
      • 训练样本
      • 训练目标
      • 蒸馏精排
    • 总结

反思粗排在大规模电商搜索系统中的角色。

由于巨大的数据量以及对系统实时反馈的要求,一个典型的工业排序系统通常由这些模块组成:召回(matching)、粗排(pre-ranking)和精排(ranking)。其中粗排通常被认为是一个迷你的精排,因为它需要对更多物品进行排序。因此,现在很多关于粗排的工作都是在模仿精排(mini-ranking),离线时也会使用和精排一样的评估方法,这就导致在评估粗排时出现了离线和线上指标不一致的问题。

这个工作中纠正了粗排的定义:粗排阶段的主要目标是输出一个最有的无序集合,而不是有序的物品列表,因为最终的物品顺序是由精排决定的。因此用精排的指标去评估粗排也是不恰当的。一味地模仿精排,粗排和精排越来越相似,短期内能够提升线上的效果,但长期来看,由于粗排过度依赖精排阶段的监督信号(例如曝光数据),有这些问题:

  • 监督信号不一致,导致样本选择偏差。其实这也是一个老大难的问题,精排的监督信号比较好确定,但是粗排的目标是什么呢,毕竟粗排是一个中间阶段;
  • 二者的输入样本分布不一致,粗排样本的某些有效特征可能因为在模仿精排时没有得到重用;
  • 马太效应,由于以精排的目标作为监督信号,因此粗排模型偏向精排的目标。

论文中提出了一个新的评估指标评估粗排,All-Scenario Hitrate(ASH),力求对粗排的评估能在线上和线下取得一致。另外,也提出了All-Scenario-based Multi-Object Learning framework(ASMOL),一个基于全场景的多目标粗排学习框架。

ASH

目前评估粗排时,常用hitrate@k:
h i t r a t e @ k = ∑ i = 1 k 1 ( p i ∈ T ) ∣ T ∣ hitrate@k = \frac{\sum_{i=1}^k \mathbb{1}(p_i \in T)}{|T|} hitrate@k=Ti=1k1(piT)

其中 p i p_i pi表示物品, T T T表示目标集,一般是用户点击过的物品, k k k则是对粗排输出的截取数量,一般不会对粗排的整个输出进行评估,而是选择前k个进行评估。k的选择是一个不平凡的难题,如何选择才能体现模型的能力呢?理想的 k k k是使其等于粗排输出集 R$的大小。但是从整体流程来看,用户点击过的物品是精排的输出,但是精排的输入又是粗排的输出,因此这会使得hitrate@R一定是等于1的。实际中一般k是远小于|R|的,这不能反应粗排的整体能力的。

为了反映粗排模型真实的能力,论文将其他场景中的正样本也引入,即对 T T T进行扩充。具体的扩充策略见论文。

ASMOL

The All-Scenario-based Multi-Objective Learning framework (ASMOL) in Taobao Search

The All-Scenario-based Multi-Objective Learning framework (ASMOL) in Taobao Search

愚见,ASMOL并没有在模型结构上进行较大的改动,更多的是训练样本和训练目标上的改进。ASMOL的整体框架如上图所示。从输入上来看,因为场景是淘宝搜索,所以每个训练样本是针对某个用户的某个query而言的。每个训练样本的输入包含了:用户特征、query特征以及一个物品列表。训练目标则包含了:曝光、点击和购买。并且用现有的精排模型对粗排模型进行蒸馏。

训练样本

Training samples of ASMOL

Training samples of ASMOL

刚刚已经提到,一个训练样本的输入中包含了一个物品列表,列表里的物品分成三类:

  • 曝光样本(Exposures,Ex):在一个请求中曝光的N个物品,包含了点击或者购买的物品;
  • 精排样本(Ranking Candidates,RC):粗排模块送给精排模块且未能曝光的物品,一般是几千个,从中采样M个;
  • 粗排样本(Pre-Ranking Candidates,PRC):召回模块送给粗排且未能进入精排阶段的物品,一般是几十万个,从中采样L个。

以上三者的对应关系如上图所示,每种物品都是不相交的。

**为什么要在输入中输入这些样本呢?**在传统的粗排模型训练过程中,输入的物品一般只是精排的输入(即本文中的Ex+RC),因此监督信号一般也与精排相似,这也导致了前文中提到的一些问题,其中一个很明显的就是样本选择偏差(SSB)——粗排模型只见过经过筛选后的物品,但是线上服务时又是以召回的输出为输入。

训练目标

论文中通过三个目标来对模型进行优化,三个目标的标签分别为:

  • 全场景购买标签(All-Scenario Purchase Label,ASPL):用户在任一场景中购买了物品,则该物品的标签为1;
  • 全场景点击标签(All-Scenario Click Label,ASCL):用户在任一场景点击了物品,则该物品的标签为1。由于用户在购买一个物品前必须点击之,因此一个物品的ASPL标签为1则其ASCL也为1;
  • 曝光标签(Adaptive Exposure Label,AEL):物品是搜索场景中曝光的物品,则该物品的标签为1,由于被点击的物品必先被曝光,因此一个物品的ASCL为1则其AEL也为1。

很显然,以上三个物品是一个逐步包含的关系,即:
A S P L ⊂ A S C L ⊂ A E L ASPL \subset ASCL \subset AEL ASPLASCLAEL
联系输入的训练样本中的物品列表,很显然Ex对应的物品在三个目标中一定都是正样本,而RC和PRC由于根本就没有被曝光,因此也不会被购买或者点击,因此RC和PRC都是负样本。并且,PRC是简单的负样本,而RC是难一些的负样本。

这三个目标的损失加权相加得到:
L r a n k = α e x L e x p o s u r e + α c l L c l i c k + α p u r L p u r c h a s e L_{rank} = \alpha_{ex} L_{exposure} + \alpha_{cl} L_{click} + \alpha_{pur} L_{purchase} Lrank=αexLexposure+αclLclick+αpurLpurchase
对于每个任务,计算list-wise形式的损失:
L ∗ = ∑ i ∈ D − l o g e z i ∑ j ∈ S e z j L_{*} = \sum_{i \in \mathcal{D}} -log \frac{e^{z_i}}{\sum_{j \in \mathcal{S} }e^{z_j}} L=iDlogjSezjezi
其中, D \mathcal{D} D表示对应任务的正样本集合, S \mathcal{S} S表示每个训练样本中的物品集合, z z z表示模型输出的每个样本的分数。以上的这个list-wise的损失适用于列表中只有一个正样本的情况,并不适用于多个正样本的情况(参考论文Improved Deep Metric Learning with Multi-class N-pair Loss Objective),论文的附录中也对list-wise的损失进行了修正。

蒸馏精排

除了以上三个目标外,论文中还用精排模型的CTR和CTCVR指导粗排模型的学习,其中主要涉及到样本选择的问题,即在哪些样本上进行蒸馏。

总结

这篇论文对粗排的角色进行了分析,讨论了粗排过度模拟精排的问题,分别从离线评估方式、样本构造、目标构造和学习框架上进行了改进。论文没有花太多篇幅在模型框架的创新上,而是在深入的分析和解决真实粗排场景中常见的问题,在各种细节上也处理的很到位,如多个正样本的list-wise损失函数的改造上。完整、仔细地读下来,对理清粗排地整个流程和挑战都很有帮助,值得学习。


欣赏一下北京的夜景😀
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736082.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VTR编译问题

机器环境 vmware 16.0; ubuntu22.04.02; 问题描述 一、在build过程中会出现一些警告,但没有停止; 二、访问 **raw.githubsercontent.com/…/…**相关网站被拒绝,如下图: 之前在 /etc/hosts 仅仅是添加了raw.github…

JS数组解构赋值变量存在依赖关系

题目随便起的, 在刷力扣 41.缺失的第一个正数 这个题的时候,出现了解构赋值的问题, 对于[a,b] [1,2]和[b,a][2,1]按理说都是行的通的,和位置没有关系,本质上都是进行交换 可是当我在题目中 使用[nums[nums[i]-1], nu…

SpringMVC的高频面试题

2023最新版(持续更新) 一、SpringMVC的高频面试题1. SpringMVC的执行流程2. SpringMVC常见的注解有哪些? 一、SpringMVC的高频面试题 1. SpringMVC的执行流程 前置知识 视图阶段(JSP): 涉及到的重要组件:…

KubeSphere 社区双周报 | KubeSphere 多项更新 | 2023.06.23-07.06

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.06.23-2023.…

管道设计专业版:Pipedata-Pro Crack

Pipedata-Pro 提高了管道设计的效率并减轻了查找管道信息的负担。它可以直观、轻松地检索最新的管道和设计数据。尺寸和重量单位可以设置为公制或美制单位。 Pipedata-Pro 于 1996 年由 Zeataline Projects 推出,现已遍布全球,Pipedata-Pro 管道表的映射…

怎么判断两个文档节点时候相同?判断两个DOM节点时候相等、相同的4种方法

方法1: document.querySelector(html) document.querySelector(html) //true 方法2:compareDocumentPosition document.querySelector(html).compareDocumentPosition(document.querySelector(html)) //0 返回0就代表相同 方法3:isEqualNode …

编译运行ContactDiscoveryService-Icelake

下载 git clone https://codeup.aliyun.com/6306306f95064d67d44656e5/lxr1907/ContactDiscoveryService-Icelake.git或github地址 git clone https://github.com/signalapp/ContactDiscoveryService-Icelake按照Readme安装 Building git submodule init git submodule update …

每次装完 homebrew,ohmyzsh 就会报错:Insecure completion-dependent directories detected:

参考:https://zhuanlan.zhihu.com/p/313037188 这是因为在big sur安装homebrew后,会在/usr/local/share/生成一个zsh文件夹,里面包含了 因此,zsh文件默认设置的权限是775,也就是group user有writer的权利,zsh认为这是…

python读写excel利器:xlwings从入门到精通

python读写excel利器:xlwings 从入门到精通 目录 安装和使用 基础操作 操作工作簿操作工作表读取单元格写入(单元格赋值)range的操作(range常用的api) 写入一行或一列Excel数据(函数式)使用range(\A1\).api.AddComment(\comments…

本质矩阵(Essential Matrix)E进行分解的过程

分解本质矩阵的过程遵循以下步骤: 使用奇异值分解(SVD)计算本质矩阵E的分解。SVD分解是一种将矩阵分解为三个矩阵的乘积的方法,它的形式为 E UΣV^T,其中U和V是正交矩阵,Σ是对角矩阵。此步骤的结果存储在…

Edge浏览器无法展示Stable Diffusion Control Net插件

Edge浏览器无法展示Stable Diffusion Control Net插件 最近在学习Stable Diffusion,需要使用到Control Net插件,结果通过各种方式安装成功插件后,浏览器页面没有展示ControlNet相关页面,最终换到Chorme浏览器后正常,猜…

【Python】绘图_pandas(1)

# -*- coding: utf-8 -*- #汉字处理 import matplotlib.pyplot as plt import numpy as np from numpy.random import randn import pandas as pd #import DataFrame from matplotlib.font_manager import FontPropertiesfont FontProperties(fnamer"c:\windows\fonts\si…

基于51单片机的电子密码锁设计

功能:本实例是基于51单片机的电子密码锁,主要硬件由51单片机最小系统,LCD1602液晶屏电路,继电器控制电路,AT24C02存储电路,LED指示灯电路,矩阵按键电路构成。 1.系统采用LCD1602液晶屏作为显示屏…

【软件设计原则】系统设计面试基础:CAP 与 PACELC

什么是 CAP 定理以及 PACELC 如何扩展它? 在分布式系统中,可能会发生不同类型的故障,例如,服务器可能会崩溃或永久故障,磁盘可能会损坏导致数据丢失,或者网络连接可能会丢失,导致系统的一部分无…

在openFoam中创建cellZone

简介 openFoam的cellZone概念十分重要,可以给一个区域的单元命名,广泛应用于设置初始场(如气、液两相流的初始VOF分布) 而cellZone通常由cellSet转化而来,本文将介绍使用cellSet定义cellZone的方法 方法 在项目的sy…

【JavaWeb】博客系统的前端页面设计

目录 前言 1、页面组成 2、实现博客列表页 🍂设置背景图片 🍂设置导航栏 🍂实现版心 🍃实现个人信息 🍃实现博客列表 3、实现博客详情页 4、编写博客的登录页 5、博客编辑页面 🍂实现标题的编辑区 …

Python学习笔记-基于socket基础的http服务端程序

通过HTTP协议可以进行通信可以规范化的进行网络间通信。下面技术第一个http服务器小程序。简单的记录第一个试手程序。 1.http通信的基本流程 整个流程对应四层网络架构:应用层、传输层、网络层、链路层。有的部分已经封装,不需要我们再行处理。 2.服务…

哈夫曼树-算法

一、霍夫曼树基本概念: 路径:从树的一个结点到另外一个结点的分支构成这两个结点的路径 结点的长度:两节点之间路径的分支数 树的路径长度:从树根到每一个结点的长度之和,记做TL: 结点数目相同的二叉树中&#xff0…

LwIP系列(5):TCP 3次握手+4次挥手+状态机转换

前言 TCP的3次握手、4次挥手以及TCP状态机,是TCP的核心概念,我们在分析LwIp中TCP相关代码流程,也需要熟悉这些流程,本文就详细介绍这些概念。 TCP 3次握手、应用数据交互、4次挥手完整流程 TCP 为什么是3次握手,而不…

51单片机--动态数码管显示

文章目录 LED数码管一位晶体管多位一体数码管单片机上的数码管原理 静态数码管显示动态数码管显示 LED数码管 简介:LED数码管是一种常用的数字显示设备。它由多个发光二极(LED)封装在一起,形成“8”字型的器件。数码管通常由7段LE…