GNN论文学习笔记

根据李沐老师讲解的零基础多图详解图神经网络视频,小白开始入门学习了解GNN,并记录下此文。
A Gentle Introduction to Graph Neural Networks为参考文献博客。


图(Graph)的概念并非通常意义上的图片(image),而是一种表示关系的数据结构。顶点(node)表示物体,相互连接的线(edge)表示关系,其中线既包含有方向的线(directed edge),也包含无方向的线(undirected edge)。
在这里插入图片描述

  • 可以将图片(image)的像素关系转换为图(graph):
    在这里插入图片描述

  • 可以将文本(text)的词语关系转换为图:
    在这里插入图片描述

  • 可以将生活或者电影中的人物关系转换为图:
    在这里插入图片描述

  • 可以将分子中各原子的排列关系转换为图:

在这里插入图片描述

为什么需要图:尽管传统的深度学习方法被应用在提取欧氏空间数据的特征方面取得了巨大的成功(例如:),但许多实际应用场景中的数据是从非欧式空间生成的,传统的深度学习方法在处理非欧式空间数据上的表现却仍难以使人满意。

图能干什么

  • 预测整个图的属性。例如,对于表示为图的分子,我们可能想要预测分子的气味,或者它是否会与与疾病有关的受体结合。
  • 预测图形中每个节点的标识或角色。
    在这里插入图片描述
    通过对图的分析,可以区分出John A和Mr.Hi的人物关系网,预测出他们与其他人之间关系的远近。
  • 预测物体之间的关系
    在这里插入图片描述
    首先通过语义分割获得独立的物体,然后再预测出物体之间的关系。

图的具体表示方式:邻接列表
在这里插入图片描述
图神经网络的基本结构:
图中的属性包括:顶点、边、全局信息,所以各自属性都对应单独的多层感知机(MLP)。 f U f_U fU f V f_V fV f E f_E fE统称为一层,这一层的输入和输出均为图结构。
在这里插入图片描述

  • 如果最终想要预测的是已有属性,比如在节点上进行预测,则预测方法很简单是使用用线性分类器(全连接+Softmax)。
    在这里插入图片描述
  • 如果做预测的顶点没有向量信息,但是与其连接的边上有向量信息的话,可以采用汇聚(pooling)的方式进行预测。
    在这里插入图片描述
    如果向量信息的维度不相同,则需要先投影变换到顶点向量的维度。其实从这一步就可以发现,全局向量类似于一个偏置项。同理,当预测的是没有向量信息的边时,可以汇聚相连接的顶点信息与全局信息。
    在这里插入图片描述
    上图是最简单的GNN模型,它有一个明显的弊端——图的属性都是独立进行更新的,且几乎未涉及到连接性(connectivity)方面的信息,仅仅在pooling操作的时候会涉及到连接性,这会导致模型不够充分利用(leverage)图的信息。

图之间的信息传递(message passing):
在这里插入图片描述
将三者求和后的向量信息,再经过MLP的变换(transform)得到下一层的结果。这种pooling操作和标准卷积类似,在本质上,信息传递和卷积都是聚合处理元素相邻信息以更新元素值的操作。 在图(graph)处理中,元素是一个顶点,而在图像(image)中,元素是一个像素。 但是,图中相邻顶点的数量是可变的,这与图像中每个像素都有一定数量的相邻元素不同。
在这里插入图片描述
上图中的虚线圆形就表示对顶点相邻的向量信息做聚合的意思。通过这种方式,就可以使用信息传递在GNN层内的顶点和边之间共享信息。做聚合(pooling)的方式不仅仅只有求和(sum),还可以求均值(mean)和求最大值(max)【这和卷积中的池化操作更为相似】。但这三种方法的效果需要根据实验来确定。
在这里插入图片描述

当我们想对顶点进行预测,但我们的数据集只有边的信息时,我们可以先将边信息合并,使用更新函数对其进行转换,然后存储它。但是,存储在图中的顶点和边信息不一定是相同的大小或形状,因此, 一种方法是学习从边空间到节点空间的线性映射,或者可以在更新函数之前将它们连接(concat)在一起。
在这里插入图片描述

