經典論文閱讀(一)--NCF: Neural Collaborative Filtering

NCF是神經網絡版本的協同過濾,推薦算法的經典的方法之一。本文回顧一下NCF論文的要點。

摘要(What)

NCF是一種通用的框架,它可以表達和推廣矩陣分解。
爲了提升NFC的非線性建模能力,我們提出了使用多層感知機去學習用戶-項目之間交互函數(interaction function)。

引言(Why)

矩陣分解(MF):
將用戶和項目映射到共享潛在空間(shared latent space),使用潛在特徵向量(latent features),用以表示用戶或項目。這樣一來,用戶在項目上的交互就被建模爲它們潛在向量之間的內積。
已經有大量的工作致力於增強MF,,,還有將其(MF)擴展到因子分解機(factorization machines)

每個用戶和物品都被投射到潛在空間中,由隱向量表示。每個用戶-物品interaction的預測是通過對應的隱向量的點積計算出來的:
   y^ui=f(u,ipu,qi)=puTqi=k=1Kpukqik,    (2)\hat{y}_{u,i}=f(u,i|\bf{p}_{u},\bf{q}_{i})=\bf{p}_{u}^{T}\bf{q}_{i}=\sum\limits_{k=1}^{K}p_{uk}q_{ik},\ \ \ \ (2)
示例如圖:
在這裏插入圖片描述

MF的侷限性:

其性能可以被簡單選擇交互函數(內積)所阻礙。簡單地將潛在特徵的乘積線性組合的內積可能不足以捕捉用戶交互數據的複雜結構。

(2.2矩陣分解)MF模型是用戶和項目的潛在因素的雙向互動,它假設潛在空間的每一維都是相互獨立的並且用相同的權重將它們線性結合。因此,MF可視爲潛在因素(latent factor)的線性模型。
解決該問題的方法之一是使用大量的潛在因子 K (就是潛在空間向量的維度)。然而這可能對模型的泛化能力產生不利的影響(e.g. 數據的過擬合問題),特別是在稀疏的集合上。在本文的工作中,我們通過使用DNNs從數據中學習交互函數,突破了這個限制。

主要貢獻

  1. 我們提出了一種神經網絡結構來模擬用戶和項目的潛在特徵,並設計了基於神經網絡的協同過濾的通用框架NCF。

  2. 我們表明MF可以被解釋爲NCF的特例,並利用多層感知器來賦予NCF高水平的非線性建模能力。

  3. 我們對兩個現實世界的數據集進行廣泛的實驗,以證明我們的NCF方法的有效性和對使用深度學習進行協作過濾的承諾。

3. 神經協同過濾(How)

我們首先提出的總體框架NCF,闡述NCF如何學習強調了隱式數據的二進制屬性的概率模型。然後,我們展示了,MF能夠表達爲NCF 的推廣(MF矩陣分解模型是NCF的一個特例)。我們探索DNNs在協同過濾上的應用,提出了NCF的一個實例,它採用了多層感知器(MLP)來學習用戶-項目交互函數。最後,我們在NCF框架下結合了MF和MLP,提出了一種新的神經矩陣分解模型(neural matrix factorization model);它統一了在建模用戶項目潛在結構方面,MF的線性建模優勢和MLP的非線性優勢。

3.1 通用框架

在這裏插入圖片描述

用損失函數來學習:

均方誤差不適合處理隱性數據(implicit data)。這是因爲對於隱含數據來說,目標值 yui 是二進制值1或0,表示 u 是否與 i 進行了互動。
爲了賦予NCF這樣的概率解釋,我們需要將網絡輸出限制到[0,1]的範圍內,通過使用概率函數(e.g. 邏輯函數sigmoid或者probit函數)作爲激活函數作用在輸出層 ϕout,這樣一來預測分數 yˆui 就代表了項目 i 和用戶 u 相關的可能性大小。
定義似然函數:
    p(y,yP,Q,Θf)=(u,i)yy^ui(u,i)y(1y^ui)p(\bf{y},\bf{y^{-}}|{\bf P},{\bf Q},\Theta_f)=\prod_{(u,i)\in\bf{y}}\widehat{y}_{ui}\prod_{(u,i)\in\bf{y}^{-}}(1-\widehat{y}_{ui})

