10.21 從0到1,Airbnb的深度學習實踐經驗總結

從0到1,Airbnb的深度學習實踐經驗總結

作者 | Haldar

譯者 | 陸離

出品 | AI科技大本營(ID: rgznai100)

此前,AI科技大本營發佈了關於Booking.com網站將機器學習用於其系列產品的經驗總結。這一次,我們將深入淺出詳細介紹了Airbnb從標準的機器學習方法轉向深度學習的過程,希望通過介紹的研究成果為讀者提供一些有用的幫助和指引。

模型中的生態系統

本文要討論的機器學習現實應用,是關於根據用戶預約的可能性來預訂客房的模型。當用戶在Airbnb網站上搜索的時候,這樣的模型有助於搜索排名。新模型是通過A/B測試框架來進行在線測試,並將其性能與前幾個版本進行比較。

正確的時機

最開始,Airbnb搜索排名是通過人工手動操作來完成的。

用梯度增強決策樹(Gradient Boosted Decision Tree ,GBDT)模型取代手動操作的評分功能,是Airbnb歷史上最大的一次關於客房預訂應用的改進。

這種方法還有許多成功的迭代要繼續進行,但最終性能達到飽和了,而且很難再更進一步進行提升,這就到了嘗試全面改造系統的時候了。

值得關注的是,Airbnb團隊已經擁有了在機器學習、數據管道和在線控制實驗平臺等方面的豐富經驗。在此基礎上,他們向神經網絡邁出了第一步。

值得這麼做嗎?

Airbnb已經從一個梯度增強決策樹(GBDT)模型作為起點逐步地向深度神經網絡發展。總的來說,這一轉變是“Airbnb的最具影響力的機器學習應用之一”。下面的圖表顯示隨著時間的推移,在主要的離線指標、標準化折扣累積收益(NDCG)以及使用已部署模型實現的在線預訂收益等方面的改善。

从0到1,Airbnb的深度学习实践经验总结

當然,在實際過程中,也經歷了許多的彎路和失敗的嘗試:“現實中充滿的失敗嘗試數量超過了成功的次數……”

別當英雄

Andrej Karpathy對模型架構有一個建議:別當英雄。好吧,我們可不是這樣開始的…...

但在經歷了幾次失敗的嘗試之後,第一個部署到實際應用中的神經網絡模型是一個簡單的模型,它只有一個隱藏層,並帶有32個完全連接的ReUL激活函數。與之前的GBDT模型相比,它在預訂功能方面的表現一般。不過,這並不是無謂的嘗試:

實踐的價值在於,對於實際應用,它驗證了整個神經網絡管道已經做好了準備,並且能夠提供客戶出行方面的服務。

一開始別當英雄

我們會採納Kapathy的建議:不要在一開始就成為英雄。

預訂收益的第一個重大突破是將神經網絡與Lambdarank的思想相結合起來。然而最初的神經網絡使用了與GDBT模型相同的一些特性,“lambdarank為我們提供了一種直接優化NDCG神經網絡的方法。”

Lambdarank模型使用了成對的{booked, not-booked}實例作為訓練的輸入,並通過交換成對的分類而導致的NDCG差異來衡量每一對的損失。最終的結果是預定的列表趨向於向搜索結果的頂端移動。

利用所有能利用的

本文所述的成功經歷是基於神經網絡模型,但也有其它的模型正處於研究之中。在某些情況下,這些模型的最終表現是類似的,但排名靠前的卻大不相同。因此,在下一次迭代中嘗試了將神經網絡方法的優點與GBDT模型和因子分解機模型的特徵結合在一起來作為額外的輸入。

从0到1,Airbnb的深度学习实践经验总结

這些模型確實提高了預訂率,但同時也付出了代價。

摒棄複雜性

在我們最後一次的飛躍中,能夠通過簡單地將訓練數據縮放10倍並移動到具有2個隱藏層的深度神經網絡來降低所有的複雜性。

但與之前的版本相比,它的寬度相對較大:一個具有195個特徵的輸入層,為第一個隱藏層提供帶有127個完全連接的ReLUs,而第二個隱藏層提供帶有83個完全連接的ReLUs。

給模型“喂”數據

伴隨著模型架構的快速發展,這些模型中的特性也相應地發生了變化。

第一次嘗試訓練神經網絡時,我們簡單地將用於訓練GBDT模型的所有特性都輸入到神經網絡中,但結果很差。

第一個改進來自於對特徵標準化的應用(GDBT對精確的數值不是特別敏感,但神經網絡是比較敏感的)。這在很大程度上將特徵映射到在{-1,1}裡的中值為0的小範圍取值中。

下一個比較大的改進來自於保證這些特性的分佈是平滑的。爭取平滑分佈有助於發現錯誤、支持標準化、突出一些特徵工程可能有用的領域,以及發現一個模型有可能缺失了一些其它的功能。

準確回答深度神經網絡擅長標準化的原因是一個十分複雜的前沿研究課題。同時,我們的專業知識是基於這樣的觀察而得到的:在為我們的應用而構建的深度神經網絡中,各層的輸出在其分佈的過程中變得越來越平滑……來自較低層的平滑分佈確保了上層能夠正確地“插入”不可見值的過程。將這種能力一直延伸到輸入層,我們盡最大努力確保輸入的特性具有一個平滑的分佈。

从0到1,Airbnb的深度学习实践经验总结

調整模型

神經網絡帶來了巨大的超參數空間。而最後,simple在Airbnb的表現最好。

對於應用,我們發現很難通過Adam的默認設置來提高它的性能……在LazyAdamOptimizer之下,掃除了學習率的問題,我們只是選擇了一個固定的大小為200的批量,這似乎適用於當前的模型。

理解模型

隨著向深度神經網絡的轉移,其中一件事變得更加的困難,那就是了解模型實際在做什麼以及為什麼這麼做的原因。在嘗試使用各種策略後,最適合Airbnb的是一個名為TopBot的自研發工具,一款自上而下的分析器。TopBot將排名靠前的列表中的特徵值分佈圖與排名靠後的進行對比,這個對比突出顯示了模型如何在不同取值的範圍內來使用這些特徵。

例如,在下面的圖表中顯示模型對價格的敏感度,但也顯示了這個版本的模型並沒有像預期的那樣進行審查。

从0到1,Airbnb的深度学习实践经验总结

心得和體會

轉向深度學習不僅僅是改變模型的內部結構,也要改變它的規模。“因此,它需要重新考慮圍繞這一模式的整個體系。”

那麼我們還向其他人推薦深度學習嗎?那將會是一個誠心誠意的“Yes”,而這不僅僅是因為這個模型的在線表現很強勁。其中一部分是與深度學習如何改變我們未來的研究路線有關。早期的重點主要放在了特徵工程上,但是在轉向深度學習後,嘗試通過對特徵執行更好的數學計算已經失去了意義。這讓我們可以在更高的層次上研究問題,比如,我們如何改進優化目標,是否準確地表示了所有的用戶?

兩年過去了,Airbnb的團隊才剛剛起步……

原文鏈接:

https://blog.acolyer.org/2019/10/09/applying-deep-learning-to-airbnb-search/

(*本文為 AI科技大本營編譯文章,載請微信聯繫 1092722531

2019 中國大數據技術大會(BDTC)再度來襲!豪華主席陣容及百位技術專家齊聚,15 場精選專題技術和行業論壇,超強幹貨+技術剖析+行業實踐立體解讀,深入解析熱門技術在行業中的實踐落地。

即日起,限量 5 折票開售,數量有限,掃碼購買,先到先得!


分享到:


相關文章: