《Wide & Deep Learning for Recommender Systems》

推薦系統(tǒng) CTR預(yù)估 CVR預(yù)估


0巴碗、概述

線性模型被廣泛地應(yīng)用于回歸和分類(lèi)問(wèn)題蚪腋,具有簡(jiǎn)單耸棒、快速和可解釋性等優(yōu)點(diǎn)荒澡,但是線性模型的表達(dá)能力有限,經(jīng)常需要人工選擇特征和交叉特征才能取得一個(gè)良好的效果与殃,但是實(shí)際工程中的特征數(shù)量會(huì)很多单山,并且還會(huì)有大量的稀疏特征捏肢,人工篩選特征和交叉特征會(huì)很困難,尤其是交叉高階特征時(shí)饥侵,人工很難實(shí)現(xiàn)鸵赫。DNN模型可以很容易的學(xué)習(xí)到高階特征之間的作用,并且具有很好的泛化能力躏升。同時(shí)辩棒,DNN增加embedding層可以很容易的解決稀疏特征的問(wèn)題。文章將傳統(tǒng)的LR和DNN組合構(gòu)成一個(gè)wide&deep模型膨疏,既保留了LR的擬合能力一睁,又具有DNN的泛化能力,并且不需要單獨(dú)訓(xùn)練模型佃却,可以方便模型的迭代者吁。

1、Wide&Deep解決什么問(wèn)題

在推薦系統(tǒng)(包括推薦饲帅、計(jì)算廣告)中复凳,當(dāng)用戶來(lái)到平臺(tái)時(shí),需要向用戶展示適合用戶的物品(商品灶泵、廣告等)育八,通常的做法是先從海量的物品庫(kù)(通常是上億數(shù)量)中,篩選出一些跟用戶興趣最相關(guān)的物品(通常是千級(jí)規(guī)模)赦邻,這個(gè)過(guò)程叫做召回髓棋,召回可以是機(jī)器學(xué)習(xí)模型或者規(guī)則;然后再對(duì)這上千的物品進(jìn)行排序惶洲,從而展示給用戶按声。因此推薦系統(tǒng)也經(jīng)常被叫做搜索排序系統(tǒng)。整個(gè)系統(tǒng)流程如圖:


推薦系統(tǒng)架構(gòu)

排序的規(guī)則有很多恬吕,主要是依據(jù)業(yè)務(wù)的目標(biāo)而言签则,例如點(diǎn)擊、購(gòu)買(mǎi)等币呵。wide&deep可以應(yīng)用到此類(lèi)目標(biāo)的排序問(wèn)題中怀愧,最經(jīng)典的就是CTR預(yù)估。

2余赢、現(xiàn)有模型的問(wèn)題

提到CTR預(yù)估,最經(jīng)典的應(yīng)該是LR模型了哈垢,LR模型簡(jiǎn)單妻柒、快速并且模型具有可解釋?zhuān)兄芎玫臄M合能力,但是LR模型是線性模型耘分,表達(dá)能力有限举塔,泛化能力較弱绑警,需要做好特征工程,尤其需要交叉特征央渣,才能取得一個(gè)良好的效果计盒,然后工業(yè)中,特征的數(shù)量會(huì)很多芽丹,可能達(dá)到成千上萬(wàn)北启,甚至數(shù)十萬(wàn),這時(shí)特征工程就很難做拔第,并且特征工程是一項(xiàng)很枯燥乏味的工作咕村,搞得算法工程師暈頭轉(zhuǎn)向,還不一定能取得更好的效果蚊俺。
DNN模型不需要做太精細(xì)的特征工程懈涛,就可以取得很好的效果,已經(jīng)在很多領(lǐng)域開(kāi)始應(yīng)用了泳猬,DNN可以自動(dòng)交叉特征批钠,學(xué)習(xí)到特征之間的相互作用,尤其是可以學(xué)到高階特征交互得封,具有很好的泛化能力价匠。另外,DNN通過(guò)增加embedding層呛每,可以有效的解決稀疏數(shù)據(jù)特征的問(wèn)題踩窖,防止特征爆炸。推薦系統(tǒng)中的泛化能力是很重要的晨横,可以提高推薦物品的多樣性洋腮,但是DNN在擬合數(shù)據(jù)上相比較LR會(huì)較弱。
為了提高推薦系統(tǒng)的擬合性和泛化性手形,可以將LR和DNN結(jié)合起來(lái)啥供,同時(shí)增強(qiáng)擬合能力和泛化能力,wide&deep就是將LR和DNN結(jié)合起來(lái)库糠,wide部分就是LR伙狐,deep部分就是DNN,將兩者的結(jié)果組合進(jìn)行輸出瞬欧。

3贷屎、Wide&Deep模型

wide&deep模型主要分成兩部分,wide部分就是傳統(tǒng)的LR模型艘虎,deep部分就是DNN唉侄,整個(gè)模型的結(jié)構(gòu)如下圖:


wide&deep

上圖中最左邊是傳統(tǒng)的LR模型,最右邊是DNN模型野建,中間的是將LR和DNN結(jié)合起來(lái)的wide&deep模型属划。

3.1 Wide部分

wide部分就是LR模型恬叹,傳統(tǒng)的LR模型:
X=[x_1,x_2,x_3,...,x_d]表示一個(gè)有d個(gè)特征的樣本,W=[w_1,w_2,w_3,...,w_d]表示模型的參數(shù)同眯,b表示bia绽昼,y表示預(yù)測(cè)值,有 y=W^TX+b须蜗。
在實(shí)際中往往需要交叉特征硅确,對(duì)于這部分定義如下:
\phi_k(X)=\prod_{i=1}^d x_i^{C_{ki}}, c_{ki}\in {0,1}
\phi_k表示第k個(gè)交叉特征,C_{ki}表示是第k個(gè)交叉特征的一部分唠粥。
最終的wide部分為:
y=W^TX+b+\sum_{k=1}^N w_{d+k}\phi_k

