Airbnb 搜索:深度學習排序算法如何進化?
導讀
本文將基於 Airbnb KDD 2018 年到 2020 年的論文,介紹深度學習在 Airbnb 搜索排序場景落地的寶貴經驗,對工業界搜索、推薦、廣告算法的改進,具有很好的指導意義。
2018 年,Airbnb 提出基於 GBDT + embedding 高級特徵的排序模型,基於用戶的點擊、預定序列學習 item 的 embedding 表示,並設計高級特徵添加到 GBDT 排序模型中,線上訂單量顯著提升,作爲將深度學習應用到搜索排序模型中的初步嘗試。
2019 年,Airbnb 提出基於 GBDT+FM+DNN 的排序模型,嘗試在 DNN 中融入更多的信息。
2020 年,Airbnb 提出 Two Tower 排序模型,同時關注解決搜索中經典的 Bias、Cold start 問題;並提出基於 RNN 和 Two Tower 的重排模型,解決搜索結果的多樣性問題。
- Airbnb 搜索系統
Airbnb(愛彼迎),是 2008 年成立於美國硅谷的在線度假租賃市場公司,提供住宿安排,主要是寄宿家庭或旅遊體驗,是估值百億美元左右的獨角獸公司(2020 年)。
在 Airbnb 的搜索排序問題中,用戶的 query 包含的信息可能有地點、時間、入住人數等,排序系統需要返回最匹配用戶需求的搜索結果供用戶選擇,優化目標主要是優化成交訂單數。
如下圖所示,用戶 (user) 在每次發出請求後,搜索結果是一個多個 item 構成的結果頁列表(Airbnb 中每一個 item 被稱作一個 listing, 即一個民宿),最終用戶可能預訂某個 listing。
下圖爲一個實際的 Airbnb 搜索例子:
- 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 個排序特徵中重要性排名較高,對排序結果又重要的影響。同時,線上實驗也證明了訂單量顯著提升。
- 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 效果更好。
- 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 信息來預測。
- 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.
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Mk7YV5-IEBAv0egtVxoeZw