标题:A Learned Sketch for Subgraph Counting
发表:SIGMOD 2021
链接:地址
作者机构:港中文/武汉大学/腾讯AI Lab
一些需要解释的知识
在本篇论文中,一些频繁出现的必备知识如下:
-
graph isomorphism 图同构
离散数学图论中的知识,两个图G1&G2同构满足:
从G1的结点到G2的结点,存在一个一对一的映上函数
从G1的边到G2的边,存在一个一对一的映上函数
说白了就是两张图实际上是一张,G2只是把G1的结点调换位置而已,他们的邻接矩阵在一定调整下是一样的
-
graph homomorphism 图同态
比同构更宽松,结点不用一一对应。
-
感知机
给定输入x,权重w,和偏移b,感知机输出
o = σ ( < w , x > + b ) σ ( x ) = { 1 if x>0 0 otherwise o = \sigma(<w,x>+b) \quad \sigma(x)= \begin{cases} 1& \text{if x>0}\\ 0& \text{otherwise} \end{cases} o=σ(<w,x>+b)σ(x)={ 10if x>0otherwise
本质上就是二分类,算法如下initialize w = 0 and b = 0 repeat if yi[<w,xi>+b]<=0 then //wrong classifiesd w <—— w+yixi and b<——b+yi //update w and b end if until all classified correctly
等价于batch size=1的梯度下降
问题:不能拟合XOR函数,因为只能产生线性分割面
多层感知机
其实就是在softmax中加入了隐藏层+激活函数,得到非线性模型
超参数为隐藏层层数和各个隐藏层大小
h = σ ( W 1 x + b 1 ) o = W 2 T h + b 2 y = s o f t m a x ( o ) W 1 ∈ R m ∗ n , b 1 ∈ R m , W 2 ∈ R m ∗ k , b 2 ∈ R k h=\sigma(W_1x+b_1)\\ o=W_2^Th+b_2\\ y=softmax(o)\\ W_1 \in R^{m*n},b_1 \in R^m, W_2\in R^{m*k},b_2 \in R^k h=σ(W1x+b1)o=W2Th+b2y=softmax(o)W1∈Rm∗n,b1∈Rm,W2∈Rm∗k,b2∈Rk
也可以有很多隐藏层,每一个隐藏层都有对应的W矩阵,且必须加激活函数(避免层数塌陷) -
自注意力的目的是对于一个query向量,在一堆key中找到和其它向量之间的关联程度,是一个有偏选择的过程。
摘要
子图计数(subgraph counting)是算法中典型的一类NP-Hard问题,任务是给定一个查询图(query graph),统计在大图中有多少个子图与查询图匹配(同构或同态)。目前存在的方法局限性都比较大,所以我们想提出一种基于机器学习和深度学习的方法来对子图计数。
本文提出的Active Learned Sketch for Subgraph Counting(ALSS),主要由两部分组成:
- Sketch Learned(LSS):用神经网络做回归任务训练;
- Active Learner(AL):挑选一些新的测试查询图来更新模型、提升效果。
我们用一些很大的真实标签图做了一些实验来证明ALSS的效率和准确率,且我们发现ALSS可以帮助查询优化器为多路自连接找到更好的查询计划。
引言
子图计数的目的是统计大图中有多少个子图与查询图匹配(同构或同态)。这个问题在网络分析中应用非常广泛,比如为计算机视觉任务构建概率模型(e.g. 照片剪裁&图像分割)或分析生物化学原子结构(分子成分预测)等等。
然而,精确子图计数(同构情况下)是非常困难的,且不说计数,单单是给定一个查询图,看大图里有没有子图和查询图匹配这个问题就是个典型的NP-C问题(子图匹配-