2019-arXiv-Edge Contraction Pooling for Graph Neural

news2024/11/23 9:44:07

2019-arXiv-Edge Contraction Pooling for Graph Neural


Paper: https://arxiv.org/abs/1905.10990
Code: https://github.com/pyg-team/pytorch_geometric/tree/master/benchmark/kernel

图神经网络的边缘收缩池化

池化层可以使GNN对抽象的节点组而不是单个节点进行推理。为了缩小这一差距,作者提出了一个依赖于边缘收缩概念的图池层:EdgePool 学习局部和稀疏的硬池转换。实验表明,EdgePool优于其他池化方法,可以很容易地集成到大多数GNN模型中,并提高了节点和图分类的性能。

边缘池层的主要优点是:

  • EdgePool的性能优于其他池化方法。
  • EdgePool可以集成到现有的图形分类架构中。
  • EdgePool可用于节点分类并提高性能。

模型

下图表示作用在蛋白质图中的基于边收缩的池化机制。原始图(最左边)被池化了三次,结果为最右侧的图。在每个步骤中,将要合并的节点周围都有一条随机颜色的虚线。在下一步中,将节点绘制为它们的凸形,填充相同的颜色。

图基础: 图 G = ( V , E ) G = (V, E) G=(V,E),其中每个 v v v 节点都有 f f f 特征 V ∈ R v × f V \in R^{v×f} VRv×f 。边表示为没有权重或特征的有向节点对。

边缘收缩

池化操作基于边缘收缩。收缩边 e = { v i , v j } e = \{v_i, v_j\} e={vivj} 引入新节点 v e v_e ve 和新边,使得 v e v_e ve 与所有节点 v i v_i vi 相邻或 v j v_j vj 已经相邻。 v i v_i vi v j v_j vj 及其所有边将从图形中删除。由于边收缩是可交换的,也可以定义边集收缩。通过构造集合,使得没有两条边入射到同一个节点,可以简单地多次应用单边收缩的朴素概念。

通过合并其节点来选择单个边缘进行收缩。然后,此新节点将连接到合并节点已连接到的所有节点。多次重复此过程,注意不要将新合并的节点包含在其中。

选择边

EdgePool对每条边设计了一个可学习的分数,然后根据边的分数来选择保留还是丢弃所连的节点。边的分数通过对节点特征的线性变换来计算,节点 x i x_{i} xi和节点 x j x_{j} xj所连的边的分数 r i j r_{i j} rij, 如果图中的边还有特征 e i j e_{ij} eij,那么也可以同时将边的特征也融入其中,也就是做了一个简单的拼接:

虽然每个节点只沿着一条边进行收缩,但是每个节点可能有多条可选的边,可将节点邻接的边的分数归一化,使得不同边之间的分数便于相互比较:

计算新节点特征

为了使梯度流入分数,我们使用门控并将组合的节点特征乘以边缘分数:

计算性能

EdgePool 是本地独立的:只要两个节点 n i n_i ni n j n_j nj 及其邻居的节点分数不改变(通过更改感受野内的节点),边缘 e i j e_{ij} eij 的选择就不会改变。因此,不必一次为整个图形计算边缘池。如果图形发生更改,则只需要更新已更改区域的本地池化。

集成边缘要素

更新边缘池以考虑边缘 e i j e_{ij} eij 的边缘特征。为此将它们包含在原始分数计算中(公式(1))。最简单的方法是将它们连接起来:

反池化EdgePool

对于节点分类来说,还是需要一个解池化的操作。对于解池化的操作,只需要对新的节点特征进行还原即可:

实验

Table1 中是与其他不同的池化操作的对比,为了验证EdgePool的性能是否优于其他池化方法。


Table2 是将edgepool技术和其他GNN框架融合之后的效果(图分类),为了验证EdgePool是否可以集成到现有的GNN架构中。

Table3 是与其他GNN模型在节点分类任务上结合的效果。

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

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

相关文章

【基础篇】5 # 链表(下):写好链表代码的六个实用技巧

说明 【数据结构与算法之美】专栏学习笔记 技巧一:理解指针或引用的含义 指针或引用都是存储所指对象的内存地址。将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针。 例如: p —> next q:表示 p 结点中的 ne…

opencv——Canny边缘检测

1、Canny边缘检测流程a、使用高斯滤波器,以平滑图像,滤除噪声。b、计算图像中每个像素点的梯度强度和方向。c、应用非极大值抑制,以消除边缘检测带来的杂散效应。d、应用双阈值检测来确定真实的和潜在的边缘。e、通过抑制孤立的弱边缘最终完成…

webpack4和webapck5的及新特性

30.webpack——webpack5新特性(启动、持久化缓存、资源模块、URIs、moduleIds和chunkIds、tree shaking、nodeJs的polyfill被移除、模块联邦)_俞华的博客-CSDN博客_chunkids 1、新特性1——启动命令 webpack4启动devServer,用的命令是webpac…

clickhouse库通过字段分组后获取排序后每天的前N条数据

各种查资料,都没找到,建议还是多看文档 方法1 :简单便捷: order by date,count desc limit 5 by date (取每天前5条数据,5可以随便换) sql可以随便写: 统计每天学生人数,按降序排序&#xff…

高级Spring之jdk 和 cglib 在 Spring 中的统一

Spring 中对切点、通知、切面的抽象如下 切点:接口 Pointcut,典型实现 AspectJExpressionPointcut 通知:典型接口为 MethodInterceptor 代表环绕通知 切面:Advisor,包含一个 Advice 通知,PointcutAdvisor…

关于构建校园能源管理平台的研究进展

