Airbnb搜索:重排序阶段如何优化搜索结果多样性?

文 | 谷育龙Eric

编 | QvQ


我是谷育龙Eric,研究方向有深度学习、搜索推荐,喜欢为大家分享深度学习在搜索推荐广告排序应用的文章。本文将基于Airbnb KDD 2020年的论文,介绍Airbnb搜索排序中在重排序阶段如何解决多样性的问题,对工业界搜索推荐系统优化多样性,具有很好的指导借鉴意义。

论文题目:
《Managing Diversity in Airbnb Search》

论文链接:
arxiv.org/abs/2004.02621v1

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词【1015】下载论文PDF~

搜索推荐系统中的多样性问题

在互联网APP中,例如电商(淘宝、京东、拼多多)、信息流(头条、微博、百度)、短视频(抖音、快手、微信视频号)等,搜索推荐的多样性对优化点击转化效率、用户体验、浏览深度、停留时长、回访、留存等目标至关重要。例如,在淘宝"猜你喜欢”信息流推荐中,会为用户推荐多个类目的宝贝、短视频、直播、文章等,来吸引用户停留:

▲图1

在Airbnb中搜索系统中,搜索结果的多样性,主要体现在房间类型、位置、价格信息等:

▲图2

深度学习精排阶段的排序模型,泛化能力比较好,一般相似的物品精排分数也比较接近,如果直接用精排分数排序展示结果,会导致排名靠前的结果非常类似,容易造成视觉疲劳,对兴趣宽泛、偏逛、需求不明确等用户体验很差。下图展示了Airbnb实际的搜索结果中,排序靠前的listing(即item,民宿房间),价格、位置差别通常非常小。

所以,工业界的搜索推荐系统,一般包括召回、粗排、精排、重排模块。

  • 在召回阶段,通过多路召回(item2item, 向量召回等)方式,召回和用户最近点击相似相关的物品、热门物品等,一般有几千到几万,保证效率、丰富、多样性。

  • 粗排阶段,通过简化的精排模型,对大量召回物品打分,返回几千个物品。

  • 在精排阶段,用更复杂的深度排序模型等对这些物品打分。

  • 最后,在重排序阶段,对综合考虑点击率、转化率、价格、多样性等信息,对物品计算新的排序分数,最后展示给用户。

重排序阶段,多样性的优化方面,工业界搜索推荐系统实用的代表性方法,包括 MRR (Maximal Marginal Relevance) [1], Google Youtube和Hulu视频推荐中的DPP(Determinantal Point Process)[2,3],阿里电商推荐中基于Transformer的PRM [4],Google Youtube基于强化学习的模型SlateQ [5]等。Airbnb的搜索系统,主要包括:召回、精排(Base Ranking Model)、重排(Second Stage Ranker),这篇论文主要介绍Airbnb搜索在重排序阶段如何优化多样性问题。

多样性指标

在多样性问题中,最基础的问题是定义衡量多样性的指标。

MRR:Maximal Marginal Relevance

经典的MRR方法,定义如下:

其中 是搜索查询 , 是候选的相关物品(例如精排后的结果), 是MRR算法已经选取的物品, 用来衡量物品 的相似度, 用来衡量物品间的相似度, 是平衡相关度(例如CTR)和多样性的超参数(在Aribnb中通过实验分析,值设定为0.15)。公式中 建模了当前候选的物品 和搜索 的相似度, 部分表示当前候选的物品 和搜索已经选取的物品的最大相似度。MRR算法的思想是:采取贪心策略,生成top K结果列表。第一次,先选取相关度最高的物品。然后,每次选取和查询 query 匹配度高、和已经选取的物品最大相似度低的物品。相似度函数 可以不同,根据业务需求来定。例如,在Airbnb搜索系统中,函数可以基于listing间价格、位置、类型等信息来计算。

MLR:Mean Listing Relevance

这篇论文里,作者提出了MLR指标,用来衡量一个top N列表结果的相关性、多样性综合得分,定义如下:

可以看到MLR和MRR方法中定义的指标相比,把MRR指标中的最大值函数替换成了平均值函数,距离函数取代了相似度函数 (所以没有了负号)。这样做的动机是:MMR中的最大值函数,隐藏假设用户仅对每个类目中的一个item感兴趣;MLR中使用平均值函数,更加平滑,能更好地建模Airbnb中用户的广泛偏好。

Listing的向量表示

本文中,作者使用的是将listing人工定义为一个可解释的向量,由listing的属性来表示,例如价格,位置(经度,纬度),容纳人数,房间类型等。对于实数值属性,基于query结果集合中的数据(而非全部数据)计算均值、方差,做normlization。对于类别属性,使用one-hot encoding。对处理后的listing向量通过TSNE聚类,结果如下图所示,可以看到:这种表示聚类效果很好,对房间类型、价格、位置等信息有比较好的区分度。

