Neural Collaborative Filtering閱讀筆記
動機
本篇論文是2017年IW3C2上的一篇論文。在當時深度神經網路已經在計算機視覺、自然語言處理等領域取得巨大成功,但是卻很少應用在推薦系統中。雖然當時也有一些工作採用深度學習來進行推薦,但它們主要是用用深度學習為輔助資訊建模,例如專案的文字描述等等。在涉及到協同過濾推薦演算法中使用者與物品的互動中,這些工作仍然使用矩陣分解並將使用者和物品的隱向量內積。由於隱向量內積這一方法過於簡單,難以發現使用者和物品之間更深的關係,對此,本篇論文提出了一種稱為NCF(Neural network based Collaborative Filtering)的通用框架,該框架可以從資料中學習任意函式,捕捉到更深層的使用者與物品之間的關係,具有很強的靈活性和表達能力。該框架主要針對隱反饋資料。
演算法
基本框架
NCF的框架如下圖所示,首先輸入的是使用者和物品的特徵向量(可以採用one-hot編碼),之後輸入經過Embedding層由稀疏的向量投影為稠密的向量,之後使用者的embedding和物品的embedding輸入到一個多層的神經網路結構中,最終輸出層輸出預測的分數。該演算法的核心就是學習到一個能挖掘出更深層的使用者和物品的關係的函式。
我們可以將該問題看做一個二分類問題,即預測某一個使用者與某一個物品是否會有互動,則該框架的損失函式為
其中集合\(\mathcal{Y}\)表示可以觀測到的資料,\(\mathcal{Y}^{-}\)表示缺失的資料,\(y^{ui}\)表示實際的資料,\(\hat{y}^{ui}\)
框架的三個例項化
框架的三個例項化(點選展開)
Generalized Matrix Factorization (GMF)
矩陣分解(MF)可以看作是NCF框架的一種特例,我們假設\(p_{u}\)為使用者的隱向量,\(q_{i}\)為物品的隱向量,神經協同過濾層的對映函式為
其中\(\bigodot\)表示兩個向量對應的元素相乘,將其輸入到output層
\(a_{out}\)表示的是啟用函式,h表示的是邊權重。如果我們設定\(a_{out}\)為恆等函式,h為元素都是1的均勻向量,那麼我們就可以準確地還原MF模型。
在本次工作中,我們使用sigmoid函式作為啟用函式\(a_{out}\)
Multi-Layer Perceptron (MLP)
在此方法中,我們將使用者向量\(p_{u}\)和物品向量\(q_{i}\)連線在一起,並且在連線的向量上新增隱藏層,使用MLP學習使用者和物品潛在特徵之間的互動。
其中\(W_{x},b_{x},a_{x}\)分別表示第x層的權重矩陣,偏置向量和啟用函式。啟用函式選擇ReLU,因為Sigmoid和tanh會出現梯度消失的問題。
Fusion of GMF and MLP(NeuMF)
在第三個例項化中,我們嘗試融合上述的GMF和MLP方法。因為對於GMF和MLP這兩個模型,它們的最佳embedding大小很可能有很大差別,如果強行讓它們的embedding大小相等,最終效果會較差。因此,我們允許這兩個模型分別學習它們的embedding層,並通過連線最後一個隱藏層來組合這兩個模型,如下圖。
方程如下
其中\(p^{G}_{u}\)和\(p^{M}_{u}\)分別表示GMF和MLP的使用者的embedding,同理\(q^{G}_{i}\)和\(q^{M}_{i}\)為GMF和MLP的物品的embedding。
我們可以使用預訓練的GMF和MLP模型去初始化融合後的模型,只需要調整h為
其中\(h^{GMF}\)和\(h^{MLP}\)分別表示預訓練好的GMF和MLP中的h,α是權衡兩個模型的超引數。
結果
作者提出三個問題,並且以回答作為本次實驗的結果。
- Q1:我們的NCF模型是否超越了當前最先進的隱反饋協同過濾方法?
- A1:在本文中的實驗中是的。本次選擇MovieLens和Pinterest資料集,使用HR和NDCG為評測標準,將本文中例項化的三個方法與ItemPop、ItemKNN、BPR、eALS方法相比,其中NeuMF,即MF和MLP的融合模型,取得了最好的結果。
- Q2:我們提出的優化框架如何為推薦系統工作?
- A2:我們將推薦任務轉為二分類任務,並且使用對數損失函式進行優化。由下圖實驗結果可以看出,初期隨著損失下降,我們的推薦系統性能上升,但是過多的訓練會出現過擬合現象,反而導致推薦效能下降。
- Q3:更深層的網路是否有助於學習使用者和物品互動資料?
- A3:通常情況下,更深層的網路可以帶來更好的推薦效能。如下圖所示,即使是具有相同能力的模型(文章中提到模型的能力由最後一個隱藏層的維度決定),通常來說,堆疊更多的層可以提高模型的效能。MLP-0代表沒有隱藏層。
展望
文章中提出了之後的工作會研究RNN在推薦系統中的應用,因為這篇文章已經是四年前的,所以會有些過時。那麼目前較為流行的Attention機制也應該可以應用在推薦系統中,之後我會找一些相關的文獻去閱讀。