深入浅出带你读懂图卷积神经网络原理和pytorch代码实现 您所在的位置:网站首页 图卷积网络输出的图结构是什么类型的 深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

2024-07-03 13:54| 来源: 网络整理| 查看: 265

01

大话图神经网络

看了挺久的图神经网络,从一窍不通到略懂一二,今天想表达一些在GCN,GraghSAGE,GAT等图神经网络的特征集成(聚合)思想,一方面,让更多人学习到图神经网络的本质,另一方面,加深自己对知识的记忆。

深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

02

什么是图,有什么特点?

深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

图作为一种特殊的数据结构,为非欧式空间:1)局部输入维度可变,表现为每个节点的邻居节点数量不同;2)排列无序,表现为节点之间只存在连接关系不存在先后顺序。而图结构即使邻居节点数量相同的情况下,也需要根据一定规律,比如度的大小,将节点进行排序使得用一阶邻居节点表示的每个节点是唯一的。不像排列规则的图像和自然语言可以通过CNN或者RNN进行处理并得到较好的效果,而CNN或者RNN在图结构数据上的效果一般较差或者不能使用

03

图如何表示?

对于图,我们习惯上用 

表示。这里V是图中节点的集合,而E为边的集合,这里记图的节点数为N。其中有3个比较重要的矩阵:

邻接矩阵A:adjacency matrix,用来表示节点间的连接关系,这里我们假定是0-1矩阵; 度矩阵D:degree matrix,每个节点的度指的是其连接的节点数,这是一个对角矩阵,其中对角线元素 特征矩阵X:用于表示节点的特征,这里F是特征的维度;使用连续,低维度,实数向量进行分布式表示,特征矩阵通常通过FM矩阵分解,DeepWalk随机游走,基于图神经网络的监督和半监督学习等方式获得图嵌入表征

数学表示是比较抽象的,下面是邻接矩阵实例:数学表示是比较抽象的,下面是邻接矩阵实例:

深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

04

图节点如何表征?

其实我们可以将上述学习分成三个部分:

变换(transform):对当前的节点特征进行变换学习,这里就是乘法规则(XW),其中X为节点表征,W为模型权重 聚合(aggregate):通过邻接矩阵聚合领域节点的特征,得到该节点的新特征,根据聚合节点的权重是否可学习可以分为GCN和GAT,GCN直接采用邻接矩阵作为权重聚合邻居节点和自身节点作为当前节点的表征,GAT通过学习邻居节点对当前节点的重要程度的权重,通过加权得到节点的表征;根据聚合节点是否通过采样获得全局图卷积和局部图卷积 激活(activate):采用激活函数,增加非线性

下面我们分别介绍GCN,GraghSAGE,GAT的图神经网络的特征聚合思路和实现

全图卷积神经网络-GCN

我们不用太过纠结GCN为什么叫GCN,只需要知道它是一种将当前节点特征和一阶节点特征进行聚合来表征当前节点的新特征,通过这种方式有利于引入图节点的上下文信息,使得每个节点预测结果受邻居节点的影响,那么具体怎么集成呢?由于邻接矩阵可以表示节点之间的连接关系,我们可以在邻接矩阵上稍作调整,添加单位矩阵来结合节点自身的连接,并进行归一化,每一行表示一个节点与其他节点的连接权重大小,并作为当前节点的特征集成权重。

我们也可以将调整后的邻接矩阵看成是一种掩码(MASK),每一行权重为0的位置表示其对当前节点的聚合特征没有影响,由于这种权重本身由图的连接情况决定,是【固定的】和【不可学习的】,这种基于【整个图】结构的特征聚合网络就是GCN,属于转导学习。

下面介绍两种不同的聚合方式:

深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

聚合方法1:

通过将当前节点的特征向量与其一阶节点的特征向量【加和平均】的方式进行聚合来表征当前节点的上下文表征向量,这种方法只考虑了当前节点的连接情况,没有考虑其一阶节点的连接情况,容易造成节点的度越大,参与的节点特征聚合次数越多,而这种度越大的节点本身特殊性应该越弱,影响应该进行削弱。具体实现:

深入浅出带你读懂图卷积神经网络原理和pytorch代码实现

这个公式中:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有