本文是对《Accurate Learning of Graph Representations with Graph Multiset Pooling》一文的浅显翻译与理解,如有侵权即刻删除。
朋友们,我们在github创建了一个图学习笔记库,总结了相关文章的论文、代码和我个人的中文笔记,能够帮助大家更加便捷地找到对应论文,欢迎star~
Chinese-Reading-Notes-of-Graph-Learning
更多相关文章,请移步:文献阅读总结:网络表示学习/图学习
Title
《Accurate Learning of Graph Representations with Graph Multiset Pooling》
——ICLR2021
Author: Jinheon Baek
总结
文章认为当前的池化函数或多或少都存在弊端,提出了GMT算法,将全图表征问题视为一个多重集的编码问题。具体地,算法使用改进的多头注意力机制完成池化操作,并利用自注意力机制完成对节点间关系的捕捉。因此,针对两个不同的图,能够生成具有明显区分的嵌入。
文章与其他池化方法进行的比较如下:
个人推导的算法结构如下,在下文的介绍中,会略微区别于行文顺序,而是按照公式逻辑进行介绍:
1 基础介绍
文章首先介绍了GNN和相关的池化函数,为后续算法的介绍做铺垫。
1.1 图神经网络
传统的图神经网络往往利用邻接矩阵A和节点特征矩阵X完成对特征向量的聚合,在每层的聚合过程中将节点的邻居信息结合起来,用于生成下一层的特征向量H:
1.2 图池化
在得到节点的特征向量后,全图表征的目的在于为整个网络/图生成一个嵌入向量,因此要进行图的池化操作:
传统的池化往往利用平均或加和的方法,但这种简单的方法将各个节点的重要性一视同仁,没有考虑到图的结构及节点的重要性。为解决此问题,节点剔除(drop)和节点聚类(clustering)的池化方法被提出。
节点剔除方法往往选择每层得分最高的k个节点特征向量,从而提出掉不必要的节点:
节点聚类方法则是通过引入一个聚类分配矩阵,将相似的节点嵌入聚合在一起:
文章认为,节点剔除方法在剔除无用节点的过程中会丢失一些图的结构信息,而节点聚类方法往往受限于图的规模,因此提出了新的池化方法。
2 GMT(Graph Multiset Transformer)
文章将对图的表征视为一个多重集问题,即如上图所示,一个图中会有多个集合,每个集合由不同数量的节点构成,集合内部的节点往往具有相似的特性。具体地,文章先利用GNN学习出节点的特征向量:
得到节点的特征向量后,文章利用图多重集池化的方法来生成全图嵌入:
在上式中,GMPool_1和GMPool_k并无本质上的区别,仅仅是生成的嵌入数量为1和k个。A’是身份矩阵或粗化邻接矩阵,因为在用GMPool_k将节点从n压缩到k后,应调整邻接信息。
2.1 GMPool函数
对GMPool,有:
其中,LN是归一化层,GMH是文章提出的图多头注意力机制。
注意力机制本质即输入节点的特征向量,通过不同的权重映射矩阵得到query-Q,key-K和value-V三个矩阵,从而保证在对任意部分进行编码学习时,都最大可能地只关注该部分。多头注意力机制,即在此基础上,引入了调整矩阵W,生成多个QKV值,进一步保证了编码学习的有效性。
文章认为,这种多头注意力机制仅仅简单地线性映射了节点特征向量。为解决这一缺陷,文章提出了图多头注意力机制,即利用GNN来非线性地学习QKV。
2.2 SelfAtt函数
对SelfAtt函数,文章用来捕捉节点之间的关系,从而生成更加准确的嵌入:
此外,文章还在附录部分证明了上文所述的节点剔除池化和节点聚类池化的缺点,并证明了GMT算法的最有效果能够达到Weisfeiler-Lehman (WL) test水平,即经过足够多层后,对两个不同的图,能够生成有区分的全图嵌入