图神经网络适合做推荐系统吗?

2021-12-15 20:56:31 浏览数 (1)

原问题

图卷积或者图神经网络适合做推荐系统吗?

最近在看相关资料,发现相关论文不是特别多,所以比较疑惑为什么。是因为这个方向比较新,做的人还比较少呢,还是说相比其他深度学习方法(比如CNN)并没有优势,所以本身没有研究价值呢?

了解这方面的大佬们能否简单说一下。

精选回答

图神经网络确实可以用于推荐系统,并且已经有不少论文证明基于图神经网络的推荐系统可以比一些基于神经网络的协同过滤算法有更好的效果。但是,基于图神经网络的推荐系统依然处于一个尚待探索的阶段,目前工业界一般是将图神经网络作为辅助的用户/商品特征抽取手段。

具体来说的话,这里我希望通过TKDE 2020的一篇文章,《A Graph Neural Network Framework for Social Recommendations》来阐述一下当前研究者们如何使用图神经网络构建推荐系统。

一句话介绍

TKDE 2020这篇论文提出了GraphRec 算法,即使用多个带注意力机制的图神经网络分别提取User-Item,User-User和Item-Item三种关系图的用户和商品信息,通过融合源自上述三种图的关系信息,从而实现预测性能更强的推荐系统。

User-Item关系建模

GraphRec 算法的第一步是将用户和商品之间的历史行为记录视为一个带权图,使用GNN进行建模。形式化定义如下所示,即对于用户相关联的商品,使用聚合函数对商品的Embedding进行聚合,最终得到用户的特征向量。

值得一提的是,这里的用户关联商品表征包含了两部分信息,即商品表征,以及用户对商品的评分。需要注意的是,这里的评分表征与用户和商品无关,只与具体评分分数有关,即所有分数相同的用户和商品共享同一个评分表征。

在聚合函数选择上,GraphRec 选择了基于Attention的GNN聚合函数。

注意力分数即为用户特征和包含观点信息的商品特征进行拼接后,经过两层神经网络得到的值。

在计算完注意力分数后,需要对alpha进行一下归一化处理。

最终,根据Attention分数,我们就可以得到每个用户的特征向量。

社交关系建模

社交关系建模利用了上一节的User-Item关系建模得到的User信息。

在GNN聚合部分,社交关系建模和上面的用户行为建模是类似的。即通过用户基础表征和邻居用户表征计算Attention分数,然后将该Attention分数用于邻居向量聚合,最终计算出社交关系用户向量。

最终,在得到了基于社交关系和用户行为的用户表征之后,可以通过一个MLP将两个表征进行融合,形成一个最终的用户表征。

商品关系建模

前两节介绍了用户表征建模,在GraphRec 算法中,该算法还对Item进行了类似的建模。

首先,对于关联用户表征,我们可以融合用户表征和评分表征,得到包含评分的关联用户表征。

然后,对于商品的行为表征,我们可以将用户行为图中的相关用户表征,通过Attention机制实现融合,从而得到最终的Item行为表征。

此外,商品的关联表征也可以通过类似社交关系表征的方式,通过Attention机制,完成对邻居商品表征的融合。

最终,聚合商品的行为表征和关联表征,就可以得到最终的商品表征。

损失函数

有了User表征和Item表征之后,直接将两个表征进行拼接,输入到MLP中完成预测即可。

最终的预测目标是预测评分MSE最小,即如下所示。

实验结果

最终,作者将GraphRec 算法应用在了三个推荐系统测试数据集上,从下面展示的实验结果来看,融合了多类信息的GraphRec 算法可以取得最佳的性能。

当然,这篇文章最有价值的部分还是作者做了充分的消融实验,证明了融合社交关系(w/o SN),融合用户评分(w/o Opinion),融合商品关系(GraphRec)的效果。具体消融实验结果见下图,从图中可以看到,社交关系、用户评分、商品关系均是GraphRec 取得良好预测性能的必要组件。

总结

GraphRec 算法可以说算是GNN 推荐系统领域一个非常有代表性的算法了。从上文的分析可以看到,GraphRec 算法并没有非常复杂的算法设计。该算法的核心思想就是基于多种关系图信息,利用基于Attention机制的GNN网络从关系图中抽取包含更多信息的用户表征和商品表征,从而实现预测性能更强的推荐系统。

实际上,这篇文章最大的贡献是验证了通过向当前主流的图神经网络模型提供更多的推荐系统数据,当前主流的图神经网络模型已经能够学习到这些额外的信息,并取得有效的预测性能提升。略显遗憾的是,GraphRec 模型仅仅考虑了商品和用户的关系特征,而尚未考虑商品和用户的一些属性特征。因此在论文最后,作者自己也提到,如何将基于GNN的推荐系统与基于内容的推荐系统进行融合,绝对是未来基于GNN的推荐系统一个非常值得研究的方向。

这方面论文挺多的啊。

