Improving Deep Learning For Airbnb Search
说明:Airbnb KDD 2020
链接:arxiv.org/pdf/2002.05…
简介:将深度学习应用于搜索排序是Airbnb最大的提升之一。在应用了深度模型之后,有三个未来可以提升的方向:architecture、bias和cold start。
1. OPTIMIZING THE ARCHITECTURE
2. COLD START
冷启动问题是任何推荐系统必须面对的问题,不论是用户的冷启动还是item 的冷启动。但是对大部分的推荐系统而言其实主要还是关注于item的冷启动问题,包括淘宝等。airbnb这边也是更多的关注于item的冷启动问题。
对airbnb而言使用NDCG量化预订列表在搜索结果中的位置是评价模型性能的可靠指标。airbnb关注到冷启动的问题是因为他们发现新上的list和之前存在的list会有一个6%的差距。而对于context而言,NDCG的差距则缩少在0.7%。也就是说对于模型很难去判断哪些新的list是会被用户下单的。为了验证这个问题,文章做了一个实验,就是舍弃掉所有和用户交互相关的特征,模型下降了4.5%。DNN很依赖与用户和item的交互历史信息。对于新的list而言他们是没有这部分信息的。所以迫使DNN只能去fitting新订单的平均表现。这样子就不能很好的预估哪些新订单是会被用户预定的。
Approaching Cold Start As Explore-Exploit
冷启动问题可以认为是一种E&E问题,exploit ,利用已知的比较确定的用户的兴趣,然后推荐与之相关的内容,explore,除了推荐已知的用户感兴趣的内容,还需要不断探索用户其他兴趣。排序的策略可以通过exploit 以往的订单去优化短期下单。对于长期而言则需要去explore那些新的list。
这种权衡其实就是让新list有更多的曝光机会。这样就能通过很少的代价收集到用户对新订单的反馈。airbnb通过对新订单进行加权让它有更多的曝光机会,最终是有提升了+8.5%的曝光。
单纯的采用 E&E的方案也带来了两个问题
1.搜索结果相关性的降低,短期内会降低用户体验。(新lsit的曝光会导致排序结果相关性的变化)
2.长远来看虽然提升了订单率,但是这种方案缺乏一种明确的目标定义。这样会导致有的人觉得结果好,有的人觉得结果差,不会令人满意。
Estimating Future User Engagement
在airbnb的use case里,与其把cold start当作explore-explicit的问题,不如当作是预测用户参与度的问题。因此,Airbnb在dnn里引进了一个新组块来预测用户和new listing的交互信息,在training和scoring的时候。
步骤:
(1)采样了O(100M)的搜索结果,对于每个搜索结果list,选取top 100 positions。这个list要有用户互动。
(2)用Rreal来表示item的真实ranking,算一个discounted rank
(3)对于每一个sample list,删掉用户engagement信息,用这个estimator的prediction代替。再得到一个rank信息,我们用DRpredicted来表示
(4)对每个list,计算(DRreal - DRpredicted)^2
(5)得到overall error,取平均
迭代这几步,求出engagement estimator。
这个实验效果很好,提升了14%新listing的被浏览率和14%的share rate,总预定量也提高了0.38%。
减少position bias
position feature有一个trick的地方,就是offline training的时候有position数据,但是serving的时候没有这个数据。Airbnb选择给position feature加了一个dropout,即给一定概率的文章的position feature数值设为0;一个dropout rate是0.15。
实验结果带来0.7%预定提升。伴随着预订量增加,在几轮优化之后,提升了1.8%利润。
参考
arxiv.org/pdf/2002.05… zhuanlan.zhihu.com/p/364745821 zhuanlan.zhihu.com/p/156822534