
論文地址:https://arxiv.org/abs/1606.07792
一 為什么讀這篇
自從打算重新搞推薦以來,看了各種各樣的資料,收集了一堆TODO論文,發(fā)現(xiàn)這篇出現(xiàn)頻率十分之高,是深度學(xué)習(xí)與推薦系統(tǒng)相結(jié)合的必讀論文之一,因為很多新出的模型都是在這個架構(gòu)的基礎(chǔ)上進行迭代的。而且有g(shù)oogle的實際產(chǎn)品背書,工程上大概率是實用的。
二 截止閱讀時這篇論文的引用次數(shù)
2019.5.27 396次。本篇算是推薦領(lǐng)域里的經(jīng)典論文,引用次數(shù)都不過比CV里那些動輒引用上千的paper,確實有差距,不過也從側(cè)面說明CV更能灌水?
三 相關(guān)背景介紹
15年12月掛到arXiv上,中了16年的ECCV。一作劉偉是北卡羅來納大學(xué)教堂山分校的PHD,也是GoogLeNet的的二作。其他幾個作者都有Google背景,包括Szegedy大神,所以SSD差不多算是Google系的。本篇提出時間比Faster R-CNN和YOLO v1晚半年。
16年6月掛到arXiv上,中了16年ACM下的Deep Learning for Recommender Systems Workshop。有16個共同作者。。。
一作Heng-Tze Cheng是個臺灣小哥,13年CMU博士畢業(yè),畢業(yè)后就去G家了。本篇提出時間比FNN晚半年,比DeepFM,DIN,AFM,NFM,DCN早差不多一年。
四 關(guān)鍵詞
Wide & Deep
memorization
generalization
cross-product feature
五 論文的主要貢獻
提出Wide & Deep架構(gòu),挖了一個好坑,等著后續(xù)各種模型來填
六 詳細解讀
0 摘要
具有非線性特征變換的廣義線性模型被廣泛應(yīng)用于具有稀疏輸入的大規(guī)?;貧w和分類問題。通過a wide set of交叉特征變換來記住特征交互是有效且可解釋的,然而泛化則需要更多的特征工程工作;與此相反,不用過多的特征工程,深度神經(jīng)網(wǎng)絡(luò)可以通過對稀疏特征學(xué)習(xí)到的低維稠密嵌入來更好地泛化到未曾見過的特征組合。然而,當(dāng)用戶物品交互行為是稀疏且高秩時,具有嵌入的深度神經(jīng)網(wǎng)絡(luò)會過度泛化并推薦不太相關(guān)的物品。本文提出的Wide & Deep學(xué)習(xí)統(tǒng)一訓(xùn)練寬的線性模型和深度神經(jīng)網(wǎng)絡(luò),這樣就結(jié)合了記憶(memorization)與泛化(generalization)的優(yōu)勢。用有超過10億用戶行為,百萬apps上的Google Play上進行試驗。
1 介紹
推薦系統(tǒng)可以被視為是搜索排序系統(tǒng),其輸入query是用戶和上下文信息,輸出是排好序的物品列表。記憶(memorization)定義為學(xué)習(xí)與物品或特征頻繁共現(xiàn)的東西,并利用歷史數(shù)據(jù)中可用的相關(guān)性。然而泛化(generalization)是基于相關(guān)的傳遞性,并探索過去從未或很少發(fā)生的新特征組合?;谟洃浀耐扑]通常更與主題相關(guān),并且與用戶已經(jīng)有過行為的物品直接相關(guān)。泛化傾向于改進推薦物品的多樣性。
廣義線性模型的優(yōu)勢是簡單,可擴展,可解釋。記憶通過使用在稀疏特征上的叉積變換來實現(xiàn),泛化通過使用更粗粒度的特征來實現(xiàn),但是手動特征工程是必不可少的。叉積變換的一個限制是無法泛化出沒出現(xiàn)在訓(xùn)練樣本中的query-item特征對。
基于嵌入的模型(FM,DNN)通過學(xué)習(xí)低維稠密嵌入向量來泛化到之前未見過的query-item特征對,然而當(dāng)潛在的query-item矩陣稀疏并有很高的秩時(例如用戶有特殊的偏好,或者物品有狹隘的吸引力),很難學(xué)習(xí)有效的低維表示。在這種情況下,絕大多數(shù)query-item對應(yīng)該沒有交互,然而稠密嵌入將對所有的query-item對進行非零值預(yù)測,因此會過度泛化并作出不太相關(guān)的推薦。從另一方面講,使用叉積特征變換的廣義線性模型能夠用更少的參數(shù)記住這些例外規(guī)則。

