从图(Graph)到图卷积(GraphConvolution):漫谈图神经网络模型(一)SivilTaram

笔者最近看了一些图与图卷积神经网络的论文,深感其强大,但一些Survey或教程默认了读者对图神经网络背景知识的了解,对未学过信号处理的读者不太友好。同时,很多教程只讲是什么,不讲为什么,也没有梳理清楚不同网络结构的区别与设计初衷(Motivation)。

因此,本文试图沿着图神经网络的历史脉络,从最早基于不动点理论的图神经网络(GraphNeuralNetwork,GNN)一步步讲到当前用得最火的图卷积神经网络(GraphConvolutionalNeuralNetwork,GCN),期望通过本文带给读者一些灵感与启示。

在开始正文之前,笔者先带大家回顾一下图神经网络的发展历史。不过,因为图神经网络的发展分支非常之多,笔者某些叙述可能并不全面,一家之言仅供各位读者参考:

首先要澄清一点,除非特别指明,本文中所提到的图均指图论中的图(Graph)。它是一种由若干个结点(Node)及连接两个结点的边(Edge)所构成的图形,用于刻画不同结点之间的关系。下面是一个生动的例子,图片来自论文[14]:

最早的图神经网络起源于Franco博士的论文[2],它的理论基础是不动点理论。给定一张图\(G\),每个结点都有其自己的特征(feature),本文中用\(\mathbf{x}_v\)表示结点v的特征;连接两个结点的边也有自己的特征,本文中用\(\mathbf{x}_{(v,u)}\)表示结点v与结点u之间边的特征;GNN的学习目标是获得每个结点的图感知的隐藏状态\(\mathbf{h}_v\)(stateembedding),这就意味着:对于每个节点,它的隐藏状态包含了来自邻居节点的信息。那么,如何让每个结点都感知到图上其他的结点呢?GNN通过迭代式更新所有结点的隐藏状态来实现,在\(t+1\)时刻,结点\(v\)的隐藏状态按照如下方式更新:

上面这个公式中的\(f\)就是隐藏状态的状态更新函数,在论文中也被称为局部转移函数(localtransactionfunction)。公式中的\(_[]\)指的是与结点\(v\)相邻的边的特征,\(_[]\)指的是结点\(v\)的邻居结点的特征,\(^t_[]\)则指邻居结点在\(t\)时刻的隐藏状态。注意\(f\)是对所有结点都成立的,是一个全局共享的函数。那么怎么把它跟深度学习结合在一起呢?聪明的读者应该想到了,那就是利用神经网络(NeuralNetwork)来拟合这个复杂函数\(f\)。值得一提的是,虽然看起来\(f\)的输入是不定长参数,但在\(f\)内部我们可以先将不定长的参数通过一定操作变成一个固定的参数,比如说用所有隐藏状态的加和来代表所有隐藏状态。我们举个例子来说明一下:

假设结点\(5\)为中心结点,其隐藏状态的更新函数如图所示。这个更新公式表达的思想自然又贴切:不断地利用当前时刻邻居结点的隐藏状态作为部分输入来生成下一时刻中心结点的隐藏状态,直到每个结点的隐藏状态变化幅度很小,整个图的信息流动趋于平稳。至此,每个结点都“知晓”了其邻居的信息。状态更新公式仅描述了如何获取每个结点的隐藏状态,除它以外,我们还需要另外一个函数\(g\)来描述如何适应下游任务。举个例子,给定一个社交网络,一个可能的下游任务是判断各个结点是否为水军账号。

在原论文中,\(g\)又被称为局部输出函数(localoutputfunction),与\(f\)类似,\(g\)也可以由一个神经网络来表达,它也是一个全局共享的函数。那么,整个流程可以用下面这张图表达:

对于不同的图来说,收敛的时刻可能不同,因为收敛是通过两个时刻\(p\)-范数的差值是否小于某个阈值\(\epsilon\)来判定的,比如:

