Deep Graph Kernels

本文介绍了一种基于核方法的图结构表示学习框架——DeepGraphKernels (DGK)。该框架通过捕捉图子结构间的依赖关系来定义图与图之间的相似度。文章详细讨论了三种常见图核的应用案例:Graphlet内核、Weisfeiler-Lehman子树内核及最短路径图核。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Paper : Deep Graph Kernels
Code :

摘要

这是另一篇上古时期学习图结构的特征表示文章,在此考古一下并学习这篇文章使用的核方法。作者提出了一种学习图子结构潜在表示的统一框架,DGK框架。 该框架通过利用子结构之间的依赖关系信息,给出图与图之间的相似度定义,通过相似度来定义图结构的潜在表示。作者给出了该框架应用到三种常见的图内核(Graphlet内核,Weisfeiler-Lehman子树内核和最短路径图内核)上的特例情况。

核方法

衡量结构化对象之间相似性的一种方法是使用内核方法。 简单来说,内核方法使用内核函数来测量两个对象之间的相似性,内核函数对应于再生核希尔伯特空间(RKHS)的内积。因此,核方法面临的挑战是找到一个合适的内核函数,该函数在计算上易于处理的同时可以捕获结构的语义。 R-convolution 是处理离散对象的通用框架,主要思想是将结构化对象递归分解为“原子”子结构,并在它们之间定义有效的局部内核。形式化的表示如下,给定图 G , G ′ G,G' G,G,令 ϕ : G → H \phi : \mathcal G\rightarrow \mathcal H ϕ:GH 定义为包含原子子结构数的向量,即使用递归分解的方式将图映射到RKHS上,而 ⟨ ⋅ , ⋅ ⟩ H \left \langle \cdot,\cdot \right \rangle_{\mathcal H} ,H 表示RKHS H \mathcal H H 中的点积。相似度的核函数定义为

K ( G , G ′ ) = ⟨ ϕ ( G ) , ϕ ( G ′ ) ⟩ H \mathcal K (G,G') = \left \langle \phi(G),\phi(G') \right \rangle_{\mathcal H} K(G,G)=ϕ(G),ϕ(G)H

但是,在这种分解方式下,核函数的定义存在若干问题。首先原子子结构并不是相互独立的,以常见的同构图拆分为例

在这里插入图片描述
点数为k+1的图可以通过点数为k的图添加1个节点和边得到。其次,特征空间的维度随着子结构的复杂会发生指数增长,这就导致在图与图之间可能相似度普遍较低。
在这里插入图片描述
因此,作者给出了一种替代的方式定义核函数

K ( G , G ′ ) = ϕ T ( G ) M ϕ ( G ′ ) \mathcal K (G,G') = \phi^\text T(G) \mathcal M \phi(G') K(G,G)=ϕT(G)Mϕ(G)

其中 M \mathcal M M 是半正定矩阵,对原子子结构之间的关系进行编码,如果原子子结构之间具有较强的数学关系,例如编辑距离, M \mathcal M M 矩阵可以根据该距离进行定义。一旦有了图与图之间的距离定义,在进行图分类任务的时候,可以将该核函数直接传入SVM等分类器中进行分类任务。

图内核

Graphlet —— Graph kernels based on subgraphs

Graphlet G G G 定义为大小为 k k k 的非同构诱导子图。
在这里插入图片描述
给定两个图 G , G ′ G,G' G,G,定义在Graphlet上的核函数为

K GK ( G , G ′ ) = ⟨ f G , f G ′ ⟩ \mathcal K_\text{GK}(G,G') = \left \langle f^G,f^{G'} \right \rangle KGK(G,G)=fG,fG

其中 f G f^G fG 正则化后所有的Graphlet在图 G G G 上的出现频率向量。 ⟨ ⋅ , ⋅ ⟩ \left \langle \cdot,\cdot \right \rangle , 定义为欧几里得内积。

WL subtree —— Graph kernels based on subtree patterns

在这里插入图片描述
给定两个图 G , G ′ G,G' G,G,定义在WL subtree上的核函数为

K WL ( G , G ′ ) = ⟨ l G , l G ′ ⟩ \mathcal K_\text{WL}(G,G') = \left \langle l^G,l^{G'} \right \rangle KWL(G,G)=lG,lG

其中 l G l^G lG 正则化后每个序号在图 G G G 的WL test迭代过程中出现的频率向量。 ⟨ ⋅ , ⋅ ⟩ \left \langle \cdot,\cdot \right \rangle , 定义为欧几里得内积。

Random-walks —— Graph kernels based on shortest-path pattern

图核的第三类分解是将图分解为随机游走或路径,并计算两个图中随机游走或路径的同时出现。 令 P G \mathbb P_G PG 表示图 G G G 中所有最短路径的集合,而 p i ∈ P G p_i\in\mathbb P_G piPG 表示三元组 ( l s i , l e i , n k ) (l_s^i,l_e^i,n_k) (lsi,lei,nk) ,其中 n k n_k nk 表示路径长度,而 l s , l e l_s,l_e ls,le 对应起点终点。最短路径图核定义为

K SP ( G , G ′ ) = ⟨ p G , p G ′ ⟩ \mathcal K_\text{SP}(G,G') = \left \langle p^G,p^{G'} \right \rangle KSP(G,G)=pG,pG

其中, p i G p^G_i piG 表示三元组 p i p_i pi 在图 G G G 中出现的频率。

R-convolution

