jjzjj

GIN:图同构网络

酷酷的群 2023-08-03 原文

论文标题:How Powerful are Graph Neural Networks? 

论文链接:https://arxiv.org/abs/1810.00826

论文来源:ICLR 2019

一、概述

目前的GNN框架大多遵循递归邻域聚合(或者消息传递)框架,并且已经出现各种GNN变种。然而,新的GNN设计大多基于经验直觉、启发式和实验试错。目前,对神经网络的性质和局限性的理论认识较少,对神经网络表征能力的形式化分析也比较有限。

本文提出一种理论框架,用于分析GNN的表征能力。本文受到Weisfeiler-Lehman (WL)图同构测试的启发,WL测试类似于GNN,也通过聚合邻域节点特征来递归更新节点特征向量,以此来区分不同的图。WL测试是一种性能优越的算法,这主要得益于其单射的(injective)聚合更新过程,能够将不同的节点邻域映射到不同的特征向量。本文的一个核心观点是如果GNN的聚合模式具备充分的表达能力且能够建模单射函数,那么其就能够拥有像WL测试一样的鉴别能力。

形式化地来说,一个节点的邻域可以被看做是一个multiset,也就是一个可以包含重复元素的set,因此GNN中的聚合可以看做是multiset上的聚合函数。为了能够具备充分的表达能力,一个GNN就必须能够聚合不同的multiset到不同的表示。

本文的主要结果如下: 

①本文显示GNN在识别图结构方面,WL测试是能达到的性能的上限; 

②阐述了GNN达到WL测试的性能时在邻域聚合和readout函数方面应该满足的条件; 

③识别出一些GNN变种(比如GCN、GraphSAGE等)不能识别的图结构; 

④开发了一种全新的GNN变种,即图同构网络(Graph Isomorphism Network, GIN),其鉴别能力与WL测试相当。

二、预备知识

  1. 图神经网络

使用表示一个图,中节点的特征向量为。本文主要关注图分类任务。

GNN利用图的结构与节点特征来学习图中节点的特征向量或者整个图的表示。GNN通常遵循邻域聚合策略来更新其节点表示,GNN的第层可以表示为:

❝ ❞

是节点在第层的特征向量。我们使用来初始化,是节点的邻域节点。与的选择对于GNN来说是重要的。在GraphSAGE的pooling变种中,函数被设置为:

❝ ❞

是一个可学习的矩阵,代表max-pooling,另外阶段可以是拼接加上一个线性映射。

而在GCN中,和的设置如下:

❝ ❞

对于图级别的任务,另外需要一个函数来聚合节点特征以获得图级别的特征:

❝ ❞

具体的可以采用相加等图池化函数。

  1. Weisfeiler-Lehman测试

图同构问题讨论的是两个图在拓扑上是否相同。这个问题具备相当的挑战性,目前尚无多项式复杂度的算法。除了一些极端情况之外,WL图同构测试是一种有效的、计算效率高的算法,用于区分广泛的图。WL测试的一维形式“naïve vertex refinement”算法类似于GNN中的聚合,具体做法是迭代地进行: 

①聚合节点的标签和其邻域; 

②利用哈希函数来将聚合的标签映射成新的标签。

这里的标签可以理解为一维条件下的节点特征。当在某一次迭代过程后如果两个图的节点标签有所不同,则认为这两个图是非同构的。

WL子树核(subtree kernel)是一种基于WL测试的方法,该算法衡量图之间的相似性。算法使用WL测试中不同迭代过程中的节点标签数量来作为图的特征向量。直观上来看,一个节点在WL测试第次迭代后的标签表示的是一个高为且以该节点为根节点的子树结构,如下图所示:

概览

因此,WL子树核算法考虑的图特征本质上图的不同子树的数量。

三、理论框架

如上面显示的,GNN递归地更新节点的特征来捕获网络的结构和其邻域节点的特征,也就是其对应的子树结构。在本文中我们首先假设节点的输入特征都来自一个可数的全集,对于有限图来说,节点在任何固定模型的深层特征向量也来自一个可数的全集。为了标记的简便性,我们为每个特征向量设置一个单独的标签。如此的话节点的邻域节点集合就组成了一个multiset:同一个元素可以出现多次,也就是说不同的节点能够拥有相同的特征向量。

「定义1.」 一个multiset是一个允许元素出现多次的set,形式化的来描述,一个multiset是一个元组,是底层的集合,由不同的元素组成,定义了元素的多样性。

为了探索GNN的表征能力,我们分析什么时候GNN会将两个几点映射到embedding空间的同一位置。直观地来看,一个拥有最大化表征能力的GNN仅在两个节点拥有相同的子树结构以及对应节点相同的特征时,会将这两个节点的embedding映射到同一位置。因为子树结构由节点邻域递归地定义,因此我们可以将对上述问题的分析退化成一个GNN是否将两个邻域(也就是两个multiset)映射到相同的embedding或者表示。一个最大表征能力的GNN绝不会将两个不同的邻域映射到相同的表示,这意味着其聚合的模式一定是单射的。因此,我们将GNN的聚合模式抽象成一个其神经网络能表示的multiset上的函数,并且分析它们是否能够表示单射multiset函数。

