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

背景介绍

子图计数(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.

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

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

相关文章

Excel的中高级用法

单元格格式,根据数值的正负分配不同的颜色和↑ ↓ 根据数值正负分配颜色 2-7 [蓝色]#,##0;[红色]-#,##0 分配颜色的基础上,根据正负加↑和↓ 2↑-7↓ 其实就是在上面颜色的代码基础上加个 向上的符号↑,或向下的符号↓ [蓝色]#,##0↑;[红色…

01背包问题:组合问题

01背包问题:组合问题 题目 思路 将nums数组分成left和right两组,分别表示相加和相减的两部分,则: left - right targetleft right sum 进而得到left为确定数如下,且left必须为整数,小数表示组合不存在&…

【Python从入门到进阶】49、当当网Scrapy项目实战(二)

接上篇《48、当当网Scrapy项目实战(一)》 上一篇我们正式开启了一个Scrapy爬虫项目的实战,对当当网进行剖析和抓取。本篇我们继续编写该当当网的项目,讲解刚刚编写的Spider与item之间的关系,以及如何使用item&#xff…

Qt QWidget 简约美观的加载动画 第二季

&#x1f603; 第二季来啦 &#x1f603; 简约的加载动画,用于网络查询等耗时操作时给用户的提示. 这是最终效果: 一共只有三个文件,可以直接编译运行 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QVBoxLayout> #i…

Chiplet技术与汽车芯片(一)

目录 1.摩尔定律放缓 2.Chiplet的优势 2.1 提升芯片良率、降本增效 2.2 设计灵活&#xff0c;降低设计成本 2.3 标准实行&#xff0c;构建生态 3.Chiplet如何上车 22年8月左右&#xff0c;Chiplet概念突然在二级市场火了起来&#xff0c;封测四小龙华天、长电、通富微电、…

智慧应急与物联网相结合:物联网技术如何提升智慧应急响应能力

目录 一、引言 二、智慧应急与物联网技术的结合 三、物联网技术提升智慧应急响应能力的途径 四、物联网技术在智慧应急中的应用案例 五、物联网技术在智慧应急中面临的挑战与解决方案 挑战一&#xff1a;技术标准与规范不统一 解决方案&#xff1a; 挑战二&#xff1a;…

复旦大学EMBA联合澎湃科技:共议科技迭代 创新破局

1月18日&#xff0c;由复旦大学管理学院、澎湃新闻、厦门市科学技术局联合主办&#xff0c;复旦大学EMBA项目、澎湃科技承办的“君子知道”复旦大学EMBA前沿论坛在厦门成功举办。此次论坛主题为“科技迭代 创新破局”&#xff0c;上海、厦门两地的政策研究专家、科学家、科创企…

三天学会阿里分布式事务框架Seata-Seata及分布式事务简介

锋哥原创的分布式事务框架Seata视频教程&#xff1a; 实战阿里分布式事务框架Seata视频教程&#xff08;无废话&#xff0c;通俗易懂版&#xff09;_哔哩哔哩_bilibili实战阿里分布式事务框架Seata视频教程&#xff08;无废话&#xff0c;通俗易懂版&#xff09;共计10条视频&…

Python算法题集_实现 Trie [前缀树]

Python算法题集_实现 Trie [前缀树] 题208&#xff1a;实现 Trie (前缀树)1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【定义数据类默认字典】2) 改进版一【初始化字典无额外类】3) 改进版二【字典保存结尾信息无额外类】 4. 最优算法5. 相关…

自定义神经网络三之梯度和损失函数激活函数

文章目录 前言梯度概述梯度下降算法梯度下降的过程 optimize优化器 梯度问题梯度消失梯度爆炸 损失函数常用的损失函数损失函数使用原则 激活函数激活函数和损失函数的区别激活函数Relu-隐藏层激活函数Sigmoid和Tanh-隐藏层Sigmoid函数Tanh&#xff08;双曲正切&#xff09; &l…

Panalog大数据日志审计系统libres_syn_delete.php命令执行漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 1、产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校…

Linux之vim的使用详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂 目录 一.vim简介 二.vim的基本概念 三.vim的基本操作 3.1准备 …

STL - B树

1、常见的搜索结构 种类数据格式时间复杂度顺序查找无要求O(N&#xff09;二分查找有序O( )二叉搜索树无要求O(N)二叉平衡树(AVL树和红黑树)无要求O( )哈希无要求O(1) 以上结构适合用于数据量相对不是很大&#xff0c;能够一次性存放在内存中&#xff0c;进行数据查找的场景…

图像的压缩感知的MATLAB实现(第3种方案)

前面介绍了两种不同的压缩感知实现&#xff1a; 图像压缩感知的MATLAB实现&#xff08;OMP&#xff09; 压缩感知的图像仿真&#xff08;MATLAB源代码&#xff09; 上述两种方法还存在着“速度慢、精度低”等不足。 本篇介绍一种新的方法。 压缩感知&#xff08;Compressed S…

macOS系统下载IDEA的操作流程

第一步 进入官网 Download IntelliJ IDEA – The Leading Java and Kotlin IDE 第二步 根据mac的芯片选择版本下载 芯片的查看位置是【设置】-【通用】-【关于本机】-第二个&#xff0c;我的是Apple芯片&#xff0c;选Apple Silicon -- 第三步 右上角下载处打开安装包&…

汇编语言与接口技术实践——秒表

1. 设计要求 基于 51 开发板,利用键盘作为按键输入,将数码管作为显示输出,实现电子秒表。 功能要求: (1)计时精度达到百分之一秒; (2)能按键记录下5次时间并通过按键回看 (3)设置时间,实现倒计时,时间到,数码管闪烁 10 次,并激发蜂鸣器,可通过按键解除。 2. 设计思…

第十三章 Linux——备份与恢复

第十三章 Linux——备份与恢复 基本介绍安装dump和restore使用dump完成备份dump语法说明dump应用案例1dump应用案例2dump-w查看备份时间文件备份文件或者目录备注 使用restore基本语法基本介绍restore基本语法应用案例1应用案例2应用案例3应用案例4 基本介绍 实体机无法做快照…

SpringBoot:数据访问-整合 spring-boot-starter-data-jpa

点击查看数据访问demo&#xff1a;LearnSpringBoot06DataJPA Spring Data JPA - Reference 文档 简介 Spring Data的JPA模块包含一个允许定义存储库bean的自定义名称空间。它还包含JPA特有的某些特性和元素属性。通常&#xff0c;可以使用repositories元素来设置JPA存储库: 点…

学习使用在mysql中查询指定字段字符串包含多个字符串的方法

学习使用在mysql中查询指定字段字符串包含多个字符串的方法 使用LIKE关键字使用REGEXP关键字使用FIND_IN_SET函数使用INSTR函数和AND关键字 使用LIKE关键字 SELECT * FROM table_name WHERE column_name LIKE %string1% AND column_name LIKE %string2%;使用LIKE关键字&#x…

异常统一处理:Exception(兜底异常)

一、引言 本篇内容是“异常统一处理”系列文章的重要组成部分&#xff0c;主要聚焦于对 Exception&#xff08;兜底异常&#xff09; 的原理解析与异常处理机制&#xff0c;并给出测试案例。 关于 全局异常统一处理 的原理和完整实现逻辑&#xff0c;请参考文章&#xff1a; 《…