大家好,我是阿光。
本专栏整理了《图神经网络》,内包含了不同图神经网络的原理以及相关代码实现,详细讲解图神经网络,理论与实践相结合,如GCN、GraphSAGE、GAT等经典图网络,每一个代码实例都附带有完整的代码+数据集。
正在更新中~ ✨
我的项目环境:
项目专栏:【入门图神经网络】
对于GNN模型来说可以将其看成一个通用的图模型管道,对于管道那么就会有通用的流水线设计,对于这个流水线中的常见步骤有4步,找出任务中的图结构信息
、指定图类型
、设计指定任务的损失函数
、使用计算模块构建模型
。
使用GNN的前提就是我们首先需要判断我们的任务能够使用GNN来进行建模,其次就是如果符合那么我们的图数据是什么。
通常有两种情景:结构性情景
和非结构性情景
。
在结构场景中,图结构在应用中是显式的,例如蛋白质分子结构
、智慧交通、知识图谱、推荐系统等应用。
在非结构场景中图是隐式的,因此我们必须首先从任务中构建图,例如像现在的文本处理我们也可以使用GNN来进行建模,但是GNN是基于图数据的,但是我们的文本数据并不是属于图结构,所以我们必须要进行构造,常用构建方式就可以设计一个窗口,将窗口内的词进行连接,将每个词看成图中的节点。
同构图和异构图
:同构图中的节点和边具有相同的类型,而异构图中的结点和边具有不同的类型。节点和边的类型在异构图中起着重要作用,应该进一步考虑。对于这些类型我们可以随意组合,例如,可以处理动态有向异构图。还有其他几种图形类型是为不同的任务设计的,如超图和签名图。我们不会在这里列举所有类型,但最重要的想法是考虑这些图提供的附加信息。一旦我们指定了图形类型,在设计过程中应该进一步考虑这些图形类型提供的附加信息。
对于不同的任务我们需要设计不同的损失函数,常见的图应用有节点级任务
、边级任务
、图级任务
。
我们需要针对不同的任务设计不同的模块
来获得相应的信息。
利用这些计算模块,通常通过组合它们来构建典型的GNN模型
。其中卷积算子、递归算子、采样模块和跳过连接用于在每一层传播信息,然后添加池模块以提取高层信息。这些层通常被堆叠以获得更好的表示。请注意,这种架构可以概括大多数GNN模型。
参考文章