摘要
處理非線性特征的廣義線性模型在高維稀疏輸入的回歸和分類(lèi)問(wèn)題中被廣泛使用的倍奢。
通過(guò)cross-product特征模型具有很好的可解釋性七芭,但意味著特征工程的工作量非常巨大片习。使用很少的特征匪凉,深度學(xué)習(xí)網(wǎng)絡(luò)通過(guò)低維向量embeddings操作后會(huì)比大量特征產(chǎn)生更好的效果枪眉。不過(guò),在用戶交互稀疏和高排名的情況下再层,使用embedding的深度學(xué)習(xí)網(wǎng)絡(luò)可能高度概括特征信息贸铜,使得推薦相關(guān)性較小的item 給用戶。
在這篇文章中聂受,我們提出了wide&deep學(xué)習(xí)框架 —一起訓(xùn)練廣度線性模型和深度線性模型 在推薦系統(tǒng)中同時(shí)發(fā)揮模型的記憶和概括的優(yōu)勢(shì)
核心概念
機(jī)器學(xué)習(xí) 神經(jīng)網(wǎng)絡(luò) 監(jiān)督學(xué)習(xí) 信息系統(tǒng) 推薦系統(tǒng)
關(guān)鍵詞
wide & deep learning 推薦系統(tǒng)
1.前言
推薦系統(tǒng)可以被看做是搜索排序系統(tǒng)蒿秦,輸入是用戶和上下文信息,輸出是items的排序
考慮一個(gè)query 推薦系統(tǒng)的任務(wù)是在數(shù)據(jù)庫(kù)中找到相關(guān)的items蛋济,然后基于某種指標(biāo)棍鳖,比如點(diǎn)擊率和購(gòu)買(mǎi)率去排序items。
推薦系統(tǒng)的一個(gè)難點(diǎn)和通常搜索排序問(wèn)題相同瘫俊,如何實(shí)現(xiàn)記憶和概括功能鹊杖。
記憶功能 粗略的被定義為學(xué)習(xí)頻繁相關(guān)的items悴灵、特征,在歷史數(shù)據(jù)中能夠利用這些相關(guān)性骂蓖。
概括功能 基于記憶功能的相關(guān)傳遞性去探索在過(guò)去沒(méi)有出現(xiàn)過(guò)积瞒、出現(xiàn)過(guò)很少的新特征。
基于記憶功能的推薦系統(tǒng)通常和用戶表現(xiàn)過(guò)過(guò)行為具有直接相關(guān)性和主題性登下。相比較記憶功能茫孔,概括功能*傾向于提高推薦系統(tǒng)的多樣性。
paper中被芳,我們聚焦谷歌軟件商城的推薦問(wèn)題缰贝,不過(guò)我們的方法應(yīng)該是能被應(yīng)用到廣泛的推薦系統(tǒng)中。
對(duì)于大部分工業(yè)界在線推薦和排序系統(tǒng)畔濒,廣義線性模型比如邏輯回歸被廣泛應(yīng)用剩晴,因?yàn)閘r是簡(jiǎn)單、擴(kuò)展性強(qiáng)侵状、可解釋強(qiáng)赞弥。線性模型經(jīng)常使用one-hot編碼 訓(xùn)練二值化稀疏特征。比如趣兄,特征user_installed_app=netflix 如果安裝 value 1
在稀疏特征使用cross-product 能有效實(shí)現(xiàn)記憶功能
比如說(shuō)user_installed_app=netflix, impression_app=pandora”
如果用戶安裝netflix 的value 是1绽左,就會(huì)推薦pandora
這個(gè)很好的解釋了共現(xiàn)的特征點(diǎn)對(duì)和目標(biāo)標(biāo)簽的關(guān)系。
概括功能 可以使用粒度較小的特征 加入
比如特征user_installed_category=video, impression_category=music
但是需要很多人工特征工程艇潭。
cross-product(向量?jī)?nèi)積拼窥,叉乘) 轉(zhuǎn)換 的局限性是它不能概括在訓(xùn)練數(shù)據(jù)中沒(méi)有出現(xiàn)query-items 特征點(diǎn)對(duì)。
embeddings-based的模型蹋凝,比如因子分解和深度學(xué)習(xí)網(wǎng)絡(luò)鲁纠,在很小的特征工程量,通過(guò)學(xué)習(xí)低維緊湊embedding向量后能概括沒(méi)有出現(xiàn)查詢特征點(diǎn)對(duì)仙粱。然而房交,當(dāng)?shù)讓拥膓uery-items 矩陣稀疏和高排序,比如具有特定偏好的用戶以及吸引力較小的items伐割,學(xué)習(xí)query和items的有效低維表示形式是非常困難的候味。
在這種cases中,大部分query-items 之前是沒(méi)有交互關(guān)系的隔心,但是embedding會(huì)導(dǎo)致非0 預(yù)測(cè)這些關(guān)系白群,因此會(huì)過(guò)度概括和推薦不相關(guān)的items。從另一方面說(shuō)硬霍,使用cross-product 轉(zhuǎn)換的線性模型使用更少的參數(shù)就能記住這些規(guī)則帜慢。
paper中,我們提出wide&deep learning 框架在一個(gè)模型中去實(shí)現(xiàn)記憶和概括功能,通過(guò)一起訓(xùn)練線性和深度模型粱玲,如圖
這篇文章的主要貢獻(xiàn)是:
1躬柬、wide & deep learning 框架 :一起訓(xùn)練 使用embedding 的深度網(wǎng)絡(luò)和使用特征轉(zhuǎn)換的線性模型
2、實(shí)現(xiàn)和評(píng)估wide&deep 推薦系統(tǒng)在谷歌pay 上的表現(xiàn)
3.抽减、在開(kāi)源 TensorFlow 中提高高可用的API
idea 是非常簡(jiǎn)單的允青,我們展示wide& deep框架顯著提高了app 的下載量
2.推薦系統(tǒng)前言
一般app 推薦系統(tǒng)如圖展示,一個(gè)查詢卵沉,包含各種用戶和上下文信息颠锉,這些信息都是用戶瀏覽app stores 產(chǎn)生的。推薦系統(tǒng)返回一組apps 列表史汗,
這些用戶行為琼掠,伴隨著查詢和展示信息,會(huì)被記錄在日志中 作為訓(xùn)練數(shù)據(jù)
數(shù)據(jù)庫(kù)中存儲(chǔ)了數(shù)百億的apps停撞,在10ms 以內(nèi)對(duì)這次查詢所有的結(jié)果打分是非常困難的瓷蛙。因此第一步 是接收到查詢后檢索,基于不同的指標(biāo)(比如機(jī)器學(xué)習(xí)和自定義指標(biāo))怜森,檢索系統(tǒng)返回匹配的list -items速挑。降低候選集后谤牡,排序系統(tǒng)通過(guò)打分排序items副硅。評(píng)分是P(y|x),給定特征x,用戶行為y 標(biāo)簽的概率翅萤。特征x包含用戶信息(城市恐疲、語(yǔ)言),上下文(hour套么,week培己、設(shè)備),展示信息(app age胚泌,APP的歷史統(tǒng)計(jì)信息)省咨。這篇paper ,我們聚焦使用wide&deep的排序系統(tǒng)玷室。
3零蓉、wide&deep learning
3.1 the wide component
wide component 是一個(gè)廣義線性模型:
,
y是target穷缤,x是 特征向量敌蜂,w是model 參數(shù),b是bias津肛。特征集合包含原始輸入和轉(zhuǎn)換特征章喉。轉(zhuǎn)換特征最重要的部分是交叉轉(zhuǎn)換
cki 是bool值,1代表第i-th特征是k-th 的一部分
比如AND(gender=female, language=en
只有特征都為1,φk(x) 為1
這種特征cross-product秸脱,增加了非線性關(guān)系到廣義線性模型落包。
3.2 the deep component
the deep component 是一個(gè)前饋的神經(jīng)網(wǎng)絡(luò),如圖所示摊唇,對(duì)于categorical features原始輸入是 string 類(lèi)型妥色,高維稀疏的categorical features 首先轉(zhuǎn)換成低維緊密的向量,經(jīng)常提到是embedding vector遏片,embedding的維數(shù) 從100到10嘹害,embedding的維數(shù)首先隨機(jī)初始化,然后在訓(xùn)練過(guò)程中被訓(xùn)練到最小的誤差吮便。低維的embedding vector 喂到隱藏層笔呀,特別的,每個(gè)隱藏層的計(jì)算公式是:l 是層數(shù)髓需,f是激活函數(shù)许师,通常是relu函數(shù) ,a 僚匆、b微渠、w 是神經(jīng)元 、偏差 和權(quán)重
3.3 交叉訓(xùn)練wide&deep model
The wide component and deep component 使用權(quán)重相加log(輸出)作為預(yù)測(cè)值咧擂,然后喂到邏輯回歸逞盆。值得注意的是,joint training and ensemble 的區(qū)別松申。在ensemble 中云芦,單個(gè)模型的訓(xùn)練是分開(kāi)的,他們的預(yù)測(cè)值在最后combine 贸桶。相反舅逸,joint training 優(yōu)化所有參數(shù)通過(guò)一起訓(xùn)練wide和deep part 。這在model size 也暗示了皇筛,對(duì)于ensemble 琉历,因?yàn)橛?xùn)練是分開(kāi)的,所以單個(gè)model size 比較大水醋。相反的是旗笔,對(duì)于wide&deep ,交叉訓(xùn)練使得wide部分僅僅只需要deep part 比較不善于處理的 cross-product 轉(zhuǎn)換信息离例,而不是全部size的特征集合换团。
wide&deep 的訓(xùn)練時(shí)候使用mini-batch 去優(yōu)化。在實(shí)驗(yàn)中宫蛆,使用FTRL 算法(L1正則化艘包、adaGrad)去訓(xùn)練deep
model的公式如下描述
Y是二值標(biāo)簽的猛,最終使用SIGMOD函數(shù)。
4.系統(tǒng)實(shí)現(xiàn)
app推薦pipline 的實(shí)現(xiàn)有三個(gè)部分組成:數(shù)據(jù)生成想虎、模型訓(xùn)練卦尊、模型服務(wù)
4.1 數(shù)據(jù)生成
這個(gè)環(huán)節(jié),用戶和app 一段時(shí)間內(nèi)的展示信息生成訓(xùn)練數(shù)據(jù)舌厨。比如label:app 安裝岂却,app 沒(méi)有安裝
將string類(lèi)型的特征轉(zhuǎn)換成整數(shù)類(lèi)型也是這個(gè)環(huán)節(jié),系統(tǒng)計(jì)算ID 空間裙椭。連續(xù)特征標(biāo)準(zhǔn)化到【0躏哩,1】
4.2 模型訓(xùn)練
模型結(jié)構(gòu)如圖四所示,在訓(xùn)練過(guò)程中揉燃,我們的輸入層的輸入是string特征和one-hot特征扫尺。wide部分 包含交叉信息。對(duì)于deep part 炊汤,32維的embedding vector從categorical 特征學(xué)習(xí)到正驻。我們連接所有embedding vector ,大概1200維抢腐,然后喂到3層relu 層姑曙,最后邏輯回歸輸出。
wide&deep model使用500億的樣本訓(xùn)練迈倍,每次新的樣本集伤靠,model 需要重新訓(xùn)練。每次重新訓(xùn)練模型是非常昂貴的授瘦,更新模型需要時(shí)間醋界。為了克服,我們實(shí)現(xiàn)了一個(gè)熱啟動(dòng)系統(tǒng)提完,初始化新模型
使用模型前,需要驗(yàn)證
4.3 模型服務(wù)
模型訓(xùn)練和驗(yàn)證后丘侠,我們加載模型到模型服務(wù)中徒欣。對(duì)于每次請(qǐng)求,服務(wù)接收到app檢索系統(tǒng)返回過(guò)來(lái)的候選集和用戶特征 蜗字,然后評(píng)分打肝。系統(tǒng)按分?jǐn)?shù)從高到低排序,然后展示給用戶挪捕,分?jǐn)?shù)由 wide&deep 模型給出粗梭。
為了響應(yīng)10ms 的請(qǐng)求,我們使用多線程并行運(yùn)行優(yōu)化性能级零。
5.實(shí)驗(yàn)結(jié)果
為了評(píng)估wide&deep在真實(shí)推薦系統(tǒng)的效果断医,我們?cè)诰€實(shí)驗(yàn)了模型和系統(tǒng)滞乙,指標(biāo)是:app 下載率和系統(tǒng)性能。
5.1 app 下載
我們比較在3周內(nèi)的A/B 測(cè)試結(jié)果鉴嗤。對(duì)于每個(gè)組斩启,1%的用戶被隨機(jī)選擇和展示排序結(jié)果,在實(shí)驗(yàn)中
wide%deep 比wide 提升了3.9%的下載率醉锅。
在表中還展示了離線的AUC兔簇。
wide&deep 在AUC 上面表現(xiàn)略好,在線流量中表現(xiàn)突出硬耍÷⑺觯可能原因是,離線的數(shù)據(jù)集合都是固定的经柴,在線系統(tǒng)能夠高度概括從新用戶中學(xué)習(xí)到的特征此虑。
5.2 服務(wù)性能
使用了多線程并發(fā) 和切分?jǐn)?shù)據(jù) 去提高響應(yīng)時(shí)間
6.相關(guān)工作
wide和deep 整合idea 來(lái)源因子分解機(jī)
在nlp 中,一起訓(xùn)練rnn 和最大信息熵模型已經(jīng)被提出口锭,來(lái)較低rnn 的復(fù)雜度朦前。在計(jì)算視覺(jué)中,殘差網(wǎng)絡(luò)用來(lái)降低訓(xùn)練難度和提高準(zhǔn)確率鹃操,一起訓(xùn)練的圖神經(jīng)網(wǎng)絡(luò)已經(jīng)被運(yùn)用到人類(lèi)姿勢(shì)識(shí)別中韭寸。在我們的工作中,我們一起訓(xùn)練前饋神經(jīng)網(wǎng)絡(luò)和線性模型荆隘。
在推薦系統(tǒng)的文獻(xiàn)中恩伺,有人探索了協(xié)同深度學(xué)習(xí),通過(guò)一個(gè)系統(tǒng)過(guò)濾矩陣和上下文信息并且在appJoy 中應(yīng)用椰拒。不同他們的工作晶渠,我們提出了wide&deep
結(jié)論
記憶和概括功能在推薦系統(tǒng)都非常重要,wide線性模型能有效記憶稀疏特征通過(guò)叉積轉(zhuǎn)換的信息燃观,同時(shí)deep 深度模型能夠概括之前沒(méi)有出現(xiàn)過(guò)特征褒脯。我們提出了wide&deep學(xué)習(xí)框架整合兩個(gè)模型的長(zhǎng)處,我們生產(chǎn)評(píng)估了推薦系統(tǒng)的效果缆毁,在線實(shí)驗(yàn)中wide&deep 比純wide 和純deep 效果都要好番川。