四、构建强表征能力的GNN

如前所述,一个最大化表征能力的GNN能够将同构图映射到相同的表示,将非同构图映射到不同的表示,然而,这意味着GNN能够解决图同构问题,这是很困难的。因而在本文的分析中对GNN的表征能力的上限进行了放缩,以WL图同构测试这个启发式的方法作为GNN表征容量的标准,其在大多数条件下效果很好,而在某些情况下效果不佳,比如正则图。

「引理2.」 和表示任意两个非同构图,如果一个图神经网络将和映射到不同的embedding,那么WL图同构测试也会任务这两个图是非同构的。

本文所有的理论都在附录中有证明。由上述引理可以推断出任何基于聚合的GNN至多与WL测试具备同样的表征能力,也就是说WL测试是其上限。那么现在问题是是否存在GNN在原则上与WL测试性能相当呢?定理3告诉我们是存在的,只需要GNN的聚合函数和readout函数是单射的。

「定理3.」 一个图神经网络在满足下列条件时能够将WL测试认为是非同构图的两个图和映射到不同的embedding: 

①按照下面的方式迭代聚合和更新节点特征:

❝ ❞

这里的multiset上的函数以及是单射的。 

②的图级readout函数(在节点特征的multiset上进行操作)是单射的。

对于可数集,单射性很好地刻画了函数是否保持输入的特殊性。对于不可数集,节点特征是连续的情况,需要一些其他的条件。本文只讨论可数集上的特征。

「引理4.」 假设输入特征空间是可数的,代表GNN的第层函数,,定义在大小有界的multiset上,的只与,也就是节点隐藏特征也是可数的。

值得一提的是,GNN除了区分不同的图以外,还有一个重要的优点是能够捕获图结构的相似性。注意在WL测试中的节点特征本质上是one-hot编码,因此不能捕获子树之间的相似性。相应的,满足定理3中标准的GNN能够学习将子树嵌入到低维空间,这相当于推广了WL测试。这使得GNN不仅能够区分不同的结构,而且能够学习将相似的图结构映射到相似的embedding,并捕获图结构之间的依赖关系。捕捉节点标签的结构相似性对泛化是有帮助的,特别是当不同图上的子树共现很少或有噪声边和节点特征时。

  1. 图同构网络(GIN)

为了能够建模用于聚合的单射multiset函数,本文发明了“deep multisets”的理论,也就是用神经网络来参数化通用multiset函数。下面的引理阐述了sum聚合函数能够表示单射的通用multiset函数。

「引理5.」 假设是可数的,存在一个函数以便于对于每一个大小有界的multiset都是不同的。进一步来讲,任意multiset函数都可以被分解成关于某个函数的。

Deep multiset和set的一个重要区别是一些热门的set上的单射函数对于multiset来说不是单射的,比如mean聚合函数。依照上面的引理,本文设计了一种简单而具体的聚合方案,也就是下面的推论。

「推论6.」 假设是可数的,存在一个函数使得对于的无限个选择,包括所有的无理数,有对于每个对都是不同的,这里的且,是一个大小有界的multiset。进一步来讲,任意在这样的对上的函数都可以被分解成关于某函数的。

我们可以采用MLP来建模和学习与。在实际应用中,我们采用一个MLP来建模,这是因为MLP可以表示函数的组合。在第一次迭代时,如果节点输入特征是one-hot向量则在相加前不需要MLP,这是因为仅仅相加也可以保证单射。可以是一个可学习的参数,也可以是一个固定的值。最终,GIN更新节点特征的模式如下:

❝ ❞
  1. GIN的图级readout函数

需要注意的是,随着迭代次数的增加,对应于子树结构的节点表示会变得更加精细和全局。足够的迭代次数是获得良好鉴别能力的关键。然而,来自早期迭代的特性有时泛化地更好。为了考虑所有的结构信息,我们使用来自模型所有深度的信息:

❝ ❞

根据定理3和推论6,GIN可以使用sum来作为函数。

五、对其他GNN的分析

该部分研究了GCN和GraphSAGE的设计,其均不满足定理3中的条件。本文进行了聚合函数的消融实验,包括: 

①一层感知机而非MLP; 

②mean或者max-pooling。

我们将看到,这些GNN变体会对非常简单的图识别困难,并且没有WL测试那么优越。尽管如此,具有像GCN这样的mean聚合函数的模型对于节点分类任务表现良好。为了更好的理解这些现象,本文做了以下研究。

  1. 一层感知机是不够充分的

一些GNN采用一层感知机来作为引理5中的,这样的一层映射是广义线性模型的例子。下面的引理说明了一层感知机是不够充分的。

「引理7.」 存在有限的multiset使得对于任意的线性映射有。

引理7证明的主要思想是一层感知器的行为很像线性映射,因此GNN层退化为简单的对邻域特征求和。在线性映射中缺少偏置项,如果加上偏置并且有足够大的输出维度,一层感知机或许能够区分不同的multiset。尽管如此,与使用MLP的模型不同,1层感知器(即使有偏置项)也不是multiset函数的通用近似器。因此,即使具有一层感知器的GNN可以在一定程度上将不同的图嵌入到不同的位置,这种嵌入可能不能充分地捕获结构相似性,并且对于简单的分类器,如线性分类器,很难拟合。

  1. Mean或者max-pooling难以识别的结构

