图神经网络的新基准

独自空忆成欢 提交于 2020-04-13 11:11:33

【今日推荐】:为什么一到面试就懵逼!>>>

  

  作者 | 李光明

  编辑 | 贾 伟

  编者注:本文解读论文与我们曾发文章 《 》所解读 论文,为同一篇,不同作者,不同视角。一同参考。

  近些年,图神经网络(GNN)的关注度越 来越高,相关的算法也越来越多,应用领域越来越广,其面临的两大基础问题是:

  1)构建GNN的第一原则和第一要素是什么?使用什么样的架构能够使得GNN在大数据集上同样拥有泛化能力和扩展性?

  2)如何研究和量化不同 GNN 的影响?

  基准框架(Benchmarking)是解决这些基础问题的强大工具。比如,著名的2012 ImageNet 竞赛提供了基准的图像数据集,引来各国参赛队伍争相产出最好的图像分类模型,直接促进了深度学习在计算机视觉领域的变革。

  但设计成功的基准库面临着很多挑战:合适的数据集,鲁棒性的代码接口,以及公平的实验设置,并且要求结果可复现。现有的GNN模型常用的数据集(CORA和TU)都很小,导致大多数GNN模型产出几乎一样的结果,即使没有引入图结构的神经网络,有时都能表现地比GNN好。此外,实验参数的设置,包括超参,损失函数以及学习率的选择,都是构建基准库需要面临的挑战。

  

  论文链接:

  https://arxiv.org/pdf/2003.00982.pdf

  开源链接:

  https://github.com/graphdeeplearning/benchmarking-gnns

  近期,南洋理工大学的Vijay等人(Yoshua Bengio 也在作者之列)发表了一篇GNN基准论文,提出了图神经网络的新基准。文章本身 做了以下几点贡献:

  1)基于PyTorch和DGL库在Github上开源了一个使用者友好的GNN基准库( https://github.com/graphdeeplearning/benchmarking-gnns );

  2)提出了一些中等规模的数据集(9-500个节点),涵盖了数学建模,计算机视觉,组合优化,以及化学等领域;

  3)利用基准库验证了GNN中重要组件的有效性,包括图卷积,异性扩散,残差连接,标准化层等;

  4)受限于超参寻找的代价,本文并非试图比较各种GNN模型,而是固定一组参数设定,比较各GNN算法的效果;

  5)结果可复现。

  1

  基准库

  本文提出了六个中等规模的数据集:

  

  两个计算机视觉领域的数据集MNIST和CIFAR10,利用超像素将每张图片转化为图,然后进行图分类。PATTERN和CLUSTER数据集中的图由SBM(Stochastic Block Model)产生,用于识别特定子图(PATTERN)和社群发现(CLUSTER)等节点分类任务。根据旅行商问题(Traveling Salesman Problem)提出TSP数据集,用于边的分类/连接预测任务。ZINC数据集是真实存在的分子数据集,每个分子看作一张图,原子是结点,键是边,通过回归任务评估分子性质。

  以上六个数据集互为补充,并且都至少包含了12000个图,不同于CORA和TU数据集,它们都是全人工或半人工产生的。本文提出这些数据集的动机就是利用足够大的数据集发现不同GNN模型之间的差异。

  2

  图神经网络

  图神经网络可以简述为利用如下公式迭代节点的向量化表示:

  其中 表示在 层,节点 的 维的向量化表示, 是与节点 连接的节点集合, 表示节点 的度, 提供非线性, 是可训练的参数矩阵。这是GCN的基础形式,而GraphSage和GIN分别提出了自己的变种,GraphSage:

  GIN:

  其中 , , 是可训练的参数, 代表标准化层。前面介绍的模型中,所有邻居节点在中心节点的更新中地位是平等的,我们称这种模型为各向同性的。

  与此相对的,MoNet-高斯混合模型网络,门限图卷积网络,以及图注意力网络提出的是各向异性的模型,它们的更新机制如下所示:

  其中 和 通过不同方式计算得到,比如图注意力网络中的attention机制和门限图卷积网络中的门限机制。

  最后,本文在实验阶段还考虑了层次化图神经网络DiffPool模型,每一个抽象层都使用前述的GraphSage公式进行迭代。

  3

  CORA和TU数据集的问题

  CORA和TU数据集是GNN领域常用的数据集,这些数据集来源于真实数据,但一般都很小。CORA数据集只有约2700个节点,而TU-IMDB只包含了1500个图,平均13个节点,TU-MUTAG包含188个分子和18个节点。虽然它们能够被快速地用来开发/验证新模型,但很容易导致过拟合现象。

  CORA和TU数据集的另一个问题是实验结果通常不可复现。绝大部分文章并非使用统一的实验数据划分方式,此外,即使划分方式一致,在十折交叉验证情况下,GNN模型的效果会出现比较大的波动,因为数据集实在太小了,后续的实验环节会验证这一点。

  4

  实验环节

  实验环节会在基准库上运行并验证图卷积网络,图注意力网络,GraphSage,DiffPool,GIN,以及MoNet等模型,它们均来自DGL库,用PyTorch实现(本文使用残差连接,批标准化和图标准化,对所有DGL中的图神经网络进行了升级)。本文同时考虑了门限图卷积神经网络(GraphGCN-E表示同时考虑边的属性),此外,将MLP并行作用于各个节点的特征向量上作为实验的baseline。实验环节会在Nvidia 1080Ti GPU上进行TU,MNIST,CIFAR10,ZINC和TSP数据集的相关实验,在Nvidia 2080Ti GPU上进行PATTERN和CLUSTER数据集的相关实验。

  TU数据集上的图分类

  选择三个TU数据集进行图分类实验 - ENZYMES(平均节点数2 - 126);DD(平均节点数30 - 5748);PROTEINS(平均节点数 4 - 620)。具体的实验设置如下:

  数据划分:十折交叉验证,训练集:验证集:测试集 = 8:1:1,采用分层采样保证各数据集不会改变类的分布。

  训练:使用Adam优化器(衰减学习率实现步长退火)训练,每个GNN模型的初始的学习率在 到 之间使用网格搜索确定。如果每25轮训练后,验证集的loss没有增加,则学习率以系数0.5衰减(减半)。实验期间不设定训练轮数的上限,实验终止的条件是学习率衰减到 或更低。

  准确度衡量:根据预测的分类标签和真实的类标签衡量准确度,模型效果均为十折交叉验证的平均结果。

  图分类层:从GNN最后一层提取节点向量化表示,取均值作为图的向量化表示,然后作为MLP的输入,以此构建图分类层。

  超参数设定:本文的目标不是选择最优的超参,而是验证模型效果,因此实验中设定参数量上限为十万,并随机选择4层神经网络。

  实验结果如下图所示:

  

  其中 seed1和seed2 分别表示两次执行实验的结果,两次均采用相同的超参配置,其中红色,蓝色,和黑色粗体分别表示第一,第二,第三优秀的效果。

  超像素数据集的图分类

  本环节使用计算机视觉的MNIST和CIFAR10数据集,初始的数据集使用超像素方法转化成图,超参数代表图片中同质的小部分区域,可以通过SLIC技术(可以理解成是图片上的k-Means聚类方法)得到。处理之后的MNIST数据集平均节点数是 40 - 75,CIFAR10平均节点数是85 - 150。超像素间的连接(图上的边)则通过k-近邻的邻接矩阵构建, ,其中 表示超像素 , 理解为与k近邻节点距离的均值。转化完成后的图如下所示:

  

  实验设置:

  数据划分:使用标准的MNIST和CIFAR10的数据划分设置。

  训练:仍然采用Adam优化器,初始学习率设定为 ,衰减系数为0.5,终止条件是学习率衰减到 。

  可复现性:执行4轮实验,取均值作为最终结果。

  准确度衡量图分类层超参数设定,均同前述图分类衡量标准。

  实验结果如下图所示,其中的颜色含义:Red - the best model; Violet - good models; Bold - indicates the best model between residual and non-residual connections (both models are bold if they perform equally).

  

  分子数据集上的图回归

  本环节使用ZINC数据集,平均节点数 9 - 37。对每个分子图,节点特征是原子的类型,边的特征是边的类型,实验设定除以下修改外,均与前述实验相同:

  准确度衡量:采用MAE衡量回归任务的准确性。

  实验结果如下图所示,颜色含义同前述实验:

  

  SBM数据集的节点分类

  SBM是一张随机图,图中的每个节点都会分配一个社区号,任意两个同属同一社区的节点以概率 相连,分属不同社区的节点以概率 相连(可以理解为噪声)。实验中我们设定社区总数为5,每个社区的节点数在 5 - 35之间,并设定 ,以此构成图G。节点的分类也是以类内概率0.5和类间概率0.5随机产生(比如,属于类P的节点有50%与图G相连),随机产生多个分类,除以下变化外,其他实验设置均与前述实验相同:

  准确度衡量:多个类准确度的均值。

  实验结果如下图所示:

  

  TSP数据集上的边分类

  近年来产生了一些结合深度学习和图神经网络结合的解决NP-hard问题(比如TSP问题)的方法。TSP问题可以简单理解为在二维欧式图上寻找经过所有节点的最短长度的边的集合,而该实验环节的边分类问题可以转化为边是否存在最终的最优路径中。除下面的变化外,其他实验设定均与前述实验相同:

  准确度衡量:采用F1-score衡量分类准确性。

  边分类层:GNN最后一层的节点的向量表示,连接作为边的向量化表示,接MLP。

  实验结果如下图所示:

  

  5

  实验总结

  通过前一章节的多个实验环节,可以得到以下结果:

  在小数据集上非图的NN(MLP)也可以得到较好的结果;

  在大数据集上,GNN表现远超非图NN;

  简单形式的GNN(如GCN)不会有太好的效果;

  各向同性的GNN在原始的GCN上有所改进,比如GraphSage, GIN以及DiffPool;

  各向异性的GNN也是有效的,比如门限图卷积网络,图注意力网络等;

  残差连接能够提升模型效果;

  正则化能够提升模型效果。

  下面三个图分别展示了残差连接在TSP,ZINC和CLUSTER数据集上的效果:

  

  

  

  6

  结 论

  本文提出了用于GNN模型评估的基准库,并通过多个数据集上多种任务的实验得到了一些结论:

  1)随着大数据集的趋势,图形结构至关重要;

  2)简单的GCN模型无法学到复杂的图形结构;

  3)自节点信息,层次化结构,注意力机制,门限边以及更好的读出函数是提升GCN的关键结构;

  4)GNN可以通过残差连接进行深度扩展,也可以通过正则化提升性能。

  本文基准库上的结果都是可复现的,并且已经在Github上开源,链接如下:

  https://github.com/graphdeeplearning/benchmarking-gnns

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!