CS224W 8 GNN Augmentation andTraining

news2024/9/23 7:25:20

目录

Graph Augmentation for GNNs

引入

Why Graph Augmentation

Graph Augmentation Approaches

Feature Augmentation on Graphs 

Input graph没有node features

GNN很难学习的一些特定结构

Graph Structure augmentation

Augment sparse graphs——添加虚拟节点或边

Node Neighborhood Sampling

Prediction with GNNS

Node-level prediction

Edge-level prediction

Head的选择1:Concatenation + Linear

Head的选择2:Dot product

Graph-level prediction

Head的选择1:Global pooling

Head的选择2:Hierarchical Global Pooling

Training Graph Neural Networks

Supervised&Unsupervised learning

 Final loss

Classification Loss

Regression loss

Evaluation metrics 

Regression evaluate

Classification evaluate

split dataset

Transductive setting

Inductive setting

Example: Node Classification

Example: Graph Classification

Example: Link Prediction

总结


Graph Augmentation for GNNs

引入

Why Graph Augmentation

之前都是假设原始input graph = computational graph,但是存在以下问题:
1.features

input graph缺少features

2.graph structure

  • graph too sparse——导致message传递低效
  • graph too dense —— 导致message传递costly
  • graph too large —— 导致不能computational graph不适于GPU

因此原始input graph不太可能是用于embedding的最优computational graph

Graph Augmentation Approaches

1.Graph Feature augmentation

input graph缺少features——feature augmentation

2.Graph Structure augmentation

  • graph too sparse ——添加虚拟节点或边
  • graph too dense —— 当传递message时,对邻居节点采样
  • graph too large —— 采样子图用于计算embedding

Feature Augmentation on Graphs 

Input graph没有node features

对应于只有邻接矩阵的情况

1.为节点分配常数值作为特征

2.为节点分配不同的ID(one-hot编码)

GNN很难学习的一些特定结构

例如cycle结构,不同length的cycle图的节点都有相同的计算图,会得到相同的embedding,因此不能区分节点到底在哪个length的图上。可以使用cycle count作为节点特征。

还有其它难以学习的结构,可以使用Node degree、Clustering coefficient、PageRank、Centrality作为节点特征。

Graph Structure augmentation

Augment sparse graphs——添加虚拟节点或边

1.添加虚拟边

常用的方式:通过虚拟边连接2-hop的neighbors。将用于计算GNN的邻接矩阵A变为A+A^2实现。(因为无权无权图邻接矩阵A 的n次幂的含义:每一个元素aij表示从节点i用n步走到
节点j有多少种路径)。

可以用在二部图上:例如作者-论文网络,相当于在一篇论文的共同作者/同作者的两篇论文间添加虚拟边,则可以直接交换信息,则GNN变浅运算速度加快 

 2.添加虚拟节点

 虚拟节点会与图中的每一个节点相连。在一个稀疏图中,两个节点之间的最短路径距离很大,添加虚拟节点后,任意两个节点之间的距离变为2,添加虚拟节点之后图中节点的距离会更小,节点间传递message会更有效更快,图神经网络的深度也不用那么大。

Node Neighborhood Sampling

以前的做法是图中所有的节点都用于messag传递,如果图中边太多(dense)或者图太大,则高degree的节点要从所有邻居节点AGG message太expensive。

idea:可以采样邻居节点用于message传递

在不同一层或者不同epoch training时对一个节点的邻居节点可以用不同的sample方法(采样不同的点),当图很大时,用sample的方法可以使GNN变小很多,将其缩放为大量小图,计算效率提升了,极大的减少了计算cost,但是也损失了一些表达能力,因为忽略了一些节点的message。

Prediction with GNNS

不同的任务levels需要不同的prediction heads。Node-level prediction、Edge-level prediction Graph-level prediction

Node-level prediction

可以直接使用node embeddings做预测,在GNN计算后得到d维node embeddings,假设做k-way prediction(分类:有k个类别,回归:在k个targets),使用k*d维的矩阵W将d维embedding映射到k维输出预测y上,接着便可以计算损失

Edge-level prediction

使用node embeddings做预测,假设做k-way prediction,例如链接预测

Head的选择1:Concatenation + Linear

将两个d维node embeddings拼接为一个2d维的向量,使用Linear将2维向量映射到k维向量

Head的选择2:Dot product

输出预测等于两个节点嵌入的点积。此方法仅适用于1-way预测(例如,链接预测:预测边的存在),如果想应用到k-way预测,则类似于多头注意力机制,使用k个参数矩阵W,点积乘W得到么一个预测,再将这些预测拼接起来。

Graph-level prediction

使用图中的所有节点embeddings做预测

Head_{graph}(.)类似于在GNN layer里的AGG(.)

Head的选择1:Global pooling

在小图上效果好。

