1. Airbnb搜索系统
Airbnb(爱彼迎),是2008年成立于美国硅谷的在线度假租赁市场公司,提供住宿安排,主要是寄宿家庭或旅游体验,是估值百亿美元左右的独角兽公司(2020年)。
在Airbnb的搜索排序问题中,用户的query包含的信息可能有地点、时间、入住人数等,排序系统需要返回最匹配用户需求的搜索结果供用户选择,优化目标主要是优化成交订单数。
如下图所示,用户(user)在每次发出请求后,搜索结果是一个多个item构成的结果页列表(Airbnb中每一个item被称作一个listing, 即一个民宿),最终用户可能预订某个listing。
下图为一个实际的Airbnb搜索例子:
2. Airbnb搜索排序:基于 GBDT + embedding高级特征的模型
在Airbnb搜索:Embedding表示学习这篇文章里,我们介绍了KDD 2018 Real-time Personalization using Embeddings for Search Ranking at Airbnb这篇经典的Airbnb Embedding表示学习论文,作者首先基于用户在Airbnb的点击序列、购买序列,用改进的Skip-gram model学习得到每个listing的embedding,然后基于学习的embedding, 设计了个高级排序特征,应用到GBDT搜索排序模型中。
2.1 基于改进Skip-gram model的listing embedding学习
从下图中可以看出,embedding表示学习,已经能很好地学习到listing的类型、风格、价格等信息。
2.2 GBDT排序模型中融入基于embedding的高级特征
然后作者基于学习的embedding, 设计了个应用于搜索排序的8个实数高级排序特征,应用到GBDT排序模型中。
分别基于用户最近2周点击、跳过、点击长时间停留、收藏、联系、预定的listing序列,和待排序的listing之间,计算相似度值。同时作者基于最后一次点击和待排序相似度、用户类型和listing类型相似度设计了另外两个特征。
例如,对于EmbClickSim特征,先对2周点击listing序列根据地点进行分组:例如有两个组,分别在NY(纽约)和LA(洛杉矶),对每个分组计算组内listing的embedding的平均值,并和待排序listing的embdding计算cosine相似度,最后取所有分组的最大相似度作为特征。表示为公式为:
其中M是所有的分组,l是待排序的listing, h是分组内的listing。
离线实验结果:加入基于embedding计算的8个高级排序特征,离线NDCU提升了2.27。
特征重要性分析,显示基于embedding的特征,在104个排序特征中重要性排名较高,对排序结果又重要的影响。同时,线上实验也证明了订单量显著提升。
3. Airbnb搜索排序:基于GBDT+FM+DNN的排序模型
在KDD 19 Applying Deep Learning To Airbnb Search这篇论文中,作者详细介绍了Airbnb深度学习排序模型的演进过程。
下图显示了,Airbnb搜索排序模型2017-2018的演进过程,以及对应的在线上订单的相对增益。
3.1 2017/04,Airbnb首先尝试了Simple NN模型
模型输入:使用和GBDT相同的特征。
模型结构:包含一个隐藏层(32个单元,ReLU激活)的全连接网络
损失函数:和GBDT相同,预测用户是否会预定listing,采用L2回归损失,正负样本的label分别是1和0。
3.2 2017/06, Airbnb使用了Lambdarank NN
利用Lambdarank的思想,直接优化NDCG:
- 采用pairwise的方式,以{booked listing, not-booked listing}作为训练 样本,计算正负样本的分数差,然后和都是1的向量计算cross entropy损失。
- 对pairwise loss加权:权重为交换pair中两个listing的位置,NDCG的差值。这样加权的好处是,将listing从位置2提升到1,比将位置从10提升到9,权重更大。在实际的搜索系统中,top-3的结果非常重要,所以这样做对提升线上效果很有意义。
Lambdarank NN的具体pairwise loss的Tensorflow实现为:
3.3 2018/03,Airbnb尝试了GBDT/FM + NN模型
GBDT侧:作者借鉴Facebook在ADKDD 2017的 Practical Lessons from Predicting Clicks on Ads at Facebook 论文中的方法,通过GBDT学习特征变换。即在叶子节点的索引信息,编码成embedding,加入NN。
Factorization Machine侧:直接将基于query, listing的预测结果,加入NN。
3.4 2018/06,Airbnb采用了Deep NN
模型输入:195维特征,包括类别embedding特征、实数特征
模型结构:两层全连接NN:127(Relu) , 83(Relu)
作者尝试学习listing id,并没有取得收益。原因是,embeddign学习一般要求在数据中出现次数比较多(例如至少5次),但Airbnb中很多listing的预定却很少。
特征工程经验:
- NN中dense特征要做归一化:因为NN对数值特征很敏感,过大过小会严重影响学习。
特征分布服从norm distribution时,采取Z-score normalization;
接近power law分布时(例如price),采取log
- 特征分布要平滑:对于特殊的特征,例如地理位置经纬度等,做特殊处理,使其分布尽可能平滑。作者可视化分析了NN中,output、 hidden layer的分布,解释NN有效的原因是:神经网络的有效性,是因为有强大的组合能力,虽然特征组合空间非常大,但是每一层都服从一个平滑的分布后,NN就能很好地预测。
初始化:Xavier初始化网络权重, random uniform {-1,1}初始化embedding。
采用 LazyAdamOptimizer:比Adam效果更好。
4. Airbnb搜索排序:Two Tower模型
在KDD 2020 Improving Deep Learning For Airbnb Search这篇论文中,作者详细介绍了Airbnb搜索排序的Two Tower模型,以及如何解决bias, cold-start问题。
4.1 Two Tower排序模型
Query&User Tower和Target Listing Tower,分别学习100维的向量,计算euclidean distance。欧式距离:表示target listing距离query-user的理想listing的距离。
损失函数:基于pair-wise计算,基于Query&User和正样本、负样本的欧式距离,计算差值,然后和全为1的向量,计算cross entropy loss。
线上效果为:预定数提升0.6% ,营收提升0.75%。
4.2 Bias
在搜索推荐中,Bias问题(排名靠前的结果总是更容易被点击)一直是重要的问题、研究的热点。
作者提出了一个简单有效的方法来解决这个问题:即在DNN中加入poisition特征,在训练时使用dropout (dropout rate为0.15),预测时position特征置0。
作者给出这样做的原理解释如下:
对于query q, user u, listing l, DNN打分可以看成相关分和bias分数的乘积:
引入位置k后,公式变为:
而bias和listing无关,公式可简化为:
线上预测,position特征置0,对应的pbias为常数,公式简化为:
因此可以按照DNN的相关性部分(rel)打分。
4.3 Cold-start
对于new listing,使用地理位置邻近的listing信息来预测。
5. Airbnb搜索排序:基于RNN+Two Tower的重排序模型:
搜索系统中,排序(精排)模型对相似的item的打分通常相似。在实际的搜索中,直接用精排模型打分的结果来展示,会出现搜索结果相似度过高的问题,而用户通常有多样性的需求,即希望看到更多样丰富的搜索结果。例如用户在Airbnb闲逛或没有明确意图时,希望看到多种类型的民宿来做选择。
在KDD 2020 Managing Diversity in Airbnb Search这篇论文中,作者介绍了基于RNN+Two Tower的重排序模型,优化搜索结果的多样性。
后记
GBDT作为搜索推荐最经典的模型之一,在Amazon搜索、Yahoo搜索 、Facebook广告 [5]、京东搜索推荐、搜狗搜索中,都曾在线上排序中发挥过关键的作用。
在深度学习排序时代,将线上原有传统机器学习模型和深度学习模型更好的结合,具有重要的价值。更多关于基于传统机器学习模型(GBDT)和深度学习结合的论文,可参考CIKM 2020 DMT [6]。
由于本人水平有限,难免有疏漏错误之处,文章中存在的问题,欢迎大家指正!
参考论文:
- Real-time Personalization using Embeddings for Search Ranking at Airbnb,KDD 2018
- Applying Deep Learning To Airbnb Search,KDD 19
- Improving Deep Learning For Airbnb Search,KDD 20
- Managing Diversity in Airbnb Search,KDD 20
- Practical lessons from predicting clicks on ads at facebook. ADKDD 2017.
- Deep Multifaceted Transformers for Multi-objective Ranking in Large-Scale E-commerce Recommender Systems, CIKM 2020.