Neural Collaborative Filtering
文中指出雖然之前有一些工作使用deep learning來解決推薦問題,但這些工作基本上使用deep learning來對輔助信息建模,對于協(xié)同過濾的關(guān)鍵信息——user和item的交互信息,之前的工作仍然使用矩陣分解(MF),將users和items映射到一個(gè)共享的隱空間,然后對users和items的latent feature做內(nèi)積。
用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)代替內(nèi)積操作,可以從數(shù)據(jù)中學(xué)到任意函數(shù),基于此本文提出了NCF模型(Neural network-based Collavorative Filtering)。本文專注于利用隱反饋信息(implicit feedback, 如瀏覽、點(diǎn)擊等行為;explicit feedback指評分、評論等行為)。
Learning from Implicit Data
有M個(gè)users, N個(gè)items。user-item交互矩陣Y(M * N維,反應(yīng)了用戶的隱反饋信息)定義為,

yu,i = 1只能說明用戶u和物品i有交互,并不能說明用戶u喜歡物品i;同樣的,yu,i = 0不能說明用戶u不喜歡物品i。
在這種情況下,觀察到的數(shù)據(jù)至少能從一定程度上反應(yīng)用戶的興趣,而未觀察到的數(shù)據(jù)只能視為missing data,這就導(dǎo)致了負(fù)反饋的缺乏。
隱反饋推薦問題就是要估計(jì)Y中未觀測物品的score,然后以此來對物品排序。(再次強(qiáng)調(diào),這種應(yīng)用場景下,對于以點(diǎn)擊或?yàn)g覽的物品是不知道用戶是否喜歡的)
問題可以描述為學(xué)習(xí)下式,

y^u,i為交互yu,i的預(yù)測score,Θ為模型參數(shù),f為映射函數(shù)。
文中提到優(yōu)化目標(biāo)參數(shù),一般有兩種目標(biāo)函數(shù):pointwise loss和pairwise loss。pointwise loss通常用于回歸框架,最小化y^u,i和yu,i的squared loss。對于缺乏negative data問題,將所有的未觀測數(shù)據(jù)視為負(fù)反饋,或者從未觀測數(shù)據(jù)中采樣negative instances。
pairwise learning中,觀測到的數(shù)據(jù)應(yīng)該排在未觀測數(shù)據(jù)的前面,因此最大化y^u,i和yu,i的邊界。
NCF支持pointwise和pairwise learning兩者。
Matrix Factorization
pu表示用戶u的latent vector,qi表示物品i的latent vector,MF使用pu和qi的內(nèi)積來估計(jì)y^u,

K表示latent space的維度。MF可以看作是latent factor的線性模型。

上圖說明了MF的局限性。對于user-item矩陣(a),u4與u1最相似,接下來是u3,最后才是u2。而在latent space (b)中,使p4更靠近p1會使p4更靠近p2而不是p3,這會增大ranking loss。
可以增大K來解決這個(gè)問題,但會降低模型的泛化能力,可能導(dǎo)致過擬合。
本文使用深度神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)這種交互關(guān)系。
NEURAL COLLABORATIVE FILTERING

最底下的input layer包括兩個(gè)特征向量,分別描述用戶u和物品i,它們可以根據(jù)具體問題具體定制。在本文中,用戶u和物品i的one-hot作為輸入。
上面是embedding layer,采用全連接,將稀疏的input映射成稠密的embedding(user和item的embedding都是k維)。
user和item的embedding向上進(jìn)入全連接的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),稱為neural collaborative filtering layers,將latent vector映射成預(yù)測的score。(對于不同的問題,這里的每一層layer也是可以定制的)
layer X的維度決定了模型的capability。
通過最小化y^u,i和yu,i的pointwise loss來訓(xùn)練模型。(文中提到另一種訓(xùn)練模型的方法,使用pairwise learning,比如使用Bayesian Personalized Ranking和margin-based loss,但文中后面部分使用的是pointwise loss)
整個(gè)預(yù)測模型可以表示為,

P(M * K維)和Q(N * K維)分別表示users和items的latent factor matrix,Θf為模型參數(shù)。
f被定義為一個(gè)多層神經(jīng)網(wǎng)絡(luò),因此可以表示為,

φout表示輸出層映射,φx表示第x層的映射,共X層。
Learning NCF
大多數(shù)的pointwise方法將損失函數(shù)定義為,

