雪花假设:训练deep GNN 新思路

news2024/12/23 18:59:40

本文由中科大数据智能实验室联合阿卜杜拉国王科技大学(KSUST)、同济大学、新加坡国立大学、深圳科技大学、香港科技大学等多家院校联合提出了一种全新的训练深度GNN的策略—雪花假设,旨在帮助未来训练深度GNN并克服其中可能出现的over-smoothing/over-fitting等问题。

d596d6fe5b11c74e4b36e416778c6b63.png

论文标题:The Snowflake Hypothesis: Training Deep GNN with One Node One Receptive field

论文地址:https://arxiv.org/abs/2308.10051

背景

过拟合,过平滑和梯度消失是GNN领域的三个长期存在的问题,特别是当GNN仿照卷积神经网络加深网络时。因此,当在小型图上训练过参数化的GNN或使用深度GNN进行图建模时,我们通常最终会得到塌缩的权重或不可区分的节点表示。因此,训练2-4层的GNN在图领域一直是一个比较普遍的现象,大多数最先进的GNN一般也不会超过不超过4层。然而,仔细研究许多计算机视觉任务和自然语言处理上的成就,可以很好的归功于深度网络的持续有效训练。因此,图表示学习迫切需要利用更深层的图神经网络,特别是在处理以密集连接为特征的大规模图时。

最近,一些工作表明了随着深度的增加训练GNN的可行性。我们可以将现有方法总结为两类。第一类涉及继承CV领域的技术,如Res/Skip-connection,这些方法已被证明是普遍适用和实用的。例如,JKNet采用跳接方式对各层的输出进行融合,以保持不同节点之间的差异。GCNII和ResGCN采用残差连接来携带来自前一层的信息,以避免上述问题。另一类是将各种深度聚合策略与浅层神经网络相结合。例如,GDC将个性化PageRank推广为图扩散过程。DropEdge借助随机的边丢弃策略来隐式地增加图的多样性并减少消息传递。

然而,尽管CNN的残差/跳跃连接等继承机制可以部分缓解过平滑问题,但这些改进未能有效探索聚合策略与网络深度之间的关系。将残差合并到具有次优输出的层中可能无意中将有害信息传播到后续的聚合层。在第二类中,大多数现有的深度聚合策略试图对中心节点周围的邻近节点进行抽样,以隐式地增强数据多样性并防止过度平滑。不幸的是,繁琐和特殊的设计使GNN模型既不简单也不实用,缺乏在其他训练策略和特定数据集上扩展的能力。

思路:

