赞
踩
如今推荐系统的研究非常火热,GNN也在很多领域表现优异。推荐系统主要的挑战是从历史交互(historical interactions)和边信息(side information)中学习有效的用户(user)和物品(item)表示,由于很多信息具有图结构,而且GNN擅长表示学习,所以很多工作将GNN应用到推荐系统中。
本文是「基于GNN的推荐系统」方向的综述。本文全面回顾了相关工作,提出了一个新的分类体系,并阐述了有关该领域未来发展的新观点。
推荐系统中大部分信息具有图结构,例如社交关系、知识图谱、user-item交互组成的二部图(bipartite graph)、序列中的item转移图。GNN能够通过迭代传播捕捉高阶的交互,并且能够有效地整合社交关系和知识图谱等边信息(辅助信息)。
本文主要的贡献包括:1)新的分类体系;2)全面的回顾;3)未来的研究方向。
推荐系统可以划分为「一般的(general)推荐」和「序列化(sequential)推荐」。
「一般的推荐」认为用户具有静态的兴趣偏好,并根据隐式或显式反馈建模用户和物品间的匹配程度。从图的角度,user-item交互可以看做是二部图,GNN可以捕捉user-item交互,并学习user和item表示。另外,边信息也可以用来提升推荐性能,常见的策略是增加正则项或者融合边信息的表示。
「序列化推荐」捕捉item序列中的序列化模式,为用户推荐下一个感兴趣的物品。主要有基于马尔科夫链(MC)、基于RNN、基于注意力和自注意力机制的方法。随着GNN的出现,一些工作将item序列转换为图结构并用GNN捕捉其中的转移模式。
GNN可以通过节点间的消息传播(message passing)捕捉图上的依赖。GNN的主要思想是:迭代地聚合邻域信息,并整合聚集后的信息与当前节点的表示。根据是否使用谱卷积算子,GNN模型可以划分为谱方法和非谱方法。「谱方法」在傅里叶域(谱域)上定义图卷积算子,需要原始的图结构表示节点间的关系。「非谱方法」需要设计聚合器(aggregator)和更新器(updater)。聚合器用于聚合来自邻居的消息,更新器用于融合邻居节点和中心节点。下面简单介绍四种常见方法。
在推荐系统中使用GNN的动机有两点:1)RS中大多数据具有图结构;2)GNN擅长捕捉节点间的连接和图数据的表示学习。Fig1-4分别表示二部图、序列图、社交关系图和知识图。
最近,GNN相比于随机游走等传统的图学习方法取得了更好的表现。对于二部图,GNN能够迭代地从交互的items中传播信息,并更新用户向量(对item同理),可以增强user/item表示。GNN还可以学习边信息的压缩表示,学习到的向量可以整合到交互数据的表示中以提升性能,另外的策略是结合多个图到一个异质图,然后在全图上传播信息。
本文根据「用到的信息类型」和「是否考虑物品顺序」进行分类,如fig 5所示:
本文列出了以下有代表性的模型:
一般的推荐利用user-item交互建模用户偏好,但是受到数据稀疏性和冷启动的制约,引入边信息可缓解以上问题。
该视角下推荐系统的关键问题是矩阵补全。从图的角度,矩阵补全可以看做是图上的链接预测(link prediction)问题。GNN可以捕捉高阶交互,在二部图上应用GNN就是利用用户交互过的物品增强用户表示,对item同理。SVD++同样也是利用用户交互过的物品增强隐语义(latent factor)模型,所以单层GNN可以看做是SVD++的增强版本,多层GNN能够有效模拟信息扩散过程。
4.1.1 The overall framework. 主要挑战是如何传播用户交互过的物品信息给用户,如何传播用户信息给物品。GNN在二部图上的应用存在四个关键问题:
1)构图:考虑计算效率,如何采样邻居节点;
2)邻居聚合:如何从邻居聚合信息,多少信息应该被传播;
3)信息更新:如何整合中心节点的表示和从邻居聚合来的表示;
4)最终节点表示:用最后一层的表示还是结合所有层的结点表示
4.1.2 Representative methods.
GC-MC [Graph Convolutional Matrix Completion] [riannevdberg/gc-mc]
应对评分预测问题,交互数据表示为具有带标签边的二部图。GC-MC只用交互的物品建模用户节点而忽略了用户自身表示;利用mean-pooling聚合邻居节点,假设不同邻居同等重要;只考虑一阶邻居,不能充分利用图结构传播信息。
STAR-GCN [STAR-GCN: stacked and reconstructed graph convolutional networks for recommender systems] [jennyzhang0215/STAR-GCN]
该模型堆叠多个GCN block,每个block结构相同,堆叠多个block的原因是直接堆叠多层GCN会带来过平滑问题。为连接相邻
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。