Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >改善图形神经网络,提升GNN性能的三个技巧

改善图形神经网络,提升GNN性能的三个技巧

作者头像
数据派THU
发布于 2022-05-18 03:10:17
发布于 2022-05-18 03:10:17
28900
代码可运行
举报
文章被收录于专栏:数据派THU数据派THU
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
来源:DeepHub IMBA本文约2800字,建议阅读8分钟本文总结了一些技巧来提高 GNN 模型的性能。

GNN 提供了一种在图结构化数据上使用深度学习技术的方法。图结构数据无处不在:从化学(例如分子图)到社交媒体(例如社交网络)以及金融投资(例如 VC 投资网络),GNN 在各种任务中显示出最先进的性能¹ ²。

在我的以前的一个实践:在投资者、初创公司和个人组成的投资网络上预测初创公司未来的融资轮次,其基线随机森林模型已经相当强大(AUC = 0.69)。但是GNN 模型(AUC = 0.66)一直落后于基线模型的性能,并且增加层数和隐藏维度并没有帮助。所以我开始研究,发现 GNN 并不简单。

为了解决这个问题,本文总结了一些技巧来提高 GNN 模型的性能。

什么是 GNN?

在讨论如何改进 GNN 之前,让我们快速回顾一下它们的工作原理。假设我们有一个简单的图表,如下所示:

图包含节点(i、j 和 k)和连接这些节点的边(e)。此外,图还包括每个节点(X1,...)和可能的每条边(黑色)的节点特征。目标节点以黄色着色,其 1 跳邻居为蓝色,2 跳邻居以绿色表示。包括不同类型节点的图称为“异构”图,就像上面的例子一样。

消息传递

步骤 0 中节点的嵌入只是由其自身的特征向量(由特征 X1、X2……组成)。为了获得新的 (l + 1) 节点嵌入 h,对于目标节点 i(黄色),需要从其相邻节点 j(蓝色)中提取所有嵌入,提取其自身的表示以及潜在的边缘特征e(黑色)并聚合该信息。这具体步骤参考下面的公式。但是,目前大多数著名的 GNN 架构都没有使用边缘特征⁵。在提取特征之后就可以将这些新的节点嵌入用于各种任务,例如节点分类、链接预测或图分类。

GNN 的问题

许多最近跨领域的研究发现 GNN 模型没有提供预期的性能⁵ ⁶ ⁷。当研究人员将它们与更简单的基于树的基线模型进行比较时,GNN 甚至无法超越基线的模型,例如我们上面提到的随机森林。

一些研究人员对 GNN 有时表现不佳提供了理论解释⁸。根据他们的实验,GNN 只进行特征去噪,无法学习非线性流形。因此他们主张将 GNN 视为图学习模型的一种机制(例如,用于特征去噪),而不是他们自己的完整的端到端模型。

为了解决这些问题并提升 GNN,本文总结了 3 个主要技巧/想法:

  • 在 GNN 中利用边缘特征
  • GNN 的自我监督预训练
  • 分离前置和下游任务

利用边缘特征

利用边缘特征的想法在很大程度上取决于正在使用的数据类型。如果数据包含(多维)边缘特征,则利用边缘特征可以对模型的性能产生影响。

但是很少有已建立的 GNN 模型架构支持多维边缘特征⁵。以我的经验,使用过并且效果很好的一个简单的解决方法是创建人造节点:

通过使用人造节点,可以继续使用以前使用的相同模型。而唯一要改变的是图本身,新增节点会使图变得更复杂。每条边都将成为连接到原始深蓝色节点的自身节点(浅蓝色),而不是保存边特征的边。

通过将边缘特征作为人造节点的节点特征传递给模型来间接利用边缘特征。如果边缘特征与任务相关,这可以提高模型的性能,但也会增加复杂性。并且需要考虑向模型中添加更多 GNN 层(以允许更多邻居跳)。人造节点可以使 AUC 增加约 2%(我的经验)。

除此以外还可以创建自己的 GNN 层实现。这听起来很难;但是如果使用 DGL 之类的图学习库,那绝对是可行的。

例如,下面根据 GAT¹⁰ 和 R-GCN¹ 的现有想法制定了自己的实现,称之为 Edge-GCN¹¹:

我自己的 Edge-GCN 公式(v 代表节点,e 代表边,sigma 是非线性激活函数 [在这种情况下为 RELU],alpha 是每个关系类型的学习注意力分数,c 是归一化常数)

Edge-GCN 使用注意力机制来学习边缘与节点特征对所有不同关系类型的重要性¹¹。E-GCN 架构在 AUC 中将 GNN 模型的结果提高了约 2%(人造节点也是如此)。

自监督预训练

这可能是提高 GNN 性能的最重要技巧。尽管预训练 GNN 已经在理论上进行了探索¹²,但在实践中的应用仍然很少⁶ ⁷ ⁸。