图之间的全局信息(message passing):
在图中彼此距离较远的节点可能永远无法有效地相互传递信息,即使我们多次应用消息传递。对于一个节点,如果我们有k层GNN layers,信息最多传播k步。对于预测任务取决于相距较远的节点或节点组的情况,这可能是一个问题。解决这个问题的一个办法是使用图的全局表示(U),这个有时被称为master node,它与网络中的所有节点和边相连,可以作为它们之间传递信息的桥梁,为整个图建立起一个表示。
在这里插入图片描述
在这里插入图片描述


参考:https://blog.csdn.net/weixin_44808161/article/details/126152908

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python是一个功能强大且易于学习的编程语言,已成为深度学习和图神经网络GNN)的主要编程语言之一。在Python上构建深度学习GNN,我们需要注意以下几点。 1.首先,我们需要确定要使用的框架。Python有许多深度学习框架,如TensorFlow, PyTorch和Keras等,都可用于构建GNN。每个框架都有其独特的优点和局限性,应根据项目的具体需求选择合适的框架。 2.其次,我们需要学习GNN的基础知识并了解其层次结构,从而选择不同层次的GNN算法来解决特定的任务。 3.接下来,我们需要理解节点嵌入、图嵌入、图卷积等关键概念,并掌握如何在Python使用它们构建GNN模型。 4.此外,我们还需要了解如何从数据提取相关特征,并使用这些特征指导GNN学习过程。 5.最后,我们需要进行模型的训练和测试,通过调整超参数来提高模型的性能。 总的来说,Python是构建深度学习GNN的理想语言,只要我们掌握了相关知识和技能,就可以轻松地构建高效的GNN模型来解决各种图数据相关的问题。 ### 回答2: Python是一种高级编程语言,广泛应用于各种计算机应用领域。在机器学习和人工智能领域,Python成为了最常用的编程语言之一。特别是在深度学习和图神经网络GNN)领域,Python的使用频率更是最高的。 Python构建深度学习GNN可以使用多种流行的深度学习库和图计算库。其,PyTorch是最重要的深度学习库之一,因为它提供了丰富的深度学习模块和工具,例如自动微分、神经网络层、优化算法等。PyTorch也支持图神经网络领域最常用的图神经网络计算库DGL(Deep Graph Library)。 使用PyTorch和DGL可以构建各种图神经网络模型。例如,可以使用GCN(Graph Convolutional Network)模型来对图进行分类、聚类和预测。GCN模型基于卷积神经网络的结构,但是使用由图定义的邻接矩阵和特征矩阵来替代卷积核。GCN模型在节点分类、推荐系统和社交网络分析等领域具有广泛的应用。 另一个重要的库是PyG(PyTorch Geometric)。PyG是基于PyTorch的图神经网络架构,提供了更加高级的图神经网络模型和操作。例如,可以使用GAT(Graph Attention Network)模型来学习图结构的节点关系。GAT模型使用多头注意力机制,可以学习节点之间复杂的非线性关系。GAT模型特别适用于社交网络和知识图谱分析。 总之,Python构建深度学习GNN需要掌握多种深度学习库和图计算库,例如PyTorch、DGL、PyG等。使用这些工具可以构建各种高级的图神经网络模型,用于图结构数据的分析、预测和决策。 ### 回答3: 近年来,图神经网络GNN)成为了深度学习领域备受关注的一个新兴方向。Python 作为一种功能强大的编程语言,被广泛应用于数据科学、机器学习、人工智能等领域,自然也是构建 GNN 的首选语言之一。 首先,Python 社区有很多为 GNN 提供了良好支持的开源库和框架。例如,PyTorch、TensorFlow 和 MXNet 等都提供了图神经网络相关的模块、函数和工具。此外,还有一些专门的 GNN 库,如 DGL、PyG、Spektral 等,它们能够更加简便地构建 GNN、优化模型结构和训练模型。 其次,Python 相比其他语言更加易于学习和使用。Python 的语法结构简单易懂,而且开源社区提供了丰富的教程和样例代码,能够快速帮助新手入门。此外,Python 也具有强大的数据处理和可视化能力,能够方便地展示数据、分析特征和构建模型,为 GNN 的研究提供了充足支持。 最后,Python 可以快速实现一些最新的 GNN 模型,其最著名的是图卷积网络(GCN)。以 PyTorch 为例,在 PyTorch 支持 GCN 的库有 PyG。它提供了很多现成的 GCN 模型,如 GAT、GraphSAGE 等,以及一些其他常用的图神经网络模型。 总之,Python 的开源库、易用性和快速实现 GNN 模型等优势,使 Python 成为了构建深度学习 GNN 最佳的选择之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值