本文出自Google请唱,是一篇介紹Google Mobile App Store 推薦系統(tǒng)的工程性文章空入。全文雖只有四頁(yè),但卻介紹了一個(gè)完整的推薦系統(tǒng)框架咖城,可為工程實(shí)踐茬腿、項(xiàng)目提供指導(dǎo)與借鑒。
原文地址:http://arxiv.org/abs/1606.07792
1. Introduction
Memorization 和 generalization 一直是推薦系統(tǒng)十分關(guān)注的問(wèn)題宜雀。所謂 memorization 就是基于用戶歷史數(shù)據(jù)切平,挖掘出頻繁出現(xiàn)的 item 或 feature。顯然辐董,基于 memorization 推薦的通常是那樣與用戶歷史行為數(shù)據(jù)局部相關(guān)或者直接相關(guān)的物品悴品。而 generalization 要是基于相關(guān)性之間的傳遞, 探索歷史上沒(méi)有出現(xiàn)的新的特征的組合,著眼于提高推薦的多樣性苔严。
1.1 Motivation
- binary feature 都是基于one-hot 編碼的定枷,這樣會(huì)使得所的的特征變得稀疏且高維。
- 不管是 memorization (細(xì)粒度的:
AND(user_installed_app=netflix, impression_app=pandora")
)還是 generization(粗粒度的:AND(user_installed_category=video,impression_category=music)
)都可以通過(guò)cross-product transformation 的方法獲得組合特征届氢。但這種基于特征的工程的人工構(gòu)造方法欠窒,耗時(shí)費(fèi)力。且不能產(chǎn)生訓(xùn)練數(shù)據(jù)集中沒(méi)有出現(xiàn)過(guò)的組合特征退子。** - 近年來(lái)岖妄,一些基于特征嵌入的模型(embedding-based model),如因子分解機(jī)和深度神經(jīng)網(wǎng)絡(luò)致力于訓(xùn)練低維稠密的向量來(lái)表示每一維特征寂祥。這樣便可以通過(guò)向量之間的關(guān)系(距離荐虐,角度,點(diǎn)積)等來(lái)間接衡量所有特征之間的關(guān)系壤靶。
因此缚俏,作者提出一種 基于 特征組合的 linear model 和 基于embedding 的 feed-forward networks 聯(lián)合訓(xùn)練互增強(qiáng)的框架。其具有很強(qiáng)的通用性贮乳,且能夠有效的解決輸入特征稀疏的問(wèn)題忧换。
2. Recommender System Overview
輸入(query):用戶/用戶的query請(qǐng)求
輸出(items):rank list
記錄(logs):用戶的操作:點(diǎn)擊,下載等(表明用戶喜好)
過(guò)濾(retrieval):當(dāng) item 數(shù)量很大時(shí)向拆,rank 將會(huì)是一個(gè)十分耗時(shí)的工作亚茬。為了解決這一問(wèn)題,會(huì)事先基于機(jī)器學(xué)習(xí)模型或人工定義的一些規(guī)則浓恳,篩選出最符合輸入要求的候選 items刹缝。
3. Wide & Deep Learning
3.1 The Wide Component
Wide component 說(shuō)白了就是一個(gè)廣義線性模型:
其中,x 是輸入的特征向量(d 維)颈将,w 是權(quán)重(d 維)梢夯, b 是偏置。
第 k 維的 transform feature 的構(gòu)造:
c_ki是示性函數(shù)晴圾,如果特征 i 在第 k 維 transform feature 中則為1颂砸, 否則為0。(顯然死姚,這是人工事先定義的組合特征)
3.2 The deep Component
Deep component 是一個(gè)前饋神經(jīng)網(wǎng)絡(luò)人乓,每個(gè)隱層的計(jì)算是:3.3 Joint Training of Wide & Deep Model
通過(guò)加權(quán)和將兩部分的輸出組合起來(lái)。
結(jié)合圖和公式都毒,可以發(fā)現(xiàn)色罚,模型的輸入特性包含兩類:
- Cross-product transformations (wide component)
- 由 Deep Neural Networks 將 categorial features 轉(zhuǎn)化成的 dense embedding vectors
在Wide這邊,作者們提出使用FTRL進(jìn)行優(yōu)化账劲,而在Deep這邊則使用了AdaGrad戳护。
至此金抡,模型已經(jīng)介紹完畢,關(guān)于模型的訓(xùn)練不在此贅述姑尺,感興趣的可以去tensorflow搜索本文模型的API竟终。
4. Wide & Deep Learning
- Data Generator:離散化,歸一化
- Model training:在這一模塊中所面臨的一項(xiàng)挑戰(zhàn)是:每當(dāng)有新數(shù)據(jù)到來(lái)是切蟋,模型就必須重新訓(xùn)練统捶。作者采用warm-starting 的方法加以解決:用上一模型的參數(shù)初始化新模型。
- Model Serving:多線程并行
5. 一些思考
- 引用博客里的一句話:
比較令人困惑的是柄粹,最終作者還是保留了Cross-Product Feature在Wide Model里喘鸟,并且所有Feature也都經(jīng)過(guò)了Deep Model的Transform。從學(xué)術(shù)上來(lái)講驻右,并沒(méi)有完全Justify最初為什么用Deep Model想要避免Feature Engineering的初衷什黑。