SCALABLEANDEFFECTIVE IMPLICIT GRAPH NEURALNETWORKS ON LARGEGRAPHS

ICLR24
推荐指数: #paper/⭐⭐
领域: 大图,图扩展

大概的工作:提出了针对子图的虚拟节点,让所有点都与其相连

相关工作:

传统GNN与Inplicit gnn

传统GNN的传播函数:
Z ( l + 1 ) = ϕ ( W ( l ) Z ( l ) S + Ω ( l ) X ) , Z^{(l+1)}=\phi(W^{(l)}Z^{(l)}S+\Omega^{(l)}X), Z(l+1)=ϕ(W(l)Z(l)S+Ω(l)X),
其中,W是可训练参数。S是邻接矩阵(A)。 Ω ( l ) \Omega^{(l)} Ω(l)相当于是加自环的操作
InplicitGNN 则是捕获隐含的长关系。
Z ( l + 1 ) = γ g ( W ) Z ( l ) S + f ( X , G ) , Z^{(l+1)}=\gamma g(W)Z^{(l)}S+f(X,\mathcal{G}), Z(l+1)=γg(W)Z(l)S+f(X,G),
g ( W ) g(W) g(W)映射W进一个Frobenius norm,其中半径小小于1. f ( x , G ) f(x,G) f(x,G)是一个参数化的transformation。

批采样

批采样只考虑子图内的关系,但是Inplicit GNN的优势–长关系获取能力随着子图的建立就会消失。这就意味着,随着批采样的采用,Inplicit的准确率就会降低。

我们的方法:

Coarse node

文章配图
如图所示,我们提出了coarse node。其是虚拟节点,所有子图内的节点都与其虚拟相连。他的作用相当于汇聚子图所有节点的信息,类似于prototype。coarse node与coarse node 相连,来做数据交换,以此获取长跳数的信息

Mini-batch train

当添加了coarse节点后,我们就可以使用mini-batch采样方法了。比如Graphsage,Shadow-GNN等了。为了构建批处理graph,我们首先从节点集中随机采样目标节点。之后,为了声测会给你每个目标节点v的预测,我们选择一些供相关或者更重要的节点作为辅助节点。例如,PPR。我们使用PPR来确定相对于目标节点v重要还是不重要的节点。具体的是,我们选择top-k 重要的PPR节点。拼接所有目标节点以及他们的附属节点作为新的点集 V s V_{s} Vs,我们得到相应的子图 G s u b G_{sub} Gsub通过两点链接的集合。
Z s u b ∗ = φ ( Z s u b ∗ , X , G ) = γ g ( W ) Z s u b ∗ S s u b + f ( X s u b , G s u b ) , \begin{aligned}Z_{sub}^*=\varphi(Z_{sub}^*,X,\mathcal{G})=\gamma g(W)Z_{sub}^*S_{sub}+f(X_{sub},\mathcal{G}_{sub}),\end{aligned} Zsub=φ(Zsub,X,G)=γg(W)ZsubSsub+f(Xsub,Gsub),

新的加速方案(这部分看原文吧,借鉴了好几篇文章,并给出自己的见解)

lim ⁡ l → ∞ vec ⁡ [ Z ( l ) ] = vec ⁡ [ Z ∗ ] = ( I − γ [ S ⊗ g ( W ) ] ) − 1 vec ⁡ [ f ( X , G ) ] \begin{aligned}\lim_{l\to\infty}\operatorname{vec}[Z^{(l)}]=\operatorname{vec}[Z^*]=(I-\gamma[S\otimes g(W)])^{-1}\operatorname{vec}[f(X,\mathcal{G})]\end{aligned} llimvec[Z(l)]=vec[Z]=(Iγ[Sg(W)])1vec[f(X,G)]
使用 Neumann series事实 ( I − γ [ S ⊗ g ( W ) ] ) − 1 = ∑ k = 0 ∞ γ k [ S T ⊗ g ( W ) ] k \left(I-\gamma[S\otimes g(W)]\right)^{-1} = \sum_{k=0}^\infty\gamma^k[S^T \otimes g(W)]^k (Iγ[Sg(W)])1=k=0γk[STg(W)]k,我们可以得到:
vec ⁡ [ Z ∗ ] = ∑ k = 0 ∞ γ k [ S T ⊗ g ( W ) ] k vec ⁡ [ f ( X , G ) ] = ∑ k = 0 ∞ γ k vec ⁡ [ g ( W ) k f ( X , G ) S k ] . \operatorname{vec}[Z^*]=\sum_{k=0}^\infty\gamma^k\left[S^T\otimes g(W)\right]^k\operatorname{vec}[f(X,\mathcal{G})]=\sum_{k=0}^\infty\gamma^k\operatorname{vec}[g(W)^kf(X,\mathcal{G})S^k]. vec[Z]=k=0γk[STg(W)]kvec[f(X,G)]=k=0γkvec[g(W)kf(X,G)Sk].
去掉两侧向量化,可以得到:
Z ∗ = ∑ k = 0 ∞ γ k g ( W ) k f ( X , G ) S k . Z^*=\sum_{k=0}^\infty\gamma^kg(W)^kf(X,\mathcal{G})S^k. Z=k=0γkg(W)kf(X,G)Sk.
为了获得平衡点的最简单逼近,我们可以在某个步骤t直接截断Neumann series,并将V(t)定义为平衡点的逼近:
V ( t ) = ∑ k = 0 t γ k g ( W ) k f ( X , G ) S k ≈ Z ∗ . V^{(t)}=\sum_{k=0}^t\gamma^kg(W)^kf(X,\mathcal{G})S^k\approx Z^*. V(t)=k=0tγkg(W)kf(X,G)SkZ.

