Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Daniele Grattarola作者

GNN 模型评估的一些陷阱

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 调整了模型,则应与针对该数据集调整的其他模型进行比较,而不仅仅是忽略它们。

极验
极验

极验是全球顶尖的交互安全技术服务商,于2012年在武汉成立。全球首创 “行为式验证技术” ,利用生物特征与人工智能技术解决交互安全问题,为企业抵御恶意攻击防止资产损失提供一站式解决方案。

理论GNNGCN正则化过拟合
2
暂无评论
暂无评论~