当前位置: 首页 > news >正文

Classic GNNs are Strong Baselines: Reassessing GNNs for Node Classification

Classic GNNs are Strong Baselines: Reassessing GNNs for Node Classification

Neurips 24

推荐指数: #paper/⭐⭐⭐#​

摘要

我们的研究结果表明,由于GNN中的超参数设置次优,之前报道的GT的优越性可能被夸大了。值得注意的是,通过轻微的超参数调整,这些经典GNN模型就实现了最先进的性能,在所检查的18个不同数据集中的17个数据集中,与最近的GT相匹配甚至超过了。

贡献:

  1. 通过适当的超参数调整,经典GNN可以在具有多达数百万个节点的同配图和异配图的节点分类中实现极具竞争力的性能。值得注意的是,经典GNN的表现优于最先进的GT,在18个数据集中的17个数据集上排名第一。这表明之前声称的GT相对于GNN的优势可能被夸大了,可能是由于GNN评估中的超参数配置次优。
  2. 我们的消融研究对用于节点分类的GNN超参数有价值的见解。我们证明了(1)normalization对于大规模图至关重要;(2)Dropout始终被证明是有益的;(3)残差链接可以显着提高性能,尤其是在异亲图上;(4)异配图上的GNN往往在更深的层中表现得更好

GNN训练的关键参数

Normalization

具体的是,一般有Layer Normalization 和bath normalization两种

$$\boldsymbol{h}_v^l=\sigma(\mathrm{Norm}(\sum_{u\in\mathcal{N}(v)\cup\{v\}}\frac{1}{\sqrt{\hat{d}_u\hat{d}_v}}\boldsymbol{h}_u^{l-1}\boldsymbol{W}^l)).$$

Dropout

$$\boldsymbol{h}_v^l=\mathrm{Dropout}(\sigma(\mathrm{Norm}(\sum_{u\in\mathcal{N}(v)\cup\{v\}}\frac1{\sqrt{\hat{d}_u\hat{d}_v}}\boldsymbol{h}_u^{l-1}\boldsymbol{W}^l))).$$

Residual Connections(残差连接)

残差网络可以明显的增加GNN的性能通过将输入层和输出层链接到一起

$$\boldsymbol{h}_v^l=\mathrm{Dropout}(\sigma(\mathrm{Norm}(\boldsymbol{h}_v^{l-1}\boldsymbol{W}_r^l+\sum_{u\in\mathcal{N}(v)\cup\{v\}}\frac1{\sqrt{\hat{d}_u\hat{d}_v}}\boldsymbol{h}_u^{l-1}\boldsymbol{W}^l)))$$

网络深度:

虽然DeepGCN和DeeperGCN等之前的研究主张使用最多56层和112层的深度GNN,但我们的研究结果表明,可以通过2-10层的GNN架构来实现相当的性能。

image

image

image

观测结果,结论:

对同配图的观察(表2)。经典GNN仅对超参数进行轻微调整,在同配图的节点分类任务中具有高度竞争力,在许多情况下往往优于最先进图transformer。

对异配图的观察(表3)。我们的实验显着增强了之前报道的异性图上经典GNN的最佳结果,超越了为此类图量身定制的专业GNN模型,甚至超越了领先的图Transformer架构。这一进步不仅支持而且强化了先前文章中的发现,即传统GNN是异配图的有力竞争者,挑战了它们主要适合同配图结构的普遍假设。

在roman-empire方面,GCN的表现增长了17.58%。有趣的是,我们发现改善主要源于残差连接,我们的消融研究将对残余连接进行进一步分析

image

对大图上的观察(表4)。我们的实现显着增强了之前报告的经典GNN结果,在某些情况下,准确性出现了两位数的提高。它在这些大型Graph数据集(无论是同配还是异配)中取得了最好的结果,并且性能优于最先进的图transformer。这表明消息传递对于学习大图上的节点表示仍然非常有效

总而言之,基本GNN可以在大规模图形上实现最著名的结果,这表明当前的Graph transformer尚未解决过度平滑和长距离依赖性等GNN问题。

消融

观察1:normalization(BN或LN)对于大规模图形上的节点分类很重要,但在小图形上不太重要。

image

normalization在大图中始终至关重要,去掉会导致GraphSAGE和GAT对ogbn蛋白的准确性分别降低4.79%和4.69%。我们认为这是因为大图显示了更广泛的节点特征,从而导致整个图表中的数据分布不同。normalization有助于在训练期间标准化这些特征,确保更稳定的分布。