stochastic solver

然而,直接截断诺伊曼系列以获得近似平衡将招致由于正向传播有偏差而不会消失的误差。我们提出stochastic solver
当i>t后,我们令, b i ∼ B e r n o u l l i ( α ) b_i\sim\mathsf{Bernoulli}(\alpha) biBernoulli(α)
如果 b i = 1 b_{i}=1 bi=1,我们就更新Z使用因素: 1 α ( i − t ) \frac1{\alpha^{(i-t)}} α(it)1
Z ^ ( i ) = Z ^ ( i − 1 ) + γ i 1 α ( i − t ) g ( W ) i f ( X , G ) S i . \hat{Z}^{(i)}=\hat{Z}^{(i-1)}+\gamma^i\frac1{\alpha^{(i-t)}}g(W)^if(X,\mathcal{G})S^i. Z^(i)=Z^(i1)+γiα(it)1g(W)if(X,G)Si.
文章配图

训练

我们使用如下梯度传播:
∂ ℓ ∂ ( ⋅ ) = ∂ ℓ ∂ Z ^ ∗ ( I − J φ ( Z ^ ∗ ) ) − 1 ∂ φ ( Z ^ ∗ , X , G ) ∂ ( ⋅ ) , \frac{\partial\ell}{\partial(\cdot)}=\frac{\partial\ell}{\partial\hat{Z}^*}\left(I-J_\varphi(\hat{Z}^*)\right)^{-1}\frac{\partial\varphi(\hat{Z}^*,X,\mathcal{G})}{\partial(\cdot)}, ()=Z^(IJφ(Z^))1()φ(Z^,X,G),
其中, Z ^ ∗ = φ ( Z ^ ∗ , X , G ) \hat{Z}^* = \varphi(\hat{Z}^*,X,\mathcal{G}) Z^=φ(Z^,X,G) J = ∂ φ ( Z ^ ∗ , X , G ) ∂ Z ^ ∗ J = \frac{\partial\varphi(\hat{Z}^{*},X,\mathcal{G})}{\partial\hat{Z}^{*}} J=Z^φ(Z^,X,G)

总结:虚拟节点(全局节点)这个东西虽然有人提过,但是用在这里还是有意思的。结果什么的不重要。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux常用功能整合

Linux Linux 前言一、常用操作以及概念 快捷键求助关机PATHsudo包管理工具发行版VIM 三个模式GNU开源协议 二、磁盘 磁盘接口磁盘的文件名 三、分区 分区表开机检测程序 四、文件系统 分区与文件系统组成文件读取磁盘碎片blockinode目录日志挂载目录配置 五、文件 文件属性文件…

01 Solidity--

第一个 Solidity 程序 Solidity 是一种用于编写以太坊虚拟机(EVM)智能合约的编程语言。 掌握 Solidity 是参与链上项目的必备技能 在 Remix 中,左侧菜单有三个按钮,分别对应文件(编写代码)、编译&#x…

Spring ApplicationContext初始化过程

Spring-01篇章 一、Spring 简介 Spring是一个开源的Java平台,它提供了全面的基础设施支持来帮助Java开发者更容易地开发Java应用程序。Spring框架的核心特点是依赖注入(DI)和面向切面编程(AOP),这些使得开…

【H2O2|全栈】JS入门知识(一)

目录 JS入门 前言 准备工作 JS标签和文件 变量 数据类型 字符串 变量的交换 数据类型获取 数据类型转换 面试题 提问框和提示框 提问框 提示框 ​编辑​编辑控制台输出 ​编辑转义字符 结束语 JS入门 前言 本系列博客主要分享JavaScript的基础语法知识&…

RNA-seq全流程

第一部分&#xff1a;脚本的初始设置与参数解析 #!/bin/bash# 检查输入参数 if [ "$#" -lt 1 ]; thenecho "Usage: $0 -f <sample_file> -d <data_directory> -s <script_directory> -g <group_file>"exit 1 fi# 使用 R 语言的 a…

2025推荐选题|基于Springboot和vue的智慧阅读管理系统

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议&#xff0c;用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接&#xff0c;这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发&#xff0c;并于2…