如果替换中的sum为mean或者max-pooling。下图为三种聚合函数的表征能力进行了排名:

排名

下图展示了mean和max聚合函数不能识别的结构,如果将两个不同结构聚合后得到相同的表示,则认为该种聚合函数是失败的:

举例
  1. Mean聚合函数学习分布

考虑和,mean聚合函数会将这两个multiset聚合得到相同的表示,因此mean聚合函数学习到的是multiset中元素的分布(或者说比例)。

「推论8.」 假设是可数的,存在一个函数使得对于,当且仅当multiset和具备同样的分布时有。也就是说假设,那么有和,这里的。

对于任务来说,如果图中的统计信息和分布信息比精确结构更重要,则mean聚合函数可以有很好的性能。此外,当节点特征多样且很少重复时,mean聚合函数与sum聚合函数性能相当。具有mean聚合函数的GNN对于文章主题分类和社区检测等节点分类任务是有效的,这些任务节点特征丰富,邻域特征的分布为任务提供了强信号。

  1. Max聚合函数学习具有显著元素的set

上面的图显示max聚合函数将具有相同特性的多个节点视为只有一个节点,也就是将multiset看做set。Max聚合函数既不识别精确结构也不识别分布,然而,它可能适合于识别具有代表性的元素或“骨架”。之前的研究表明,max聚合函数能够识别一个3D点云的骨架,并且对噪声和离群值有一定的健壮性。下面的推论表明,max聚合函数捕获了multiset底层的set。

「推论9.」 假设是可数的,存在一个函数使得对于,当且仅当multiset和具备同样的底层set时有。

本文只分析了mean和max-pooling两种聚合方法,还有一些其他的如通过注意力加权平均的方法或者LSTM pooling等。本文的理论框架足够通用,可以用于分析任何基于聚合的GNN的表征能力。

六、实验

  1. 训练集效果

训练集效果代表了模型的表征能力上限:

训练集
  1. 测试集效果

测试集效果验证模型的泛化能力:

测试集

有关GIN:图同构网络的更多相关文章

  1. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  2. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  3. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  4. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

  5. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  6. 【网络】-- 网络基础 - 2

    (本文是网络的宏观的概念铺垫)目录计算机网络背景网络发展认识"协议"网络协议初识协议分层OSI七层模型TCP/IP五层(或四层)模型报头以太网碰撞路由器IP地址和MAC地址IP地址与MAC地址总结IP地址MAC地址计算机网络背景网络发展        是最开始先有的计算机,计算机后来因为多项技术的水平升高,逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速:独立模式:计算机之间相互独立。    如:有三个人,每个人做的不同的事物,但是是需要协作的完成。    而这三个人所做的事是需要进行协作的,然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据

  7. 常见网络安全产品汇总(私信发送思维导图) - 2

    安全产品安全网关类防火墙Firewall防火墙防火墙主要用于边界安全防护的权限控制和安全域的划分。防火墙•信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过。防火墙是一个由软件和硬件设备组合而成,在内外网之间、专网与公网之间的界面上构成的保护屏障。下一代防火墙•下一代防火墙,NextGenerationFirewall,简称NGFirewall,是一款可以全面应对应用层威胁的高性能防火墙,提供网络层应用层一体化安全防护。生产厂家•联想网御、CheckPoint、深信服、网康、天融信、华为、H3C等防火墙部署部署于内、外网编辑额,用于权限访问控制和安全域划分。UTM统一威胁管理(Un

  8. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  9. ruby - 在 Ruby 中训练神经网络 - 2

    在神经网络方面,我完全是个初学者。我整天都在与ruby​​-fann和ai4r搏斗,不幸的是我没有任何东西可以展示,所以我想我会来到StackOverflow并询问这里的知识渊博的人。我有一组样本——每天都有一个数据点,但它们不符合我能够找出的任何明确模式(我尝试了几次回归)。不过,我认为看看是否有任何方法可以仅从日期预测future的数据会很好,而且我认为神经网络将是生成希望表达这种关系的函数的好方法.日期是DateTime对象,数据点是十进制数,例如7.68。我一直在将DateTime对象转换为float,然后除以10,000,000,000得到一个介于0和1之间的数字,我一直在将

  10. ruby - Heroku 和网络抓取 - 2

    我有一个nokigiri网络抓取工具,它发布到我试图发布到heroku的数据库。我有一个sinatra应用程序前端,我想从数据库中获取它。我是Heroku和Web开发的新手,不知道处理此类问题的最佳方法。我是否必须将上传到数据库的网络爬虫脚本放在sinatra路由下(如mywebsite.com/scraper),并让它变得如此模糊以至于没有人访问它?最后,我想让sinatra部分成为一个从数据库中提取的restapi。感谢大家的参与 最佳答案 您可以采用两种方法。第一个是通过控制台使用herokurunYOURCMD运行scrap

随机推荐