基于多样性分布的距离计算

通过计算生成的top K结果的多样性分布和理想的多样性分布之间的Hellinger距离,来衡量top K结果多样性的好坏。其中Hellinger距离的定义如下图所示,反映了向量每个维度值的差别。

关键的问题是,对于每个query,理想的多样性分布如何计算呢?论文作者巧妙了利用了用户的反馈(user engagement, 例如点击、预定等)来计算。下面通过位置、价格两个例子来说明。

位置多样性

对于位置多样性,对于每个query,理想的多样性向量分布,基于这个query下用户的反馈信息来计算。论文作者用经典的KD-Tree结构来将每个地理位置,然后计算每个地理位置下用户反馈的分布,从而得到对于这个query,理想的地理位置多样性分布。下图是一个用户反馈在位置上分布的例子:

价格多样性

对于价格多样性,作者选用了多个价格bucket的正态分布,如下图所示。基本的思想是:对于每个query, 返回多个价格区间的结果,让用户有更多的选择;同时,让结果以这个query的expected price (期望价格)为中心。

那么,每个query下的expected price如何计算呢?作者采用的方法是使用简单的回归模型,特质:基于query中的特征,例如客户人数、住几夜、地点等,标签数据:基于历史预定的实际价格来计算。

优化多样性方法

在Airbnb重排序系统中,采用过几种解决方案,从精排后的N个结果,来生成top T的重排序结果,展示给用户。

基于Greedy Ranker的重排序

最大化Mean Listing Relevance指标,是一个NP-Hard问题。所以Airbnb首先使用了贪心的方法,基于Maximal Marginal Relevance(MMR)算法,利用的是论文中定义的Mean Listing Relevance指标,每次选取能使添加这个item后整个结果列表得分最高的那个item (即Airbnb中的listing)。

基于Location Diversity Ranker的重排序

该方法是基于模拟退火的优化优化位置多样性的重排序方法,同时考虑多样性和相关性的损失函数为:

其中, 以精排阶段分数作为ground truth label, 来衡量重排序结果和精排结果的偏差,表示重排结果的相关性得分; 用重排序结果和理想地理分布的距离,表示重排结果的多样性得分。然而标准的优化方法(如SGD)并不能直接优化这个定义的损失函数,因为地理位置表示的映射是固定的。所以,作者采用了基于模拟退火的方法:多次迭代,每次迭代通过交换重排序结果列表中两个item的位置生成新的结果,如果指标增加,选取这个新的结果,否则以一定的概率来接受新结果。

基于Combined Loss Function的重排序

前面两种方法,计算 relevance 和 diversity 相分离,限制了重排序的效果。为了更好的建模 listing 、 query 和 diversity 目标间的复杂交互关系,作者提出了将多个目标融合到一个可以用SGD优化的损失函数的方法。像所有的机器模型一样,对于重排序模型,需要定义清楚损失函数和模型结构。对于重排序模型 ,总体损失函数定义为为相关性loss (标准的pairwise loss) 、 多样性loss (位置分布多样性loss、价格分布多样性loss)的和:

基于重排序模型训练时得到listing的重排序得分,分别计算多样性损失、pair-wise多样性损失,如果每部分loss都能用梯度下降来优化,那么就可以直接学习重排序网络的参数了。其中相关性Loss 和精排模型类似,基于正负样本,计算pair-wise loss,可以用梯度下降来优化。多样性loss, 是根据重排序生成结果的分布和理想的分布来计算的。关键问题是可以如何设计能用SGD优化的多样性loss function呢?作者首先基于一下假设,将重排序优化问题,转化为优化生成结果和目标结果多样性分布的Hellinger距离, 代码如下

但是,直接使用Hellinger距离作为loss function是不可行的:因为每个listing对应的bucket是常数,和DNN的权重没有直接依赖,所以无法用SGD优化。因此,作者提出了一个巧妙的surrogate cross entropy loss function来解决这个问题。即对于每个bucket,可以用一个binary label来表示这个bucket的分布值是否低于目标值。对于每个listing —— cross entropy loss的权重和该bucket的分布值与目标值的差值成正比。如果一个listing对应到某个bucket, 这个bucket上的值超过了理想值,重排序网络权重就会调整来减少这个listing的得分,使得这个listing排名到top T以外,bucket上的值进而就会接近理想值。

Contextual features

用户实际的反馈有时会与上下文(context)相关,作者加入了一些上下文特征,例如目标位置空闲房子数量,query对应的top K结果的价格、位置、房间类型、可容纳客人数的平均值和方差等信息。

基于Query Context Embedding的重排序

为了使用深度学习更好地建模query context信息,作者借鉴 DLCM [6]中的方法,使用RNN来建模当前query对应的精排结果的top结果,表示为listwise context,用这个信息来重排所有的item。具体方法如下:

对于listing L, query Q, user U, 首先使用精排排序模型打分,生成top T结果;然后选取精排的top N结果输入到LSTM中,得到Query Context Embedding;接着用重排序DNN模型H,基于Query Context Embedding对精排的top K个listing打分,生成重排结果。重排序模型H的结构,是基于RNN+Two Tower模型 [7]。首先,作者基于下面的网络,计算Query Context Embedding: 左下方的LSTM,输入精排的top N结果;右下方的DNN,输入user和query特征;然后将LSTM的最后输出和query/user侧DNN输出拼接后,经过投影层变换,输出为Query Context Embedding,用来表示理想的listing embedding。然后,作者用下面的网络结构对listing进行重排序打分。

相关性loss function : 作者用Query Context Embedding (即理想listing embedding)和 待排序的listing embedding间的euclidean距离来衡量待排序listing的好坏,进而计算总体loss中pair-wise loss,即相关性损失。重排序模型的结构、损失函数都已经定义清楚了,接下来就可以使用梯度下降优化重排序模型了。

实验结果

Offline A/B test

不同方法在offline A/B test上的结果如下图所示,其中,baseline为只使用精排模型直接展示结果。可以看到基于RNN+Two Tower的重排序模型,取得了最好的效果。其中MLR指标为作者定义的综合考虑相关性、多样性得分,对top N结果整体打分的指标。

Online A/B test

线上实验的结果如下:

  • Combined Loss Function方法:多样性很好,但是存在的问题是,结果中同时包含过低、过高价格的比例大幅提升,对用户体验不好。

  • 人工加入Contextual features方法:线上效果不好,说明人工添加的上下文特征无法实现同时优化多样性、相关性的目的。

  • Query Context Embedding方法:在线NDCG增加1.2%,预定量增加0.44%,新用户预定量增加0.61%,说明多样性对新用户很重要。

论文里给出了重排序模块,对搜索结果位置、价格多样性优化的效果。具体效果如下:

  1. 使得搜索结果的位置分布更加多样了。

  1. 使得搜索结果的价格分布更加接近期望价格、减少极端的价格。

后记

搜索推荐重排序,生成的结果直接展现给用户,对用户体验和效率都至关重要。和精排、召回模型相比,因为需要和线上系统交互才能验证效果,相关的研究少很多,期待工业界、学术界一起在重排序方向上做出更优秀的落地应用!

我是谷育龙Eric,研究方向有深度学习、搜索推荐,喜欢为大家分享深度学习在搜索推荐广告排序应用的文章。欢迎大家到我的公众号“深度学习排序艺术”进行更多交流。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

有顶会审稿人、大厂研究员、知乎大V和妹纸

等你来撩哦~

参考文献

[1] The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries, SIGIR 18.
[2] Practical Diversified Recommendations on YouTube with Determinantal Point Processes, CIKM 2018.
[3] Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity, NIPS 2018.
[4] Personalized Re-ranking for Recommendation, Recsys 2019
[5] SLATEQ:A Tractable Decomposition for Reinforcement Learning with Recommendation Sets, IJCAI 2019.
[6] Learning a deep listwise context model for ranking refinement, SIGIR 2018.
[7] Improving Deep Learning For Airbnb Search,KDD 2018

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

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

相关文章

肖仰华 | 做个“有知识”的机器人

本文转载自公众号:知识工场。肖仰华博士,复旦大学计算机科学与技术学院教授,博士生导师,知识工场实验室负责人。本文是肖仰华教授应《中国计算机学会通信》邀请所撰写的特邀文章,全文见 CCCF 2019 年第 5 期。摘要:时下…

消息中间件系列(九):详解RocketMQ的架构设计、关键特性、与应用场景

内容大纲: RocketMQ的简介与演进 RocketMQ的架构设计 RocketMQ的关键特性 RocketMQ的应用场景 RocketMQ的简介 RocketMQ一个纯java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里研发的一个队列模型的消息中间件,后开…

LeetCode 151. 翻转字符串里的单词(栈)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1:输入: "the sky is blue" 输出: "blue is sky the" 示例 2:输入: " hello world! " 输出: "world! hel…

推荐系统架构与算法流程详解

文 | yijiapan腾讯 WXG 数据分析师推荐算法的理解如果说互联网的目标就是连接一切,那么推荐系统的作用就是建立更加有效率的连接,推荐系统可以更有效率的连接用户与内容和服务,节约了大量的时间和成本。如果把推荐系统简单拆开来看&#xff0…

论文浅尝 | 将字面含义嵌入知识图谱表示学习

论文笔记整理:吴桐桐,东南大学博士生,研究方向为知识图谱,自然语言处理。链接:https://arxiv.org/pdf/1802.00934.pdf本文主要关注知识图谱中的链接预测问题,在既有的知识图谱表示学习模型的基础上提出了一…

优知学院创始人陈睿:怎样做好一个创业公司CTO?

CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用。但随着公司的不断发展,CTO 的工作重心也会不断变化。只有在正确的阶段做正确的事,才能更好地为公司做出贡献。 本文作者:陈睿 优知学院创始人,10年产品技…

2020年深度学习调参技巧合集

文 | 山竹小果源 | NewBeeNLP编 | 夕小瑶的卖萌屋重点说明:本文主要为整理总结,大部分参考文末资料,感谢分享。寻找合适的学习率学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化…

LeetCode 226. 翻转二叉树(DFS BFS)

文章目录1. 题目信息2. 解题2.1 DFS2.2 BFS1. 题目信息 翻转一棵二叉树。 示例:输入:4/ \2 7/ \ / \ 1 3 6 9输出:4/ \7 2/ \ / \ 9 6 3 1来源:力扣(LeetCode) 链接:…

论文浅尝 | GraphIE:基于图的信息抽取框架

笔记整理:吕欣泽,南京大学计算机科学与技术系,硕士研究生。论文连接:https://arxiv.org/pdf/1810.13083.pdf发表会议:NAACL 2019摘要大多数现代信息提取(IE)系统都是作为顺序标记器实现的&#…

好产品,懂人性

好的产品无一例外,懂人性 张小龙曾经说过,产品经理要懂得抓住用户的贪、嗔、痴,培养用户对产品的粘性,就是要让用户对你的产品产生贪、嗔、痴。 贪是贪婪,嗔是嫉妒,痴是执着。 人类的贪婪、嫉妒和执著培…

LeetCode 104. 二叉树的最大深度

文章目录1. 题目信息2. 解题2.1 递归法2.2 按层遍历1. 题目信息 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7]&…

谷歌重磅:可以优化自己的优化器!手动调参或将成为历史!?

文 | 小轶编 | 夕小瑶背景Google Brain团队发布的一篇最新论文在外网引发热议,或将成为Deep Learning发展历程上里程碑式的工作。它所讨论的,是所有AI行业者都要面对的——Deep Learning中的优化问题。也就是,如何更好地训练一个模型。深度模…

最全目标检测相关资料整理 (目标检测+数据增强+卷价神经网络+类别不均衡...)

1 小目标检测:综述:综述论文Augmentation for small object detection深度学习笔记(十)Augmentation for small object detection(翻译) 吴建明wujianning:小目标检测的增强算法 机器之心&#…

论文浅尝 | 基于未知谓词与实体类型知识图谱的 Zero-Shot 问题生成

论文笔记整理:谭亦鸣,东南大学博士生,研究方向为跨语言知识图谱问答。来源:NAACL 2018链接:https://www.aclweb.org/anthology/N18-1020问题背景与动机问题生成的目标是将知识图谱三元组作为输入,生成自然语…

阿里P8架构师谈:Restful、SOAP、RPC、SOA、微服务之间的区别

内容大纲: 1.介绍Restful、SOAP、RPC、SOA以及微服务 2.重点谈谈SOA与微服务的区别 3.以及为什么要使用微服务架构 什么是Restful Restful是一种架构设计风格,提供了设计原则和约束条件,而不是架构,而满足这些约束条件和原则的…

微服务系列:Dubbo与SpringCloud的Ribbon、Hystrix、Feign的优劣势比较

在微服务架构中,分布式通信、分布式事务、分布式锁等问题是亟待解决的几个重要问题。 Spring Cloud是一套完整的微服务解决方案,基于 Spring Boot 框架。确切的说,Spring Cloud是一个大容器(而不是一个框架)&#xff…

经典教材《统计学习导论》现在有了Python版

文 | 张倩源 | 机器之心《统计学习导论》很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现。斯坦福经典教材《The Element of Statistical Learning》(简称 ESL)被称为频率学派的统计学习「圣经」&#xff0…

漆桂林 | 人工智能的浪潮中,知识图谱何去何从?

本文转载自公众号:AI科技大本营。近年来,随着人们对 AI 认知能力的积极探索,知识图谱因其表达能力强、拓展性好,基于知识进行推理等优势得到了学界与业界的高度关注。知识图谱,旨在描述客观世界概念、实体、事件及其之…

LeetCode 102. 二叉树的层次遍历(BFS)

文章目录1. 题目信息2. 解题1. 题目信息 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其层次遍历结果:[[3]…

阿里P8架构师谈:微服务Dubbo和SpringCloud架构设计、优劣势比较

本文主要围绕微服务的技术选型、通讯协议、服务依赖模式、开始模式、运行模式等几方面来综合比较Dubbo和Spring Cloud 这2种开发框架。架构师可以根据公司的技术实力并结合项目的特点来选择某个合适的微服务架构平台,以此稳妥地实施项目的微服务化改造或开发进程。 …