总体思路与计算机视觉自然语言处理领域的概念非常相似。以语言模型 BERT¹³ 为例,该模型经过训练可预测句子中的掩蔽词(这是自监督的,因为它不依赖于标记数据)。我们通常不太关心预测掩蔽词的具体任务。但是生成的词嵌入对于许多不同的任务非常有用,因为模型真的了解特定词之间的关系。

使用自监督任务预训练 GNN 模型节点嵌入,这在有噪声标签的情况下尤其有益,因为自我监督过程提供了更多“标记”示例(因为我们不需要为预训练提供标签)并且可能也不太容易受到噪声干扰¹¹ ¹²。

如果我们的最终目标是对节点进行分类,可以在整个图上使用链接预测作为自我监督的预训练任务。在链接预测中,我们尝试预测两个节点之间是否存在边(=链接)。因此训练一个 GNN 来区分图中的真实边和人为引入的假边(“链接预测的负采样”)。由于我们只是在图中现有节点之间添加假边并删除真实边,因此可以不依赖任何标记数据。接下来的步骤就是使用来自链接预测 GNN 模型的结果节点嵌入作为另一个节点分类模型的输入。

向模型添加一个自我监督的预训练管道将其 AUC 分数增加了 14%,这可以说是目前最有效的技巧。

分离前置和下游任务

到目前为止,只讨论了在自监督任务(“前置”)上预训练 GNN 并为最终(“下游”)任务使用相同的 GNN 架构。但是其实可以为这两个任务使用不同的模型架构。甚至还可以组合出不同的 GNN 架构。

GNN 层可能无法在各种情况下有效地学习。因此可以使用 GNN 模型通过自监督预训练创建节点嵌入,并将这些嵌入传递给经典机器学习算法或全连接的神经网络层,以完成最终的下游任务。这种架构可用于许多不同的下游任务,例如图分类到节点分类还有回归。

该模型将受益于将访问图中包含的所有信息的能力与非线性流形学习属性相结合。该模型从更简单的机器学习算法中继承了一些好处,例如减少了训练时间和更好的可解释性。文章最初提到的基于树的模型(例如随机森林)在节点分类的下游任务¹¹中表现出特别强的性能,所以我们就从这里开始。

在下面,可以找到包含上面提出的三个想法的最终管道的概述:

该架构代表了我们的最终模型,AUC 得分为 78.1(另一个 + 1.5%),通过 AUC 衡量的性能总提升 17%(基本 R-GCN 模型:AUC = 66.6)¹¹。

总结

在这篇文章中,我们讨论了图神经网络模型的缺点以及提高模型性能的三个主要技巧。结合这些技巧,能够将最终 GNN 模型的 AUC¹¹ 提高 17%(对于其他指标甚至更多)。下面我们再总结一下我们的步骤:

如果数据包含边缘特征,并且你认为它们对最终预测任务很有洞察力,可以尝试利用边缘特征。

其次,使用自监督目标对 GNN 模型进行预训练通常有利于最终模型的性能。它可以增加训练示例的数量,有时还可以减少固有噪声。

最后,为前置和最终预测任务测试不同的架构可以提高模型的预测能力。

引用

[1] Michael Schlichtkrull, Thomas N. Kipf, Peter Bloem, Rianne van den  Berg, Ivan Titov, and Max Welling. Modeling relational data with graph  convolutional networks, 2017.

[2] Ziniu Hu, Yuxiao Dong, Kuansan Wang, and Yizhou Sun. Heterogeneous graph transformer, 2020.

[3] https://deepfindr.com, 2020.

[4] Davide Bacciu, Federico Errica, Alessio Michelia, Marco Podda. A Gentle Introduction to Deep Learning for Graphs, 2020

[5] Yulei Yang Dongsheng Li. NENN: Incorporate Node and Edge Features in Graph Neural Networks, 2020

[6] Federico Errica, Marco Podda, Davide Bacciu, and Alessio Micheli. A  fair comparison of graph neural networks for graph classification, 2020.

[7] Clement Gastaud, Theophile Carniel, and Jean-Michel Dalle. The varying  importance of extrinsic factors in the success of startup fundraising:  competition at early-stage and networks at growth-stage, 2019.

[8] Dejun Jiang, Zhenxing Wu, Chang-Yu Hsieh, Guangyong Chen, Ben Liao, Zhe Wang, Chao Shen, Dongsheng Cao, Jian Wu, and Tingjun Hou. Could graph  neural networks learn better molecular representation for drug  discovery? 2021.

[9] Hoang NT and Takanori Maehara. Revisiting graph neural networks: All we have is low-pass filters, 2019.