對似然函數取負對數(負對數可以用來表示Loss函數,而且還能消除小數乘法的下溢出問題),我們得到:

L=(u,i)ylogy^ui(u,i)ylog(1y^ui)=(u,i)yyyuilogy^ui+(1yui)log(1y^ui)L=-\sum\limits_{(u,i)\in\bf{y}}\log\widehat{y}_{ui}-\sum\limits_{(u,i)\in\bf{y}^{-}}\log(1-\widehat{y}_{ui}) = - \sum\limits_{(u,i)\in\bf{y}\cup\bf{y}^{-}}y_{ui}\log\widehat{y}_{ui}+(1-y_{ui})\log(1-\widehat{y}_{ui})

這是NCF方法需要去最小化的目標函數,並且可以通過使用隨機梯度下降(SGD)來進行訓練優化。可以看出,這個函數和二元交叉熵損失函數(binary cross-entropy loss,又被成爲log loss)是一樣的。通過在NCF上使用這樣一個概率處理(probabilistic treatment),我們把隱性反饋的推薦問題當做一個二分類問題來解決。

對於消極實例 y− ,我們在每次迭代均勻地從未觀察到的相互作用中採樣(作爲消極實例)並且對照可觀察到交互的數量,控制採樣比率。雖然非均勻採樣策略(例如,基於項目流行度進行採樣)可能會進一步提高模型性能,我們將這方面的探索作爲今後的工作。

3.2 廣義矩陣分解

現在來證明MF是如何被解釋爲我們的NCF框架的一個特例。

由於輸入層是用戶(項目)ID中的一個one-hot encoding編碼,所獲得的嵌入向量可以被看作是用戶(項目)的潛在向量。我們用 PTvuU{\bf{P}}^{T}{\bf{v}}_u^U 表示用戶的潛在向量 pu{\bf{p}}_{u}QTviI{\bf{Q}}^{T}{\bf{v}}_i^I 表示項目的潛在向量qi{\bf{q}}_{i}

我們定義第一層神經CF層的映射函數爲:
      ϕ1(pu,qi)=puqi,(8)\phi_{1}\left({\bf{p}}_{u},{\bf{q}}_{i}\right)={\bf{p}}_{u}\odot{\bf{q}}_{i}, \qquad\quad\quad (8)

其中\odot表示向量的逐元素乘積。然後,我們將向量映射到輸出層:
     y^ui=aout(hT(puqi)),    (9)\widehat{y}_{ui}=a_{out}\left({\bf h}^{T}\left({\bf{p}}_{u}\odot{\bf{q}}_{i} \right)\right),\ \ \ \ (9)

其中 aouta_{out}h{\bf h} 分別表示輸出層的激活函數和連接權。直觀地講,如果我們將 aouta_{out} 看做一個恆等函數,h{\bf h}權重全爲1,顯然這就是我們的MF模型

(就是說,首先用乘法層替換神經 CF 層,乘法層對兩個輸入執行元素級的乘法。然後利用線性激活函數,將乘法層到輸出層的權值設爲 K×1 維的固定單位矩陣。)這裏 有同學補充了原文沒有的這個圖:
在這裏插入圖片描述
上圖來自:
https://towardsdatascience.com/paper-review-neural-collaborative-filtering-explanation-implementation-ea3e031b7f96

在NCF的框架下,MF可以很容易地被泛化和推廣。
如果我們用一個非線性函數aouta_{out},將進一步推廣MF到非線性集合,使得模型比線性MF模型更具有表現力。在本文的工作中,我們在NCF下實現一個更一般化的MF,它使用Sigmoid函數作爲激活函數,通過log loss(第3.1.1節)學習h{\bf h}。我們稱它爲GMF(Generalized Matrix Factorization,廣義矩陣分解)