基于上述观测,本文首次提出训练GNN时让每个节点都具备自身的感受野,通过node receptive field比喻成雪花,来反应每个节点独一无二的特性(https://zhuanlan.zhihu.com/p/100948902),基于大量实验,本文提出了雪花假设

4681da2004d95a701b5137bdd5150b74.png

为了更好的发现独一无二的“雪花”,本文提出了两种策略:SnoHv1通过判断邻接矩阵的梯度,将每一行的梯度求和,并找出梯度最小的行,来对邻接矩阵进行layer-wise element pruning(注意这儿不删除自环中的对角线元素),layer-wise element pruning可以很好的保证某些节点在聚合深度上实现“early stopping”,使得某些节点只对外输出信息,而对内聚合的通道消失。算法思路如下:

155822f148066cbf230fb07363d5ffcf.png

然而,SnoHv1在大图上的拓展能力稍微逊色,因为要判断百万元素的梯度,并进行求和,这会导致训练速度十分低效。为此,本文继续给出了效率更高的SnoHv2:

cb76d5227fb09ab7cc46561113f161e4.png

通过判断深层和初始层的余弦距离,SnoHv2的想法十分简单,当深度加深时,过平滑问题出现后,节点表示会趋同,相比于第一层的余弦距离,后层的余弦距离会不断减小,当小于第一层的某个百分比之后,我们就对该节点进行layer-wise element pruning。进而更好的帮助每个节点实现深度上的“early stopping”。

实验:

本文进行了大量的实验,(1)涵盖不同的训练策略,如迭代剪枝、充分预训练、重初始化。(2)与目前的深度GNN架构进行结合,如ResGCN,ResGCN+,JKNet,PairNorm等;(3)切换浅层GNN架构,GIN,GAT等;(4)与目前主流的聚合策略相比,如DropEdge。

6a493bf2b15b86e1d37a01242bbe4ea2.png dae6941f70a515c0cce929e1d8cbb9e1.png bba93e19e7ea4dea01ec55b19c0c50c0.png

由于我们的算法是基于剪枝实现的,我们还比较了目前主流的剪枝框架:

34eece09b0101a1686f04394c8df1295.png

我们的进行了六个数据集的实验,包含小数据集以及千万边级别的大数据集,我们的结果表明,在深度GNN中确实有很多节点进行深度上的早停,不会影响模型性能,甚至可以出现较为明显的提升,证明了我们框架的有效性。

结语:

本文提出了一种全新的假设,认为每个节点在深度场景下都应该具备自己独立的感受野,具有内在的可解释性,在继承剪枝算法优势(加速推理时间和减少存储开销)的同时,也可以使得当前的图剪枝算法从中收益。更重要的是,该算法简单方便。与复杂聚合策略的设计相比,该框架没有引入任何额外的信息(如可学习的参数),可以很容易地扩展到深度GNN。我们进行了全面的实验,跨越了一系列训练算法,与各种骨干架构的集成,并在多个图基准上与DropEdge/UGS框架进行了比较。研究结果表明,SnoHv1/v2始终能提供出色的性能,即使在邻接矩阵明显稀疏的情况下。这些结果强调了我们最初的假设:某些节点需要在其深度进展中提前终止。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/938239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让敌人分兵,就能创造局部优势

让敌人分兵,就能创造局部优势 【安志强趣讲《孙子兵法》第22讲】 【原文】 故备前则后寡,备后则前寡,备左则右寡,备右则左寡,无所不备,则无所不寡。寡者,备人者也;众者,使…

软件工程(十八) 行为型设计模式(四)

1、状态模式 简要说明 允许一个对象在其内部改变时改变它的行为 速记关键字 状态变成类 类图如下 状态模式主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。比如订单从待付款到待收货的咋黄台发生变化,执行的逻辑是不一样的。 所以我们将状态抽象为一…

软件工程(十七) 行为型设计模式(三)

1、观察者模式 简要说明 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新 速记关键字 联动,广播消息 类图如下 基于上面的类图,我们来实现一个监听器。类图中的Subject对应我们的被观察对象接口(IObservable),…

软件工程(十六) 行为型设计模式(二)

1、迭代器模式 简要说明 提供一种方法来顺序访问一个聚合对象中的各个元素,而不是暴露该对象的内部状态 速记关键字 数据集,迭代,循环 类图如下 其实迭代器模式在我们的不同语言中,均对其实现了,就是我们的各种集合,List,Set等都是迭代器模式的实现。 就是把一个集…

09 mysql fetchSize 所影响的服务器和客户端的交互

前言 这是一个 之前使用 spark 的时候 记一次 spark 读取大数据表 OOM OutOfMemoryError: GC overhead limit exceeded 因为一个 OOM 的问题, 当时使用了 fetchSize 的参数 应用服务 hang 住, 导致服务 503 Service Unavailable 在这个问题的地方, 出现了一个查询 32w 的数据…

【javaweb】学习日记Day6 - Mysql 数据库 DDL DML

之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客 目录 一、概述 1、如何安装及配置路径Mysql? 2、SQL分类 二、DDL 数据定义 1、数据库操作 2、IDEA内置数据库使用 (1&…

特征工程 – Feature Engineering

特征工程是机器学习工作流程中重要的组成部分,他是将原始数据「翻译」成模型可理解的形式。 特征工程的重要性 基于大量数据的简单模型优于基于少量数据的复杂模型。 更多的数据优于聪明的算法,而好的数据优于多的数据。 所以,如何基于给定数…

CSS中如何实现背景图片的平铺和定位?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 平铺背景图片⭐ 背景图片定位⭐ 同时设置平铺和定位⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是…

AcWing 2058. 笨拙的手指(每日一题)

大家好 我是寸铁 如果你觉得这篇题解对你有用,可以动动手点个赞或关注,谢谢~ 题目描述 输入的第一串字母,存在一位错误。 输入的第二串字母,存在一位错误。 答案保证唯一解 我们需要去枚举每一位,找到二进制和三进制…

pytest笔记: pytest单元测试框架

第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…

web浏览器使用FileSystem的API进行本地文件的存储

作者:程序员CKeen 博客:http://ckeen.cn 长期坚持做有价值的事!积累沉淀,持续成长,升维思考!希望把编码作为长期兴趣爱好😄 目录 1. 背景2. Web端本地File操作的API3. File and Directory Entri…

战略形成是权力妥协的过程,江湖,政治是常态

战略权力派:战略形成是各种权力妥协的过程【安志强趣讲270期】 趣讲大白话:有人的地方就有政治 **************************** 有人的地方就有江湖 有组织的地方就有政治 公司的战略是各种人的权力博弈的产物 围观权力:就是组织内部 宏观权力…

点可云进销存开源系统V6.0.1 ERP系统进销存源码仓库管理

介绍 点可云进销存系统,基于thinkphplayui开发。 功能包含:采购、销售、零售、多仓库管理、财务管理等功能 和超详细的报表功能(采购报表、销售报表、零售报表、仓库报表、资金报表等) 软件架构 thinkphplayui 功能概览 购货 -购…

【深度学习】实验03 特征处理

文章目录 特征处理标准化归一化正则化 特征处理 标准化 # 导入标准化库 from sklearn.preprocessing import StandardScalerfrom matplotlib import gridspec import numpy as np import matplotlib.pyplot as plt import warnings warnings.filterwarnings("ignore&quo…

利用阿里云服务器公网IP+FRP搭建内网穿透

1 必要条件: 一台公网IP服务器,这里采用阿里云ECS服务器。 此处将IP定义为:serverA-IP 2 服务器下载代码: # mkdir /data # cd /data # git clone https://github.com/fatedier/frp.git # cd frp3 编译代码 编译需要时间 # make go fmt .…

【Redis从头学-13】Redis哨兵模式解析以及搭建指南

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

第4节——react 中如何编写样式

一、内联样式 内联样式就是在JSX元素中,直接定义行内的样式。与普通的HTML内联样式唯一的区别就是,JSX中的内联样式是一个对象,而不是一个字符串。 import React from reactexport default class LearnStyle extends React.Component {rend…

CSS中如何实现文字阴影效果(text-shadow)?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现思路⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前…

【Linux操作系统】Linux系统编程中的读写锁

文章目录 1.读写锁的原理2.提供的操作函数示例代码4.示例解释 1.读写锁的原理 读写锁(Read-Write Lock)是一种特殊的锁机制,用于在多线程环境下对共享资源进行读写操作。与互斥锁不同,读写锁允许多个线程同时读取共享资源&#x…