本文是2019年SIGIR的一篇文章。在推荐系统中,用户和物品的向量表示(embeddings)是推荐系统的核心,但目前的方法都是根据用户(物品)原有的特征通过映射获取embeddings,并没有将用户与物品交互中的潜在的协同信号编码进embeddings,因此产生的embeddings可能不足以支持捕获协同过滤效果。本文提出一种新的图神经协同过滤模型(NGCF),将协同信号显示地注入在用户物品的向量表示中。
在本文中,作者通过利用用户项目互动的高阶连通性解决上述问题。举个栗子来说明大致思路,左子图是用户与物品交互图,图中\(u_1\)是我们感兴趣的用户,以\(u_1\)为根节点将左图转换成树结构(右图),高阶连通性指的就是那些从任意节点到\(u_1\)且路径长度l大于1的节点,例如\(u_1⬅i_2⬅u_2\),这表示\(u_1\)和\(u_2\)行为相似,因为他们都对\(i_2\)产生过交互。
作者设计了一个嵌入传播层(基于GNN),通过聚合项目的embeddings来改进用户的embeddings,或者是聚合用户的embeddings来改进项目的embeddings。通过堆叠多个嵌入传播层来捕获高阶连接信息,例如,堆叠2层捕获\(u_1⬅i_2⬅u_2\)中用户的行为相似度,堆叠3层\(u_1⬅i_2⬅u_2⬅i_4\)发现潜在的推荐。
嵌入传播层由两个部分组成:信息构建和信息聚合。
信息构建:对于每一个用户项目交互对(u,i)来说,定义从i到u的数据为
\(m_{u⬅i}\)是信息嵌入,也是之后需要传播的信息。在本篇\(f(·)\)是编码函数,\(e_i\)和\(e_u\)分别是物品与用户的embedding,作为输入。\(p_{ui}\)是衰减因子。在本篇论文中,作者使用以下编码函数
\(W_1\),\(W_2∈\mathbb{R}^{d'×d}\)是可以训练的权重矩阵,用于提取有用信息,\(\odot\)表示向量对应元素相乘。根据图卷积神经网络,将\(p_{ui}\)设为\(1 / \sqrt{\left | \mathcal{N_u} \right | \left | \mathcal{N_i} \right |}\),其中\(\mathcal{N_u}\)和\(\mathcal{N_u}\)代表用户u和物品i的第一跳邻居。我们也可以用相同的方法获得u到i的信息\(m_{i⬅u}\)
信息聚合:定义优化后u的信息表示为
\(e^{(1)}_u\)表示在第一个嵌入传播层后用户u的表示,其中\(m_{i⬅u}=W_1e_u\)。它不仅考虑到用户自己与自己的连接,还考虑到邻居传播的信息。我们也可以用同样的方法得到优化后的物品表示\(e^{(1)}_i\).
通过堆叠l个嵌入传播层,用户和物品能接收到l跳邻居传播的信息,在第l层中,用户表示为
消息传播表示为
通过L个嵌入传播层,我们可以将L个嵌入传播层得到的用户(物品)表示连接起来作为它们最终的embedding
最后,使用内积计算用户对项目的偏好度
在这里,作者通过优化成对的BPR损失来学习模型,损失函数定义如下
其中,\(\mathcal{R}^+\)表示可以观测到的交互,\(\mathcal{R}^-\)表示观测不到的交互,\(\Theta\)表示所有可以训练的参数。
与NGCF相关的工作有基于模型的协同过滤方法,基于图结构的协同过滤方法和图卷积网络。基于模型的协同过滤模型利用用户物品交互矩阵,将用户与物品的id投影到一个embedding中,早期工作是利用用户和物品的embedding内积计算用户对物品的偏好度,近期有许多工作使用非线性的深度神经网络作为交互函数,尽管这类方法取得成功,但是嵌入函数的设计不足以产生优秀的embedding。基于图结构的协同过滤方法本质上属于基于邻居的方法,它缺乏模型参数来优化目标函数,在概念上不如基于模型的协同过滤方法。最近提出的HOP-Rec将基于图的方法与基于嵌入的方法相结合来缓解这个问题,但是HOP-Rec没有充分探索高阶连通性,并且极大程度依赖随机游走的结果。最后是图卷积网络,作者在本文中提出的NGCF就属于图卷积网络方法中的一种,另外还有一些其他应用到图卷积网络的工作,GC-MC使用一个卷积层利用用户与物品的直接连接,但它无法发现高阶的连通性。
与当时最先进的模型相比,在本文实验所使用的三个数据集上Gowalla、Yelp2018及Amazon-book,NGCF均取得最好的效果。
因为NGCF中每层嵌入传播层捕捉到不同距离的信息,最后还将每层的嵌入向量聚合在一起,由此得到的用户(物品)表示向量包含了用户物品的交互信息,包含的信息更全面,因此会有更好的结果。更直观的可以从下图看出,该图星星表示用户,与用户连线的点表示为测试集中与该用户有交互的物品,相比与矩阵分解,NGCF-3中相同颜色的点更趋向于聚成一团。
可学习的协同过滤模型有两个关键的组成部分,一个是用户与物品的embeddings的构建,另外一个是用户与物品的embeddings的交互函数。在上周读的《Neural Collaborative Filtering》这篇论文中是使用非线性深度神经网络作为用户与物品的embeddings的交互函数,本文是用图神经网络将用户和物品embeddings传播实现获得包含用户物品交互信息的embeddings,如果将这两篇论文中的方法结合,我认为会有更好的效果,作者也在文章中提到这个想法。将深度学习应用到推荐系统是目前的一个趋势,我在接下来也会探索更多这方面的知识。