y表示Y中觀測到的交互關(guān)系集合,y-表示負(fù)樣本集合(可以是所有的未觀測交互,也可以是從中采樣的一部分)。wui是一個(gè)超參數(shù),表示實(shí)例(u,i)的權(quán)重。使用squared loss可以解釋為假設(shè)觀測數(shù)據(jù)由一個(gè)高斯分布產(chǎn)生。
本文指出,對于implicit data,這種方式并不是特別合適。因?yàn)樵趇mplicit data中,目標(biāo)值yu,i是binary的,表示用戶u是否和物品i產(chǎn)生過交互。
本文提出了一種針對于implicit data的binary性質(zhì)的損失函數(shù)。
用yu,i表示物品i與用戶u相關(guān),0表示不相關(guān),預(yù)測score y ^ u,i表示物品i和用戶u相關(guān)的程度。y ^ u,i的值在[0,1]之間,因此在output layer可以用sigmoid。
于是,定義likelihood為

損失函數(shù)為

(其實(shí)就是交叉熵)
用SGD進(jìn)行優(yōu)化。
對于負(fù)樣本y-,在SGD的每次迭代中從未觀測的數(shù)據(jù)中均勻采樣,采樣的數(shù)量與觀測數(shù)據(jù)的數(shù)量相關(guān)。(文中提到一些非均勻采樣策略可能會有更好的表現(xiàn))
Generalized Matrix Factorization (GMF)
從NCF的角度來解釋MF。pu表示用戶u的embedding,qi表示物品i的embedding。將NCF的第一層定義為哈達(dá)瑪積

然后將得到的向量映射到輸出層

aout表示激活函數(shù),h表示權(quán)重向量。如果令aout為identity function(即y=x),令h為全1的向量,那么就得到了MF模型(相當(dāng)于對pu和qi求內(nèi)積)。
在NCF的框架下,MF可以被泛化和拓展。比如令h由數(shù)據(jù)學(xué)到,或者令aout為非線性函數(shù)。
文中,作者提出了GMF(Generalized Matrix Factorization)模型,令aout為sigmoid函數(shù),令h從數(shù)據(jù)中學(xué)到,并使用log loss。
Multi-Layer Perceptron (MLP)
文中指出整合user和item的latent feature,如果僅僅是簡單的concatenate(向量stacking),或者像GMF中那樣,使用固定的element-wise product(哈達(dá)瑪積),不能充分反映兩者的交互關(guān)系。因此,文中提出在concatenate后,用MLP來學(xué)習(xí)它們的交互關(guān)系。

可以看到,第一層簡單的把兩者stacking起來,之后由MLP來進(jìn)行特征整合,最后將整合得到的向量和每一維的權(quán)重向量h(由模型學(xué)習(xí)得到)相乘,再做sigmoid得到輸出。
文中提出tower pattern的效果比較好,即下面的hidden層單元多,上面的hidden層單元少。文中使用的是,每上去一層,減半hidden層中的單元數(shù)。
Fusion of GMF and MLP
考慮將GMF和MLP結(jié)合起來,更好的對復(fù)雜的user-item關(guān)系建模。
最簡單最直接的方式就是讓GMF和MLP共享同一個(gè)embedding layer,然后將兩者的output結(jié)合起來。舉個(gè)例子,結(jié)合GMF和一層MLP的模型如下

然而,讓GMF和MLP共享embedding可能會限制融合模型的表現(xiàn)。比如說,這隱含了GMF和MLP必須有相同size的embedding。對于一些數(shù)據(jù)集,可能兩者選擇各自合適的embedding size會更好,這時(shí)候這種組合方式就不能夠獲得特別好的表現(xiàn)了。
為了能夠更加靈活的結(jié)合兩個(gè)模型,我們讓GMF和MLP學(xué)習(xí)各自的embedding,結(jié)合兩個(gè)模型通過整合各自最后的hidden layer。


pGu表示GMF部分的user embedding,pMu表示MLP部分的user embedding。
qGi表示GMF部分的item embedding,qMi表示MLP部分的item embedding。
在MLP部分,使用relu作為激活函數(shù)。
該模型結(jié)合了MF的線性和DNN的非線性,作者給其起名為NeuMF(Neural Matrix Factorization)。
模型參數(shù)的學(xué)習(xí)可以用標(biāo)準(zhǔn)的back-pop。
Pre-training
NeuNF的目標(biāo)函數(shù)是非凸的,因此基于梯度的優(yōu)化方法只能找到局部最優(yōu)解。文中提出通過預(yù)訓(xùn)練GMF和MLP來初始化NeuMF。
首先隨機(jī)初始化GMF和MLP來訓(xùn)練,直到收斂,然后用這些模型參數(shù)來初始化NeuMF中的相關(guān)部分。在output layer,整合兩個(gè)模型的權(quán)重為

hGMF和hMLP分別表示預(yù)訓(xùn)練的GMF和MLP模型中的h。α是一個(gè)超參數(shù)。
具體的,預(yù)訓(xùn)練GMF和MLP時(shí),使用了Adam,將模型參數(shù)輸入到NeuMF做fine-tuning時(shí),用SGD(因?yàn)锳dam需要?jiǎng)恿啃畔?,而做完預(yù)訓(xùn)練后只保留了參數(shù),沒有保留動量相關(guān)信息)。