爱彼迎(Airbnb)每天根据搜索结果将数百万位房客和房东连接在一起,搜索结果通常由一个基于神经网络的排序算法决定,这个算法原本只擅长为房客选择单个房源,最近我们改进了这个算法的神经网络,更好地提供包含多个房源的搜索结果,增强搜索结果中的房源多样性。本文将对这一最新突破进行深入探讨。
排序算法是如何工作的?
排序神经网络通过逐个两两比较来预测哪个房源更可能被预订,致力于找到最匹配给定搜索条件的房源。为了生成房源被预订的概率,神经网络给不同的房源属性(例如价格、位置和评论等)分配不同权重。再根据搜索日志,对比被预订的房源和未被预订的房源,将更高的概率分配给被预订的房源,进一步优化权重的分配。
排序神经网络在这个过程中学习了什么呢?举个例子,神经网络学习到的一个概念是人们更喜欢价格更低的房源。下图说明了这一点,它将逐渐增加的价格作为 x 轴,将对应的标准化的模型得分作为 y 轴,价格的增加使模型得分下降,这与爱彼迎大多数预订都偏向于经济实惠这一实际情况是一致的。
图 1:模型分数与价格上涨百分比之间的关系
除了价格以外,模型学习到的概念还包括其他特征,比如房源位置与搜索位置的距离、评论数量、卧室数量和照片质量等,这些特征都可能表现出类似的趋势。排序神经网络的复杂点在于平衡所有这些因素,把它们调整到适合所有城市、所有季节。
能够找到通用策略吗
排序神经网络是根据过去有多少位客人预订了具有类似价格、位置、评论的房源,来对房源被预订的概率进行预测的。更高的预订概率实际上反映了过去大多数客人的喜好,例如高预订概率与低房源价格之间存在强烈的相关性。排序算法会根据位置、入住人数和行程长度等不同因素计算预订概率。同时,排序算法会提高那些受更多客人喜欢的房源的排名,整个搜索结果的构建都是为了更好地满足大多数客人的喜好。我们将这种排序方式称为多数原则 —— 即排序算法倾向于遵循大多数人的偏好。这种多数原则是否适用于所有城市和所有季节呢?
大多数人的偏好并不能代表整个客户群体。继续刚刚对于房源价格的讨论,下图展示了热门目的地罗马的订单的价格分布,为了消除其他干扰,专注于由房源质量引起的价格变化趋势,我们选取了两位房客预订两晚的订单。
图 2:帕累托原则:50/50的预订价值对应的是大约80/20的预订量。
图中的 x 轴是以美元为单位的订单价格,采用对数比例尺。y 轴是与 x 轴上每个价格点相对应的预订数量,橙色形状验证了预订价值对数的正态分布,红色线条绘制了罗马总预订量中预订价格小于等于相应 x 轴上的点的预订量百分比,绿色线条绘制了这些预订占罗马总预订价值的百分比。将总预订价值平分为 50 : 50 会使订单分成约 80 : 20 的两个不平等的组,换句话说,20% 的订单提供了 50% 的预订价值,对于这 20% 的少数人而言,更便宜不一定更好,他们倾向于选择质量更高的房源。这证明了帕累托原理,粗略展示了客人喜好的异质性。
虽然帕累托原理提出了需要考虑更广泛的偏好,但是多数原则更符合实践情况。在搜索排序这方面,这两个原则无法保持一致。
降低相似度,提高房源多样性
搜索结果中房源缺乏多样性也可以理解为是房源之间过于相似,通过减少相似房源,可以从搜索结果中删除一些冗余的选择。例如,我们可以在搜索结果的列表中提供一些高品质房源,而不是将每个位置都用于展示经济型房源。这里的挑战在于如何量化房源的相似性,如何将它与排序神经网络估算的预订概率进行平衡。
为解决这个问题,我们构建了另一个神经网络作为排序神经网络的辅助。这个辅助神经网络的任务是估计给定房源与之前在搜索结果中出现过的房源的相似度。
我们通过搜索日志来构造训练这个相似度神经网络的数据集,如果一条日志中,用户预订了第一条搜索结果的房源,这条日志会被丢弃。对于剩余的日志,搜索结果列表第一位的房源会被单独拿出作为特殊的前置房源,对于第二个位置及之后的房源,会将已被预定的房源与其他未被预定的房源一一配对,构建训练样本,如下图。
图 3:从搜索日志中构建训练样本
接着我们训练一个通过对比被预订房源和未被预订房源,给被预订房源分配更高的预订概率的排序神经网络。我们加入了一个改进——根据相似度神经网络的预测结果,在预定概率中减去当前房源与在搜索结果中出现过的房源的相似度。这样做的原因是,对于跳过了搜索结果中出现过的房源的用户,他们更需要被提供与之前不同的房源,不然他们本应该预订出现过的房源,而不是继续搜索。
训练完成后,我们就可以在线上使用相似度网络来进行排序了。排序时,我们首先将预订概率最高的房源放在搜索结果的顶部。对于随后的位置,我们在剩下的房源中选择在减去与已经在搜索结果中的房源的相似度后,预订概率最高的房源。搜索结果是迭代构建的,搜索结果中每个位置都尝试与其前面位置保持多样性。与已经在搜索结果中的房源相似度过高,就会被有效地降低排名,如下图所示。
图 4:根据房源相似度对搜索结果重排序
这种策略是爱彼迎的搜索排序近年来最大的改变之一。通过这种改进,我们观察到未被取消的预订率增加了 0.29%,同时预订价值增加了 0.8%,其中预订价值的增加远远高于预订量的增加,因为这些增加主要来源于更高价值的高质量房源订单。尽管预订价值并不是我们的目标,但它的增加提供了一种可靠的衡量预订质量的指标。我们还观察到更直接的预订质量提高的证据——五星评级增加了 0.4% ,这表明房客满意度整体的提高。
扩展阅读
本文我们讨论了通过减少房源之间的相似性,迎合不同房客的喜好,来提高搜索结果的整体质量。虽然这个想法很直观,但将其付诸实践,我们需要机器学习的坚实基础。接下来,我们将更深入地研究搜索结果的多样性。欢迎对文章提出评论和建议。
作者:Malay Haldar,Liwei He,Moose Abdool
译者:Yidi Wei
如果你想了解关于爱彼迎技术的更多进展,欢迎关注我们的 Github 账号(https://github.com/airbnb/) 以及微信公众号(爱彼迎技术团队)