基于深度学习的子图计数方法

背景介绍

子图计数(Subgraph Counting)是图分析中重要的研究课题。给定一个查询图 和数据图 , 子图计数需要计算 在 中子图匹配的(近似)数目 。一般我们取子图匹配为子图同构语义,即从查询图顶点集 到数据图顶点集 的单射 ,保持拓扑关系(当查询图存在边 时,数据图中对应点也需要有连边 )和标签(查询图顶点 和数据图中对应点 标签相同)不变。

子图计数可以用于需要(近似)子图匹配数目的场景,如,图数据库查询优化时,需要对特定查询结构做基数估计(cardinality estimation),这便可以应用子图计数方法。

一般方法

最直接的方法是直接在数据图上运行查询图的子图匹配算法。优点是可以得到精确的子图计数结果。但子图匹配是 NP 难问题,真实运行子图匹配算法可能需要很长时间,且有时用户并不需要得到精确结果。于是研究者们提出了基于摘要的和基于采样的两大类子图计数方法[^1]。

基于摘要的(summary-based)的子图计数方法通过预处理数据图,统计一些元数据(例如一些子结构的真实计数数目)并储存起来。每当遇到一张新查询图需要估计其计数时,将其分解成若干部分,每一部分都可以用存储的统计信息容易估计计数。再用独立性假设(假设各子结构之间是相互独立的)或其他连接估计的方法合成原查询图的计数估计。代表方法有 CharacteristicSets,SumRDF 等。

基于采样的(sampling-based)的子图计数方法在数据图的采样上匹配查询图,再根据采样的比例还原出原数据图上的计数估计。其能消除一部分基于摘要方法的独立性假设带来的误差。但由于采样的随机性,如果样本集过小,估计偏差会很大;如果样本集过大,估计代价也会很大。代表方法有 IMPR,Wander Join等。

近年来深度学习,尤其是图神经网络(graph neural network, GNN)的兴起给子图计数的研究带来了新思路。直观上,如果神经网络能够很好地表示和编码查询图和数据图的拓扑结构和标签信息,那只需要训练一个求解回归问题的黑盒模型,输入查询图的表示 和数据图的表示 ,输出子图计数的估计值 便可完成该任务(训练误差一般取 ,其中 ,越接近 表示估计得越准)。于是涌现了很多方法,致力于改进查询图和数据图的编码表示,改进估计模型,以及顶层设计。本文接下来会介绍三篇具有代表性的工作。

方法介绍

NSIC

NSIC[^2]是最早将 GNN 应用于子图计数问题的工作。其提出了一个端到端的预测框架,框架内的几个模块可以选用适合不同数据集的方法。其思想较为朴素,架构如下图所示,符合上一部分的介绍。

对于查询图和数据图的表示,NSIC 提出两套解决方案:一是类似语言问题的序列模型(下图中间),将图表示为图中所有边的序列,可以采用 CNN,LSTM,TXL 等方法;二是采用图编码方式(下图右边),在查询图和数据图上运行图神经网络获得各节点的表示,可以采用 RGCN,GIN 等方法。

有了查询图和数据图的表示 和 ,NSIC 提出了一种交互 和 的网络 DIAMNet,在每一步过程中,历史信息先与查询图表示作用,再接受数据图的交互形成新的历史信息。网络最后的输出便能学习到查询图和数据图的特征用于最后的子图计数预测。

原文实验部分对比了 NSIC 的预测准确度和与基准方法 VF2 (VF2是经典的子图匹配算法,可以得到精确的子图计数结果)的运行时间比较。可以发现,编码查询图和数据图模块上,图编码方法(RGCN, RGIN)比序列编码方法(CNN,LSTM,TXL)更准确。并且在可接受误差范围内,NSIC 比子图匹配方法 VF2 快两到三个数量级。

ALSS

由于 NSIC 需要在原数据图上运行深度模型,代价较大。事实上,NSIC 论文实验中并没有与传统子图计数方法比较,其在运行时间上,并不占优。2021 SIGMOD 的一篇工作 ALSS[^3]并不直接在数据图上运行深度模型,而是直接用查询图的表示作为深度模型的输入,输出子图计数的估计,可以极大提高运行时速度。

其架构如上图所示。为了避免在数据图上做 GNN,需要有查询图更准确的编码。 ALSS 采用传统子图计数的思想,将查询图分解成若干子部分,再将不同部分聚合。具体做法为,从查询图的每个点 出发,做 层 BFS,得到子结构 ,之后在每个 上运行 GNN,取 中 的编码 作为查询图中节点 的编码。后续的子图计数预测的输入就仅为查询图的表示 。数据图的作用仅为查询图上获得每点编码时为每点赋特征初值。文中推荐用频率编码(即每个标签有其 one-hot 向量,编码了数据图中含有该标签点的数目)和嵌入编码(offline地在增强图(原数据图中增加标签点,并连接每个数据点和对应标签构成一个新的图)上运行 GNN,获得标签节点的表示作为含该标签的点的表示,具体如下图)的黏合作为查询图节点的初始特征。

