基于飞桨图学习框架的空间异配性感知图神经网络

本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会KDD2023的论文《Spatial Heterophily Aware Graph Neural Networks》。
图片

肖淙曦

肖淙曦,百度研究院商业智能实验室研究实习生,中国科学技术大学在读博士生,主要从事时空数据挖掘和图深度学习相关的研究工作。基于飞桨完成多篇论文,发表于KDD、AAAI等计算机顶级学术会议。

图片

周景博

周景博,飞桨开发者高级技术专家(高级PPDE),现任百度研究院商业智能实验室资深研究员,主要从事数据挖掘和机器学习相关的研究和应用工作,包括时空大数据、深度几何学习、知识图谱和AI辅助药物设计等,PaddleSpatial技术负责人,基于飞桨完成论文多篇,发表于KDD、AAAI、TKDE等计算机顶级会议和期刊上。

背景介绍

近年来,图神经网络(Graph Neural Networks, GNNs)被广泛应用于智能城市计算。考虑到城市是一个复杂的系统,城市实体之间存在各种联系,许多研究工作将城市建模为一个城市图(Urban Graph),其中图上的节点表示某种城市实体,边表示实体间的某种关联,并采用图神经网络对城市图进行学习,以解决城市中各种下游任务。

然而,与一般的图不同,城市图经常具有空间异配性(Spatial Heterophily),该特点限制了一般图神经网络的性能。首先,图的异配性(Heterophily)和同配性(Homophily)是两个相对的概念。一般的GNN模型假设图数据存在较好的同配性,相邻节点具有相似的特点。而由于不同功能城市实体间的关联复杂,城市图往往具有异配性,即相连的节点可能不相似。比如,住宅区和工作场所之前经常存在人口流动关系,但显然这两种区域存在巨大差异。一般的同配图神经网络(Homophilic GNNs)趋向于为相邻节点产生相似的表示,可能会忽略重要的差异信息,限制了其在具有异配性的城市图上的有效性。

在本文中,我们进一步发现城市图的邻居异配通常还呈现出一定的空间多样性,我们称这种特点为空间异配性(Spatial Heterophily)。对一般的异配图,邻居与中心节点具有差异;而在城市图上,位于不同地理位置的邻居,对中心节点的差异分布是不同的,而不是均匀的,即差异存在空间多样性(Spatial Diversity)。本文设计了一个空间多样性评分指标(Spatial Diversity Score)来描述城市图的空间异配性。如图1(a)所示,城市图可能获得较高的得分,说明图上的邻居差异分布存在空间多样性,即空间异配性。

图片

图1 空间异配性分析

即使部分研究者已经开始研究图的异配性问题,但是现有的异配图神经网络(Heterophilic GNNs)主要研究邻居差异有限的异配图,比如假设异配图上仅有两种类型的节点,而不能考虑城市图上邻居差异分布的空间多样性。如图1(b)所示,我们通过实验比较了不同GNN模型在一系列人工合成图上的性能。当逐渐加图空间异配性(得分逐渐升高),现有异配图神经网络无法保持优良的性能。所以,设计一个能够解决空间异配性的图神经网络,更好地在城市图上进行表示学习,是十分有意义的。

为解决这一问题,本文提出了一个空间异配性感知图神经网络(Spatial Heterophily Aware Graph Neural Network,SHGNN),模型结构如图2所示。该模型的设计受到了地理学第一定律 “任何事物都相关,但相近的事物关联更紧密” 的启发,即在城市中,我们能观察到空间位置相近的城市实体通常具有相似的特点。基于这一特性,本方法的核心思想是根据空间位置进行邻域划分,将空间相近的邻居分到一组,使得组内邻居与中心节点之间具有相近的差异分布,以够缓解组内邻居异配的多样性。在此基础上,我们设计能够同时建模差异信息的图学习算法,对每个分组单独处理,分而治之地解决城市图的空间异配性。

在该工作中,我们基于飞桨实现了模型的搭建与训练。 在输入数据方面,本文使用飞桨的图学习框架Paddle Graph Learning (PGL) 对城市图进行高效的构建与存储,包括节点之间的连接关系、节点空间坐标,以及节点间的空间距离等信息。在模型方面,本文首先结合PGL的子图提取接口与消息传递机制,便捷地实现了对不同空间位置的邻居分别进行消息聚合的操作;接着,基于飞桨的张量矩阵运算,实现了城市图上共性信息和差异信息的交互,增强城市图的表示学习。基于飞桨动态图框架对模型进行端到端训练后,本方法在不同的下游任务中表现出良好的性能。

方法框架

图片

图2 空间异配感知的图神经网络

本文提出的空间异配性感知图神经网络主要由两个模块组成,分别为旋转-伸缩空间感知邻域聚合(Rotation-Scaling Spatial Aggregation),以及异配感知的空间交互(Heterophily-Sensitive Spatial Interaction)。

旋转-伸缩空间感知邻域聚合

旋转-伸缩空间感知邻域聚合的首先对邻居节点进行划分,将位置相近的邻居分配到同一个空间组(Spatial Group),使得组内邻居对中心节点具有相近的差异分布,以缓解差异分布的多样性。接着,我们分别对每个空间组的邻居节点进行特征聚合。该邻域划分和分组聚合,是以分而治之的方式解决空间异配性的基础。

旋转-伸缩双视角空间划分

图片

图3 旋转-伸缩双视角空间划分示意图

如图3(a)和(b)所示,首先从方向维度(Direction View)和距离维度(Distance View)对每个中心节点周围的地理空间进行划分,产生多个互不相交的子空间,并依据每个邻居节点所处的子空间对其进行分组。其中,我们在方向维度下将地理空间划分成若干个方向不同的扇区(Sector),在距离维度下将空间划分成若干个距离不同的环(Ring)。我们基于飞桨实现了上述空间划分函数:首先,利用飞桨PGL.Graph类的节点特征、边特征访问API获取节点的空间坐标和节点间的空间距离,并计算出每个邻居节点所属的扇区和环;接着,基于PGL.sampling的subgraph API可以便捷地将每个扇区、每个环定义为不同子图,以此完成邻居节点的划分,代码如下所示。

图片

图片

考虑到以下特殊情况:部分邻居节点可能分布在两个子空间的边界上,无法确定属于哪个分组;我们进一步提出了旋转-伸缩多重划分的策略,在方向和距离维度上都进行多重划分,使得不同的划分之间能够发挥互补优势,如图3(c)和(d)所示。在实现上,我们通过飞桨定义了多组扇区边界的旋转角度,以及多组环边界的距离区间,多次调用空间划分函数以实现多重空间划分,代码如下所示。

图片

图片

空间感知的邻域聚合

完成空间划分后,在邻域内进行特征聚合与消息传递。一般的GNNs通常使用求和或求平均的方式进行邻域特征聚合,这将无法区分具有不同空间分布的邻居,进而导致具有空间多样性的异配分布被混合到一起,难以处理。与此不同,本方法对每个空间分组内的邻居进行分别聚合(group-wise aggregation),以实现对空间异配性的“分而治之”,该聚合过程如图2(a)所示。基于划分好的PGL子图结构,我们可以借助PGL的消息传递方法SEND-RECV简便地实现每个空间分组内的消息传递与特征聚合。以方向维度下扇区内的邻居聚合为例,代码如下所示。

图片

异配感知的空间交互

在此基础上,异配感知的空间交互模块包含两个可学习的核函数(Kernel Function),在城市图上自适应地提取和利用各个空间组到中心节点、以及空间组之间的共性信息(Commonality)和差异信息(Discrepancy)。

共性核函数

考虑到不同的空间分组都是中心节点的邻居,利用邻域共性知识(Common Knowledge)或相似特点已经被广泛验证有利于图的表示学习。因此,我们首先设计了一个共性核函数(Commonality Kernel Function)来捕捉空间分组之间的共性信息,并利用共性信息增强各个分组的表示,如图2(b)所示。以方向维度为例,我们基于飞桨张量计算,实现了对不同扇区之间的共性进行度量,以及用共性信息对扇区表征进行更新。

图片

差异核函数

除了共性知识以外,对于具有异配性的城市图,建模邻居节点的差异信息更是至关重要的。因此,我们设计了另一个差异核函数(Discrepancy Kernel Function)来捕捉中心节点与空间组,以及各空间组之间的不相似之处,并类似地用差异信息来增强各空间分组表征。以方向维度为例,代码实现如下。

图片

注意力门控机制

在各种的应用场景中,城市图上的不同城市实体可能具有不同程度的空间异配性。所以,我们进一步基于飞桨实现了一个注意力门控机制(Attentive Gate),通过端到端的方式自适应地学习共性信息和差异信息对特定任务中节点表征学习的重要性,以对两个分量进行融合。

图片

空间维度融合

最后,我们通过飞桨定义了一个可学习的比例参数,对方向维度和距离维度下获得的邻域表示进行融合,并更新中心节点的表示。

图片

在不同应用中,可以采用不同的损失对网络进行优化以得到节点的最终表示,并用于节点预测任务。

实验

我们在三个城市任务的三个真实数据集上进行了实验,验证了在城市图上考虑空间异配性的重要性,并证实了本方法的有效性。相比一般的同配图神经网络、异配图神经网络、空间图神经网络,本方法能在不同的下游任务中获得更好的性能。

图片

表1 三个城市任务中的性能比较

此外,我们还通过丰富的消融实验验证了本方法各部分设计的作用,包括从两个空间维度建模空间异配性、采用旋转-伸缩多重划分、以及同时捕捉图上的共性与差异信息等。

图片

图4 消融实验

总结

本文研究了城市图上独特的空间异配性问题。一方面,我们设计了一个指标来描述城市图的空间异配性,并分析其对图神经网络的影响;另一方面,我们基于飞桨图学习框架实现了一种新的空间异配性感知的图神经网络,能够简便地按空间划分对邻居进行分组处理,分而治之地解决城市图的空间异配问题,并在多个城市任务中取得性能提升。

相关代码已经开源在PaddleSpatial时空计算平台上。PaddleSpatial是基于百度飞桨深度学习框架开发的时空大数据计算工具和平台,融合了百度领先的区域分割、时空迁移学习、时间序列预测等时空能力,可支持多种时空计算场景的应用。

Paper

https://arxiv.org/abs/2306.12139

Code

https://github.com/PaddlePaddle/PaddleSpatial/tree/main/research/SHGNN

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

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

相关文章

CSC7203S 应用注意事项

CSC7203S 为高性能电流模式 PWM 开关电源功率转换器,满足绿色环保标准;广泛适用于经济型开关电源,如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7203S采用SOP-8封装。  内置 700V 高压功率开关管  输入电压(85V~265V&a…

【Apollo学习笔记】——规划模块TASK之PATH_ASSESSMENT_DECIDER

文章目录 前言PATH_ASSESSMENT_DECIDER功能简介PATH_ASSESSMENT_DECIDER相关信息PATH_ASSESSMENT_DECIDER总体流程1. 去除无效路径2. 分析并加入重要信息给speed决策SetPathInfoSetPathPointType 3. 排序选择最优的路径4. 更新必要的信息 前言 在Apollo星火计划学习笔记——Ap…

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测

时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测 目录 时序预测 | MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiGRU时间卷积双向门控循环单元时间序列预测&a…

SQL Server开启变更数据捕获(CDC)

一、CDC简介 变更数据捕获(Change Data Capture ,简称 CDC):记录 SQL Server 表的插入、更新和删除操作。开启cdc的源表在插入、更新和删除操作时会插入数据到日志表中。cdc通过捕获进程将变更数据捕获到变更表中,通过…

【校招VIP】产品面试之面试官的真实意图

考点介绍: 大厂面试时,面试官提出的问题除了了解经历和想法外,最看重的是思维逻辑能力、团队协作能力和协调能力。 『产品面试之面试官的真实意图』相关题目及解析内容可点击文章末尾链接查看! 一、考点题目 1. 你遇到的最大的…

复杂性分析与算法设计:解锁计算机科学的奥秘

文章目录 算法复杂性分析的基本概念时间复杂度空间复杂度 常见的算法设计策略1. 分治法2. 贪心法3. 动态规划 算法设计的实际应用1. 网络路由2. 图像处理3. 人工智能 算法的选择和性能分析结论 🎉欢迎来到数据结构学习专栏~复杂性分析与算法设计:解锁计算…

linux中安装nodejs,卸载nodejs,更新nodejs,git,linux中安装nginx并配置

文章目录 node的安装与卸载(更新版本)卸载nodejs安装新版本node git安装与拉取代码安装解决 linux git 每次推拉(push/pull)代码都要输入用户名密码的问题 nginx 安装、配置和卸载安装nginx配置**.conf 文件内容 nginx 卸载 注意,我的是Ubunt…

buildAdmin的使用笔记

安装buildAdmin 下载完整包,解压进入 buildadmin 的文件夹, 输入命令 composer install 启动的时候使用, php think run 就可以了 为什么启动只需要, php think run 这种启动方式, 我是头一回看见 ,后来才…

css-伪类:not实现列表最后一项没有样式

有了&#xff1a;not这个选择符&#xff0c;那么你将可以很好的处理类似这样的场景&#xff1a;假定有个列表&#xff0c;每个列表项都有一条底边线&#xff0c;但是最后一项不需要底边线。 示例&#xff1a; html: <ul><li>111111111111</li><li>21…

十二、集合(2)

本章概要 添加元素组集合的打印列表 List 添加元素组 在 java.util 包中的 Arrays 和 Collections 类中都有很多实用的方法&#xff0c;可以在一个 Collection 中添加一组元素。 Arrays.asList() 方法接受一个数组或是逗号分隔的元素列表&#xff08;使用可变参数&#xff…

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉农大图书馆

2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉农大图书馆

百万级并发IM即时消息系统(3)配置数据初始化和前后端交互

04_配置数据初始化及前后端交互_哔哩哔哩_bilibili 1.配置文件 创建一个config文件夹以及一个app.yaml配置文件。 该文件专门存放一些关键配置&#xff0c;如mysql DNS路径和redis的addr账号密码等。 后期可以创建一个工具包和一些初始化方法&#xff0c;专门用来加载这些配…

C++、C#、JAVA 、 DELPHI、VB各个程序的优缺点你知道吗?

每种编程语言都有自己的优势和缺点&#xff0c;以下是对C、C#、Java、Delphi和VB的一些常见评价&#xff1a;C:优势&#xff1a;高性能、灵活性和可移植性强&#xff0c;适合对性能要求高的应用&#xff0c;可以进行系统级编程和嵌入式开发。缺点&#xff1a;语法复杂&#xff…

亚马逊云科技 re:Inforce 大会云安全合规与技术实践及 Security Jam 大赛,快来报名吧!...

‍‍ 2023年8月31日在北京 亚马逊云科技 re:Inforce 大会 首次登陆中国&#xff01; 我们期待您的莅临&#xff0c; 并与您一起迎接 AI 时代&#xff0c; 开启全面智能的安全旅程&#xff01; 在13:00-17:00的 培训与动手实验环节中 云安全合规与技术实践 及 Security Jam 大赛…

使用Spring Boot和Kafka实现消息发送和订阅

文章目录 一&#xff0c;新建Spring Boot1&#xff0c;Maven配置2&#xff0c;无法识别为SpringBoot项目3&#xff0c;无效的源发行版4&#xff0c;无法访问SpringApplication5&#xff0c;运行直接Finish6&#xff0c;服务运行成功 二&#xff0c;安装启动Kafka1&#xff0c;下…

2023年05月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;问题求解 给定一个正整数N&#xff0c;求最小的M满足比N大且M与N的二进制表示中有相同数目的1。 举个例子&#xff0c;假如给定N为78&#xff0c;二进制表示为1001110&#xff0c;包含4个1&#xff0c;那么最小的比N大的并且二进制表示中只包含4个1的数是83&a…

如何更好的设计测试用例

测试用例设计的最基本要求&#xff1a;覆盖住所要测试的功能。这是再基本不过的要求了&#xff0c;但别看只是简单的一句话&#xff0c;要能够达到切实覆盖全面&#xff0c;需要对被测试产品功能的全面了解、明确测试范围(特别是要明确哪些是不需要测试的)、具备基本的测试技术…

【爬虫】实验项目二:模拟登录和数据持久化

目录 一、实验目的 二、实验预习提示 三、实验内容 实验要求 基本要求&#xff1a; 改进要求A&#xff1a; 改进要求B&#xff1a; 四、实验过程 基本要求&#xff1a; 源码如下&#xff1a; 改进要求A: 源码如下&#xff1a; 改进要求B&#xff1a; 源码如下&…

图像扭曲之万花筒

源码&#xff1a; void kaleidoscope(cv::Mat& src,cv::Mat& dst,double angle,double radius) {dst.create(src.rows, src.cols, CV_8UC3);dst.setTo(0);int cx src.cols / 2;int cy src.rows / 2;//angle PI / 4;double angle2 PI / 4;double sides radius / 3…

C++面试题(叁)---操作系统篇

目录 操作系统篇 1 Linux中查看进程运行状态的指令、查看内存使用情况的指令、 tar解压文件的参数。 2 文件权限怎么修改 3 说说常用的Linux命令 4 说说如何以root权限运行某个程序。 5 说说软链接和硬链接的区别。 6 说说静态库和动态库怎么制作及如何使用&#xff0c;区…
最新文章