摘要:能源与发展的矛盾已成为当今世界关注的焦点,高等学校做为一个特定的环境,近年来办学规模、校园面积、师生数量急剧增长,对能源的消耗也大幅提高。为抑制能源不合理增长,实现低碳发展,本文通过对校园能…

Go protobuf 的简单应用

环境搭建 安装 protobuf 编译器 https://github.com/protocolbuffers/protobuf/releases 解压,将bin目录加入环境变量 安装 protocol-gen-go 生成器 用于生成Go代码 https://github.com/protocolbuffers/protobuf-go/releases 解压,将可执行文件加…

第27章 分布式缓存数据库的定义实现

1 Core.HashHelper using System.Security.Cryptography; namespace Core { /// <summary> /// 【哈希助手--类】 /// <remarks> /// 摘要&#xff1a; /// 该类通过1个指定哈希加密算法生成1个唯一性的字符串(当前安全性较强的SHA-2包括有&#xff1a;SHA-2…

九龙证券|三胎概念股拉升…港股跳水,恒生科指重挫近5%

兔年首个交易日&#xff0c;A股迎来开门红&#xff0c;沪指开盘即打破3300点&#xff0c;创业板指一度涨近3%&#xff1b;港股却大幅下挫&#xff0c;恒生科技指数一度跌超5%。 详细来看&#xff0c;A股方面&#xff0c;两市股指全线高开&#xff0c;沪指开盘即打破3300点&…

WebDAV之葫芦儿·派盘+Keepass2Android

Keepass2Android 支持WebDAV方式连接葫芦儿派盘。 推荐一款密码管理器,允许人们使用复杂的组合进行登录,而不必记住所有的组合。 Keepass2Android可以支持大多数安卓互联网浏览器, Android设备上同步软件,还支持通过WebDAV添加葫芦儿派盘。

Versal系列0-AI Engine与Systolic Array

最近在开发VCK190时&#xff0c;发现Xilinx Versal系列的AI engine&#xff08;AIE&#xff09;&#xff0c;其实和Systolic Array&#xff08;SA&#xff09;有着很相似的地方。Xilinx工程师在研发AIE时&#xff0c;应该是有所借鉴SA的。Systolic Array最早是H. T. Kung于1982…

k8s工具kubepi介绍

目录 部署安装 登录 配置 日常操作 Kubepi是一个简单高效的k8s集群图形化管理工具&#xff0c;方便日常管理K8S集群&#xff0c;高效快速的查询日志定位问题的工具。 部署安装 持久化部署 # 创建持久化目录 mkdir -p /opt/kubepi # 安装 sudo docker run --privileged …

通信原理笔记—绪论

目录 通信的基本概念&#xff1a; 通信的目的&#xff1a;要克服某种障碍&#xff0c;实现信息高效、准确地传递。 狭义的通信系统&#xff1a; 广义的通信系统&#xff1a; 数字通信系统的基本组成&#xff1a; 数字通信的特点&#xff1a; (1)抗噪声和干扰能力强&#…

【自学Docker】Docker commit命令

Docker commit命令 大纲 docker commit命令教程 docker commit 命令用于根据 Docker容器 的更改创建一个新的 Dokcer镜像。该命令后面的 CONTAINER 可以是容器Id&#xff0c;或者是容器名。 docker commit命令语法 haicoder(www.haicoder.net)# docker commit [OPTIONS] CO…

day02_java入门

今日内容 零、 复习昨日 一、程序介绍 二、Java发展及特点 三、安装环境 四、运行机制 五、第一个程序 六、Java语言规范 七、了解DOS命令 八、作业 一、程序介绍 生活中程序: 为了到达某个目的,规定一些步骤. 计算机程序:为了完成某个功能,规定一些步骤. 模拟现实世界&#…

React的基本使用(及脚手架使用)

基本使用 1 React 的安装 安装命令&#xff1a;npm i react react-dom react 包是核心&#xff0c;提供创建元素、组件等功能react-dom 包提供 DOM 相关功能等 1. 引入 react 和 react-dom 两个 js 文件 <script src"./node_modules/react/umd/react.development.…

图、邻接矩阵、广度与深度优先、生成树

最近突然被问到这个问题&#xff0c;于是复习一下&#xff0c;用最通俗的语言解释。 图 无向图&#xff1a;如下左图各个顶点之间用不带箭头的边连接的图&#xff1b;相应的右图就是有向图 邻接矩阵 可以理解为表示上述图中顶点与顶点之间是否有直接相连的边&#xff08;有则…

定时任务组件Quartz

1 定时任务组件Quartz 1.1 Quartz介绍 Quartz是Job scheduling&#xff08;作业调度&#xff09;领域的一个开源项目&#xff0c;Quartz既可以单独使用也可以跟spring框架整合使用&#xff0c;在实际开发中一般会使用后者。使用Quartz可以开发一个或者多个定时任务&#xff0c;…

计算机网络第四章 网络层数据平面

4.0 目录[TOC]4.1 概述作用&#xff1a;主机到主机之间传输TCP segment或UDP datagram将段封装成IP datagram以及解封装IP datagram【在网络边缘和路由器上都要进行】A.两大功能&#xff1a;转发路由转发&#xff1a;从不同的端口接收数据&#xff0c;再通过合适的端口发送出去…

WPS表格:函数公式

文章目录1. ROW()、ROWS(array)1&#xff09;ROW()2&#xff09;ROWS(array)2. COUNT(参数)、COUNTA(参数)、COUNTIF(参数)1&#xff09;COUNT()2&#xff09;COUNTA()3&#xff09;COUNTIF()3. VLOOKUP(参数)、LOOKUP(参数)1&#xff09;VLOOKUP(参数)2&#xff09;LOOKUP(向量…