[10] Petar Veličković, Guillem Cucurull, Arantxa Casanova, Adriana Romero,  Pietro Liò, and Yoshua Bengio. Graph attention networks, 2018.

[11] Carlo Harprecht. Predicting Future Funding Rounds using Graph Neural Networks, 2021

[12] Weihua Hu, Bowen Liu, Joseph Gomes, Marinka Zitnik, Percy Liang, Vijay  Pande, and Jure Leskovec. Strategies for Pre-training Graph Neural  Networks, 2019.

[13] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of Deep Bidirectional Transformers for Language  Understanding, 2018.

作者:Carlo H

编辑:黄继彦

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Python实现深度学习模型:图神经网络(GNN)
图神经网络(Graph Neural Network,GNN)是一类能够处理图结构数据的深度学习模型。与传统的神经网络不同,GNN可以直接处理图结构数据,例如社交网络、分子结构和知识图谱等。本文将详细介绍如何使用Python实现一个简单的GNN模型,并通过具体的代码示例来说明。
Echo_Wish
2024/06/26
9300
使用Python实现深度学习模型:图神经网络(GNN)
中山大学邹青松团队提出DGCL模型,通过双图神经网络对比学习预测分子性质
在化学分子数据集中,有大量的未标记数据,而标记数据的比例相对较小。缺乏标签限制了监督学习方法的在分子性质预测任务上的直接适用性。自监督学习(SSL)使模型能够从未标记的数据中学习,在分子性质预测领域得到了广泛的关注。对比学习(CL)作为一种有效的SSL范式,在各个领域都表现出卓越的能力,现有的许多分子表示的CL方法采用不同的策略来提高预测精度。然而,这些方法可能会遇到表征之间的信息重叠,潜在地限制了模型学习能力的增强,缺乏基于已建立的先验知识生成增强表示的鲁棒策略。
智药邦
2024/11/13
1780
中山大学邹青松团队提出DGCL模型,通过双图神经网络对比学习预测分子性质
GraphGallery:几行代码玩转图神经网络
图神经网络(Graph Neural Networks,GNN)是近几年兴起的新的研究热点,其借鉴了传统卷积神经网络等模型的思想,在图结构数据上定义了一种新的神经网络架构。如果作为初入该领域的科研人员,想要快速学习并验证自己的想法,需要花费一定的时间搜集数据集,定义模型的训练测试过程,寻找现有的模型进行比较测试,这无疑是繁琐且不必要的。GraphGallery 为科研人员提供了一个简单方便的框架,用于在一些常用的数据集上快速建立和测试自己的模型,并且与现有的基准模型进行比较。GraphGallery目前支持主流的两大机器学习框架:TensorFlow 和 PyTorch,以及两种图神经网络开发后端PyG与DGL,带你几行代码玩转图神经网络。
Houye
2021/10/12
8100
GraphGallery:几行代码玩转图神经网络
图神经网络越深,表现就一定越好吗?
数十层甚至数百层神经网络的应用,是深度学习的重要标志之一。但现实情况却远非如此:比如今年被视作机器学习领域最火热的研究方向之一——图神经网络,大多数都只运用了寥寥几层网络。
AI科技评论
2020/08/10
7130
图神经网络越深,表现就一定越好吗?
使用Python实现深度学习模型:图神经网络(GNN)
图神经网络(Graph Neural Network,GNN)是一类能够处理图结构数据的深度学习模型。与传统的神经网络不同,GNN可以直接处理图结构数据,例如社交网络、分子结构和知识图谱等。本文将详细介绍如何使用Python实现一个简单的GNN模型,并通过具体的代码示例来说明。
Echo_Wish
2024/07/01
3790
终于有人总结了图神经网络!
本文从一个更直观的角度对当前经典流行的GNN网络,包括GCN、GraphSAGE、GAT、GAE以及graph pooling策略DiffPool等等做一个简单的小结。
abs_zero
2021/07/05
11.3K1
【GNN】图神经网络综述
本篇文章是对论文“Wu Z , Pan S , Chen F , et al. A Comprehensive Survey on Graph Neural Networks[J]. 2019.“”的翻译与笔记
zenRRan
2020/02/18
1.8K0
扩展图神经网络:暴力堆叠模型深度并不可取
目前,阻碍图神经网络在业界大规模应用的挑战之一是:图神经网络很难被扩展到 Twitter 的用户关注关系图这类大型图上。
AI科技评论
2020/10/27
9070
扩展图神经网络:暴力堆叠模型深度并不可取
图神经网络适合做推荐系统吗?
最近在看相关资料,发现相关论文不是特别多,所以比较疑惑为什么。是因为这个方向比较新,做的人还比较少呢,还是说相比其他深度学习方法(比如CNN)并没有优势,所以本身没有研究价值呢?
张小磊
2021/12/15
1.9K0
图神经网络适合做推荐系统吗?
图马尔可夫网络:融合统计关系学习与图神经网络
https://github.com/DeepGraphLearning/GMNN
Houye
2021/04/22
8620
图马尔可夫网络:融合统计关系学习与图神经网络
JCIM|XGraphBoost:基于图神经网络提取特征的一种更好的分子特性预测模型
今天给大家介绍的是 Journal of Chemical Information and Modeling 上,一篇有关提取图神经网络特征、更好地预测分子特性的方法的文章 "XGraphBoost: Extracting Graph Neural Network-Based Features for a Better Prediction of Molecular Properties"。
智药邦
2021/09/06
2K0
PAMI-2021:5篇顶级GNN论文
PAMI(IEEE Transactions on Pattern Analysis and Machine Intelligence),IEEE模式分析与机器智能汇刊,简称PAMI,是IEEE最重要的学术性汇刊之一。事实上,PAMI有着超高的影响因子(17.730)和排名,被誉为SCI之王。与顶级会议相比,顶级期刊的评议过程更为严格,特别重视工作的创新性和完整性,录取难度和门槛很高。
Houye
2021/05/31
1.7K0
PAMI-2021:5篇顶级GNN论文
GNN系列 综述 GNN GCN GraphSAGE GAT 简单理解 及调优Trick
图(graph)是一种数据结构,图神经网络(Graph Neural Network)应该是深度学习在图结构数据上的一些模型、方法和应用。常见的图结构由节点(node)和边(edge)构成,节点包含了实体(entity)信息,边包含实体间的关系(relation)信息。
大鹅
2022/09/04
3.3K0
GPT-GNN:图神经网络的生成式预训练方法
GNN通过端到端的有监督学习训练对于某一输入图上的一个任务,但是对于同一输入图数据,当训练的目标任务变化时,往往只能通过不同任务对应不同标注的数据集训练对应于每个任务的专用GNN网络模型。
AI科技评论
2020/08/28
1.9K0
GPT-GNN:图神经网络的生成式预训练方法
WWW2020 | 基于GNN和哈希学习的高效推荐系统
最近看了篇利用哈希技术来提高基于图神经网络的推荐系统检索速度的文章。该文的亮点本人认为主要有以下两点:(1)模型同时学习用户/物品的实值表示和离散表示,用于协调模型的效率和性能,(2)该文提出了一个端到端的训练框架,解决了哈希模型在反向传播中遇到的优化困境:即模型中包含非光滑函数sign(.)。因此把这篇文章推荐给大家。
用户3578099
2020/09/10
1.3K0
WWW2020 | 基于GNN和哈希学习的高效推荐系统
使用PyG进行图神经网络的节点分类、链路预测和异常检测
图神经网络(Graph Neural Networks)是一种针对图结构数据(如社交图、网络安全网络或分子表示)设计的机器学习算法。它在过去几年里发展迅速,被用于许多不同的应用程序。在这篇文章中我们将回顾GNN的基础知识,然后使用Pytorch Geometric解决一些常见的主要问题,并讨论一些算法和代码的细节。
deephub
2022/11/11
2.7K0
使用PyG进行图神经网络的节点分类、链路预测和异常检测
如何找到相似Graph?DeepMind提出超越GNN的图匹配网络
DeepMind 和谷歌的这项新研究聚焦检索和匹配图结构对象这一极具挑战性的问题,做出了两个重要贡献。
机器之心
2019/05/15
2.4K0
如何找到相似Graph?DeepMind提出超越GNN的图匹配网络
腾讯Angel Graph团队刷新GNN最强榜单OGB世界纪录!
导读 / Introduction 近日,在国际顶级图学习标准OGB(Open Graph Benchmark)挑战赛中,腾讯大数据Angel Graph团队联合北京大学-腾讯协同创新实验室,以较大优势在三个最大的OGB分类数据集:ogbn-papers100M、ogbn-products和ogbn-mag三项任务榜单第一! OGB是目前公认最权威的图学习通用性能评价基准数据集,由斯坦福大学Jure Leskovec教授团队建立并开源,并吸引了斯坦福大学、康奈尔大学、Facebook、NVIDIA
腾讯大数据
2021/09/03
1.1K0
Bengio 团队力作:GNN 对比基准横空出世,图神经网络的「ImageNet」来了
图神经网络(GNN)是当下风头无两的热门研究话题。然而,正如计算机视觉的崛起有赖于 ImageNet 的诞生,图神经网络也急需一个全球学者公认的统一对比基准。
AI科技评论
2020/04/14
9930
Bengio 团队力作:GNN 对比基准横空出世,图神经网络的「ImageNet」来了
图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限,
汀丶人工智能
2022/11/19
7900
推荐阅读
相关推荐
使用Python实现深度学习模型:图神经网络(GNN)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验