本文主要貢獻:
1 Wide & Deep框架,聯(lián)合訓(xùn)練有嵌入的前向神經(jīng)網(wǎng)絡(luò)和有特征變換的線性模型
2 在Google Play上實現(xiàn)并評估Wide & Deep
3 在TensorFlow上開源了高階API的實現(xiàn)
2 推薦系統(tǒng)概述

query通常包括不同的用戶和上下文特征。
本篇的Wide & Deep聚焦于排序模型那塊。
3 Wide & Deep學(xué)習(xí)
3.1 Wide部分
特征集合包括原始輸入特征和變換特征,其中最重要的變換的叉積變換,定義如下:
這樣捕獲了二元特征間的交互,并為廣義線性模型增加了非線性。
3.2 Deep部分
將稀疏,高維的分類特征,首先轉(zhuǎn)化為低維,稠密的實數(shù)向量,即嵌入向量,嵌入維度通常是10到100。
3.3 聯(lián)合訓(xùn)練Wide & Deep模型
聯(lián)合訓(xùn)練和Ensemble的不同,聯(lián)合訓(xùn)練的wide部分只需要通過少量的叉積特征變換來補充deep部分的不足,而不用全尺寸的wide模型。本文用FTRL(Follow-the-regularized-leader)優(yōu)化模型的wide部分,AdaGrad優(yōu)化深度部分(這為什么??)。
4 系統(tǒng)實現(xiàn)

4.1 數(shù)據(jù)生成
Vocabularies,用來將分類特征字符串映射為整數(shù)IDs。連續(xù)實數(shù)特征歸一化到[0, 1]。
4.2 模型訓(xùn)練

wide部分由用戶安裝的apps和曝光的apps的叉積變換組成。對于deep部分,每個分類特征學(xué)習(xí)32維的嵌入向量。模型在5000億的樣本上訓(xùn)練。。。
4.3 模型服務(wù)
為了優(yōu)化速度(每個請求10ms內(nèi)),沒有用一個batch,而是用多線程并行跑多個小batch。
5 實驗結(jié)果
5.1 APP獲取
AB試驗做了3周,控制組為LR,實驗組為Wide & Deep,兩者特征一樣。

5.2 服務(wù)性能
在峰值時,每秒為1000w apps打分。這里有個trick就是用多線程把大batch拆為幾個小batch。

6 相關(guān)工作
本文受FM的啟發(fā),不同的是把FM的點積用神經(jīng)網(wǎng)絡(luò)的嵌入代替。剩下的部分就是硬湊。。
七 小結(jié)
還是看原文爽,僅僅讀了摘要和介紹部分,就明白了模型是為什么要這么做。這也是看原文的好處,背景介紹的非常清楚,會告訴你為什么有這個idea。感覺推薦和CV的風(fēng)格差異還是挺大的,貌似推薦的要易讀一點?也可能是這篇相對易懂,內(nèi)容很短,只有4頁,看完后懂了為什么要這么多作者,合著是把一個項目組的人都拉進來了。。。另外從最后的實驗結(jié)果來看,提升并沒有特別的高,看來模型側(cè)的改進真沒有想象中那么有效。
素質(zhì)四連
要解決什么問題
LR泛化能力不足,DNN泛化能力過強導(dǎo)致的無關(guān)推薦
用了什么方法解決
結(jié)合LR和DNN
效果如何
相比LR,AUC提升不多,但線上提升較多
還存在什么問題
本篇只是搭了架構(gòu),還有各種花式技巧,魔改網(wǎng)絡(luò)結(jié)構(gòu)沒有用上