本文由 「 AI前線」原創,原文連接: 深度學習大行其道,個性化推薦如何與時俱進?
做者|攜程基礎業務研發部
編輯|Emily
AI 前線導讀:」攜程做爲國內領先的 OTA,天天向上千萬用戶提供全方位的旅行服務,如何爲如此衆多的用戶發現適合本身的旅遊產品與服務,挖掘潛在的興趣,緩解信息過載,個性化推薦系統與算法在其中發揮着不可或缺的做用。而 OTA 的個性化推薦一直也是個難點,沒有太多成功經驗能夠借鑑,本文分享了攜程在個性化推薦實踐中的一些嘗試與摸索。」html
推薦流程大致上能夠分爲 3 個部分,召回、排序、推薦結果生成,總體的架構以下圖所示。前端
召回階段,主要是利用數據工程和算法的方式,從千萬級的產品中鎖定特定的候選集合,完成對產品的初步篩選,其在必定程度上決定了排序階段的效率和推薦結果的優劣。業內比較傳統的算法,主要是 CF[1][2]、基於統計的 Contextual 推薦和 LBS,但近期來深度學習被普遍引入,算法性取得較大的提高,如:2015 年 Netflix 和 Gravity R&D Inc 提出的利用 RNN 的 Session-based 推薦 [5],2016 年 Recsys 上提出的結合 CNN 和 PMF 應用於 Context-aware 推薦 [10],2016 年 Google 提出的將 DNN 做爲 MF 的推廣,能夠很容易地將任意連續和分類特徵添加到模型中 [9],2017 年 IJCAI 會議中提出的利用 LSTM 進行序列推薦 [6]。2017 年攜程個性化團隊在 AAAI 會議上提出的深度模型 aSDAE,經過將附加的 side information 集成到輸入中,能夠改善數據稀疏和冷啓動問題 [4]。git
對於召回階段獲得的候選集,會對其進行更加複雜和精確的打分與重排序,進而獲得一個更小的用戶可能感興趣的產品列表。攜程的推薦排序並不單純追求點擊率或者轉化率,還須要考慮距離控制,產品質量控制等因素。相比適用於搜索排序,文本相關性檢索等領域的 pairwise 和 listwise 方法,pointwise 方法能夠經過疊加其餘控制項進行干預,適用於多目標優化問題。工業界的推薦方法經歷從線性模型+大量人工特徵工程 [11] -> 複雜非線性模型 -> 深度學習的發展。Microsoft 首先於 2007 年提出採用 Logistic Regression 來預估搜索廣告的點擊率 [12],並於同年提出 OWLQN 優化算法用於求解帶 L1 正則的 LR 問題 [13],以後於 2010 年提出基於 L2 正則的在線學習版本 Ad Predictor[14]。Google 在 2013 年提出基於 L1 正則化的 LR 優化算法 FTRL-Proximal[15]。2010 年提出的 Factorization Machine 算法 [17] 和進一步 2014 年提出的 Filed-aware Factorization Machine[18] 旨在解決稀疏數據下的特徵組合問題,從而避免採用 LR 時須要的大量人工特徵組合工做。阿里於 2011 年提出 Mixture of Logistic Regression 直接在原始空間學習特徵之間的非線性關係 [19]。Facebook 於 2014 年提出採用 GBDT 作自動特徵組合,同時融合 Logistic Regression[20]。近年來,深度學習也被成功應用於推薦排序領域。Google 在 2016 年提出 wide and deep learning 方法 [21],綜合模型的記憶和泛化能力。進一步華爲提出 DeepFM[15] 模型用於替換 wdl 中的人工特徵組合部分。阿里在 2017 年將 attention 機制引入,提出 Deep Interest Network[23]。攜程在實踐相應的模型中積累了必定的經驗,不管是最經常使用的邏輯迴歸模型(Logistic Regression),樹模型(GBDT,Random Forest)[16],因子分解機(Factorization Machine),以及近期提出的 wdl 模型。同時,咱們認爲即便在深度學習大行其道的今下,精細化的特徵工程仍然是不可或缺的。github
基於排序後的列表,在綜合考慮多樣性、新穎性、Exploit & Explore 等因素後,生成最終的推薦結果。本文以後將着重介紹召回與排序相關的工做與實踐。web
數據算法
機器學習=數據+特徵+模型架構
在介紹召回和排序以前,先簡單的瞭解一下所用到的數據。攜程做爲大型 OTA 企業,天天都有海量用戶來訪問,積累了大量的產品數據以及用戶行爲相關的數據。實際在召回和排序的過程當中大體使用到了如下這些數據:less
值得注意的是,針對統計類信息,可能須要進行一些平滑。例如針對歷史 CTR 反饋,利用貝葉斯平滑來預處理。dom
召回機器學習
召回階段是推薦流程基礎的一步,從成千上萬的 Item 中生成數量有限的候選集,在必定程度上決定了排序階段的效率和推薦結果的優劣。而由 OTA 的屬性決定,用戶的訪問行爲大可能是低頻的。這就使得 user-item 的交互數據是極其稀疏的,這對召回提出了很大的挑戰。在業務實踐中,咱們結合現有的通用推薦方法和業務場景,篩選和摸索出了幾種行之有效的方法:
Real-time Intention
咱們的實時意圖系統能夠根據用戶最近瀏覽下單等行爲,基於馬爾科夫預測模型推薦或者交叉推薦出的產品。這些候選產品能夠比較精準的反應出用戶最近最新的意願。
Business Rules
業務規則是認爲設定的規則,用來限定推薦的內容範圍等。例如機票推酒店的場景,須要經過業務規則來限定推薦的產品只能是酒店,而不會推薦其餘旅遊產品。
Context-Based
基於 Context 的推薦場景和 Context 自己密切相關,例如與季候相關的旅遊產品(冬季滑雪、元旦跨年等)。
LBS
基於用戶的當前位置信息,篩選出的周邊酒店,景點,美食等等,比較適用於行中場景的推薦。地理位置距離經過 GeoHash 算法計算,將區域遞歸劃分爲規則矩形,並對每一個矩形進行編碼,篩選 GeoHash 編碼類似的 POI,而後進行實際距離計算。
Collaborative Filtering
協同過濾算法是推薦系統普遍使用的一種解決實際問題的方法。攜程個性化團隊在深度學習與推薦系統結合的領域進行了相關的研究與應用,經過改進現有的深度模型,提出了一種深度模型 aSDAE。該混合協同過濾模型是 SDAE 的一種變體,經過將附加的 side information 集成到輸入中,能夠改善數據稀疏和冷啓動問題,詳情能夠參見文獻 [4]。
Sequential Model
現有的矩陣分解 (Matrix Factorization) 方法基於歷史的 user-item 交互學習用戶的長期興趣偏好,Markov chain 經過學習 item 間的 transition graph 對用戶的序列行爲建模 [3]。事實上,在旅遊場景下,加入用戶行爲的前後順序,從而能更好的反映用戶的決策過程。咱們結合 Matrix Factorization 和 Markov chain 爲每一個用戶構建個性化轉移矩陣,從而基於用戶的歷史行爲來預測用戶的下一行爲。在旅遊場景中,能夠用來預測用戶下一個目的地或者 POI。
除此以外,也可使用 RNN 來進行序列推薦,好比基於 Session 的推薦 [5],使用考慮時間間隔信息的 LSTM 來作下一個 item 的推薦等 [6]。
此外,一些常見的深度模型 (DNN, AE, CNN 等)[7][8][9][10] 均可以應用於推薦系統中,可是針對不一樣領域的推薦,須要更多的高效的模型。隨着深度學習技術的發展,相信深度學習將會成爲推薦系統領域中一項很是重要的技術手段。以上幾種類型的召回方法各有優點,在實踐中,針對不一樣場景,結合使用多種方法,提供給用戶最佳的推薦,以此提高用戶體驗,增長用戶粘性。
排序
以工業界在廣告、搜索、推薦等領域的實踐經驗,在數據給定的條件下,經歷了從簡單線性模型+大量人工特徵工程到複雜非線性模型+自動特徵學習的演變。在構建攜程個性化推薦系統的實踐過程當中,對於推薦排序這個特定問題有一些本身的思考和總結,並將從特徵和模型這兩方面展開。
Model
個性化排序模型旨在利用每一個用戶的歷史行爲數據集創建其各自的排序模型,本質上能夠看做多任務學習 (multi-task learning)。事實上,經過加入 conjunction features,也就是加入 user 和 product 的交叉特徵,能夠將特定的 multi-task 任務簡化爲單任務模型。梳理工業界應用的排序模型,大體經歷三個階段,以下圖所示:
本文並不許備詳細介紹上圖中的算法細節,感興趣的讀者能夠查看相關論文,如下幾點是咱們的一些實踐經驗和體會。
Feature Engineering
事實上,雖然深度學習等方法必定程度上減小了繁雜的特徵工程工做,但咱們認爲精心設計的特徵工程仍舊是不可或缺的, 其中如何進行特徵組合是咱們在實踐中着重考慮的問題。通常的,能夠分爲顯式特徵組合和半顯式特徵組合。
顯式特徵組合
對特徵進行離散化後而後進行叉乘,採用笛卡爾積 (cartesian product)、內積 (inner product) 等方式。
在構造交叉特徵的過程當中,須要進行特徵離散化;針對不一樣的特徵類型,有不一樣的處理方式。
numerical feature
ordinal feature(有序特徵)
編碼表示值之間的順序關係。好比對於衛生條件這一特徵,分別有差,中,好三檔,那麼能夠分別編碼爲 (1,0,0),(1,1,0),(1,1,1)。
categorical feature (無序特徵)
半顯式特徵組合
區別於顯式特徵組合具備明確的組合解釋信息,半顯式特徵組合一般的作法是基於樹方法造成特徵劃分並給出相應組合路徑。
通常作法是將樣本的連續值特徵輸入 ensemble tree,分別在每顆決策樹沿着特定分支路徑最終落入某個葉子結點獲得其編號,本質上是這些特徵在特定取值區間內的組合。ensemble tree 能夠採用 Gbdt 或者 random forest 實現。每一輪迭代,產生一棵新樹,最終經過 one-hot encoding 轉化爲 binary vector,以下圖所示。
如下幾點是咱們在實踐中的一些總結和思考。
總結
完整的推薦系統是一個龐大的系統,涉及多個方面,除了召回、排序、列表生產等步驟外,還有數據準備與處理,工程架構與實現,前端展示等等。 在實際中,經過把這些模塊集成在一塊兒,構成了一個集團通用推薦系統,對外提供推服務,應用在 10 多個欄位,60 多個場景,取得了很好的效果。本文側重介紹了召回與排序算法相關的目前已有的一些工做與實踐,下一步,計劃引入更多地深度模型來處理召回與排序問題,並結合在線學習、強化學習、遷移學習等方面的進展,優化推薦的總體質量。
做者簡介
攜程基礎業務研發部 - 數據產品和服務組,專一於個性化推薦、天然語言處理、圖像識別等人工智能領域的先進技術在旅遊行業的應用研究並落地產生價值。目前,團隊已經爲攜程提供了通用化的個性化推薦系統、智能客服系統、AI 平臺等一系列成熟的產品與服務。
References[1] Koren, Yehuda, Robert Bell, and Chris Volinsky. "Matrix factorization techniques for recommender systems." Computer 42.8 (2009).
[2] Sedhain, Suvash, et al. "Autorec: Autoencoders meet collaborative filtering." Proceedings of the 24th International Conference on World Wide Web. ACM, 2015.
[3] Rendle, Steffen, Christoph Freudenthaler, and Lars Schmidt-Thieme. "Factorizing personalized markov chains for next-basket recommendation." Proceedings of the 19th international conference on World wide web. ACM, 2010.
[4] Dong, Xin, et al. "A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems." AAAI. 2017.
[5] Hidasi, Balázs, et al. "Session-based recommendations with recurrent neural networks." arXiv preprint arXiv:1511.06939 (2015).
[6] Zhu, Yu, et al. "What to Do Next: Modeling User Behaviors by Time-LSTM." Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, IJCAI-17. 2017.
[7] Barkan, Oren, and Noam Koenigstein. "Item2vec: neural item embedding for collaborative filtering." Machine Learning for Signal Processing (MLSP), 2016 IEEE 26th International Workshop on. IEEE, 2016.
[8] Wang, Hao, Naiyan Wang, and Dit-Yan Yeung. "Collaborative deep learning for recommender systems." Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2015.
[9] Covington, Paul, Jay Adams, and Emre Sargin. "Deep neural networks for youtube recommendations." Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016.
[10] Kim, Donghyun, et al. "Convolutional matrix factorization for document context-aware recommendation." Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016.
[11] mli.github.io/2013/03/24/…
[12] Richardson, Matthew, Ewa Dominowska, and Robert Ragno. "Predicting clicks: estimating the click-through rate for new ads." Proceedings of the 16th international conference on World Wide Web. ACM, 2007
[13] Andrew, Galen, and Jianfeng Gao. "Scalable training of L 1-regularized log-linear models." Proceedings of the 24th international conference on Machine learning. ACM, 2007.
[14] Graepel, Thore, et al. "Web-scale bayesian click-through rate prediction for sponsored search advertising in microsoft's bing search engine." Omnipress, 2010.
[15] McMahan, H. Brendan, et al. "Ad click prediction: a view from the trenches." Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2013.
[16] Chen, Tianqi, and Carlos Guestrin. "Xgboost: A scalable tree boosting system." Proceedings of the 22nd acm sigkdd international conference on knowledge discovery and data mining. ACM, 2016.
[17] Rendle, Steffen. "Factorization machines." Data Mining (ICDM), 2010 IEEE 10th International Conference on. IEEE, 2010.
[18] Juan, Yuchin, et al. "Field-aware factorization machines for CTR prediction." Proceedings of the 10th ACM Conference on Recommender Systems. ACM, 2016.
[19] Gai, Kun, et al. "Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction." arXiv preprint arXiv:1704.05194 (2017).
[20] He, Xinran, et al. "Practical lessons from predicting clicks on ads at facebook." Proceedings of the Eighth International Workshop on Data Mining for Online Advertising. ACM, 2014.
[21] Cheng, Heng-Tze, et al. "Wide & deep learning for recommender systems." Proceedings of the 1st Workshop on Deep Learning for Recommender Systems. ACM, 2016.
[22] Guo, Huifeng, et al. "DeepFM: A Factorization-Machine based Neural Network for CTR Prediction." arXiv preprint arXiv:1703.04247 (2017).
[23] Zhou, Guorui, et al. "Deep Interest Network for Click-Through Rate Prediction." arXiv preprint arXiv:1706.06978 (2017).
[24] Blondel, Mathieu, et al. "Higher-order factorization machines." Advances in Neural Information Processing Systems. 2016.
[25] breezedeus.github.io/2014/11/20/…
[26] en.wikipedia.org/wiki/Catego…
[27] www.zhihu.com/question/48…
更多幹貨內容,可關注AI前線,ID:ai-front,後臺回覆「AI」、「TF」、「大數據」可得到《AI前線》系列PDF迷你書和技能圖譜。