南城县建设局网站,百度推广登录后台登录入口,如需郑州网站建设,什么是部署php网站文 | 谷育龙Eric编 | QvQ我是谷育龙Eric#xff0c;研究方向有深度学习、搜索推荐#xff0c;喜欢为大家分享深度学习在搜索推荐广告排序应用的文章。本文将基于Airbnb KDD 2020年的论文#xff0c;介绍Airbnb搜索排序中在重排序阶段如何解决多样性的问题#xff0c;对工业… 文 | 谷育龙Eric编 | QvQ我是谷育龙Eric研究方向有深度学习、搜索推荐喜欢为大家分享深度学习在搜索推荐广告排序应用的文章。本文将基于Airbnb KDD 2020年的论文介绍Airbnb搜索排序中在重排序阶段如何解决多样性的问题对工业界搜索推荐系统优化多样性具有很好的指导借鉴意义。论文题目《Managing Diversity in Airbnb Search》论文链接arxiv.org/abs/2004.02621v1Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词【1015】下载论文PDF~搜索推荐系统中的多样性问题在互联网APP中例如电商淘宝、京东、拼多多、信息流头条、微博、百度、短视频抖音、快手、微信视频号等搜索推荐的多样性对优化点击转化效率、用户体验、浏览深度、停留时长、回访、留存等目标至关重要。例如在淘宝猜你喜欢”信息流推荐中会为用户推荐多个类目的宝贝、短视频、直播、文章等来吸引用户停留▲图1在Airbnb中搜索系统中搜索结果的多样性主要体现在房间类型、位置、价格信息等▲图2深度学习精排阶段的排序模型泛化能力比较好一般相似的物品精排分数也比较接近如果直接用精排分数排序展示结果会导致排名靠前的结果非常类似容易造成视觉疲劳对兴趣宽泛、偏逛、需求不明确等用户体验很差。下图展示了Airbnb实际的搜索结果中排序靠前的listing即item民宿房间价格、位置差别通常非常小。所以工业界的搜索推荐系统一般包括召回、粗排、精排、重排模块。在召回阶段通过多路召回item2item, 向量召回等方式召回和用户最近点击相似相关的物品、热门物品等一般有几千到几万保证效率、丰富、多样性。粗排阶段通过简化的精排模型对大量召回物品打分返回几千个物品。在精排阶段用更复杂的深度排序模型等对这些物品打分。最后在重排序阶段对综合考虑点击率、转化率、价格、多样性等信息对物品计算新的排序分数最后展示给用户。重排序阶段多样性的优化方面工业界搜索推荐系统实用的代表性方法包括 MRR (Maximal Marginal Relevance) [1], Google Youtube和Hulu视频推荐中的DPPDeterminantal Point Process[2,3]阿里电商推荐中基于Transformer的PRM [4]Google Youtube基于强化学习的模型SlateQ [5]等。Airbnb的搜索系统主要包括召回、精排(Base Ranking Model)、重排Second Stage Ranker这篇论文主要介绍Airbnb搜索在重排序阶段如何优化多样性问题。多样性指标在多样性问题中最基础的问题是定义衡量多样性的指标。MRRMaximal Marginal Relevance经典的MRR方法定义如下其中 是搜索查询 , 是候选的相关物品例如精排后的结果 是MRR算法已经选取的物品 用来衡量物品 和 的相似度, 用来衡量物品间的相似度, 是平衡相关度例如CTR和多样性的超参数在Aribnb中通过实验分析值设定为0.15。公式中 建模了当前候选的物品 和搜索 的相似度 部分表示当前候选的物品 和搜索已经选取的物品的最大相似度。MRR算法的思想是采取贪心策略生成top K结果列表。第一次先选取相关度最高的物品。然后每次选取和查询 query 匹配度高、和已经选取的物品最大相似度低的物品。相似度函数 和 可以不同根据业务需求来定。例如在Airbnb搜索系统中函数可以基于listing间价格、位置、类型等信息来计算。MLRMean 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 RelevanceMMR算法利用的是论文中定义的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的结构是基于RNNTwo 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为只使用精排模型直接展示结果。可以看到基于RNNTwo Tower的重排序模型取得了最好的效果。其中MLR指标为作者定义的综合考虑相关性、多样性得分对top N结果整体打分的指标。Online A/B test线上实验的结果如下Combined Loss Function方法多样性很好但是存在的问题是结果中同时包含过低、过高价格的比例大幅提升对用户体验不好。人工加入Contextual features方法线上效果不好说明人工添加的上下文特征无法实现同时优化多样性、相关性的目的。Query Context Embedding方法在线NDCG增加1.2%预定量增加0.44%新用户预定量增加0.61%说明多样性对新用户很重要。论文里给出了重排序模块对搜索结果位置、价格多样性优化的效果。具体效果如下使得搜索结果的位置分布更加多样了。使得搜索结果的价格分布更加接近期望价格、减少极端的价格。后记搜索推荐重排序生成的结果直接展现给用户对用户体验和效率都至关重要。和精排、召回模型相比因为需要和线上系统交互才能验证效果相关的研究少很多期待工业界、学术界一起在重排序方向上做出更优秀的落地应用我是谷育龙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 SearchKDD 2018