目录
摘要:
GNN如何很好的区分不同的图结构??
常用GNN模型的表达能力(区分不同图的能力)
怎么设计表达能力最强的GNN模型???
GNN如何很好的区分不同的图结构??
在之前我们已经谈过了,GNN模型的GNN层都可以看作是由message和aggregation组成的。
这个地方不懂,参考
图神经网络(6)-GNN1_山、、、的博客-CSDN博客图的特殊性、怎么引入GNN、介绍GCNhttps://blog.csdn.net/qq_44689178/article/details/123263686图神经网络(7)- GNN2_山、、、的博客-CSDN博客介绍GNN通用框架,从GCN到GraphSAGE,GAT
https://blog.csdn.net/qq_44689178/article/details/123334408?spm=1001.2014.3001.5501
图神经网络就是通过message和aggregation操作,从 图的结构和输入的节点特征学习embeddings。当然GNN中图的结构相对而言比较重要,如果只有节点特征就是普通的NN。
当我们假设,节点特征都相同时,GNN如何学习区分呢?
考虑节点的本地邻居结构! 1.各个节点的度不同,2.各个节点的邻居的度不同。
GNN能捕获本地邻居结构的关键就是计算图。
重要结论:表达能力最强的GNN能区分不同计算图。
那么计算图相同是个什么情况呢?
计算图相同,他区分不了。这个地方借用图论里面的一个概念——同构图。只要在图里面有局部同构的情况,这个局部同构点他就区分不了!——计算图相同。 也许也不需要区分,这部分的节点就是“等同”的。下图中,节点1和节点2的计算图就是相同的。
所以说,GNN的目标就是计算图不同,得到的embeddings就应该不同。
怎么设计表达能力最强的GNN模型???
在谈如何设计最强GNN之前,引入一个概念单射——不同的输入映射到不同的输出(输入不同则输出不同)。
从上一小节知道,最强GNN能区分不同的计算图,而GNN就是把计算图作为输入。那么说最强GNN只要能通过计算图单射得到不同的节点嵌入就行!
从计算图来看,节点embeddings就是递归的从叶子节点往根节点提取特征。如果每一步GNN的聚集可以完全保留邻居信息(叶子节点信息),那么节点嵌入就可以区分不同的计算图(计算图也可以称为根子树)。也就是说,最强GNN可以区分不同的计算图结构,只要每一步都使用单射的邻居聚集函数。
常用GNN模型的表达能力怎么样呢?(区分不同图的能力)
从上一节知道,GNNs的表达能力强弱取决于与聚集函数,也就是聚集函数的表达能力越强,那么GNN的表达能力也就越强。
把聚焦操作抽象为多集合上的函数(ppt换了一个表示方式)
接下来,我们分析GCN和GraphSAGE的聚集函数。
其实,很容易就能看出来,求均值和求最大值肯定不是单射,也就是会有它区分不了的情况。因此GCN和GraphSAGE不是最强GNN.
下面举例说明,
设计表达能力最强的GNN模型——GIN
目标:设计最强GNN(在所有的信息传递GNN中)
策略:设计单射的邻居聚集函数——设计一个NN来实现这个聚集函数
根据2019年的这篇论文,NN版的单射函数公式如下:
论文中的直觉证明:
可以用MLP来实现,只要一个维度为100到500维度的隐藏层的MLP效果就非常好!!
上面提到的这个最强GNN已经实现了,被称作 Graph Ismorphism Network(GIN)。
GIN的邻居聚集函数是单射的,没有失败的例子,就是最强的GNN。
GIN与WL graph kernel的关系
下面再介绍一下,GIN与WL graph kernel的关系。
WL graph kernel 是传统获得图级别特征的方法。参考**********************
其实GIN可以看作是神经网络版本的WL graph kernel。
WL graph kernel 公式如下。其中HASH就是一个单射函数。
GIN就是把HASH函数用MLP实现
在K步GIN迭代后 ,c(v)就聚集了K-hop的邻居结构信息。这一点与WL graph kernel也一样。
对比WL graph kernel 与GIN
GIN与WL graph kernel的表达能力是相同的,而WL graph kernel可以区分绝大多数真实世界的图(来自 Cai et al。1992 论文的证明),因此GIN也可以区分绝大多数真实世界的图!!
补充一句,GIN 使用的是element-wise的求和池化操作。
池化区分不同图能力:sum >> mean >> max
提升 GNN的能力
没看论文的内容,纯属猜测——强化节点特征!!参考链接中的图增强!!