3.2 Deep部分

deep部分就是一個(gè)普通的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)疏魏,只不過(guò)在這個(gè)網(wǎng)絡(luò)中增加embedding層用來(lái)將稀疏、高維的特征轉(zhuǎn)換為低維晤愧、密集的實(shí)數(shù)向量大莫,可以有效地解決維度爆炸。先將原始特征經(jīng)過(guò)embedding層轉(zhuǎn)化后官份,再送入DNN的隱藏層只厘,隱藏層之間的關(guān)系定義為:
a^{l+1}=f(W^l a^l + b^l)
上面l表示隱藏層數(shù),f表示激活函數(shù)舅巷,可以是sigmoid羔味、Relu、than等钠右,目前最常用的是Relu函數(shù)赋元。

3.3 Wide join Deep

將wide部分的輸出和deep部分的輸出相加通過(guò)sigmoid函數(shù)輸出進(jìn)行預(yù)測(cè)。整個(gè)模型的預(yù)測(cè)定義如下:
P(Y=1|X)=\sigma(W_{wide}^T[X,\phi(X)]+W_{deep}^Ta^l+b)

3.4 wide&deep的訓(xùn)練方式

wide&deep模型中飒房,wide部分和deep部分是同時(shí)訓(xùn)練的搁凸,不需要單獨(dú)訓(xùn)練任何一部分。GBDT+LR模型中GBDT需要先訓(xùn)練狠毯,然后再訓(xùn)練LR护糖,兩部分具有依賴(lài)關(guān)系,這種架構(gòu)不利于模型的迭代嚼松。
Join training和ensemble training的區(qū)別:(1)ensemble中每個(gè)模型需要單獨(dú)訓(xùn)練嫡良,并且各個(gè)模型之間是相互獨(dú)立的,模型之間互相不感知献酗,當(dāng)預(yù)測(cè)樣本時(shí)寝受,每個(gè)模型的結(jié)果用于投票,最后選擇得票最多的結(jié)果凌摄。而join train這種方式模型之間不是獨(dú)立的羡蛾,是相互影響的,可以同時(shí)優(yōu)化模型的參數(shù)锨亏。(2)ensemble的方式中往往要求存在很多模型痴怨,這樣就需要更多的數(shù)據(jù)集和數(shù)據(jù)特征,才能取得比較好的效果器予,模型的增多導(dǎo)致難以訓(xùn)練浪藻,不利于迭代。而在wide&deep中乾翔,只需要兩個(gè)模型爱葵,訓(xùn)練簡(jiǎn)單,可以很快的迭代模型反浓。

3.5 工程上的實(shí)現(xiàn)

目前Tensorflow中已經(jīng)提供了wide&deep模型的API,參見(jiàn) https://www.tensorflow.org/tutorials/wide_and_deep萌丈,并且官方提供了一個(gè)Demo,工程上可以很快的搭建起wide&deep模型雷则。

4 思考

如果你是為業(yè)務(wù)第一次做CTR預(yù)估模型辆雾,建議嘗試先用交叉特征+LR經(jīng)典模型取得一個(gè)良好的效果,之后可以引入FM來(lái)替換交叉特征部分月劈。最后可以考慮采用以下模型優(yōu)化:

  • GBDT+LR:Facebook提出的CTR預(yù)估方法
  • wide&deep:Google 2016年提出的CTR預(yù)估方法度迂,目前最主流的方法,很多公司都在用猜揪,建議一定去嘗試
  • DeepFM:華為諾亞方舟實(shí)驗(yàn)室和哈工大 2017年提出的CTR預(yù)估方法
  • Deep&Cross:Google 2017年提出CTR預(yù)估方法惭墓,據(jù)說(shuō)會(huì)比wide&deep更好,目前還沒(méi)有大量應(yīng)用
  • FFM:臺(tái)灣大學(xué)提出的對(duì)FM進(jìn)行優(yōu)化的方法而姐,F(xiàn)M可以看成是FFM的一個(gè)特例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腊凶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拴念,更是在濱河造成了極大的恐慌钧萍,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丈莺,死亡現(xiàn)場(chǎng)離奇詭異划煮,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)缔俄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)弛秋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人俐载,你說(shuō)我怎么就攤上這事蟹略。” “怎么了遏佣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵挖炬,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我状婶,道長(zhǎng)意敛,這世上最難降的妖魔是什么馅巷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮草姻,結(jié)果婚禮上钓猬,老公的妹妹穿的比我還像新娘。我一直安慰自己撩独,他們只是感情好敞曹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著综膀,像睡著了一般澳迫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上剧劝,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天橄登,我揣著相機(jī)與錄音,去河邊找鬼担平。 笑死示绊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暂论。 我是一名探鬼主播面褐,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼取胎!你這毒婦竟也來(lái)了展哭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闻蛀,失蹤者是張志新(化名)和其女友劉穎匪傍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體觉痛,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡役衡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了薪棒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片手蝎。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖俐芯,靈堂內(nèi)的尸體忽然破棺而出棵介,到底是詐尸還是另有隱情,我是刑警寧澤吧史,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布邮辽,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏吨述。R本人自食惡果不足惜岩睁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锐极。 院中可真熱鬧笙僚,春花似錦芳肌、人聲如沸灵再。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翎迁。三九已至,卻和暖如春净薛,著一層夾襖步出監(jiān)牢的瞬間汪榔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工肃拜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痴腌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓燃领,卻偏偏與公主長(zhǎng)得像士聪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猛蔽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容