此外 ALSS 还有主动学习模块。在预测计数的回归模型之外,还额外配备了预测计数量级的分类器。当模型训练好之后,遇到一个新的待预测的数据,若分类器结果和回归预测值相差较大,可以认为模型对这条输入数据的预测把握不大,于是将其加入训练集,并请求数据库计算匹配获得其准确计数,每隔一段时间后便重新训练,整体流程如下:

作者在实验中展示了 ALSS 的预测准确性和运行时间。在准确性方面(下图展示了在 aids 数据集上的性能),ALSS (LSS-fre,LSS-emb,LSS-con)尽管没有基于采样的 Wander Join (WJ)方法在小规模查询图表现好,但对于大规模查询图稳定性好。在运行速度方面(下面第二张图展示了在 youtube 和 eu2005 数据集上的运行速度),由于 ALSS 只需要在查询图上运行深度模型,速度比基于采样的 WJ 快很多。

NeurSC

我们可以发现,NSIC 对数据图操作量太大导致其速度慢;而 ALSS 中数据图仅用于查询图表示赋初值,对数据图利用较少。有没有对数据图适中利用的思路呢?NeurSC[^4]是 SIGMOD 2022 的一篇工作。就提出了一种解决思路。

子图匹配方法通常遵循“过滤(filter)- 计划(plan)- 枚举(enumeration)”的框架:过滤阶段通过简单的查询图限制筛选出数据图中有希望构成匹配的相关数据点,计划节点产生一个较优的节点枚举顺序,最后进行枚举。其中,过滤阶段用时很少,占比最多的是枚举阶段。

NeurSC 将子图匹配的过滤操作引入子图计数问题。易见,如果用过滤后的部分数据图代替原数据图,不仅规模变小便于计算,而且剩余的数据图部分也比被过滤的部分对匹配结果的相关性更高。下图是 NeurSC 的架构展示。其中包括了两个 GNN:图内神经网络 (Intra-GNN)运行在查询图和过滤后的数据图上,分别得到其表示;图间神经网络(Inter-GNN)运行在数据图和查询图的交互图上。如下面右图所示,交互图连接了查询图中的点和过滤后数据图对应的候选点。最后将这两部分 GNN 输出的编码输入到预测计数的 MLP 便可得到子图计数的估计。

与此同时,为了让查询图中点的表示和过滤后数据图上对应候选点的表示尽可能相同,作者提出了利用 Wasserstein 判别器帮助图内神经网络和图间神经网络对查询点和对应候选点学出相近表示的方法。感兴趣的同学可以阅读原文了解更多。

实验部分中对比了 NeurSC 和其他方法的准确性和运行速度,可以发现,NeurSC 有很好的预测精度和稳定性特别是在小规模查询图上。NeurSC 由于引入了过滤后的数据图,而过滤效果不好时,数据规模和原图是差不多大的,速度方面会受到一定影响。

参考文献

[1]: G-CARE: A framework for performance benchmarking of cardinality estimation techniques for subgraph matching. Yeonsu Park, Seongyun Ko, Sourav S. Bhowmick, Kyoungmin Kim, Kijae Hong, and Wook-Shin Han. SIGMOD 2020. 

[2]: Neural Subgraph Isomorphism Counting. Xin Liu, Haojie Pan, Mutian He, Yangqiu Song, Xin Jiang, and Lifeng Shang. KDD 2020. 

[3]: A Learned Sketch for Subgraph Counting. Kangfei Zhao, Jeffrey Xu Yu, Hao Zhang, Qiyan Li, and Yu Rong. SIGMOD 2021. 

[4]: Neural Subgraph Counting with Wasserstein Estimator. Hanchen Wang, Rong Hu, Ying Zhang, Lu Qin, Wei Wang, and Wenjie Zhang. SIGMOD 2022.

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

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

相关文章

pitch、yaw、roll

pitch、yaw、roll是描述物体在空间中旋转的术语,通常用于计算机图形学或航空航天领域中。这些术语描述了物体绕不同轴旋转的方式: Pitch(俯仰):绕横轴旋转,使物体向前或向后倾斜。俯仰角度通常用来描述物体…

基于Java+小程序点餐系统设计与实现(源码+部署文档)

博主介绍: ✌至今服务客户已经1000、专注于Java技术领域、项目定制、技术答疑、开发工具、毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到 Java项目精品实…

C#上位机与三菱PLC的通信09---开发自己的通讯库(A-3E版)

1、A-3E报文回顾 具体细节请看: C#上位机与三菱PLC的通信05--MC协议之QnA-3E报文解析 C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试 2、为何要开发自己的通讯库 前面开发了自己的A-1E协议的通讯库,实现了数据的读写,对于封装的通…

vue中切换tab时echart不显示或显示不正常

项目中在不同的tab中都使用了echart,但是在切换tab的时候发现第二个tab没有正常显示,通过排查代码和网上查阅才发现是因为element是通过display来控制tab的显示的,没有点击tab2的时候第二个echart图表的容器是 display:none,echar…

