运营商|可以改善图神经网络,提升GNN性能的三个技巧( 二 )


除此以外还可以创建自己的 GNN 层实现 。这听起来很难; 但是如果使用 DGL 之类的图学习库 , 那绝对是可行的 。
例如 , 下面根据 GAT1? 和 R-GCN1 的现有想法制定了自己的实现 , 称之为 Edge-GCN11:

我自己的 Edge-GCN 公式(v 代表节点 , e 代表边 , sigma 是非线性激活函数 [在这种情况下为 RELU
, alpha 是每个关系类型的学习注意力分数 , c 是归一化常数)
Edge-GCN 使用注意力机制来学习边缘与节点特征对所有不同关系类型的重要性11 。E-GCN 架构在 AUC 中将 GNN 模型的结果提高了约 2%(人造节点也是如此) 。
自监督预训练这可能是提高 GNN 性能的最重要技巧 。 尽管预训练 GNN 已经在理论上进行了探索12 , 但在实践中的应用仍然很少? ? ? 。
总体思路与计算机视觉和自然语言处理领域的概念非常相似 。 以语言模型 BERT13 为例 , 该模型经过训练可预测句子中的掩蔽词(这是自监督的 , 因为它不依赖于标记数据) 。 我们通常不太关心预测掩蔽词的具体任务 。 但是生成的词嵌入对于许多不同的任务非常有用 , 因为模型真的了解特定词之间的关系 。
使用自监督任务预训练 GNN 模型节点嵌入 , 这在有噪声标签的情况下尤其有益 , 因为自我监督过程提供了更多“标记”示例(因为我们不需要为预训练提供标签)并且可能也不太容易受到噪声干扰11 12 。
如果我们的最终目标是对节点进行分类 , 可以在整个图上使用链接预测作为自我监督的预训练任务 。 在链接预测中 , 我们尝试预测两个节点之间是否存在边(=链接) 。 因此训练一个 GNN 来区分图中的真实边和人为引入的假边(“链接预测的负采样”) 。 由于我们只是在图中现有节点之间添加假边并删除真实边 , 因此可以不依赖任何标记数据 。 接下来的步骤就是使用来自链接预测 GNN 模型的结果节点嵌入作为另一个节点分类模型的输入 。
向模型添加一个自我监督的预训练管道将其 AUC 分数增加了 14% , 这可以说是目前最有效的技巧 。
分离前置和下游任务到目前为止 , 只讨论了在自监督任务(“前置”)上预训练 GNN 并为最终(“下游”)任务使用相同的 GNN 架构 。 但是其实可以为这两个任务使用不同的模型架构 。 甚至还可以组合出不同的 GNN 架构 。
GNN 层可能无法在各种情况下有效地学习 。 因此可以使用 GNN 模型通过自监督预训练创建节点嵌入 , 并将这些嵌入传递给经典机器学习算法或全连接的神经网络层 , 以完成最终的下游任务 。 这种架构可用于许多不同的下游任务 , 例如图分类到节点分类还有回归 。
该模型将受益于将访问图中包含的所有信息的能力与非线性流形学习属性相结合 。 该模型从更简单的机器学习算法中继承了一些好处 , 例如减少了训练时间和更好的可解释性 。 文章最初提到的基于树的模型(例如随机森林)在节点分类的下游任务11中表现出特别强的性能 , 所以我们就从这里开始 。
在下面 , 可以找到包含上面提出的三个想法的最终管道的概述:

该架构代表了我们的最终模型 , AUC 得分为 78.1(另一个 + 1.5%) , 通过 AUC 衡量的性能总提升 17%(基本 R-GCN 模型:AUC = 66.6)11 。
总结在这篇文章中 , 我们讨论了图神经网络模型的缺点以及提高模型性能的三个主要技巧 。结合这些技巧 , 能够将最终 GNN 模型的 AUC11 提高 17%(对于其他指标甚至更多) 。 下面我们在总结一下我们的步骤:
如果数据包含边缘特征 , 并且你认为它们对最终预测任务很有洞察力 , 可以尝试利用边缘特征 。