课程主页:CS224W | Home
课程视频链接:斯坦福CS224W《图机器学习》课程(2021) by Jure Leskovec
1 前言
之前的内容学习了如何设计一个图神经网络,本章将继续介绍GNN的理论知识,主要学习如何提高GNN模型的表达能力(区分不同图结构的能力),并进一步设计一种表示能力最强的GNN模型。
先复习一下学过的GNN模型:
两个模型哪个更好呢?
本课程中用一般用节点颜色指代节点的特征,同色即特征相同。举例:下图中所有节点的特征都相同(黄色)。
2 区分局部邻居结构
举例1:节点1和节点5,因其度数不同而具有不同的局部结构信息,可以直接进行区分。
举例2: 节点1和节点4,具有相同度数,但可根据其邻居的度数不同进行区分。
举例3:节点1和节点2,具有相同的邻居结构,因为在图中是对称的,所以不可区分。(无论多少跳邻居上,都具有相同的局部结构,即位置同构)
我们接下来就要分析GNN节点嵌入能否区分不同节点的局部邻居结构,在什么情况下会区分失败。
我们将通过计算图这一关键概念来理解GNN是如何得到局部邻居结构的。
2.1 计算图
GNN通过聚合邻居节点信息得到的计算图来产生节点嵌入。
举例:节点1和节点2的计算图(两层GNN)
上面两个计算图本质上是一样的:因为GNN只能识别节点特征(颜色),不能识别节点的ID ,所以这两个计算图将被嵌入到同一个表示向量:
一般来说,不同的局部邻居会得到不同的计算图:
计算图与每个节点周围的有根子树结构(Rooted subtree structures)相同,都通过从根节点递归展开邻居节点来定义。
2.2 表现力最强的GNN模型
GNN通过捕获这个有根子树结构来得到节点嵌入,表示能力最强的GNN模型能将不同有根子树映射到不同的节点嵌入中(图中表示为不同颜色):
换句话说,表示能力最强的GNN就应该单射地映射有根子树到节点嵌入。
单射(Injective)函数:每个不同的自变量都映射到不同的因变量(不存在多对一的情况),这样可以在输出的Y中完整保留输入数据X中的信息
相同深度的子树可以从叶节点到根节点递归地传递信息,比如通过孩子的数量来区分两棵树:
进一步地,如果GNN每一步聚合都可以保留全部邻居信息,那么所产生的节点嵌入就可以区分不同的有根子树,也就达成了GNN具有最强表示能力的效果。
换句话说,表现能力最强的GNN就是每一步都使用单射邻居聚合函数(保留全部信息),把不同的邻居映射到不同的嵌入上。
2.3 小结
GNN通过计算图(以节点为根的子树)来得到节点嵌入。
如果GNN的每一层都使用单射的邻居聚合函数(不丢失任何信息),就可以达成区分不同子树的效果。
3 聚合函数分析
邻居聚合过程可以被抽象为一个多重集(multi-set, 一个元素可重复的集合,在此处指节点的邻居集合,节点特征可重复)上的函数。如图中以圆点集合作例,节点同色指特征相同:
接下来我们分析GCN和GraphSAGE的聚合函数:
3.1 GCN的聚合函数
GCN:mean-pool + Linear + ReLU non-linearity
根据GCN原文的定义,GCN的聚合函数无法区分颜色占比相同的多重集(multi-sets):
在上图中,两种颜色的节点占比相同,取平均值会得到相同的结果,即它们在聚合后会传递一个相同的信息。如果用one-hot编码来表示两个不同的节点,GCN均值池化的失败会更加明显:
3.2 GraphSAGE的聚合函数
GraphSAGE:max-pool + MLP
根据GraphSAGE原文的定义,GraphSAGE的聚合函数无法区分具有相同颜色配置的多重集:
在上图中,三个多重集都是黄色和蓝色的配置,无论节点数量有多少,只要还是黄色或蓝色的节点,他们特征的最大值都不会改变(除非出现新的颜色)。如果用one-hot编码来表示,最大池化的失败会更加明显:
3.3 小结
根据上文对GNN表示能力的分析,我们得出的主要结论有:
- GNN的表达能力由其邻居聚合函数决定;
- 邻居聚合是个多重集上的函数,多重集是一个元素可重复的集合;
- GCN和GraphSAGE的聚合函数都不能区分某些基本的多重集,因此都不单射,都不够具有表达能力。
4 设计单射的多重集函数
我们的目标是设计信息传递框架下表示能力最强的GNN,这要求我们设计出多重集上的单射的邻居聚合函数。
接下来,我们用神经网络建模单射的多重集函数。
4.1 单射的多重集函数
所有单射多重集函数都可以被表示为:(让每一个节点都作为函数 f 的输入)
如果按照节点颜色进行one-hot编码,对其求和就能得到输入多重集的全部信息(每类节点对应向量的一个索引,索引的求和结果就对应该类节点的数量,进而得到不同类节点个数的分布情况)
如图所示:
4.2 图同构神经网络(Graph Isomorphism Network,GIN)
进一步地,我们如何来表示单射多重集函数中的 和 两个映射呢?
根据万能近似定理,我们可以使用MLP来模拟这两个函数映射。
万能近似定理(universal approximation theorrm):
“一个包含足够多隐藏层神经元的多层前馈网络,能以任意精度逼近任意预定的连续函数”。
传送门:万能近似定理(universal approximation theorrm)_guoyunfei20的博客
应用MLP,我们可以用神经网络建模出任意一个单射的多重集函数,其形式即变为:
这就是GIN模型的聚合函数。在实践中,MLP的隐藏层维度在100-500就足够了。
GIN模型的聚合函数是单射的,基本没有区分失败的案例,是信息传递类GNN中表达能力最强的。
4.2.1 GIN和WL graph kernel的关系
图同构的概念:简单来说,两个图中的节点和边数量相同且边的连接关系相同(节点的空间位置可能不同),则两个图同构,两个图在拓扑上等价,两个图的邻接矩阵也相同。
我们通过将GIN与WL graph kernel(获得图级别特征的传统方法,是用来测试图同构的经典算法之一)做关联,来全面了解GIN模型的整个架构。(GIN可以看作WL graph kernel的神经网络版)
先介绍WL kernel中的颜色细化算法:
举例:
迭代至稳定后,如果两个图的颜色集相同,说明它们同构。
下面两个图就显然不同构:
4.2.2 GIN的建模过程
GIN就是用一个神经网络来建模这个单射的哈希HASH函数:
单射函数建立在这个元组上:
GIN的单射聚合函数建模如下:
在这个式子中,如果输入特征是one-hot编码(即one-hot),那么直接加总就是单射的,比如:
这时,我们就仅需 Φ 来确保函数的单射,它需要产生one-hot向量来作为下一层的输入特征:
GIN和WL graph kernel的关系:GIN:逼近WL-test的GNN架构 | 冬于的博客
4.2.3 GIN的节点嵌入过程
GINConv相当于可微的color HASH函数,将不同输入映射到不同嵌入中(即单射)。
4.2.4 GIN和WL graph kernel的比较
更新目标 | 更新函数 | |
WL graph kernel | 节点颜色(one-hot) | HASH |
GIN | 节点嵌入(低维向量) | GINConv |
GIN相较于WL graph kernel的优点在于:
- 节点嵌入是低维的,因此可以捕获到细粒度的节点相似性
- GINConv的参数可被学习得到并应用于下流任务
由于GIN与WL graph kernel的建模过程相似,所以二者的表示能力也是相同的。也就是对于一样的图,要么二者都能区分,要么都不能区分。
在理论上和实践上,WL graph kernel都能区分现实中的大部分图,因此GIN也能区分。
5 总结
- 我们设计了一个可以建模单射多重集函数的神经网络
- 我们用这个神经网络来聚合邻居信息,得到GIN:表示能力最强的GNN模型
- 关键在于用element-wise sum pooling代替mean-/max-pooling
- GIN与WL graph kernel十分相似
- GIN和WL graph kernel都能区分现实中的大部分图
6 参考文献
1. http://web.stanford.edu/class/cs224w/slides/09-theory.pdf
2. cs224w(图机器学习)2021冬季课程学习笔记11 Theory of Graph Neural Networks_诸神缄默不语的博客