近年来,GNN技术由于其在图数据学习方面的出色表现,在许多领域得到了广泛的应用。在推荐系统中,大部分信息本质上具有图结构,而由于GNN对于表示学习具有一定的优势,所以GNN在推荐系统相关领域的应用迅速发展。本文尽可能用通俗的语言代替算法公式来进行讲述,希望可以让读者对推荐系统中的图神经网络有一个基本的了解。
一、什么是图神经网络?
Graph Neural Network(GNN),顾名思义,图上的神经网络,为了理解GNN,需要弄清楚以下两个问题:
1. 首先,什么是图(Graph)?简单来讲,图是定义了节点(node)和连接方式(edge)的一种结构,节点和边都分别具有其性质,比如化学分子(原子/键)、城市地铁(站台/铁路)、社交网络(人/关系)。
2. 其次,怎么把图塞到神经网络里?
直观上想,近朱者赤近墨者黑,一个节点跟他所连接的节点应该有一些相似的关系,那么就可以利用这些特定的关系来帮助我们的模型学到好的节点表示,那么怎么做到这件事呢?
回想一下卷积神经网络(CNN),做卷积的过程中,放一个卷积核,然后相乘相加,做完了之后就可以得到下一层的 feature map,同样的,可以将类似的操作推广到图结构上。
图结构中,每个节点有一个表示,就像CNN中每个点有个值,可以很自然的去想去通过看他的邻居的值来进行特征聚集,比如说下图中3号节点有三个邻居,分别是0/2/4号节点,通过对邻居节点的表示进行计算来得到其下一层的 feature map。
最后,可以利用传播过程所得到的各层表示来进一步完成后续任务(例如节点分类/边预测/节点内积预测匹配度等等)。
以上介绍的是一种比较简单容易理解的结构,希望读者可以以此为基础理解图神经网络的基本思想。而根据结构设计不同,GNN模型可以划分为以下几种,RecGNN、ConvGNN、STGNN和GAE [8],此处不再详细介绍,感兴趣的读者可以自行查阅相关资料。而在推荐系统中,常见的GNN框架主要有以下几种:GCN [2],GraphSage [3],GAT [4],GCNN [5]等。
二、为什么要在推荐系统中使用图神经网络?
其实最通俗的原因就是GNN表现好,并且推荐系统中的大部分数据(本质上可以看作图结构数据)适合使用GNN。接下来分类进行详细介绍:
首先将推荐系统大致分为两类:一般的推荐(general recommendation)和序列化推荐(sequential recommendation),简单来讲,就是根据需不需要考虑时间顺序来进行划分,前者将用户偏好视为静态的,学习用户和物品的静态表示,后者认为用户偏好随时间动态变化,根据交互序列来预测用户下一个可能喜欢的物品。
推荐系统中用到的数据,主要包括以下几种(见下图):
对于 general recommendation:交互数据,可以看作二部图(bipartite graph)对于 sequential recommendation:物品序列,可以抽象成序列图(sequence graph)其他辅助信息:社会关系(social relationship)和知识图谱(knowledge graph)均可以看作图结构数据除了数据方面,对于具体的学习过程而言,GNN具有以下优点 [6]:
对于 general recommendation:GNN可以通过节点聚合显式地编码协同信号来增强用户和物品的表示学习能力,相比与其他模型,GNN对多跳信息的建模更加灵活方便。对于 sequential recommendation:将序列数据转换为序列图可以更灵活地进行项目选择的原始转换,并且,GNN可以通过环的结构捕获隐含在顺序行为中的复杂用户偏好。简而言之,推荐系统数据结构非常适合转化为图结构,并且GNN在图数据的表示学习上具有非常强大的学习能力。
三、推荐系统中的图神经网络分类
对两类推荐系统 General Recommendation 和 Sequential Recommendation,以下根据其所用数据信息类型进行分类:
1. General Recommendation
目标为建模用户的静态偏好,所利用的基本数据为用户物品交互数据,根据其用到的数据信息将其分为以下三类:
A-仅交互信息(User-item interaction information)
这类模型基本思想本质上是利用用户交互过的物品记录增强用户表示,以及利用交互过的用户记录来增强物品表示,多层的GNN可以模拟信息传递过程并且高效的建立高阶连接,这里最关键的挑战是如何进行信息聚合,这类模型的研究主要集中在以下几个方面:
图结构建模。是在异构二部图上应用GNN,还是基于两跳近邻重构齐次图?考虑到计算效率,如何对有代表性的邻域进行图传播,而不是对整个图进行操作?邻居聚合。如何聚合来自邻居节点的信息?具体来说,是否要区分邻居的重要性?还是要区分邻居之间的相互作用?信息更新。如何将中心节点表示与其相邻节点的聚合表示相结合?最终节点表示。是否使用最后一层中的节点表示,还是使用所有层中的节点表示的组合作为最终的节点表示?这类模型比较具有代表性的工作有 NGCF [9] / LIghtGCN [10]。
B-社交网络增强(Social network enhanced)
这类模型的思想本质上为,根据社会影响理论,人们会互相影响,所以有着社会关系的用户应该具有更加相似的表示。这里需要利用GNN将用户之间的关系整合到交互行为中,此类研究主要需要处理两个问题:
社会关系的影响。社会关系中朋友有同等的影响力吗?如果没有,如何区分不同朋友的影响?偏好集成。如何整合社会影响角度和交互行为这两方面的用户表示?这类模型比较具有代表性的工作有 DiffNet [11] / GraphRec [12]。
C-知识图谱增强(Knowledge graph enhanced)
社交网络反映了用户之间的关系,知识图谱则表达了物品之间的关系,以此来增强物品的表示,将知识图谱融入推荐系统可以带来两方面的好处:1.物品间丰富的语义关联可以提高物品表示的效果,2.增强了推荐结果的可解释性。由于知识图谱具有复杂的图结构(多类型的实体和多类型的关系),所以,在推荐系统中应用知识图谱是非常具有挑战性的。知识图谱增强的推荐系统追求信息的充分利用,通过建模物品的关系来估计用户的偏好,研究主要针对以下两个问题:
图结构建模。怎样平衡信息丰富度和图网络复杂度?怎样把用户融合进知识图谱关系感知聚合。如何设计关系感知的聚合函数来聚合链接实体的信息?这类模型比较具有代表性的工作有 KGCN [13] / KGAT [14]
2. Sequential Recommendation
目标为根据用户近期的行为预测用户接下来的爱好,这类模型建模序列信息,将序列行为转化为序列图,从而获取用户的序列行为转化模式,同样的,根据其用到的数据信息,将其分为以下三类:
A-仅序列信息(Sequence information)
从物品之间邻接的角度来看,物品序列可以被建模为图结构数据。GNN基于序列图,通过迭代传播捕获物品的迁移,学习具有代表性的物品表示。下图展示了序列推荐中GNN的总体框架。
为了在序列推荐中充分利用GNN,此类模型研究主要针对以下三个问题:
图结构建模。为每个序列单独构造一个子图是否足够?在几个连续项之间添加边是否比只在两个连续项之间添加边更好?信息传递。要捕获转换模式,哪种传播机制更合适?是否有必要区分链接项的顺序?序列偏好。为了获得用户的实时偏好,应该集成序列中的表示。是简单地应用注意力池还是利用RNN结构来增强连续时间模式?这类模型比较具有代表性的工作有 SR-GNN [15] / GC-SAN [16]。
B-社交网络增强(Social network enhanced)
与前文类似,一个直观的想法是,用户从连续行为推断出的动态偏好也可以被他们的朋友所影响。然而,在序列推荐中较少注意利用社会关系信息,可能的原因是,在顺序推荐中,用户的表示主要是从用户的序列行为(即商品的序列)中学习到的。序列中的动态偏好要比基于用户id的静态偏好重要得多。
这类模型比较具有代表性的工作有 DGRec [17]。
C-知识图谱增强(Knowledge graph enhanced)
与前文类似,序列推荐也可以受益于知识图中包含的丰富信息,特别是在序列数据不足的情况下,可以通过语义连接增强物品的表示,目前这类模型的研究也较少。
3. 其他推荐任务
除了以上介绍的两类推荐系统之外,也有一些其他的推荐子任务的相关研究,这里不再展开,就简单列举一下这些任务中与GNN相关的研究工作:
A-点击率预测 —— CTR prediction(Fi-GNN [18])
点击率预测在大规模工业应用中是一个非常重要的任务,在基于多种类型特征来预测点击率的过程中,GNN可以用来刻画高阶的特征交互,将其转变为图上的节点信息传播。
B-兴趣点推荐 —— POI recommendation(GPR [19])
兴趣点推荐在基于位置的服务中起着关键作用,在这个任务中,基于空间和时间特征,模拟POI之间的地理影响以及用户序列行为的转换模式,存在的图结构有 user-POI 二部图、基于签到的序列图和地理图等,可以利用GNN来刻画用户偏好以及地理信息等。
C-群组推荐 —— Group recommendation(GAME [20])
群组推荐为向一组用户而不是单个用户进行物品推荐,“组”可以看作用户之间存在的关系(边),也可以将“组”看作图中一个特殊的节点,将用户的表示集中在组里。
D-捆绑推荐 —— Bundle recommendation(BGCN [21])
捆绑推荐主要目的为为用户一次推荐一系列物品,此时“组”的概念为一组物品,与群组推荐同理,可以利用GNN构造层次结构,进一步捕获物品之间的关系。
四、结语
本文主要围绕推荐系统中的图神经网络这个主题,从图神经网络到其在推荐系统中的分类的进行了概述,希望可以通过这篇文章让读者对该领域有一个简单认识。同时欢迎对文章内容有疑问或想法的同学在评论区积极留言讨论!
最后,仍然向大家推荐非常好用的推荐算法工具包“伯乐”(RecBole,github链接在这里:https://github.com/RUCAIBox/RecBole),包含并实现了上述提到的多种GNN相关模型(NGCF / LightGCN / KGCN / KGAT / SRGNN / GCSAN 等),非常适合刚刚入门推荐系统的朋友,下面是RecBole介绍文章,希望大家多多支持!
来自:机器学习研究组订阅