上面概述的所有图形内核以及其他稍微复杂的变体都是R卷积框架的实例。 简而言之,定义图内核的方法如下:首先,将图递归分解为子图。 例如,Graphlet内核将图分解为graphlet,Weisfeiler-Lehman内核将图分解为子树,Shortest-Path内核将图分解为最短路径。 在下一步中,将分解后的子结构表示为频率向量,其中向量的每一项代表给定子结构在图中出现的次数。 最后,使用欧几里德空间或某些其他领域特定的RKHS来定义频率向量之间的点积。

关系矩阵 M 的计算

编辑距离

编辑距离可以表示原子子结构之间的相似度

在这里插入图片描述
在这里插入图片描述
定义矩阵 M i j M_{ij} Mij 的值为编辑距离图上Graphlet第 i i i 个和第 j j j 个之间的最短路径。

使用语言模型学习相似度矩阵

作者将图内核中的子结构视为从特殊语言生成的单词。 换句话说,不同的子结构以与不同的单词一起使用时形成句子的相似方式组成图。 考虑到这一类比,可以利用单词嵌入模型来揭示子结构之间相似性的维度。算法的主要框架为将每个图分解为原子子结构,然后,将分解的子结构列表视为从词汇表V生成的句子。但是,与传统文本语料库中的单词不同,子结构不具有线性共现关系。 因此,需要建立一个同现关系有意义的语料库。接下来,讨论如何在三个主要的图内核上生成共现关系有意义的语料库。

Graphlet:即使对于中等大小的图,图 G G G 中所有Graphlet的穷举枚举代价也是极其昂贵。为了有效地对子图进行采样,之前的工作提出了几种采样启发式方法,例如随机采样方案。通过使用邻域概念,作者修改了随机采样方案以部分保留Graphlet之间的共现关系。也就是说,每当我们随机采样一个图 G G G 时,我们也会采样它的直接邻居。然后,Graphlet 及其邻居被我们的方法解释为同时出现。因此,具有相似邻域的 Graphlet 将获得相似的表示。可以扩展共现关系以考虑距离≥1的邻域。

Shortest Path:与 Graphlet 内核类似,需要在最短路径子结构之间找到一种有意义的共现关系。最短路径的所有子路径也是具有相同源的最短路径。换句话说,每当观察到长度为 l l l 的最短路径子结构时,我们还必须观察其长度 < l <l <l 的所有子路径。每当我们生成最短路径子结构时,我们还将收集共享同一源节点的所有可能的最短路径子结构,并将它们视为共同出现。因此,具有相似标签的最短路径子结构将获得相似的表示。

Weisfeiler-Lehman:Weisfeiler-Lehman子树内核在每个顶点及其邻居上迭代,以创建可重集标签。所得的可重集被赋予一个新标签,然后用于下一次迭代。因此,属于给定迭代h的可重集标签编号可以被视为同时出现,以便部分保留相似性的概念。

总结

作者提出了一种只要子结构之间存在依赖关系,就可以将其纳入到R-convolution内核方法的通用框架,核心是 M \mathcal M M 矩阵的使用和计算,从图论的角度来说该篇论文还是蛮有意思的,但是任务表现上是上古时期的产物,和后面的GNN没啥关系。

### 关于 Deep Graph Library 的使用教程和官方文档 Deep Graph Library (DGL) 是一种用于处理图神经网络(Graph Neural Networks, GNNs)的高效工具库,支持多种主流深度学习框架如 PyTorch 和 TensorFlow。以下是关于 DGL 使用教程和官方文档的信息: #### 1. **DGL 官方文档** DGL 提供了详尽的官方文档,涵盖了从入门到高级应用的内容。这些文档可以帮助开发者快速掌握如何构建、训练以及部署基于图结构的数据模型。 - 文档地址:[https://docs.dgl.ai/](https://docs.dgl.ai/) [^1] - 主要内容包括但不限于: - 图数据结构的基础介绍。 - 如何创建和操作图对象。 - 基本的消息传递机制及其实现细节[^4]。 #### 2. **DGL 教程资源** 除了官方文档外,还有许多社区贡献的学习资料可供参考: - 动手学图深度学习:这是一个针对初学者设计的教学系列,通过实际案例讲解了如何利用 DGL 实现常见的图分类任务和其他应用场景[^3]。 - CPU 版本实践指南:对于希望在无 GPU 环境下运行程序的研究者来说尤为重要。它说明了即使缺乏强大的硬件设施也能顺利完成大部分基础实验需求。 #### 3. **环境配置建议** 由于 DGL 需要与其他深度学习框架协同工作,因此正确设置开发环境至关重要。通常情况下,默认推荐搭配最新稳定版 PyTorch 进行安装;但如果遇到兼容性问题,则需参照具体错误提示调整相应组件版本号或者查阅官方网站获取适配方案列表[^2]。 ```bash pip install dgl torch ``` 上述命令适用于大多数标准情况下的 Python 软件包管理器 pip 来完成自动化下载与安装过程。 --- ### 示例代码片段展示基本功能 下面给出一段简单的 Python 代码用来演示怎样定义并初始化一张随机生成的小型社交网络关系网作为输入给定至后续算法流程中去进一步分析挖掘潜在规律特性等等... ```python import dgl import torch # 创建一个具有三个节点的有向图 u = torch.tensor([0, 1, 2]) # 源节点索引 v = torch.tensor([1, 2, 0]) # 目标节点索引 g = dgl.graph((u, v)) print(g) ``` 此脚本首先导入必要的模块之后便立即着手建立了一个含有自循环边连接模式的小规模拓扑结构实例化对象 `g` ,最后将其打印出来以便观察其内部组成形式特征等方面信息等内容输出结果如下所示: ``` Graph(num_nodes=3, num_edges=3, ndata_schemes={} edata_schemes={}) ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值