Global pooling 在 (large) graph 可能会丢失一些信息

可以看到G1于G2 者的图结构不同, 但Global pooling的结果相同,因此无法区分这两个图

Head的选择2:Hierarchical Global Pooling

分层池化意味着不会将所有node embeddings同时汇合,而是先汇聚小子集内的节点,最后再将这些子集汇合到一起。

那应该决定汇聚节点子集的策略?使用社区检测的方法,聚合社区内节点成为超级节点,再进一步聚合超级节点,最后得一个超级节点,输入predication head。

在每个level使用2个独立的GNN:GNN A用于计算node embedding;GNN B 用于计算社区检测,计算节点属于哪个cluster。

在each pooling layer:

使用 GNN B 中的社区检测来聚合 GNN A 生成的节点嵌入
为每个cluster创建一个新的超级节点,留下clusters之间的 Edge 生成新的pooled network

GNN A和GNN B 可以并行训练。

Training Graph Neural Networks

Supervised&Unsupervised learning

ground-truth来自于Supervised labels与Unsupervised signals。Supervised learning是labels来自于外部,而Unsupervised learning的signals来自于图自身。两者的区别是监督信息来自于外部和内部的区别。

 Final loss

Classification Loss

输出结果是离散值

Regression loss

Evaluation metrics 

Regression evaluate

Classification evaluate

1.多分类

accuarcy

 2.二分类

Accuracy、Precision / Recal。lf the range of prediction is [0,1], we will use 0.5 as threshold。metrics对分类阈值敏感,且在样本不均衡时,accuarcy可以被虚假分类器欺骗,例如将所有样本分为样本数多的类被,值也会很高。

Metric对分类阈值不敏感的有ROC AUC

split dataset

Training set:用于优化GNN的参数

Validation set:develop model/超参数

Test set:保密直到用于最终的评价performance

但是不能保证test set最后没有信息泄露

当划分image数据集时,每一个数据点是一张image,数据之间相互独立,不会有信息泄露。

但是划分graph dataset是不同的,data points之间不相互独立,节点之间相互连接,存在信息泄露,测试集会收到验证集或者训练集节点传递的message。

Transductive setting

training / validation / test sets are 在same graph上,dataset包含one graph;entire graph可以在所有的dataset splits上观察到,只划分labels,即在每个split上都可以看到完整的graph,但只能看到split的labels;只适用于node/edge预测任务。

Inductive setting

training / validation / test sets 在different graphs,dataset包含multiple graphs;

每个split只能观察split中的的图形。一个成功的模型应该推广到未见过的图形。适用于node/edge/graph任务。

移除边将entire分成multiple graphs,得到的多个graphs之间相互独立。这种做法会抛弃很多edge,会丢失很多图的信息,当graph很小时,最好不要采取。

Example: Node Classification

Example: Graph Classification

只有inductive setting可以用于graph classification,因为需要在未见过的test上,inductive可以推广到未见过的数据上。

Example: Link Prediction

link prediction的预测是tricky:link prediction是unsupervised / self-supervised任务,需要自己创建labels和dataset splits。因此,要隐藏GNN中的一些边,让GNN预测边是否存在。

1.Step1:为original graph分配两种类型的边

Message edges:用于GNN的message passing

Supervision edges:用于计算objectives

在step1后,只有message edges会保留在图中,Supervision edges用于边预测时的监督信息,不会输入到GNN中。

Step 2: Split edges into train / validation / test

选择1:inductive边预测划分

选择2:Transductive 边预测划分

需要保密validation / test edges,为了训练 training set, 需要保密training set的supervision edges

在training time,使用training message edges预测training supervision edges。在validation time,使用training message edges & training supervision edges预测validation edges。在test time,使用training message edges & training supervision edges &validation edges预测test edges。

Transductive link prediction划分了四种类型的边:Training message edges Training supervision edges Validation edges Test edges

总结

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

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

相关文章

不同平台下运行历程代码

不同平台下运行历程代码 所谓的大端模式,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 所谓的小端模式,是指数据…

【Mysql】索引

文章目录一.索引的价值1.1. mysql与磁盘交互的基本单位建立共识1.2. 为什么IO交互的基本单位为Page理解单个Page理解多个Page提高在单个Page中的查找效率针对多页情况的页目录为什么选择B树,而不是其他数据结构?没有主键会怎么创建索引为什么推荐使用自增ID作为主键…

Spring(Bean 作用域和生命周期)

目录 1. 案例1: Bean作用域的问题 2. 作用域 3. 设置 Bean 的作用域 4. Spring 的执行流程 5. Bean 的生命周期 1. 案例1: Bean作用域的问题 现在有一个公共的 Bean,通过给 A 用户 和 B 用户使用, 然后在使用的过程中 A 偷偷的修改了公共 Bean 的数据, 导致 B 在使用时发…

