定义:
对图上所有的属性,包括顶点、边、全局、上下文进行的一个可以优化的变换,该变换可以保存住图的对称信息(将顶点进行另外一个顺序的排序后,结果不变)
Message passing neural network:使用一个信息传递的神经网络,会对顶点、边、全局等属性进行变换,但不会改变图的连接性
输入:图
输出:图
构造最简单的GNN:
对于顶点向量、边向量、全局向量分别构造MLP,MLP的输入输出大小一致,三个MLP就组成了一个GNN的层,输入和输出都为一个图;对于顶点向量、边向量、全局向量找到对应的MLP并分别放进去,把输出作为更新
结果:
- 进去出来的过程属性得到了更新,但图的结构未发生变换
- 每个MLP对属性独自作用,它不会考虑到所有的连接信息,不管对整个顶点做任何排序也不会改变结果
最后一层输出如何得到预测值:
分类问题:
若为n类,做一个输出大小为n的全连接层,再加一个softmax得到多类输出
回归问题:
得到一个值
结果:
最后一个输出为一张图,对于每个顶点进入全连接层,然后得到输出,最后将各个顶点做分类;不管有多少个顶点,都只有一个全连接层,所有的顶点共享一个全连接层里的参数;在一个GNN中,不管图的尺寸有多大,所有的顶点共享一个MLP,边共享一个MLP,全局信息共享一个MLP
若顶点没有向量:
情况:
- 经典图理论中,节点不带属性
- 数据不足或不需要特征表示
- 特定任务中不需要节点特征
引入Pooling(汇聚):
将与这个点相邻的边全部取出来,同样把全局向量拿出来,得到五个向量;将五个向量全部相加,得到代表这一个点的向量(假设维度相同,若维度不同需要投影),得到这个向量后,可以做最后全连接层的输出
有边向量,无顶点向量:
通过汇聚层,从边到顶点,每个顶点得到自己的向量,送入顶点共享的MLP,全连接层得到顶点输出
有顶点向量,无边向量:
把顶点向量汇聚到边上,假设一条边连接两个顶点,把两个顶点相加得到边向量,送入边向量的输出层,边共享的MLP,最后得到边输出
有顶点向量,无全局向量:
把所有顶点向量相加,得到全局向量,进入MLP得到输出
常见的聚合方法:
求和、平均、最大值
GNN:
- 进入一系列GNN层,每个层里有三个MLP,表示对应的顶点、边、全局三种属性
- 输出得到保持整个结构的图,但属性发生了变换
- 根据对希望做预测的属性,添加合适的输出层;若缺失信息,添加合适的汇聚层
- 完成预测
局限性:
对GNN block并没有使用图信息,对每个属性做变换时,是单独的属性进入MLP,并没有看出该点是与哪些边相连的或该边与哪个顶点相连,因此GNN blocks并没有将整个图的信息更新到属性中,导致最后的结果与整个图的信息有差异
提升技术:
信息传递:
类似于标准意义的卷积;把该点的向量与该点邻居的向量提取,相加后得到一个汇聚的向量;将汇聚向量送入MLP得到该点向量的更新;最后将邻居的邻居等信息传递过来,完成了整个图的比较长距离的一个信息传递过程
过程:
聚合步 -> 更新步
用“黑色圆圈”记号表示有一个顶点,顶点之间会通过距离为“1”的邻居,也就是为一近邻把信息进行传递
如何将顶点信息传递给边,再把边的信息传递给顶点:
- 把每个边连接的两个顶点的信息把它加到边自己的向量里,假设维度不一样做投影变换,做更新
- 把更新过后的每个顶点连接的边的信息也加到点自己的向量里,维度不一样需投影,再做更新
- 再各自进入各自的MLP做更新
并没有发现汇聚的次序谁比谁更好,提出了交替法
Master node/context vector:
背景:
每次汇聚都要观察自己的邻居,但当图特别大而且连接没那么紧密时,导致一个消息传递到一个很远的点需要走很长步
定义:
该点是一个虚拟点,该点可以与所有顶点相连,所有的边相连,为U;U与所有V,所有E相连;若想要将顶点信息汇聚给边或将边信息汇聚给点时,也同时会将U汇聚;更新U时,会将所有的顶点信息和边信息取出
模型对超参数的影响:
每一个属性的向量长度:
顶点、边、全局的影响不大
不同层数对精度影响:
层数越低可学习参数越小;可以将层数调高,但耦合度较紧密,要把剩下参数调好
信息传递:
在顶点、边、全局都传递信息的效果最好;传递边的帮助最小
相关技术:
Multigraph:
顶点之间有多条边
分层图:
有一些顶点里含有子图
如何对图采样和做batch:
假设图的连通性足够,那么最后一个顶点可以看到整张图的全部信息;在对最后一个顶点算梯度时,将整张图之间的计算过程结果全部存起来,因此计算量较大无法承受,采取了采样的措施。
将图一次采用一个小图,在小图上做信息的汇聚,算梯度时只需要保存小图的过程
方法:
-
Random node sampling:
- 随机采样一些点,将点的最近邻居筛选,在做计算时旨在子图上做计算,控制每次采样的点个数来避免图不要过大
-
Random walk sampling:
- 随机游走,从某一个顶点开始,在里面随机找一条边,沿着这条边走到下一个节点,沿着该图随机走,规定最多随机走多少步,就会得到一个子图
-
Random walk with neighborhood:
- 结合上述两种,先随机走三步,把这三步的每个点的邻居寻找出来
-
Diffusion sampling:
- 取一个点,将其一近邻、二近邻、三近邻往前走k步把他做一个宽度遍历,得到一个字图
Inductive biases:
GNN假设:保持图的不变性和对称性;不管怎么交换图的顶点顺序,GNN对它的作用都是保持不变的