GNN 的应用逐渐广泛起来,各种 GNN 的变体以及结构也在不断推出,在这篇文章中,我将总结和比较各种不同的 GNN 之间的概念性问题。当然,对不同的模型结构进行客观的比较是很困难的事情,并且按照文献中实验的结果进行比较并不总是正确。本文尽量是想帮助大家发现一些雷区并提出一些解决方案,希望引起大家的注意和讨论。
我要说的一些问题在文章:
https://arxiv.org/abs/1811.05868
中也得到了解决,强烈推荐大家阅读。
邻域
要比较 GNNs 第一个难以达成一致的问题是,不同形式的层具有不同大小的邻域,有的层只考虑节点的1阶邻居,而有的层考虑 K 阶邻居。比较流行的一些例子如下:
1-hop
GCN:https://arxiv.org/abs/1609.02907
GAT:https://arxiv.org/abs/1710.10903
GraphSage:https://arxiv.org/abs/1706.02216
GIN:https://arxiv.org/abs/1810.00826
K-hop
Cheby:https://arxiv.org/abs/1606.09375
ARMA:https://arxiv.org/abs/1901.01343
APPNP:https://arxiv.org/abs/1810.05997
SGC:https://arxiv.org/abs/1902.07153
公平的评估应该考虑到这些差异,并统一每个 GNN 具有相同的邻域,但是设计在更大邻域上操作的层表达能力更强。以 GCN 和 Cheby 为例:
2 层的 GCN 可以等效为 2层 K =1 的 Cheby 或者 1层 K=2 的 Cheby。在 GCN 的论文中,使用了 K=3 的 2 层 Cheby。他们是和 6 层 的 GCN 进行比较吗?此外,方法之间的差异可能会影响 GCN 参数 之间的差异,比如非线性和 正则化 的总量。例如,到达3 阶邻域的 GCN 可能具有3个 dropout 层,而 K = 3 的等效 Cheby 将只有 1 个。
另一个示例:SGC 可以使用恒定数量的 参数 到达任何邻域,而其他方法则不能。
正则化 和训练
正则化 是 GNN 非常重要的方面,因为开源的一些 基准 数据集都非常小,而大多数 GNN 都像疯了似的过拟和(稍后会详细介绍)。因此,模型的性能会因为 正则化 的方式而不同。通常,对于其他超 参数 也应是如此,因为 学习率 和批处理大小之类的东西可能是隐式 正则化 的一种形式。
不同文献的 正则化 方式并不相同,所以很难说是模型的性能改进是由于实际的贡献还是由于不同的 正则化 方案。
在文献中经常会有:
高学习率
高 L2 正则项
节点特征和邻接矩阵的高 dropout rates
少量的训练 epochs
低 patience
我们来看看其中的一些。首先我认为设定固定数量的训练 epoch 是一种炼金术,如果可能的话应该避免,因为这是特定于某一任务的。让模型训练 收敛 几乎总是一种更好的方法,因为它较少依赖权重的初始化。如果验证性能不指示测试性能,并且需要在没有良好标准的情况下停止训练,那可能是有问题。
我们比较容易忽略的第二个方面是 dropout。特别是,当将 dropout 应用于邻接矩阵时,会很大的提高 GNN 的性能,因为GNN在每个训练步骤中的噪声都很大,因此具有很好的泛化性。当比较两个不同的模型时,一个在邻接矩阵上使用了 dropout ,另一个也应该使用。但在实际的情况中,却不是如此。
最后,训练中剩下的关键因素是 学习率 和权重。就价值而言,以我的经验来说,对于训练之后可以 收敛 的模型来说,寻找良好的 学习率 会得到意想不到的效果。
并行 Heads
Heads 是并行计算单元,它们以不同的权重执行相同的计算,然后合并结果以产生输出。为了更好的了解这个过程,我们来比较两种方法:GAT 和 ARMA
在 NLP 文献中,并行的注意力 Heads 是相当普遍的,注意力的概念正是由此得来,因此在 GAT 中使用是很自然的。
在ARMA中,使用并行 stacks 的理论动机是,H 阶 ARMA 过滤器可以通过求和 1 阶ARMA 过滤器来计算。虽然在实践中类似于 GAT中的 heads,但在这种情况下,具有并行 heads 是实现这种特殊图过滤器的关键。
由于这些基本的语义差异,不得不考虑将带有 H heads 的 GAT 和 H 阶 ARMA 层进行比较是否公平。同样扩展到其他模型,也不能保证具有并行 heads 必定会导致给定模型的任何实际改进。实际上,某些方法可能受益于更简单的体系结构。因此,很难说单 head 与多 head 之间的比较是否公平。
数据集
最后,我们来说说数据集。如果我们测试模型的数据集不好,那么就很难进行公平的评估。实际上很多用来评估 GNN 的数据集并没有那么好。
Cora, CiteSeer, PubMed 的图 基准 数据集,统称为 GNN 的 Iris 数据集,我们应该小心对待。很多论文中的实验必须重复上百次才能得到显著的结果,这其实是蛮糟糕的。原因有三点:时间、金钱和环境。特别是如果对超 参数 进行 网格搜索 ,那么需要使用大量计算才能得到可靠结果的数据集是没有意义的,如果我们认为这些数据集应该是简单的数据集,那么就更没有意义了。
根据我自己的判断,我觉得有一些更好的替代方案:对于节点分类任务,GraphSage 数据集(PPI 和 Reddit)是比引文网络更好的 基准 ,尽管它们是归纳任务。对于图级别的学习,QM9 有 134k 个小图,它们的顺序可变,经过几次运行后,结果的不确定性会很小。虽然它是用于回归任务的数据集,但是我仍然觉得它比 PROTEINS 好的选择。对于分类任务,还有一个数据集:
FilippoBianchi(https://github.com/FilippoMB/Benchmark_dataset_for_graph_classification)
总结
在准备我论文的时候,我会非常认真的思考上述问题。我不确定上述问题一定是正确的,但我认为这是在 GNN 领域中必须要进行的探讨,并且这将推动 GNN 的发展。如果你还有一些见解,可以直接和我们分享。
探讨
M
很有趣的一篇文章!我确实同意其中一些观点,但并非全部。我们在的PPI实验的结果高于97%,因为使用了巨大的 GAT 模型。Reddit太密集了,通常在标签密集的环境中使用。QM9 很棒,但应该将其与 MEGNet 或 DimeNet 等分子模型进行比较。
D:是的,但是我认为这只是一部分问题:如果我不能可靠地将其用于实际问题,那么超专业化模型就毫无意义。所以问题实际上是:一个巨大的 GAT 是否胜过一个庞大的GCN 集合?我想要考虑的是:如果来自不同科学领域的人想要使用 GNN 进行工作,该怎么办。他们应该使用什么?我们是要他们对不同模型的实际性能进行公平的评估,还是只是过拟合以取悦评论者?
M
当然。但是这些数据集(尤其是 QM9)是完全不同的。因此,不应该期望相同的模型在所有这些数据集上均能正常工作。并且,如果针对 QM9 调整了模型,则应与针对该数据集调整的其他模型进行比较,而不仅仅是忽略它们。
当然,我们都可以发表自己的见解,可以和我们一起分享和探讨哦!
新的图 基准 数据集:
http://ogb.stanford.edu/
原文链接:
https://danielegrattarola.github.io/posts/2019-12-13/pitfalls.html
极验是全球顶尖的交互安全技术服务商,于2012年在武汉成立。全球首创 “行为式验证技术” ,利用生物特征与人工智能技术解决交互安全问题,为企业抵御恶意攻击防止资产损失提供一站式解决方案。