GNN dataset 划分

GNN dataset 划分

GNN dataset 划分

训练集、测试集、验证集的划分

fixed or random

GNN dataset 划分

GNN dataset 划分

fixed split:对dataset只划分一次

random split: 对dataset进行random split,但是对不同的random seed得到的performance做一个求平均。

graph is special

GNN dataset 划分

对于graph的划分不想documents或者image一样,因为不同的节点之间具有边进行相连,直接进行划分一个最大的问题就是存在message leakage。

Transductive

GNN dataset 划分

特点:训练、验证、测试数据都只是用简单将节点进行进行划分,计算的时候都是使用了整张图。

Inductive

将一张图split成多个子图,每一个子图都是相互独立的,不存在message leakage问题。

GNN dataset 划分

因为transductive setting作用在一张图上所以它无法用于graph tasks。

GCN与GraphSage

GCN就是transductive setting,而graphSage是inductive 方式。

三种任务

Node classification

GNN dataset 划分

在GCN中,虽然我们只对了一部分节点进行训练,也就是半监督学习,但实际上我们用到的还是整张图结构和features。在graphSage中,使用的inductive方式进行分类。

GNN dataset 划分

GNN dataset 划分

对于每一个minibatch实际上就是一个新的子图。

graph classification

一样的理论,但是只有inductive才可以做graph classification,因为它是作用的不同的子图上的。

GNN dataset 划分

inductive

GNN dataset 划分

它将边分为message edges和Supervision edges,GNN用message edges来计算,用supervision edges做predict。

GNN dataset 划分

inductive 方式,我们会在不同的图上做train、validation、test。

Transductive

GNN dataset 划分

transductive link predict方式,在验证时会将train 的supervision edges 加入到message edges,在test时候,做类似的事情,会将valid 的supervision edges加入到message edges。

jure教授给出的视角:将这个过程视为边生长的过程,也就是引入了时序这个概念,train、valid、test分别对应在不同时间的图。

思考:既然可以视为一个时序数据,那对不同时刻的图,做graph2vec,然后输入到LSTM或者GRU里,是否可以做到预测?

另一个思考的视角:将supervision视为一个mask,引入在之前分享提到的多头 attention机制,用attention进行来训练。这个有点类似于bert里的预训练过程,可以随机随选mask边进行training,最后再做一个预测。

How Powerful are Graph Neural Networks

以这张图为例,我们不用node features,也就是所有节点的features一样,于是用黄色给每个节点标了颜色代表节点特征。

GNN dataset 划分

可以看到我们可以区分node 1 和node 5的,因为两个节点的度不一样。

对于node 1和node 4 我们虽然没法直接用degree来区分,但可以用其邻居节点的degree进行区分。

但是对于node 1和node 2我们是没有办法进行区分的。

GNN dataset 划分

可以看到node 1 和node 2的计算图是一样的,注意这个节点的标号其实是不存在的,我们只能够看到structure和node features,因为所有节点都是黄色,所有节点的features都一样。

GNN dataset 划分

我们将这个graph的所有节点的计算图写出来,可以看到这五个节点可以划分为四种计算图。

那么说,最强的GNN能做什么呢?

最强的GNN应当可以将每一种不同的节点embedding为不同的向量。

GNN dataset 划分

那么这个GNN这就应当是一个单射函数,我们不同种的node可以映射为不同向量。

GNN dataset 划分

不同的aggregate function

max pool

待续

上一篇:Leetcode 1971. Find if Path Exists in Graph [Python]


下一篇:Linux 显示文件大小的命令