详细介绍:学习日记16:How Powerful are Graph Neural Networks?
摘要
图神经网络是一种有效的图表示学习框架。GNN遵循邻域聚合方案,通过递归聚合和变换相邻节点的表示向量来计算节点的表示向量。尽管GNN使图形表示学习发生了革命性的变化,但人们对其表示特性和局限性的了解有限。文章提出了一个理论框架,用于分析GNN捕获不同图结构的表达能力。刻画了流行的GNN变体,如图卷积网络和Graph SAGE的辨别能力,并表明它们不能学习区分某些简单的图结构。然后,构建了一个简单的体系结构,它被证明是GNN类中最具表现力的,并且与WeisfeilerLehman图同构测试一样强大。
介绍
处理分子、社交、生物及金融网络等图结构数据时,需对其图结构进行有效表征,而图神经网络(GNN)作为图表征学习的热门方法,遵循递归邻居聚合(或消息传递)机制,依据迭代聚合节点邻居的特征向量来更新该节点的特征向量,经过 k 轮聚合后,节点特征向量可捕捉其 k 跳邻域内的结构信息,再通过池化操作(如对所有节点特征向量求和)即可得到整个图的表征。
目前已有多种 GNN 变体被提出,它们采用不同的邻居聚合与图级池化方案,且在节点分类、链接预测、图分类等任务中取得了最优性能,但这些 GNN 的设计多基于经验直觉、启发式方法与实验试错,缺乏对其特性和局限性的理论理解,对其表征能力的形式化分析也较为有限。
研究团队提出了一个用于分析 GNN 表征能力的理论框架,可从形式上描述不同 GNN 变体在学习表征和区分不同图结构方面的表达能力,该框架的灵感来源于 GNN 与 Weisfeiler-Lehman(WL)图同构测试的紧密联系 ——WL 测试是一种能区分大量图结构的高效测试方法,与 GNN 类似,它也依据迭代聚合节点及其邻居的特征向量来更新节点特征向量,其强大之处在于具有单射聚合更新能力,能将不同的节点邻域映射为不同的特征向量;研究的核心见解是,若 GNN 的聚合方案具有高度表达性且能建模单射函数,那么它就能拥有与 WL 测试相当的判别能力。
通过为了在数学上形式化上述观点,框架首先将给定节点的邻居的特征向量集合表示为多重集,即可能具有重复元素的集合。然后,GNN中的邻居聚集能够被认为是多重集上的聚集函数。因此,为了具有强大的表示能力,GNN必须能够将不同的多重集聚合成不同的表示。
使GNN许可和WL test的性能一样强;识别了不能由一些流行的GNN区别的图结构。就是文章的目的就
Weisfeiler-Lehman test
首先介绍一下WL test,这个东西是应对图的同构障碍的,即判断两个图的拓扑结构是否完全相同。与很多的GNN一样,均通过迭代处理节点及其邻域信息,实现对图结构的逐步刻画。步骤是:
步骤 1:聚合节点自身标签与邻域节点标签 —— 将单个节点的标签与其所有相邻节点的标签整合,形成该节点的 “邻域 - 自身” 聚合信息;
步骤 2:哈希生成唯一新标签 —— 对上述聚合信息进行哈希处理,为每个节点分配一个唯一的新标签,确保不同的聚合信息对应不同的新标签(即哈希映射具有单射性)。
在迭代过程中,若某一轮迭代后,两个待判别图的节点标签集合出现差异(即两图无法找到节点标签的一一匹配关系),则可直接判定这两个图为非同构;若多轮迭代后两图节点标签始终完全匹配,则认为两图大概率同构。
WL 子树核是在上述迭代过程中,将图中新得到的标签计数整合为一个向量。例如,若 WL 测试进行 3 轮迭代,第 1 轮有 2 种标签(计数分别为 5、3),第 2 轮有 3 种标签(计数分别为 4、2、2),第 3 轮有 4 种标签(计数分别为 3、3、1、1),则该图的特征向量就是[5,3,4,2,2,3,3,1,1]。借助这种方式,不同结构的图会因 WL 迭代标签的种类或计数差异,形成不同的特征向量。
DIN
GNN强不强,就是看“分清不同的袋子”。通俗一点说,要将图中的节点看做多重集,即可能存在相同的节点,在这种情况下,只要两个节点相邻的节点不完全一样,那么这两个节点的标签就不应该一致。
那么按照这样的情况,最强的GNN应该满足下面的要求:
1.对邻居特征的 “聚合” 要单射。
2.对整个图的 “读出” 要单射(进行图分类时)。
那么如何满足这样的要求呢?“求和 + MLP” 代替均值 / 最大池化。单射,有很大局限。如下图,均值可能会忽略邻接的数量,最大池化可能会忽略特征重复的节点。在这种情况下,将邻接点的特征相加(单射)后输入MLP进行调整达到的性能最好。就是在之前的图神经网络模型中,大部分都应用均值或者最大池化来聚合邻接域的特征,但这两种方法并不

具体实现
为了使DIN满足上面提到的两点要求,DIN在计算节点的新特征时使用下面的公式,新特征 = MLP((1 + 小参数)× 自己之前的特征 + 所有邻居特征的和。“(1 + 小参数)× 自己的特征”:是为了区分 “节点自己” 和 “邻居”,避免把自己和邻居的特征混在一起;“邻居特征的和”:就是达到前面说的 “单射聚合”,能分清不同的邻居组合;这样满足了第一个条件。

对于第二条要求,DIN将图特征读出变为把所有节点的 “小树” 拼起来。即每一次迭代得到的所有节点特征拼在一起(之前迭代的也拼)。
![]()
作用较弱但仍很有趣的GNN
这块其实就介绍了一些效果并不好的尝试,比如更新节点特征时运用的MLP只有一层,聚合邻域方式使用最大池化或者平均等。

浙公网安备 33010602011771号