你想,用户-项目可以构成二部图(Bipartite Graph),用户与用户之间可以构成社交网络(Social Network),项目与项目之间可以存在知识图谱(Knowledge Graph),另外把这几者都考虑进去可以构成异质图(Heterogeneous Information Network),再把时间因素考虑进来而产生的动态演化而构成动态图(Dynamic Graph)。

所以推荐系统中许多形式的数据都可以表示成图,当然许多大佬自然而然的将强大的GNN应用到推荐领域了,以下列举几篇文献,可以看看。

  • Graph Convolutional Matrix Completion. 2017.
  • Graph Convolutional Neural Networks for Web-Scale Recommender Systems. KDD 2018.
  • Graph Contextualized Self-Attention Network for Session-based Recommendation. IJCAI 2019.
  • Session-based Recommendation with Graph Neural Networks. AAAI 2019.
  • Knowledge-aware Graph Neural Networks with Label Smoothness Regularization for Recommender Systems. KDD 2019.
  • KGAT: Knowledge Graph Attention Network for Recommendation. KDD 2019.
  • Knowledge Graph Convolutional Networks for Recommender Systems. WWW 2019.
  • Graph Neural Networks for Social Recommendation. WWW 2019.
  • Memory Augmented Graph Neural Networks for Sequential Recommendation. AAAI 2020.
  • Revisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network Approach. AAAI 2020.

看场景。

工业界的大数据集下,现在来看,基于u-i二部图做图神经网络还没有比较好的落地。

work的一般使用i-i同构图,辅助冷门item获得更好的表达。

首先回答:可以用,但是有很多需要优化的地方

只要是图/网络数据,或者可以看作/构成图/网络数据,都可以用基于图的模型来处理。

推荐系统里面user-item交互关系就可以看作一个图,即,user和item分别看作节点,有交互就连一条边。而且还可以融入user社交网络,item知识图等,图神经网络算法的优点就是可以方便地融入大量的side information。

需要优化的地方,具体如下:

  • 原本的图卷积网络是针对同构图的,而推荐里面user和item其实是不同类型的节点,因此需要重新设计卷积聚合机制,也可以考虑异构图神经网络
  • 在很多实际的场景,user的数据量是远大于item的,且存在user交互稀疏,item长尾的问题,所以图中节点的度方差会特别大,可能需要引入邻居采样技术
  • 原生的GCN直接输入整个图,会存在大规模问题,在实际场景更是要考虑数据量的问题,因此采样、子图训练这些优化都是需要的
  • 不同的推荐场景可能存在不同的side information,业务数据有不同的特点,需要针对性融入和优化

不适合

从计算的角度来讲,图这种结构与计算机体系结构的序列存储方式天生就是冲突的。图这种结构存储起来,从计算机的视角看就是一个非常非常稀疏的矩阵(no matter 你选哪种存储方式)。这种体系结构难以支撑大量的图结构的运算。这就导致了,在推荐系统这种海量配对的系统中,图结构不能落地。

从特征提取的角度来讲,对比使用分子的图表示和序列表示,发现 transformer 与 graph 算法所得到的结果没有差别,transformer 会更好一点。在小数据提取特征的实验中 graph 相关算法也并不能保证比序列算法更加有效。可以认为在初始提取特征到最终压缩为一个 embedding 的过程中,使用 graph 表示数据得到的特征并没有被保存下来。or。。。可能用图表示了一下对于计算机来说并没有增加信息量。。。(这就是脱了__放_ 0 0

(当然,支持灌水,支持跑偏,支持讲故事,恰饭嘛,不寒颤。。

推荐一下,我们组很有诚意开源的Graph4Rec工具包,我们工具的最大的特点:

  • 输入一张图(同构、异构、复杂节点特征),给你吐出所有节点的表示
  • 通过配置化,实现不同的DeepWalk、MetaPath2vec、GCN、GAT、R-GCN等各种组合算法
  • 大规模支持,通过Paddle的Parameter Server以及PGL的分布式图引擎,支持大规模的分布式图表示学习。

我们把整个工具的设计放到arxiv中,大家可以看看。https://arxiv.org/abs/2112.01035

适合,并且也有一些落地的,学术界像韩家炜教授,中科大的何向南教授,北邮的石川教授等,都在做这方面,工业界像阿里有专门研究异构图的团队。

这方面工作其实挺多的,看了下其他大佬的回答,有位老哥说transformer不比图神经网络差,甚至可能更好,个人认为还是得看场景吧,在sequential recommendation这种长序列场景场景下transformer效果确实会好点,毕竟序列中有着较多的序列依赖关系,transformer本来就是用在序列任务上的,可以用位置编码等方式记录位置信息,经典工作有SASRec等,而在一些比较短的序列场景例如session-based recommendation 中,根据本人的一些实验来看图神经网络效果似乎是要好点,初步猜测是短序列中没有那么多的序列关系,图上的一些归纳偏置信息对推荐更关键,session-based 上的一些经典工作有SR-GNN,GCE-GNN等。

0 人点赞