【论文极速看】MOBIUS 一种构建负样本的方法

2024-01-10 20:10

本文主要是介绍【论文极速看】MOBIUS 一种构建负样本的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

∇ 联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号:


在搜索,计算广告和推荐系统中,通常有着海量的用户数据,这类型的数据各种类型混杂,比如用户点击数据,用户浏览时长,还有各种用户行为信息等,如何根据这些数据构造出合适的数据集给模型训练,是一件核心问题。百度在论文[1]中提出了一种称之为MOBIUS的负样本构建思路。通常来说,搜索广告推荐(统称为推广搜系统)都会由『召回』『排序』两大步骤组成,比如论文中提到的百度『凤巢』广告系统,其可以看成是一个『倒三角形』的漏斗形结构,由上到下分别是『召回/匹配(matching)』,『粗排,精排』,『上层排序』等。

在漏斗的顶端是在海量(亿级别)的数据中召回足够相关的项目(item),这个时候通常只考虑用『相关性(relevance)』作为标准进行匹配,相关性指的是用户和项目的相关程度,对于信息检索系统来说就是用户Query和网页Doc的相关程度,对于广告系统就是用户Query和广告Ad的相关程度。在召回足够的项目之后,再根据更多的特征进行粗排序和精排序等。最后,考虑到业务需求,比如竞价,点击模型等,需要结合这些因素和相关性进行上层排序,得到最后的展现给用户的结果。在论文中,MOBIUS以CPM(Cost Per Mile,千人展现花费)作为业务的一个上层指标进行讨论, C P M = C T R × B i d CPM = CTR \times Bid CPM=CTR×Bid,也就是说CPM是由预估点击率和竞价决定的。

论文中提到,在实际场景中,很多时候高频物体会有着CTR偏高的倾向,即便用户和该项目没有太高的相关性。这个时候就会出现这种情况,用户搜索一个Query,投放出来的广告相关性不高,但是因为该物体被很多人点击,然后导致CTR偏高。这种情况即是『低相关性,高CTR』,如下图所示

百度凤巢提出的方法是构建负样本,也就是将这种『低相关性,高CTR』的负样本在数据构建阶段就产生出来,然后通过这种数据去学习得到的模型,可以区分低相关性的同时,还有对CTR感知的能力。可以认为之前在召回阶段,模型只考虑了相关性,如式子(1)所示。
O M a t c h i n g = max ⁡ 1 n ∑ i = 1 n R e l e v a n c e ( q u e r y i , i t e m i ) (1) \mathcal{O}_{Matching} = \max{\dfrac{1}{n} \sum_{i=1}^n \mathrm{Relevance}(query_i, item_i)} \tag{1} OMatching=maxn1i=1nRelevance(queryi,itemi)(1)
而在百度凤巢提出的系统中,希望是如式子(2)所示
O M o b i u s = max ⁡ ∑ i = 1 n C T R ( u s e r i , q u e r y i , i t e m i ) × b i d i s . t . 1 n ∑ i = 1 n R e l e v a n c e ( q u e r y i , i t e m i ) ≥ t h r e s h o l d \begin{aligned} \mathcal{O}_{Mobius} &= \max{\sum_{i=1}^n \mathrm{CTR}(user_i, query_i, item_i) \times bid_i} \\ & s.t. \dfrac{1}{n} \sum_{i=1}^n \mathrm{Relevance}(query_i, item_i) \geq threshold \end{aligned} OMobius=maxi=1nCTR(useri,queryi,itemi)×bidis.t.n1i=1nRelevance(queryi,itemi)threshold

至于构建的方法也很朴素,在点击日志里,找出诸多的用户-项目的点击对,然后进行直积构建出『生成数据对』,如 Q u e r y ⊗ I t e m Query \otimes Item QueryItem,比如Query有[A,B,C,D],而Item有[a,b,c],那么生成的数据对就有 4 × 3 = 12 4 \times 3 = 12 4×3=12个,为<A,a>,<A,b>...<D,c>。我们用已经训练好的相关性模型对每一个生成数据对进行相关性预测,同时设定一个阈值,将小于阈值的数据对取出,送给点击模型预测CTR,同时通过数据采样方法进行采样(此时的目的是挑选合适CTR等上层目标的样本),最后回归送到数据集中合并。整个流程下来,我们的『低相关性,高CTR(或其他上层指标)』的负样本就构建好了。构建好后,继续迭代更新点击模型的模型参数(如下图的粉色箭头所示),整个流程见下图。

总的来说,MOBIUS是百度凤巢实际使用的系统,用于负样本的构建与生成,并且希望将上层排序信号引入到相关性中。

Reference

[1]. Fan, M., Guo, J., Zhu, S., Miao, S., Sun, M., & Li, P. (2019, July). MOBIUS: towards the next generation of query-ad matching in baidu’s sponsored search. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (pp. 2509-2517).

这篇关于【论文极速看】MOBIUS 一种构建负样本的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/591934

相关文章

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

一文详解如何从零构建Spring Boot Starter并实现整合

《一文详解如何从零构建SpringBootStarter并实现整合》SpringBoot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,:本文主要介绍如何从... 目录一、Spring Boot Starter的核心价值二、Starter项目创建全流程2.1 项目初始化(

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提