Neural Subgraph Isomorphism Counting -- KDD2020
用GNN来做子图同构统计的第一篇论文,需要关注的点主要在问题定义、合成数据、寻找同构的网络这三点上。
问题定义
给定一个小图(pattern)和一个大图(graph),统计graph中与pattern同构的子图数量。
用GNN来做的优势在于能够在可接受的误差范围内以更快的速度解决这个问题。
解决方案
Graph Model
Graph Model的作用是对pattern和graph进行编码,得到新的representation:
V
p
,
V
g
Vp, Vg
Vp,Vg,作为模型的输入。
这部分作者尝试了GIN和RGCN两种模型,因为这两种模型都能较好地挖掘图中的关联性信息。GIN和Multilayer Perceptrons以及 sum aggregator一起使用的效果会更好,作者命名为RGIN,也是本文中效果最好的Graph Model。
Dynamic Intermedium Attention Memory
在得到pattern和graph的Representation之后,将其输入DIAM来统计isomorphism数量。
如果直接使用朴素的attention来解决这个问题,其时间复杂度为:作者在这里创建了一个新的网络结构DIMA,使用额外的memory作为中介,保证在处理pattern时有graph的信息,处理graph时有pattern的信息,并且时间复杂度只需
,从而保证了在大图上也可应用。
合成数据
除了使用现有数据集MUTAG外,更主要的是作者自己生成了合适的pattern-graph数据。pattern可以直接用generator生成。graph则是通过先用generator生成很多个彼此独立的小图,这些小图(的子图)中很可能有就有与pattern同构,然后将这些小图相连构成一个大图同时保证在相连过程中不会导致新的与pattern同构的子图产生。这样就可以只在小图中寻找pattern的同构子图统计数量了。