点关注,不迷路,定期更新干货算法笔记~
推荐系统的核心是预测一个user对一个item的感兴趣程度。协同过滤是推荐系统中最常用的一种方法,它的假设是,相似的用户(例如用户特征相似,或用户历史对item的点击等行为相似)有对于item相似的偏好,因此可以利用历史的user对item的行为拟合参数,再用这个参数预测未来一个user对一个item的感兴趣程度。
协同过滤的核心在于学习user和item的embedding表示,再利用embedding计算user和item的打分。最基础的协同过滤方法基于Matrix Factorization,利用历史user-item行为数据构造一个user-item的打分矩阵,然后使用SVD等矩阵分解方法将矩阵拆解出user向量和item向量。相关工作发表于Matrix Factorization Techniques for Recommender Systems(2009)。在此之后的优化,围绕如何优化embedding生成过程进行,包括Collaborative Deep Learning for Recommender Systems(KDD 2015)利用autoencoder的方式根据user和item的内容信息生成embedding,以及Neural Collaborative Filtering(2017)将矩阵分解替换成神经网络,利用神经网络端到端学习user embedding和item embedding等。
随着图神经网络的发展,将图应用到协同过滤的方法逐渐兴起。这篇文章给大家介绍3篇基础的基于图的协同过滤方法,分别来自SIGIR2019、SIGIR2020、SIGIR2022,这3篇工作是递进的关系,展现了如何将图模型更合理的应用到推荐系统的协同过滤中。
1
Neural Graph Collaborative Filtering
上面介绍的基础协同过滤方法,一个比较大的问题是并没有充分挖掘user-item行为数据之间的关系。这些方法基本都是只将user-item一一对应的行为用在模型训练的优化目标中,没有挖掘更高阶的联通关系。User-item可以构造一个二部图,利用二部图中更高阶的user-item关系,可以提升预测效果。例如下面的二部图中,多跳的信息如u-i-u-i可以汇聚更多信息。
为了充分挖掘这些信息,Neural Graph Collaborative Filtering(SIGIR 2019)提出了使用图学习的方法,在二部图上利用与user/item交互的其他user/Item来生成embedding,并通过多层图神经网络的堆叠,可以实现更高阶的信息汇聚,从二部图中提取更高阶的信息。
模型整体分为Embedding层、图神经网络层和预测层三个部分。在Embedding层中,每个user或item会通过embedding lookup table映射成一个向量表示,可以理解为初始的向量化表示。在图神经网络层,对于某一个user(或item),每一层会对邻居的信息进行汇聚,可以表示为如下形式:
其中m表示某个邻居item到这个user的信息,相比GCN只考虑邻居item的信息,本文的方法增加user和item的点乘项,将user和item的关系引入信息生成过程,更适合推荐系统的应用场景。最后通过LeakyReLU将所有邻居信息进行汇聚,得到该层的user表示,item也是相同的计算逻辑。通过多层的图神经网络堆叠,可以实现更高阶的信息融合,最终将所有层的表示拼接到一起,得到每个user或item的最终表示。在预测层,使用GNN生成的user和item表示计算内积得到相似度打分。整体模型结构如下图所示:
2
图协同过滤的简化—LighGCN
LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation(SIGIR 2020)针对上一篇文章提出的图神经网络进行了实验和分析,指出了多层非线性图神经网络在推荐系统中其实并不会起到正向作用,相反会让模型训练更加困难而影响效果。推荐系统中的user、item使用的都是无语义含义的id特征,而GCN的多层非线性变换主要适用于节点包含丰富属性信息的场景。
文中首先进行了一个基础实验,NGCF代表上文的模型,NGCF-f表示去掉feature transformation模块(即上文公式中的W1和W2),NGCF-n表示去掉nonlinear activation模块(即上文公式中的LeakyReLU),NGCF-fn表示两个都去掉。实验结果发现,将feature transformation模块和nonlinear activation模块都去掉效果会有大幅度提升。这表明这两个模块对于推荐系统可能是不必要的,并且在图学习中引入这些不必要的操作反而会影响效果。
针对以上问题,本文提出了适用于推荐系统的LightGCN模型,这是一个非常简单的结构,每层就是把相邻的邻居节点信息进行相加,公式可以表示为:
这样,整个网络的可学习的参数只有第一层的user embedding和item embedding矩阵了。最终会通过一个权重将各层的embedding结果进行加和,用于后续的预测。
3
更细致的图协同过滤
今年SIGIR 2022中,Less is More: Reweighting Important Spectral Graph Features for Recommendation(SIGIR 2022)又提出了基于之前图学习协同过滤的优化,这篇文章更加细致了分析基于图的协同过滤的工作原理,并提出如何从图学习生成的特征中提取对预测最重要的信息。
文中首先做了一个非常有意思的实验,求解邻接矩阵的特征值和特征向量,计算每个特征向量的variation。Variation越小,表明这个特征越smooth,即每个节点和图中邻居节点的差别越小;反之特征越rough,每个节点和图中邻居节点的差别越大。作者分别去掉各个特征向量,绘制了一个折线图和柱状图,从图中可以发现,对预测效果影响最大的是特别smooth的特征和特别rough的特征,中间部分的特征影响并不大,并且去掉这些特征反而会提升模型效果。
上面的实验说明,基于图的协同过滤中,只有一小部分特别rough或特别smooth的特征对最终预测是有效的,其他特征可以理解为噪声。而LightGCN模型文中推倒后发现,随着层数的增加,smooth特征被赋予了更高的权重,完全压制住了rough特征的作用。因此,本文希望将smooth特征和rough特征,同时过滤掉noise部分特征,进而提升协同过滤的效果。
具体的实现方法上,核心是smooth特征与rough特征的提取,以及每个特征权重的计算。以user图为例,首先根据特征向量计算的variance选择top的smooth特征和rough特征,得到两个只关注smooth和rough的裁剪后的子图。在此基础上,会根据user或item的特征以及特征向量,计算各个特征的重要度,对应r函数。最终将smooth特征和rough特征通过pooling的方式进行融合。
4
总结
本文介绍了3篇基于图的协同过滤方法,体现了图学习应用到协同过滤的发展过程。整个过程是在构建更适合协同过滤的图网络,通过大量的实验分析之前图学习在协同过滤中存在的问题,不断进行优化和简化。图学习确实比较适合推荐系统,能够通过user和item的关系构图吸纳更多的信息,是协同过滤中一个不错的研究方向。
END