【CSS】houdini自定义CSS属性实现渐变色旋转动画

现有一段代码&#xff0c;在不旋转整个元素的前提下&#xff0c;渐变背景无法应用动画 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

专业模拟训练头显,Varjo XR-4 如何开启虚拟仿真新模拟时代

虚拟仿真模拟训练是提升技能熟练度与工作安全性的有效解决方案&#xff0c;Varjo XR-4作为专业模拟训练头显&#xff0c;凭借其出色的技术特性和性能&#xff0c;正在引领虚拟仿真模拟训练进入一个全新的时代。 一、卓越的视觉体验 高分辨率显示器&#xff1a;Varjo XR-4配备…

计算机毕业设计 基于Python的美术馆预约系统的设计与实现 Python毕业设计 Python毕业设计选题【附源码+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

三子棋(C 语言)

目录 一、游戏设计的整体思路二、各个步骤的代码实现1. 菜单及循环选择的实现2. 棋盘的初始化和显示3. 轮流下棋及结果判断实现4. 结果判断实现 三、所有代码四、总结 一、游戏设计的整体思路 &#xff08;1&#xff09;提供一个菜单让玩家选择人机对战、玩家对战或者退出游戏…

大厂面试真题-组合和聚合的区别是什么

组合和聚合比较类似&#xff0c;二者都表示整体和部分之间的关系。 聚合关系的特点是&#xff1a;整体由部分构成&#xff0c;但是整体和部分之间并不是强依赖的关系&#xff0c;而是弱依 赖的关系&#xff0c;也就是说&#xff0c;即使整体不存在了&#xff0c;部分仍然存在…

Zabbix监控vCenter虚拟机

1. vcenter上配置snmp agent 如果配置 vCenter Server Appliance SNMP 代理以用于轮询,则它可以侦听和响应来自 SNMP 管理客户端系统的请求,如 GET、GETNEXT 和 GETBULK 请求. 使用root身份进入vcenter命令行,开启snmp代理 Command> snmp.enable Command> snmp.set…

正则表达式 | Python、Julia 和 Shell 语法详解

正则表达式在网页爬虫、脚本编写等众多任务中都有重要的应用。为了系统梳理其语法&#xff0c;以及 Python、Julia 和 Shell 中与正则表达式相关的工具&#xff0c;本篇将进行详细介绍。 相关学习资源&#xff1a;编程胶囊。 基础语法 通用语法 在大多数支持正则表达式的语…

24/10/14 视觉笔记 图像拼接融合

图像拼接分为四步 1.特征点提取 2.特征点匹配 3.仿射矩阵计算 4.图像拼接与融合 1.特征提取 找到图像中具有显著性信息点&#xff0c;并计算该点的特征表达 def detectAndDescrible(img):#构建STFT特征检测器sift cv2.SIFT_create()#特征提取kps,features sift.detectA…

3-3 AUTOSAR RTE 对SR Port的实现

返回总目录->返回总目录<- 目录 一、前言 二、显式访问 三、隐式访问 四、队列调用(Queued) 五、无效数据元素 一、前言 RTE作为SWC和BSW之间的通信机构,支持Sender-Receiver方式实现ECU内及ECU间的通信。 对于Sender-Receiver Port支持三种模式: 显式访问:若…

京东零售数据湖应用与实践

作者&#xff1a;陈洪健&#xff1a;京东零售大数据架构师&#xff0c;深耕大数据 10 年&#xff0c;2019 年加入京东&#xff0c;主要负责 OLAP 优化、大数据传输工具生态、流批一体、SRE 建设。 当前企业数据处理广泛采用 Lambda 架构。Lambda 架构的优点是保证了数据的完整性…

LeetCode|70.爬楼梯

这道题很像斐波那契数列&#xff0c;但是初始值不同&#xff0c;也有动态规划的解法&#xff0c;但是一开始我想到的是递归写法。现在我们站在第n阶台阶&#xff0c;那么&#xff0c;我们上一步就有两种可能&#xff1a;1、我们从第n-1阶台阶走一步上来的&#xff1b;2、我们从…

弹出“xinput1_3.dll文件缺失”的错误要怎么处理?一键修复xinput1_3.dll

当你尝试打开游戏或应用时&#xff0c;如果弹出“xinput1_3.dll文件缺失”的错误&#xff0c;请记得及时处理。这个文件是DirectX中用于处理游戏控制器输入的关键组件。这个问题可以通过几个简单的步骤轻松解决。本指南将教你如何快速恢复或替换丢失的xinput1_3.dll文件&#x…

免费Excel工作表同类数据合并工具

下载地址&#xff1a;https://pan.quark.cn/s/81b1aeb45e4c 在 Excel 表格里&#xff0c;当我们试图手动将多行同类数据合并为一行时&#xff0c;会遭遇诸多棘手的困难以及繁杂的操作流程。在确定哪些数据属于可合并的同类数据时&#xff0c;单纯依靠人工进行对比&#xff0c;极…