3.3 多層感知機

簡單地對向量的連接不足以說明用戶和項目之間的潛在特徵,這對協同過濾建模來說是不夠的。爲了解決這個問題,我們提出在向量連接上增加隱藏層,使用標準的MLP(多層感知機)學習用戶和項目潛在特徵之間的相互作用。在這個意義上,我們可以賦予模型高水平的靈活性和非線性建模能力,而不是GMF(廣義矩陣分解)那樣的簡單使用逐元素相乘的內積來描述用戶和項目之間的潛在交互特徵。

激活函數選擇ReLU,它更具生物合理性(biologically plausible),並且已經被證明不會導致過飽和;此外,它支持稀疏的激活(sparse activations),非常適合稀疏的數據,使模型不至於過擬合。我們的實驗結果表明,ReLU的表現略好於雙曲正切函數tanh和sigmoid。

至於網絡結構的設計,一種常見的解決方案是設計一個塔式模型,其中,底層是最寬的,並且每個相繼的層具有更少的神經元數量。通過在更高層使用少量的隱藏單元,它們可以從數據中學習到更多的抽象特徵(K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In CVPR, 2016.)。

3.4 結合GMF和MLP

GMF,它應用了一個線性內核來模擬潛在的特徵交互;MLP,使用非線性內核從數據中學習交互函數。
如何能夠在NCF框架下融合GMF和MLP,使他們能夠相互強化,以更好地對複雜的用戶-項目交互建模?
一個直接的解決方法是讓GMF和MLP共享相同的嵌入層(Embedding Layer),然後再結合它們分別對相互作用的函數輸出。
     y^ui=σ(hTa(puqi)+W[puqi]+b).    (11)\widehat{y}_{ui}=\sigma({\bf h}^{T}a({\bf p}_u\odot{\bf q}_i)+{\bf W}\begin{bmatrix}{{\bf p}_u}\\{{\bf q}_i}\end{bmatrix}+{\bf b}).\ \ \ \ (11)

這意味着,GMF和MLP必須使用的大小相同的embedding。對於數據集,兩個模型的最佳嵌入尺寸差異很大,使得這種解決方案可能無法獲得最佳的組合。

爲了使得融合模型具有更大的靈活性,我們允許GMF和MLP學習獨立的嵌入,並結合兩種模型通過連接他們最後的隱層輸出。

在這裏插入圖片描述

對於從頭開始訓練的 GMF 和 MLP ,我們採用自適應矩估計(Adam,Adaptive Moment Estimation)[20],它通過對不頻繁的參數進行頻繁和更大幅度的更新來適應每個參數的學習速率。Adam方法在兩種模型上的收斂速度都比普通SGD快,並緩解了調整學習率的痛苦。在將預先訓練的參數輸入NeuMF之後,我們用普通SGD而不是Adam進行優化。 這是因爲Adam需要保存更新參數的動量信息(momentum information)。因爲我們用預先訓練的模型參數初始化NeuMF,並且放棄保存動量信息,不適合用基於動量的方法進一步優化NeuMF。

評估方案。

爲了評價項目推薦的性能,我們採用了leave-one-out方法評估,該方法已被廣泛地應用於文獻[1,14,27]。即:對於每個用戶,我們將其最近的一次交互作爲測試集(數據集一般都有時間戳),並利用餘下的培訓作爲訓練集。由於在評估過程中爲每個用戶排列所有項目花費的時間太多,所以遵循一般的策略[6,21],隨機抽取100個不與用戶進行交互的項目,將測試項目排列在這100個項目中。排名列表的性能由命中率(HR)和歸一化折扣累積增益(NDCG)[11]來衡量。 沒有特別說明的話,我們將這兩個指標的排名列表截斷爲10。如此一來,HR直觀地衡量測試項目是否存在於前10名列表中,而NDCG通過將較高分數指定爲頂級排名來計算命中的位置。我們計算了每個測試用戶的這兩個指標,並求取了平均分。

實驗和性能

這部分略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章