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

当然,我们都可以发表自己的见解,可以和我们一起分享和探讨哦!

新的图基准数据集:

http://ogb.stanford.edu/

原文链接:

https://danielegrattarola.github.io/posts/2019-12-13/pitfalls.html

极验
极验

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

理论GNN
相关数据
网格搜索技术

网格搜索是一项模型超参数优化技术,常用于优化三个或者更少数量的超参数,本质是一种穷举法。对于每个超参数,使用者选择一个较小的有限集去探索。然后,这些超参数笛卡尔乘积得到若干组超参数。网格搜索使用每组超参数训练模型,挑选验证集误差最小的超参数作为最好的超参数。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

推荐文章
暂无评论
暂无评论~