html静态网站基于动漫网站网页设计与实现共计4个页面

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

基于遗传算法的微电网调度(风、光、蓄电池、微型燃气轮机)(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…

Docker介绍

目录 docker定义 docker解决了什么问题 docker技术边界 docker给我们带来了哪些改变 docker和虚拟机的区别 docker基本架构 基本架构图 RootFs Linux Namespace 进程命名空间 查看元祖进程命名空间 查看当前用户进程命名空间 容器进程命名空间 容器进程命名空间的…

[激光原理与应用-33]:典型激光器 -5- 不同激光器的全面、综合比较

目录 第1章 五类激光器的性能及应用对比 第2章 各类激光器的区别特点及应用三张表看懂-超米激光 2.1 固体激光器 2.2 气体激光器 2.3 化学激光器 2.4 染料激光器 2.5 半导体激光器 2.6 光纤激光器 2.7 自由电子激光器 第3章 10多种激光器的全面梳理 3.1 激光器的分类…

二叉树-31-37对称二叉树

31. 对称的二叉树 递归: 把原问题化成更小规模的问题,并且具有相同的问题性质,重复调用本身函数 二叉树的递归,是将某个节点的左子树、右子树看成一颗完整的树,那么对于子树的访问或者操作就是对于原树的访问或者操作…

HTML如何制作音乐网站(如何搭建个人音乐网页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Java毕业设计 JSP+MySQL幼儿园信息管理系统

幼儿园网站就是幼儿园的“商标”,在网站上可以看出一所幼儿园的特色和个性,在这个信息时代,建立属于自己的幼儿园网站是最直接的宣传手段。而就目前的幼儿园信息管理系统来说,有很多功能都是华而不实的,不能很好的与幼儿园日常工作相结合,容易导致日常工作出现异常。本系统的题…

【HDU No. 4417】 超级马里奥 Super Mario

【HDU No. 4417】 超级马里奥 Super Mario 杭电OJ 题目地址 【题意】 可怜的公主陷入困境,马里奥需要拯救他的情人。把通往城堡的道路视为一条线(长度为n ),在每个整数点i 上都有一块高度为hi 的砖,马里奥可以跳的最…

【博客552】git auto-merge原理以及auto-merge的不同模式

git auto-merge原理 1、merge 常见误区 1、git merge 是用时间先后决定merge结果的,后面会覆盖前面的? 答 :git 是分布式的文件版本控制系统,在分布式环境中时间是不可靠的,git是靠三路合并算法进行合并的。 2、git merge 只…

电脑装了w10没有w7流畅怎么办?

如果我们对自己的电脑进行了系统的重装,在电脑装了win10系统之后发现没有win7流畅的话,很多小伙伴不知道是什么情况应该怎么解决。 那么据微点阅读小编所知可能是我们电脑硬件设施的不兼容所导致的。我们可以在官网上查看win10系统的配置要求是否符合自…

一文带你深入理解【Java基础】· 泛型

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

Arduino开发实例-DIY风速测量及显示

DIY风速测量及显示 1、应用介绍 本次实例将使用一款具有 NPN 脉冲输出的数字风速计传感器。 NPN脉冲输出风速计效果好,性价比高。另外它仅在 5V 电源下工作。 在本次实例中,将此风速计传感器与 Arduino 板和 0.96 英寸 OLED 显示屏连接。 OLED显示屏将以米/秒为单位显示风速…

[附源码]计算机毕业设计基于SpringBoot的酒店预订系统设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

​AAAI 2023 | 基于历史对比学习的时序知识图谱推理

©PaperWeekly 原创 作者 | 徐奕单位 | 上海交通大学Acemap研究方向 | 数据挖掘论文标题:Temporal Knowledge Graph Reasoning with Historical Contrastive Learning论文链接:https://arxiv.org/abs/2211.10904代码链接:https://github…

Elasticsearch好用查询插件分享

以前我常用的ES查询工具是Head,作为插件形式在浏览器中运行,挺方便的,后来发现head不太好用,比如在数据浏览的时候,不小心就点击了两个索引,背景色设置的还不够明显,比较容易看错数据的。于是想…

git中rebase和merge的区别

介绍 Merge和Rebase是合并两个分支的操作。都是checkout到某个分支上,然后将别的分支合并(变基)到本分支上。 注意:本分支(head指向的分支,或者经过checkout后的分支)会变化,而别的…

在Linux上部署Servlet程序

目录 一、部署环境 1、安装JDK 2、安装Tomcat 3、安装MySQL 二、部署程序 1、构造云服务器上的数据库 2、打包程序 3、部署程序 一、部署环境 为了部署我们自己的web程序,首先需要在Linux上安装程序所依赖的环境~ 1、安装JDK 直接使用yum安装openjdk&…