当前位置: 首页 > news >正文

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

本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会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

相关文章:

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

本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会KDD2023的论文《Spatial Heterophily Aware Graph Neural Networks》。 肖淙曦 肖淙曦,百度研究院商业智能实验室研究实习生,中国科学技术大学在读博士生,主要从事时空…...

Springboot整合JWT

1. 应用场景 前后端分离项目保持登录状态。 问题:ajax请求如何跨域,将无法携带jsessionid,这样会导致服务器端的session不可用。如何解决? 后端: 登录接口在验证过用户密码后,将用户的身份信息转换成…...

如何使用Python和正则表达式处理XML表单数据

在日常的Web开发中,处理表单数据是一个常见的任务。而XML是一种常用的数据格式,用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式,介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思…...

LA@方阵相似@相似矩阵的性质

文章目录 相似矩阵引言相似矩阵定义相似变换相似变换矩阵相似矩阵的矩阵多项式和特征值相同推论:与对角阵相似的矩阵性质定理 相似矩阵性质相似矩阵的乘方性质相似矩阵和矩阵多项式相似对角阵 对角阵多项式的展开小结 相似矩阵 引言 对角阵是矩阵中最简单的一类矩阵 对角阵相…...

ZLMediaKit 各种推拉流

1 用ffmpeg 推音视频流 ./ffmpeg -f dshow -i video"HP Wide Vision HD Camera" -f dshow -i audio"麦克风阵列 (Realtek High Definition Audio)" -rtbufsize 100M -max_delay 100 -pix_fmt yuv420p -tune zerolatency -c:v libx264 -crf 18 -s 1280x720…...

行业追踪,2023-08-29

自动复盘 2023-08-29 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...

【简单】228. 汇总区间

原题链接:https://leetcode.cn/problems/summary-ranges/description/ 228. 汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖&…...

Mysql高级语句

高级语句 1.按关键字排序 SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。 SELECT 语句中如果没有指定具体的排序方式,则默认按 ASC…...

Python中 re.compile 函数的使用

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 以下介绍在python的re模块中怎样应用正则表达式 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备…...

【分布式搜索引擎es】

文章目录 数据搜索DSL实现查询文档搜索结果处理 RestClient实现 elasticsearch最擅长的是 搜索和 数据分析。 数据搜索 DSL实现 查询文档 常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all全文检索…...

单片机的ADC

如何理解ADC。ADC就是将模拟量转换成数字量的过程,就是转换为计算机所能存储的0和1序列,比如将模拟量转换为一个字节,所以这个字节的大小要能反应模拟量的大小,比如一个0-5V的电压测量量(外部输入电压最小0V,最大为5V&…...

如何把pdf文件合并?分享最新pdf合并方法

在所有文档格式中,pdf应该是最常用的,像产品介绍、商务合同、法律文书等等,这些都是pdf格式的。有时候出于工作需要,我们要把两份或者多份pdf文件合并在一起,那么问题来了,如何把pdf文件合并呢?小编最近发…...

笙默考试管理系统-MyExamTest----codemirror(11)

笙默考试管理系统-MyExamTest----codemirror(11) 目录 笙默考试管理系统-MyExamTest----codemirror(11) 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管…...

Spring MVC 五 - Spring MVC的配置和DispatcherServlet初始化过程

今天的内容是SpringMVC的初始化过程,其实也就是DispatcherServilet的初始化过程。 Special Bean Types DispatcherServlet委托如下一些特殊的bean来处理请求、并渲染正确的返回。这些特殊的bean是Spring MVC框架管理的bean、按照Spring框架的约定处理相关请求&…...

Ramp 有点意思的题目

粗一看都不知道这个要干什么,这 B 装得不错。 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKJycnCktlZXAgdXMgb3V0IG9mIGdvb2dsZSBzZWFyY2ggcmVzdWx0cy4uCgokIG9kIC1kIC9kZXYvdXJhbmRvbSB8IGhlYWQKMDAwMDAwMCAgICAgNjAyMTUgICAyODc3OCAgIDI5MjI3ICAgMjg1NDggICA2MjY4NiAgIDQ1MT…...

算法通关村14关 | 堆在数组中找第k大的元素应用

1. 在数组中找第k大元素 题目 LeetCode215:给定整数数组nums和整数k,请返回数组中第k个最大的元素, 思路 解题思路用三个,选择法,堆查找和快速排序。 我们选择用大堆小堆解决问题,“找最大用小堆&#xff…...

Unity 顶点vertices,uv,与图片贴图,与mesh

mesh就是组成3d物体的三角形们。 mesh由顶点组成的三角形组成,三角形的大小 并不 需要一样,由顶点之间的位置决定。 mesh可以是一个或者多个面。 贴图的原点在左下角,uv是贴图的坐标,数量和顶点数一样(不是100%确定…...

Shell编程之函数

目录 基本概念 自定义函数 系统函数 1.read 2.basename 3.dirname 基本概念 将一段代码组合封装在一起实现某个特定的功能或返回某个特定的值,然后给这段代码取个名字,也就是函数名,在需要实现某个特定功能的时候直接调用函数名即可。 函…...

10.物联网LWIP之TCP状态转变

一。TCP状态机 1.青粗线:理想TCP状态转变(服务器视角下) 2.虚线:被动TCP状态转变(服务器视角下) 3.细实线:不经常出现的TCP状态转变(类似于边界处理) 1.青粗线解释--》服…...

Img标签的src地址自动拼接本地域名(localhost:8080)导致图片不显示问题

摘要:做Vueelement ui项目的时候,发现使用element ui的upload上传图片时,不显示的问题。我项目的图片是上传到七牛云,长传成功后返回存储在七牛云中的地址。后面发现是因为返回的地址是外部地址,需要完整的URL&#xf…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

GraphRAG优化新思路-开源的ROGRAG框架

目前的如微软开源的GraphRAG的工作流程都较为复杂&#xff0c;难以孤立地评估各个组件的贡献&#xff0c;传统的检索方法在处理复杂推理任务时可能不够有效&#xff0c;特别是在需要理解实体间关系或多跳知识的情况下。先说结论&#xff0c;看完后感觉这个框架性能上不会比Grap…...

内窥镜检查中基于提示的息肉分割|文献速递-深度学习医疗AI最新文献

Title 题目 Prompt-based polyp segmentation during endoscopy 内窥镜检查中基于提示的息肉分割 01 文献速递介绍 以下是对这段英文内容的中文翻译&#xff1a; ### 胃肠道癌症的发病率呈上升趋势&#xff0c;且有年轻化倾向&#xff08;Bray等人&#xff0c;2018&#x…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...