观察2:人们一致认为,Dropout对于节点分类至关重要。

观察3:残差连接可以显着提高特定数据集的性能,对异配图的影响比对同配图的影响更明显。

image

观察4:与同配图相比,更深的网络通常会导致异性图的性能提高更大。

我们的研究对基础GNN模型在节点分类任务中的功效进行了彻底的重新评估。通过广泛的实证分析,我们证明这些经典GNN模型可以达到或超过GT在各种图数据集上的性能,挑战GT在节点分类任务中的明显优势。此外,我们全面的消融研究还深入了解了各种GNN配置如何影响性能。我们希望我们的研究结果能够促进图机器学习研究中更严格的实证评估

总结:

本文中使用的残差公式类似于: h v l = h v l − 1 + F ( h v l − 1 ) h_v^l=h_v^{l-1}+F(h_v^{l-1}) hvl=hvl1+F(hvl1)。其思想是将第i层输出和第i-1层的输入联系在一起

个人觉得其与雪花假设等有相似之处:

$$\begin{equation} h_v^l = \begin{cases} F(h_v^{l-1}) & \text{if } v < l, \\ h_v^{l-1} & \text{if } v \geq l. \end{cases} \end{equation}$$

其思路是在第l层后使用Identity函数。

其思想都是认为,在某种情况下,原始特征已经和聚合的特征一样重要了。本文直接将原始特征和聚合特征相加,雪花假设是在聚合特征到某种情况下后对此节点停止特征传播。哪种更有效,可能在现在的手头的工作做完之后做消融

相关文章:

Classic GNNs are Strong Baselines: Reassessing GNNs for Node Classification

Classic GNNs are Strong Baselines: Reassessing GNNs for Node Classification Neurips 24 推荐指数&#xff1a; #paper/⭐⭐⭐#​ 摘要 我们的研究结果表明&#xff0c;由于GNN中的超参数设置次优&#xff0c;之前报道的GT的优越性可能被夸大了。值得注意的是&#xff…...

Android 字节飞书面经

Android 字节飞书面经 文章目录 Android 字节飞书面经一面二面 一面 1. 线程是进程的一部分&#xff0c;一个线程只能属于一个进程&#xff0c;而一个进程可以有多个线程&#xff0c;但至少有一个线程。 2. 根本区别&#xff1a;进程是操作系统资源分配的基本单位&#xff0c;…...

选择好友窗口(三)

选择好友窗口&#xff08;三&#xff09; 前言 在前两集我们就完成了整个左半部分的内容了&#xff0c;那么我们这一集开始就要完成我们的选择好友窗口的右侧部分。 需求分析 我们要做出的效果如下图 可以看到我们整个布局是一个网格的布局&#xff0c;当然也可以做成一个垂…...

