Wide & Deep Learning for Recommender Systems/paper/zh
| Research Paper | |
|---|---|
| Authors | Heng-Tze Cheng; Levent Koc; Jeremiah Harmsen; Tal Shaked; Tushar Chandra; Hrishi Aradhye; Glen Anderson; Greg Corrado; Wei Chai; Mustafa Ispir; Rohan Anil; Zakaria Haque; Lichan Hong; Vihan Jain; Xiaobing Liu; Hemal Shah |
| Year | 2016 |
| Topic area | Machine Learning |
| Difficulty | Research |
| arXiv | 1606.07792 |
| Download PDF | |
Wide & Deep Learning for Recommender Systems
Heng-Tze Cheng Levent Koc Jeremiah Harmsen Tal Shaked Tushar Chandra Hrishi Aradhye Glen Anderson Greg Corrado Wei Chai Mustafa Ispir Rohan Anil Zakaria Haque Lichan Hong Vihan Jain Xiaobing Liu Hemal Shah
Google Inc.
摘要
帶非線性特徵變換的廣義線性模型被廣泛用於具有稀疏輸入的大規模回歸與分類問題。通過寬(wide)的交叉乘積特徵變換來記憶特徵交互既有效又可解釋,而泛化則需要更多的特徵工程工作量。藉助更少的特徵工程,深度(deep)神經網絡可以通過為稀疏特徵學習的低維稠密 embedding,更好地泛化到未見過的特徵組合。然而,帶 embedding 的深度神經網絡在用戶-項交互稀疏且高秩時,可能會過度泛化,推薦相關性較弱的項。本文提出 Wide & Deep learning——聯合訓練 wide 線性模型與 deep 神經網絡——以在推薦系統中兼得記憶與泛化的優勢。我們在 Google Play 上將該系統投入生產並進行評估,這是一家商用移動應用商店,擁有逾十億活躍用戶與逾百萬款應用。線上實驗結果表明,相對於僅 wide 或僅 deep 的模型,Wide & Deep 顯著提升了應用安裝量。我們也已在 TensorFlow 中開源了相關實現。
關鍵詞:
Wide & Deep Learning,推薦系統。††titlenote: 通信作者:hengtze@google.com {CCSXML}
<ccs2012> <concept> <concept_id>10010147.10010257</concept_id> <concept_desc>Computing methodologies Machine learning</concept_desc> <concept_significance>500</concept_significance> </concept> <concept> <concept_id>10010147.10010257.10010293.10010294</concept_id> <concept_desc>Computing methodologies Neural networks</concept_desc> <concept_significance>300</concept_significance> </concept> <concept> <concept_id>10010147.10010257.10010258.10010259</concept_id> <concept_desc>Computing methodologies Supervised learning</concept_desc> <concept_significance>300</concept_significance> </concept> <concept> <concept_id>10002951.10003317.10003347.10003350</concept_id> <concept_desc>Information systems Recommender systems</concept_desc> <concept_significance>300</concept_significance> </concept> </ccs2012>
\ccsdesc
[500]Computing methodologies Machine learning \ccsdesc[300]Computing methodologies Neural networks \ccsdesc[300]Computing methodologies Supervised learning \ccsdesc[300]Information systems Recommender systems
\printccsdesc
1 引言
推薦系統可以視為一種搜索排序系統:其輸入查詢是用戶與上下文信息的集合,輸出則是按順序排列的項列表。給定一個查詢,推薦任務就是在數據庫中找出相關項,然後依據某些目標(例如點擊或購買)對它們排序。
與一般的搜索排序問題類似,推薦系統的一個挑戰是同時實現記憶與泛化。記憶可以粗略地理解為從歷史數據中學習項或特徵的頻繁共現並加以利用。而泛化則建立在相關性的傳遞性之上,去探索過去從未或極少出現過的新特徵組合。基於記憶的推薦通常更聚焦、與用戶已經發生交互的項更直接相關;相比之下,泛化更有助於提升推薦結果的多樣性。本文聚焦於 Google Play 應用商店的應用推薦問題,但該方法應當適用於一般的推薦系統。
在工業級大規模在線推薦與排序系統中,logistic 回歸等廣義線性模型被廣泛使用,因為它們簡單、可擴展且可解釋。這些模型通常在以 one-hot 編碼二值化的稀疏特徵上訓練。例如,二值特徵「user_installed_app=netflix」在用戶安裝了 Netflix 時取 1。在稀疏特徵上使用交叉乘積變換可以高效實現記憶,例如 AND(user_installed_app=netflix, impression_app=pandora」),當用戶安裝了 Netflix 並隨後被展示 Pandora 時其值為 1。這刻畫了一對特徵的共現與目標標籤之間的關聯。可以通過使用粒度更粗的特徵來加入泛化能力,例如 AND(user_installed_category=video, impression_category=music),但這通常需要人工的特徵工程。交叉乘積變換的一個局限是:它們無法泛化到訓練數據中未出現過的查詢-項特徵對。
基於 embedding 的模型,例如 factorization machines [5] 或深度神經網絡,可以通過為每個查詢和項特徵學習一個低維稠密 embedding 向量來泛化到此前未見過的查詢-項特徵對,同時減輕特徵工程負擔。然而,當底層的查詢-項矩陣稀疏且高秩時——比如有特定偏好的用戶或受眾面較窄的小眾項——就很難為查詢和項學習有效的低維表示。在這種情況下,大多數查詢-項對之間本不應存在交互,但稠密 embedding 仍會對所有查詢-項對給出非零預測,從而可能過度泛化、產生相關性較弱的推薦。相反,帶交叉乘積特徵變換的線性模型可以用遠少得多的參數記憶這些「例外規則」。
本文提出 Wide & Deep learning 框架,通過聯合訓練一個線性模型分量與一個神經網絡分量來在同一個模型中同時實現記憶與泛化,如圖 1 所示。
本文的主要貢獻包括:
•
Wide & Deep learning 框架:針對具有稀疏輸入的通用推薦系統,聯合訓練帶 embedding 的前饋神經網絡與帶特徵變換的線性模型。
•
在 Google Play——一家擁有逾十億活躍用戶和逾百萬款應用的移動應用商店——上對 Wide & Deep 推薦系統進行的生產化實現與評估。
•
我們已開源相應實現,並在 TensorFlow 中提供了高階 API111詳見
http://tensorflow.org上的 Wide & Deep Tutorial。。
儘管這一思路本身簡單,我們的實驗表明 Wide & Deep 框架顯著提升了移動應用商店的應用安裝率,同時也滿足了訓練與在線服務在速度上的要求。
2 推薦系統概覽
圖 2 給出了應用推薦系統的整體概覽。當用戶訪問應用商店時,會生成一個查詢,其中可包含用戶與上下文的多種特徵。推薦系統返回一個應用列表(也稱為曝光),用戶可以對這些應用進行點擊或購買等操作。這些用戶行為連同查詢和曝光會一起被寫入日誌,作為學習器的訓練數據。
由於數據庫中應用超過百萬款,在服務延遲約束(往往為 $ {\textstyle O\hspace{0pt}{(10)}} $ 毫秒量級)下對每個查詢完整打分所有應用是不切實際的。因此,收到查詢後的第一步是召回。召回系統通過多種信號——通常是機器學習模型與人工規則的組合——返回與查詢最匹配的一個簡短列表。在縮小候選集之後,排序系統按打分對所有項排序。打分通常為 $ {\textstyle P\hspace{0pt}{(\left. y \middle| \mathbf{x} \right.)}} $,即在特徵 $ {\textstyle \mathbf{x}} $ 給定下用戶行為標籤 $ {\textstyle y} $ 的概率;特徵包括用戶特徵(如國家、語言、人口統計學)、上下文特徵(如設備、一天中的小時、星期幾)以及曝光特徵(如應用年齡、應用的歷史統計)。本文聚焦於使用 Wide & Deep learning 框架的排序模型。
3 Wide & Deep Learning
3.1 Wide 分量
Wide 分量是形如 $ {\textstyle y = {{\mathbf{w}^{T}\hspace{0pt}\mathbf{x}} + b}} $ 的廣義線性模型,如圖 1(左)所示。$ {\textstyle y} $ 是預測值,$ {\textstyle \mathbf{x} = {\lbrack x_{1},x_{2},\ldots,x_{d}\rbrack}} $ 是 $ {\textstyle d} $ 個特徵構成的向量,$ {\textstyle \mathbf{w} = {\lbrack w_{1},w_{2},\ldots,w_{d}\rbrack}} $ 是模型參數,$ {\textstyle b} $ 是偏置。特徵集合包含原始輸入特徵與變換後的特徵。最重要的變換之一是交叉乘積變換,其定義為:
| $ {\displaystyle {{\phi_{k}\hspace{0pt}{(\mathbf{x})}} = {\prod\limits_{i = 1}^{d}x_{i}^{c_{k\hspace{0pt}i}}}}\quad{c_{k\hspace{0pt}i} \in {\{ 0,1\}}}} $ | (1) |
其中 $ {\textstyle c_{k\hspace{0pt}i}} $ 是一個布爾變量:當第 $ {\textstyle i} $ 個特徵屬於第 $ {\textstyle k} $ 個變換 $ {\textstyle \phi_{k}} $ 時取 1,否則取 0。對二值特徵而言,交叉乘積變換(例如「AND(gender=female, language=en)」)當且僅當其所有組成特徵(「gender=female」和「language=en」)都為 1 時取 1,否則取 0。這刻畫了二值特徵之間的交互,並為廣義線性模型注入了非線性。
3.2 Deep 分量
Deep 分量是一個前饋神經網絡,如圖 1(右)所示。對類別特徵而言,原始輸入是特徵字符串(例如「language=en」)。這些稀疏的高維類別特徵首先被轉換為低維稠密的實值向量,即所謂的 embedding 向量。embedding 的維度通常在 $ {\textstyle O\hspace{0pt}{(10)}} $ 至 $ {\textstyle O\hspace{0pt}{(100)}} $ 量級。embedding 向量隨機初始化,然後在模型訓練過程中調整其取值以最小化最終損失函數。這些低維稠密的 embedding 向量在前向傳播中被送入神經網絡的隱藏層。具體而言,每個隱藏層執行以下計算:
| $ {\displaystyle a^{({l + 1})} = {f\hspace{0pt}{({{W^{(l)}\hspace{0pt}a^{(l)}} + b^{(l)}})}}} $ | (2) |
其中 $ {\textstyle l} $ 是層編號,$ {\textstyle f} $ 是激活函數,常用整流線性單元(ReLU)。$ {\textstyle a^{(l)}} $、$ {\textstyle b^{(l)}} $ 和 $ {\textstyle W^{(l)}} $ 分別是第 $ {\textstyle l} $ 層的激活、偏置與模型權重。
3.3 Wide & Deep 模型的聯合訓練
Wide 分量與 Deep 分量通過其輸出 log-odds 的加權和作為預測進行組合,並送入一個共同的 logistic 損失函數進行聯合訓練。需要注意的是,聯合訓練與集成(ensemble)有所區別。在集成中,各個模型獨立訓練、彼此互不感知,僅在推理時合併預測,而非在訓練時。相反地,聯合訓練在訓練階段同時考慮 wide 與 deep 部分以及二者求和的權重,對所有參數同時進行優化。這對模型規模也有影響:由於集成中各模型的訓練相互獨立,每個單獨模型通常需要更大(例如包含更多特徵與變換)才能達到合理精度以支撐整體效果;而在聯合訓練中,wide 部分只需用少量交叉乘積特徵變換來彌補 deep 部分的不足,而不必是一個完整規模的 wide 模型。
Wide & Deep 模型的聯合訓練通過將梯度從輸出同時反向傳播到模型的 wide 與 deep 兩部分來完成,並使用 mini-batch 的隨機優化。實驗中我們以帶 $ {\textstyle L_{1}} $ 正則化的 Follow-the-regularized-leader(FTRL)算法 [3] 作為 wide 部分的優化器,對 deep 部分則使用 AdaGrad [1]。
組合模型如圖 1(中)所示。對於 logistic 回歸問題,模型的預測為:
| $ {\displaystyle {P\hspace{0pt}{({Y = \left. 1 \middle| \mathbf{x} \right.})}} = {\sigma\hspace{0pt}{({{\mathbf{w}_{w\hspace{0pt}i\hspace{0pt}d\hspace{0pt}e}^{T}\hspace{0pt}{\lbrack\mathbf{x},{\phi\hspace{0pt}{(\mathbf{x})}}\rbrack}} + {\mathbf{w}_{d\hspace{0pt}e\hspace{0pt}e\hspace{0pt}p}^{T}\hspace{0pt}a^{(l_{f})}} + b})}}} $ | (3) |
其中 $ {\textstyle Y} $ 是二值類別標籤,$ {\textstyle \sigma\hspace{0pt}{( \cdot )}} $ 是 sigmoid 函數,$ {\textstyle \phi\hspace{0pt}{(\mathbf{x})}} $ 是原始特徵 $ {\textstyle \mathbf{x}} $ 的交叉乘積變換,$ {\textstyle b} $ 是偏置項。$ {\textstyle \mathbf{w}_{w\hspace{0pt}i\hspace{0pt}d\hspace{0pt}e}} $ 是 wide 模型全部權重構成的向量,$ {\textstyle \mathbf{w}_{d\hspace{0pt}e\hspace{0pt}e\hspace{0pt}p}} $ 是作用於最終激活 $ {\textstyle a^{(l_{f})}} $ 上的權重。
4 系統實現
應用推薦流水線的實現包含三個階段:數據生成、模型訓練和模型服務,如圖 3 所示。
4.1 數據生成
在該階段中,用一段時間窗口內的用戶與應用曝光數據來生成訓練數據。每個樣本對應一次曝光。標籤為應用安裝情況:曝光的應用被安裝時取 1,否則取 0。
該階段還會生成詞表,即將類別特徵字符串映射到整數 ID 的表。系統會為出現次數超過最小閾值的所有字符串特徵計算 ID 空間。對連續實值特徵,則通過將特徵值 $ {\textstyle x} $ 映射到其累積分佈函數 $ {\textstyle P\hspace{0pt}{({X \leq x})}} $(劃分為 $ {\textstyle n_{q}} $ 個分位數)來歸一化到 $ {\textstyle \lbrack 0,1\rbrack} $ 區間。位於第 $ {\textstyle i} $ 個分位數中的值,其歸一化後取值為 $ {\textstyle \frac{i - 1}{n_{q} - 1}} $。分位數的邊界在數據生成階段計算。
4.2 模型訓練
實驗中使用的模型結構如圖 4 所示。訓練時,我們的輸入層接收訓練數據和詞表,並生成稀疏與稠密特徵以及標籤。Wide 分量由用戶已安裝應用與曝光應用的交叉乘積變換組成。在模型的 deep 部分,每個類別特徵學習一個 32 維 embedding 向量。我們將所有 embedding 與稠密特徵拼接在一起,得到約 1200 維的稠密向量。然後將該拼接向量送入 3 層 ReLU,最後接 logistic 輸出單元。
Wide & Deep 模型在超過 5000 億個樣本上訓練。每次有新的訓練數據到來,都需要重新訓練模型。然而每次都從頭開始訓練計算代價高,並且會延遲從數據到達到上線提供服務的時間。為應對這一挑戰,我們實現了一個 warm-starting 系統,它使用上一版模型的 embedding 與線性模型權重來初始化新模型。
在將模型加載到模型伺服器之前,會先做一次模型的 dry run,以確認其在線上服務流量時不會出現問題。我們以對比上一版模型的方式經驗性地驗證模型質量,作為健全性檢查。
4.3 模型服務
模型訓練並驗證完成後,我們將其加載到模型伺服器中。對每個請求,伺服器從應用召回系統接收一組候選應用以及用戶特徵,用於對每個應用打分。然後按打分從高到低排序,並按該順序將應用展示給用戶。打分通過在 Wide & Deep 模型上執行一次前向推理來計算。
為了將每次請求的服務時間控制在 10 毫秒量級,我們通過多線程並行進行性能優化:並發地運行更小的批次,而不是用一次單批推理為所有候選應用打分。
5 實驗結果
為評估 Wide & Deep learning 在真實推薦系統中的效果,我們進行了線上實驗,從兩方面評估了該系統:應用安裝量與服務性能。
| 模型 | 離線 AUC | 線上安裝量增益 |
|---|---|---|
| Wide(對照) | 0.726 | 0% |
| Deep | 0.722 | +2.9% |
| Wide & Deep | 0.728 | +3.9% |
5.1 應用安裝量
我們在 A/B 測試框架下進行了為期 3 周的線上實驗。對照組隨機選取 1% 的用戶,向其呈現由舊版排序模型生成的推薦——後者是經過高度優化的 wide-only logistic 回歸模型,帶有豐富的交叉乘積特徵變換。實驗組同樣選取 1% 的用戶,向其呈現由用同一組特徵訓練的 Wide & Deep 模型生成的推薦。如表 1 所示,相對於對照組,Wide & Deep 模型將應用商店主着陸頁的應用安裝率提升了 +3.9%(具有統計顯著性)。我們還與另一個使用相同特徵與神經網絡結構、僅取模型 deep 部分的 1% 用戶組進行了對比,Wide & Deep 模型在 deep-only 模型的基礎上又獲得了 +1% 的增益(具有統計顯著性)。
除線上實驗外,我們也給出了離線留出集上的 ROC 曲線下面積(AUC)。儘管 Wide & Deep 的離線 AUC 略高一些,但其在線上流量上的影響更為顯著。一種可能的原因是:離線數據集中的曝光與標籤是固定的,而線上系統可以通過把泛化與記憶結合起來產生新的探索性推薦,並從用戶的新反饋中持續學習。
5.2 服務性能
鑑於我們這家商用移動應用商店的高流量水平,要做到高吞吐與低延遲的服務非常具有挑戰性。在峰值流量下,我們的推薦伺服器每秒為超過 1000 萬個應用打分。在單線程下,將所有候選項放入一次批量推理需要 31 毫秒。我們引入多線程並將每個批次切分為更小的批次後,客戶端側延遲(含服務開銷)顯著降至 14 毫秒,如表 2 所示。
6 相關工作
將帶交叉乘積特徵變換的 wide 線性模型與帶稠密 embedding 的深度神經網絡相結合,這一思路受到先前工作的啟發,例如 factorization machines [5] 通過將兩個變量之間的交互分解為兩個低維 embedding 向量的內積,為線性模型引入泛化能力。本文中,我們用神經網絡代替內積來學習 embedding 之間高度非線性的交互,從而擴展了模型容量。
在語言模型方面,已有研究提出聯合訓練循環神經網絡(RNN)與基於 n-gram 特徵的最大熵模型,通過在輸入與輸出之間學習直接的權重,從而顯著降低 RNN 的複雜度(例如隱藏層規模)[4]。在計算機視覺方面,deep residual learning [2] 通過跨越一層或多層的捷徑連接來降低訓練更深層模型的難度並提升精度。聯合訓練神經網絡與圖模型也已被應用於從圖像估計人體姿態 [6]。本工作針對具有稀疏輸入數據的通用推薦與排序問題,探索了前饋神經網絡與線性模型的聯合訓練,並在稀疏特徵與輸出單元之間建立直接連接。
在推薦系統文獻中,已有研究通過將用於內容信息的 deep learning 與用於評分矩陣的 collaborative filtering(CF)耦合來探索 collaborative deep learning [7]。在移動應用推薦系統方面也有先前工作,例如 AppJoy 使用了基於用戶應用使用記錄的 CF [8]。與先前工作中基於 CF 或基於內容的方法不同,我們在用戶與曝光數據上聯合訓練 Wide & Deep 模型,用於應用推薦系統。
7 結論
記憶與泛化對於推薦系統都很重要。Wide 線性模型可以利用交叉乘積特徵變換高效地記憶稀疏的特徵交互,而深度神經網絡則可以通過低維 embedding 泛化到此前未見過的特徵交互。我們提出了 Wide & Deep learning 框架,以結合這兩類模型各自的優勢。我們將該框架在 Google Play——一家大規模商用應用商店——的推薦系統上進行了生產化部署與評估。線上實驗結果表明,相對於僅 wide 與僅 deep 的模型,Wide & Deep 模型在應用安裝量上帶來了顯著提升。
| 批次大小 | 線程數 | 服務延遲(毫秒) |
| 200 | 1 | 31 |
| 100 | 2 | 17 |
| 50 | 4 | 14 |
參考文獻
- [1] J. Duchi, E. Hazan, 與 Y. Singer. Adaptive subgradient methods for online learning and stochastic optimization. Journal of Machine Learning Research, 12:2121–2159, 2011 年 7 月。
- [2] K. He, X. Zhang, S. Ren, 與 J. Sun. Deep residual learning for image recognition. Proc. IEEE Conference on Computer Vision and Pattern Recognition, 2016。
- [3] H. B. McMahan. Follow-the-regularized-leader and mirror descent: Equivalence theorems and l1 regularization. 見 Proc. AISTATS, 2011。
- [4] T. Mikolov, A. Deoras, D. Povey, L. Burget, 與 J. H. Cernocky. Strategies for training large scale neural network language models. 見 IEEE Automatic Speech Recognition & Understanding Workshop, 2011。
- [5] S. Rendle. Factorization machines with libFM. ACM Trans. Intell. Syst. Technol., 3(3):57:1–57:22, 2012 年 5 月。
- [6] J. J. Tompson, A. Jain, Y. LeCun, 與 C. Bregler. Joint training of a convolutional network and a graphical model for human pose estimation. 見 Z. Ghahramani, M. Welling, C. Cortes, N. D. Lawrence, 與 K. Q. Weinberger 編, NIPS, 第 1799–1807 頁。2014。
- [7] H. Wang, N. Wang, 與 D.-Y. Yeung. Collaborative deep learning for recommender systems. 見 Proc. KDD, 第 1235–1244 頁, 2015。
- [8] B. Yan 與 G. Chen. AppJoy: Personalized mobile application discovery. 見 MobiSys, 第 113–126 頁, 2011。