压缩感知常用的重建算法

重建算法的基本概念 在压缩感知(Compressed Sensing, CS)框架中,重建算法是指将从原始信号中以低于奈奎斯特率采集得到的压缩测量值恢复成完整信号的数学和计算过程。由于信号在采集过程中被压缩,因此重建算法的目标是找到最符合…

一文了解大数据生态

大数据一词最早指的是传统数据处理应用软件无法处理的过于庞大或过于复杂的数据集。 现在,对“大数据”一词的使用倾向于使用预测分析、用户行为分析或者其他一些从大数据中提取价值的高级数据分析方法,很少用于表示特定规模的数据集。 定义 大数据是…

FariyGUI × Cocos Creator 入门

前言 程序员向的初探Cocos Creator结和FairyGUI的使用,会比较偏向FairyGUI一点,默认各位读者都熟练掌握Cocos Creator以及js/ts脚本编写。 初探门径,欢迎大佬指教,欢迎在评论区或私信与本人交流,谢谢! 下…

微服务篇之雪崩、降级和熔断

一、服务雪崩 服务雪崩:一个服务失败,导致整条链路的服务都失败的情形。 二、服务降级 服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。 …

docker pullpush 生成镜像文件并push 到阿里云

pull docker docker pull ultralytics/ultralytics # 拉取yolov8的镜像仓库 docker run -it ultralytics/ultralytics # 运行镜像 conda create -n gsafety python3.8 # 创建环境 source activate gsafety # 激活环境 pip install -i https://pypi.tuna.tsinghua.edu.cn/simp…

C++ Primer 笔记(总结,摘要,概括)——第7章 类

目录 ​编辑 7.1 定义抽象数据类型 7.1.1 设计Sales_data类 7.1.2 定义改进的Sales_data类 7.1.3 定义类相关的非成员函数 7.1.4 构造函数 7.1.5 拷贝、赋值和析构 7.2 访问控制和封装 7.2.1 友元 7.3 类的其他特性 7.3.1 类成员再探 7.3.2 返回*this的成员函数 7.3.3 类类…

【机器学习科学库】全md文档笔记:Jupyter Notebook和Matplotlib使用(已分享,附代码)

本系列文章md笔记(已分享)主要讨论人工智能相关知识。主要内容包括,了解机器学习定义以及应用场景,掌握机器学习基础环境的安装和使用,掌握利用常用的科学计算库对数据进行展示、分析,学会使用jupyter note…

电脑远控工具Venom Rat 毒液的测试和预防

电脑远控工具的概念 电脑远控工具是一种软件程序,能够让用户通过网络在远程位置控制另一台计算机。使用远控工具,用户可以在不同地点之间实现计算机的连接和控制,方便远程管理、技术支持、远程教学等应用场景。远控工具通常包括远程桌面查看…

Redis之缓存击穿问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 单例双检锁2. 缓存预热和定时任务 一、书接上文 Redis之缓存雪崩问题解决方案 二、介绍 缓存击穿就是大量并发访问同一个热点数据,一旦这个热点数据缓存失效,则请求压力都来到数据库。 三、解决方案 1…

git版本回退在eclipse和命令中的操作

一.背景 老程序员了,熟悉eclipsesvn,git用的不溜。近几年用了git,偶尔修改了某个文件希望放弃本次修改重新恢复到最新版本重新修改。或者回退到某个版本,再修改。记录一下Eclipse中的操作,和命令操作的情况。 二.Ecli…

如何在debian上实现一键恢复操作系统?

在Debian或任何其他Linux发行版上实现一键恢复操作系统,需要创建一个系统镜像或快照,并设置一个简单的方法来从该镜像恢复。以下是创建和恢复系统的基本步骤: 1. 创建系统镜像: 使用像dd,rsync或专门的备份工具&#…

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错

报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…

C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】

C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…

浏览器垃圾回收机制与 Vue 项目内存泄漏场景分析

目录 一、Vue项目 二、浏览器垃圾回收机制 三、内存泄漏场景 四、Vue项目会内存泄漏吗? 一、Vue项目 Vue.js 是一种流行的JavaScript 框架,用于构建用户界面。以下是关于Vue项目的一些基本信息和概念: 安装 Vue:您可以通过使…

探究网络工具nc(netcat)的使用方法及安装步骤

目录 🐶1. 什么是nc(netcat)? 🐶2. nc(netcat)的基本使用方法 2.1 🥙使用 nc 进行端口监听 2.2 🥙使用 nc 进行端口扫描 2.3 🥙使用 Netcat 进行文件传输…

报表控件Stimulsoft 新版本2024.1中,功能区工具栏新功能

今天,我们将讨论Stimulsoft Reports、Dashboards 和 Forms 2024.1版本中的一项重要创新 - 在一行中使用功能区工具栏的能力。 Stimulsoft Ultimate (原Stimulsoft Reports.Ultimate)是用于创建报表和仪表板的通用工具集。该产品包括用于WinF…