【含文档】基于ssm+jsp的音乐播放系统(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了两个…...

【C语言】动态内存开辟

写在前面 C语言中有不少开辟空间的办法&#xff0c;但是在堆上开辟的方法也就只有动态内存开辟&#xff0c;其访问特性与数组相似&#xff0c;但最大区别是数组是开辟在栈上&#xff0c;而动态内存开辟是开辟在堆上的。这篇笔记就让不才娓娓道来。 PS:本篇没有目录实在抱歉CSD…...

Redis缓存在thinkPHP/fastAdmin框架中的应用

Redis缓存在thinkPHP/fastAdmin框架中的应用 引言 在现代Web开发中&#xff0c;性能优化是一个永恒的话题。随着用户数量的增加和业务逻辑的复杂化&#xff0c;如何提高应用的响应速度和处理能力成为了开发者们必须面对的挑战。缓存技术作为提升性能的有效手段之一&#xff0…...

Ceisum无人机巡检视频投放

公司投标内容有个视频投放的功能动画&#xff0c;原本想实现这么一个效果&#xff1a; 案例效果来自别人的展示作品&#xff0c;Leader一眼就相中了这个效果&#xff0c;可惜别人的终究是别人的&#xff0c;又不会白白给你&#xff0c;终究是要自己动手尝试。 动画方面的展示…...

分享几款开源好用的图片在线编辑,适合做快速应用嵌入

图片生成器是指一种工具或软件&#xff0c;用于自动生成图片或图像内容&#xff0c;通常依据用户设定的参数或模板进行操作。这种工具能够帮助用户快速创建视觉效果丰富的图像&#xff0c;而无需具备专业的设计技能。 在数字化时代&#xff0c;图片编辑已经成为日常工作和生活的…...

闪存学习_1:Flash-Aware Computing from Jihong Kim

闪存学习_1&#xff1a;Flash-Aware Computing from Jihong Kim 前言一、Storage Media&#xff1a;NAND Flash Memory1、概念2、编程和擦除操作3、读操作4、异地更新操作&#xff08;Out-Place Update&#xff09;5、数据可靠性6、闪存控制器&#xff08;SSD主控&#xff09;7…...

如何将本地项目上传至Gitee仓库(详细教程)

前提条件 1、本地电脑安装Git客户端 2、本地已有项目 3、Gitee注册好了账户 如果没有安装Gitee 可以区菜鸟查看一下安装教程 Git教程https://www.runoob.com/git/git-tutorial.html 操作示例 前提条件已经准备好的情况下登录gitee 码云 https://gitee.com 点解右侧加号 新…...

redis详细教程(3.hash和set类型)

hash Redis中的Hash是一种数据结构&#xff0c;用于存储键值对集合。在Redis中&#xff0c;Hash非常适合表示对象&#xff0c;其中对象的每个字段都对应一个键值对。以下是关于Redis中Hash的详细讲解&#xff1a; 特点&#xff1a; 1. 键值对集合&#xff1a;Hash是一个包含…...

性能测试详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始&#xff0c;到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点…...

修改ruoyi的logo和标题

1、修改网页标签上的图标和标题 静态修改 标签页上的 图标 直接替换public/favicon.ico文件为你自己的图标文件 如果你的图标文件名不是favicon.ico&#xff0c;你还需要在public/index.html中相应地修改这一行&#xff0c;将/favicon.ico替换为你的图标文件路径。 静态修改…...

vue系列==vue3新语法

vue系列vue3新语法 1、setup组合式API入口函数 2、利用ref函数定义响应式数据 3、利用reactive函数定义响应式数据 1、setup组合式API入口函数 1、Vue3为组合式API提供了一个setup函数&#xff0c;所有组合式API函数都是在此函数中调用的&#xff0c;它是组合式API的使用入口…...

001-Kotlin界面开发之Jetpack Compose Desktop学习路径

Compose Desktop学习之路 学习过程 理解Kotlin的基本语法 Compose Desktop采用Kotlin构建&#xff0c;因此对Kotlin的基本语法有很好的理解是必不可少的。你可以从官方的Kotlin文档开始。 用一句话概括&#xff0c;Kotlin是一种现代的、静态类型的编程语言&#xff0c;它结合…...

qt QStackedLayout详解

QStackedLayout类提供了一种布局方式&#xff0c;使得在同一时间内只有一个子部件&#xff08;或称为页面&#xff09;是可见的。这些子部件被维护在一个堆栈中&#xff0c;用户可以通过切换来显示不同的子部件&#xff0c;适合用在需要动态显示不同界面的场景&#xff0c;如向…...

python实现钉钉群机器人消息通知(消息卡片)

直接上代码 python """ 飞书群机器人发送通知 """ import time import urllib3 import datetimeurllib3.disable_warnings()class DingTalkRobotAlert():def __init__(self):self.webhook webhook_urlself.headers {Content-Type: applicatio…...

防火墙技术应用

目录 防火墙安全功能指标防火墙性能指标防火墙部署防火墙应用案例-Linux防火墙防火墙应用案例-华为包过滤防火墙ACL(基本)防火墙应用案例-工控防火墙部署 防火墙安全功能指标 我们防火墙也会提供各种各样的互联接口&#xff0c;它这种接口有以太网、快速以太网、千兆以太网&am…...

docker engine stopped

1&#xff09;环境&#xff1a;win 10 2&#xff09;docker安装时已经已经安装了虚拟机 3&#xff09;启用网络适配器 4&#xff09;启用docker服务&#xff08;依赖服务LanmanServer&#xff09; 5&#xff09;全都弄好了&#xff0c;docker还是打不开&#xff0c;没办法了&a…...

Redis- 内核的分配内存限制的警告“WARNING Memory overcommit must be enabled!”

文章目录 问题描述报错原因影响解决方案注意事项 问题描述 [rootredisxxx]# redis-sentinel ./sentinel.conf 19638:X 01 Nov 2024 16:57:27.180 # WARNING Memory overcommit must be enabled! Without it, background save or replication may fail under low memory condi…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

windows系统MySQL安装文档

概览&#xff1a;本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容&#xff0c;为学习者提供全面的操作指导。关键要点包括&#xff1a; 解压 &#xff1a;下载完成后解压压缩包&#xff0c;得到MySQL 8.…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目&#xff0c;集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...