由于化合物的分类实际上需要对整个图进行分类,在论文中,作者将化合物的根结点的表示作为整个图的表示,如图上红色的结点所示。Atomfeature中包括了每个原子的类型(Oxygen,氧原子)、原子自身的属性(AtomProperties)、化合物的一些特征(GlobalProperties)等。把每个原子看作图中的结点,原子键视作边,一个分子(Molecule)就可以看作一张图。在不断迭代得到根结点氧原子收敛的隐藏状态后,在上面接一个前馈神经网络作为输出层(即\(g\)函数),就可以对整个化合物进行二分类了。

在本节的开头我们就提到了,GNN的理论基础是不动点(thefixedpoint)理论,这里的不动点理论专指巴拿赫不动点定理(Banach'sFixedPointTheorem)。首先我们用\(F\)表示若干个\(f\)堆叠得到的一个函数,也称为全局更新函数,那么图上所有结点的状态更新公式可以写成:

不动点定理指的就是,不论\(\mathbf{H}^0\)是什么,只要\(F\)是个压缩映射(contractionmap),\(\mathbf{H}^{0}\)经过不断迭代都会收敛到某一个固定的点,我们称之为不动点。那压缩映射又是什么呢,一张图可以解释得明明白白:

上图的实线箭头就是指映射\(F\),任意两个点\(x,y\)在经过\(F\)这个映射后,分别变成了\(F(x),F(y)\)。压缩映射就是指,\(((),())≤(,),0≤<1\)。也就是说,经过\(F\)变换后的新空间一定比原先的空间要小,原先的空间被压缩了。想象这种压缩的过程不断进行,最终就会把原空间中的所有点映射到一个点上。

那么肯定会有读者心存疑问,既然\(f\)是由神经网络实现的,我们该如何实现它才能保证它是一个压缩映射呢?我们下面来谈谈\(f\)的具体实现。

在具体实现中,\(f\)其实通过一个简单的前馈神经网络(Feed-forwardNeuralNetwork)即可实现。比如说,一种实现方法可以是把每个邻居结点的特征、隐藏状态、每条相连边的特征以及结点本身的特征简单拼接在一起,在经过前馈神经网络后做一次简单的加和。

那我们如何保证\(f\)是个压缩映射呢,其实是通过限制\(f\)对\(\mathbf{H}\)的偏导数矩阵的大小,这是通过一个对雅可比矩阵(JacobianMatrix)的惩罚项(Penalty)来实现的。在代数中,有一个定理是:\(f\)为压缩映射的等价条件是\(f\)的梯度/导数要小于1。这个等价定理可以从压缩映射的形式化定义导出,我们这里使用\(||x||\)表示\(x\)在空间中的范数(norm)。范数是一个标量,它是向量的长度或者模,\(||x||\)是\(x\)在有限空间中坐标的连续函数。这里把\(x\)简化成1维的,坐标之间的差值可以看作向量在空间中的距离,根据压缩映射的定义,可以导出:

推广一下,即得到雅可比矩阵的罚项需要满足其范数小于等于\(c\)等价于压缩映射的条件。根据拉格朗日乘子法,将有约束问题变成带罚项的无约束优化问题,训练的目标可表示成如下形式:

其中\(\lambda\)是超参数,与其相乘的项即为雅可比矩阵的罚项。

上面我们花一定的篇幅搞懂了如何让\(f\)接近压缩映射,下面我们来具体叙述一下图神经网络中的损失\(Loss\)是如何定义,以及模型是如何学习的。

仍然以社交网络举例,虽然每个结点都会有隐藏状态以及输出,但并不是每个结点都会有监督信号(Supervision)。比如说,社交网络中只有部分用户被明确标记了是否为水军账号,这就构成了一个典型的结点二分类问题。

那么很自然地,模型的损失即通过这些有监督信号的结点得到。假设监督结点一共有\(p\)个,模型损失可以形式化为:

那么,模型如何学习呢?根据前向传播计算损失的过程,不难推出反向传播计算梯度的过程。在前向传播中,模型:

根据上面的过程,在反向传播时,我们可以直接求出\(f\)和\(g\)对最终的隐藏状态\(\mathbf{h}^{T_{n}}_v\)的梯度。然而,因为模型递归调用了\(f\)若干次,为计算\(f\)和\(g\)对最初的隐藏状态\(\mathbf{h}_v^0\)的梯度,我们需要同样递归式/迭代式地计算\(T_n\)次梯度。最终得到的梯度即为\(f\)和\(g\)对\(\mathbf{h}_v^0\)的梯度,然后该梯度用于更新模型的参数。这个算法就是Almeida-Pineda算法[9]。

相信熟悉RNN/LSTM/GRU等循环神经网络的同学看到这里会有一点小困惑,因为图神经网络不论是前向传播的方式,还是反向传播的优化算法,与循环神经网络都有点相像。这并不是你的错觉,实际上,图神经网络与到循环神经网络确实很相似。为了清楚地显示出它们之间的不同,我们用一张图片来解释这两者设计上的不同:

假设在GNN中存在三个结点\(x_1\),\(x_2\),\(x_3\),相应地,在RNN中有一个序列\((x_1,x_2,x_3)\)。笔者认为,GNN与RNN的区别主要在于4点:

初代GNN,也就是基于循环结构的图神经网络的核心是不动点理论。它的核心观点是通过结点信息的传播使整张图达到收敛,在其基础上再进行预测。收敛作为GNN的内核,同样局限了其更广泛的使用,其中最突出的是两个问题:

下面这张来自维基百科[13]的图可以形象地解释什么是OverSmooth,其中我们把整个布局视作一张图,每个像素点与其上下左右以及斜上下左右8个像素点相邻,这决定了信息在图上的流动路径。初始时,蓝色表示没有信息量,如果用向量的概念表达即为空向量;绿色,黄色与红色各自有一部分信息量,表达为非空的特征向量。在图上,信息主要从三块有明显特征的区域向其邻接的像素点流动。一开始不同像素点的区分非常明显,但在向不动点过渡的过程中,所有像素点都取向一致,最终整个系统形成均匀分布。这样,虽然每个像素点都感知到了全局的信息,但我们无法根据它们最终的隐藏状态区分它们。比如说,根据最终的状态,我们是无法得知哪些像素点最开始时在绿色区域。

我们上面细致比较了GNN与RNN,可以发现它们有诸多相通之处。那么,我们能不能直接用类似RNN的方法来定义GNN呢于是乎,门控图神经网络(GatedGraphNeuralNetwork,GGNN)[10]就出现了。虽然在这里它们看起来类似,但实际上,它们的区别非常大,其中最核心的不同即是门控神经网络不以不动点理论为基础。这意味着:\(f\)不再需要是一个压缩映射;迭代不需要到收敛才能输出,可以迭代固定步长;优化算法也从AP算法转向BPTT。

如果读者对GRU的更新公式熟悉的话,对上式应该很好理解。仔细观察上面这个公式,除了GRU式的设计外,GGNN还针对不同类型的边引入了可学习的参数\(\mathbf{W}\)。每一种\(edge\)对应一个\(\mathbf{W}_{edge}\),这样它就可以处理异构图。

但是,仔细对比GNN的GGNN的状态更新公式,细心的读者可能会发现:在GNN里需要作为输入的结点特征\(\mathbf{x}_v\)没有出现在GGNN的公式中!但实际上,这些结点特征对我们的预测至关重要,因为它才是各个结点的根本所在。

为了处理这个问题,GGNN将结点特征作为隐藏状态初始化的一部分。那么重新回顾一下GGNN的流程,其实就是这样:

为了便于理解,我们举个来自论文[10]的例子。比如说给定一张图\(G\),开始结点\(S\),对于任意一个结点\(E\),模型判断开始结点是否可以通过图游走至该结点。同样地,这也可以转换成一个对结点的二分类问题,即可以到达和不能到达。下图即描述了这样的过程:

图中的红色结点即开始结点\(S\),绿色结点是我们希望判断的结点\(E\),我们这里称其为结束结点。那么相比于其他结点,这两个结点具有一定特殊性。那我们就可以使用第1维为1来表示开始结点,第2维为1来表示结束结点。最后在对结束结点分类时,如果其隐藏状态的第1维被赋予得到了一个非0的实数值,那意味着它可以到达。

从初始化的流程我们也可以看出GNN与GGNN的区别:GNN依赖于不动点理论,所以每个结点的隐藏状态即使使用随机初始化都会收敛到不动点;GGNN则不同,不同的初始化对GGNN最终的结果影响很大。

首先为不了解语义解析的读者科普一下,语义解析的主要任务是将自然语言转换成机器语言,在这里笔者特指的是SQL(结构化查询语言,StructuredQueryLanguage),它就是大家所熟知的数据库查询语言。这个任务有什么用呢?它可以让小白用户也能从数据库中获得自己关心的数据。正是因为有了语义解析,用户不再需要学习SQL语言的语法,也不需要有编程基础,可以直接通过自然语言来查询数据库。事实上,语义解析放到今天仍然是一个非常难的任务。除去自然语言与程序语言在语义表达上的差距外,很大一部分性能上的损失是因为任务本身,或者叫SQL语言的语法太复杂。比如我们有两张表格,一张是学生的学号与其性别,另一张表格记录了每个学生选修的课程。那如果想知道有多少女生选修了某门课程,我们需要先将两张表格联合(JOIN),再对结果进行过滤(WHERE),最后进行聚合统计(COUNT)。这个问题在多表的场景中尤为突出,每张表格互相之间通过外键相互关联。其实呢,如果我们把表格中的Header看作各个结点,表格内的结点之间存在联系,而外键可以视作一种特殊的边,这样就可以构成一张图,正如下图中部所示:

论文[11]就是利用了表格这样的特性,利用GGNN来解决多表问题。下面我们先介绍一下一般的语义解析方法,再介绍[11]是如何将图跟语义解析系统联系在一起的。就笔者知道的而言,目前绝大部分语义解析会遵循Seq2seq(序列到序列,Sequencetosequence)的框架,输入是一个个自然语言单词,输出是一个个SQL单词。但这样的框架完全没有考虑到表格对SQL输出暗含的约束。比如说,在单个SELECT子句中,我们选择的若干Header都要来自同一张表。再举个例子,能够JOIN的两张表一定存在外键的联系,就像我们刚刚举的那个学生选课的例子一样。

那么,GGNN该如何结合到传统的语义解析方法中去呢?在论文[11]中,是通过三步来完成的:

最终该论文在多表上的效果也确实很好,下面放一个在Spider[12]数据集上的性能对比:

但从另一个角度来看,虽然GNN与GGNN的理论不同,但从设计哲学上来看,它们都与循环神经网络的设计类似。

THE END
1.图神经网络概述第三弹:来自IEEEFellow的GNN综述机器之心神经网络(GNN)热度持续上升,之前我们曾介绍了清华两篇综述论文,参见:深度学习时代的图模型,清华发文综述图网络,和清华大学图神经网络综述:模型与应用。最近,IEEE Fellow、Senior Member 和 Member Zonghan Wu 等人又贡献了一篇图神经网络综述文章。这篇文章介绍了 GNN 的背景知识、发展历史、分类与框架、应用等,详细介https://www.jiqizhixin.com/articles/2019-01-07-8
2.原创gnn图神经网络综述GNN图神经网络综述 什么是GNN GNN是Graph Neural Network的简称,是用于学习包含大量连接的图的联结主义模型。当信息在图的节点之间传播时GNN会捕捉到图的独立性。与标准神经网络不同的是,GNN会保持一种状态,这个状态可以代表来源于人为指定的深度上的信息。https://blog.csdn.net/qq_34911465/article/details/88524599
3.AI科普丨图神经网络(GNN)的完整总结!算法聚类编程大模型图神经网络由于其在处理非欧空间数据和复杂特征方面的优势,广泛应用在像推荐系统、知识图谱和交通道路分析。但是,图数据量大了以后,问题就来了,计算起来超级慢,内存也撑不住,而且分布式系统通信起来也很费劲。 在此,本文首先介绍了图神经网络如何传递信息,并阐述了常见的图神经网络模型及其在大数据下的挑战。文章总结https://dy.163.com/article/JGQFIUED0511PEBT.html
4.终于彻底理解图神经网络(GNNs)了!学习有关图神经网络的所有知识,包括 GNN 是什么,不同类型的图神经网络,以及它们的用途。此外,了解如何使用 PyTorch 构建图神经网络。目录什么是图?使用 NetworkX 创建图 为什么分析图很难? 什么是图神经网络(GNN)? 什么是图卷积网络(GCN)? 图神经网络如何工作?使用 PyTorch 构建图神经网络 GNN http://www.360doc.com/content/24/0309/18/99071_1116647067.shtml
5.图神经网络综述第47 卷第 4 期 Vol.47 No.4 ·热点与综述· 计算机工程 Computer Engineering 文章编号 :1 0 0 0-3 4 2 8(2 0 2 1)0 4-0 0 0 1-1 2 文献标志码 :A 2021 年 4 月 April 2021 中图分类号 :T P 1 8 图神经网络综述 王健宗,孔令炜,黄章成,肖京 (平安科技(深圳)有限公司 联邦学习技术https://www.ecice06.com/CN/article/downloadArticleFile.do?attachType=PDF&id=30944
6.图神经网络+强化学习客户点与仓库点组成了一个配送网络,车辆可以在此网络中移动从而完成配送任务。在求解此问题过程中,需要优化的决策变量为每个客户的配送任务应该分配到哪一辆车上,以及每辆车完成客户配送任务的先后顺序,优化目标为最小化车辆总行驶距离和使用的车辆数。 一、实验要求https://www.jianshu.com/p/e7ec17043414
7.基于时空建模的动态图卷积神经网络摘要为了使图表示学习得到的嵌入向量对节点和边不断变化的动态图具有很好的信息表征能力, 提出一种动态图卷积神经网络模型(DyGCN), 将动态图上的表示学习建模为时间和空间信息的聚合。该模型将从图卷积神经网络(GCN)的空间卷积提取图上的结构信息与从时间卷积神经网络(TCN)的因果卷积提取时序上的历史信息相结合, 同https://xbna.pku.edu.cn/fileup/0479-8023/HTML/2021-4-605.html
8.图网络存内计算研究获进展图神经网络(Graph Neural Network)是较新的深度学习技术,可用于处理更复杂的非结构化数据,广泛应用于社交网络、电子购物、药物预测、人机交互等应用场景。随着数据量的急速膨胀,亟待提升传统CMOS数字硬件系统中运行图神经网络的效率,同时,图神经网络的训练过程日趋复杂使得训练能耗居高不下。基于阻变忆阻器(RRAM)的存内https://www.cas.cn/syky/202302/t20230227_4875993.shtml
9.科学网—[转载]一种基于深度神经网络的临床记录ICD自动编码方法在这些工作中,Kipf T N等人提出了一种简化的图神经网络模型,即GCN,该模型在许多基准图数据集上达到了先进的水平。近期,图卷积神经网络还被用于文本分类任务中,Yao L等人提出了一种文本图卷积网络(Text-GCN),使用单词和文档的on-hot向量进行初始化,并联合学习单词和文档的表征,以提高文本分类的效果。Peng H等人https://blog.sciencenet.cn/blog-3472670-1280973.html
10.图卷积神经网络先验网络图卷积神经网络综述是可解释的,且本文从图卷积的角度提供了理论分析。 中的特征抽取对应于单个固定的过滤器。 发现 能够改善任务准确率,本文证明这个方法能够有效的缩小图的谱域,且应用在 上能够产生低通过滤器。 通过在基准数据集上的评估,展示了 能够与 及其他state-of-the-art图神经网络媲美。然而, https://blog.51cto.com/u_16213699/7652819
11.从图嵌入算法到图神经网络腾讯云开发者社区图时空网络(Graph Spatial-Temporal Network):旨在于时空图中学习模式 (pattern),应用在分类或是对未来特征的预测。 GNNPapers(https://github.com/thunlp/GNNPapers)详细列示了图神经网络诞生以来里程碑式的优秀模型,以及其在具体场景中的应用。 图卷积网络 https://www.cloud.tencent.com/developer/article/1617663