Introduction to Graph Neural Network翻译-第四章Vanilla Graph Neural Networks
4. Vanilla Graph Neural Networks
在本节中,我们将描述Scarselli等人提出的Vanilla GNN[2009]。
我们还列出了Vanilla GNN在表示能力和训练效率方面的局限性。
在本章之后,我们将讨论Vanilla GNN模型的几种变体。
4.1 介绍
GNN的概念最早是在Gori等人[2005],Scarselli等 [2004,2009]提出的。
为简单起见,我们将讨论Scarselli等人提出的模型[2009],其目的是扩展现有的神经网络,以处理图结构化数据。
节点自然是由其特征和图中的相关节点定义的。GNN的目标是学习状态嵌入,
该状态是对每个节点的邻居信息信息编码。
状态嵌入用于产生输出,例如预测节点标签的分布。
在Scarselli等[2009],一个典型的图如图4.1所示。
Vanilla GNN模型处理无向齐次图,其中图中的每个节点
都有它的输入特征,并且每条边也可以有它的特征。
本文使用来代表节点的边和邻居的集合。
对于处理其他更复杂的图,例如异构图,可以在后面的章节中找到GNN的相应变体。
4.2 模型
在给定节点和边的输入特征的情况下,接下来我们将讨论模型如何获得节点嵌入和输出嵌入。
为了根据输入领域更新节点的状态,所有节点共享一个称为局部转移函数的参数函数。
为了产生节点的输出,有一个参数函数,称为局部输出函数。然后,的定义如下:
其中,表示输入特征,表示隐藏状态。
是与节点相连的边集合,是节点的邻居集合。
所以分别代表的特征,它的边的特征,节点在图中邻居的状态和特征。
以图4.1中的节点为例,是的输入特征。包含了边。
包含了节点。
设是分别由所有状态,所有输出,所有特征,所有节点特征堆叠而成的矩阵。然后我们有一个紧凑的形式:
其中,是全局转换函数,是全局输出函数。
它们分别由图中所有节点的局部转换函数和局部输出函数的堆叠而成。
的值是方程的不动点,并且假设是压缩映射的情况下是唯一定义的。
在Banach不动点定理[Khamsi和Kirk,2011]的建议下,GNN使用以下经典迭代方案来计算状态:
代表的第次迭代。动力系统方程以指数速度收敛于方程的解,对于任意初值。
注意,和中描述的计算可以解释为FNN。
在介绍了GNN的框架后,下一个问题是如何学习局部转移函数和局部输出函数的参数。
对于有监督的目标信息(对于确定的节点),损失可以写为:
其中是有监督节点的数目。该学习算法基于梯度下降策略,由以下步骤组成。
- 状态由等式更新,直到时间步。然后我们得到了方程的近似不动点解:。
- 根据损失计算权重梯度。
- 根据在上一步骤中计算的梯度来更新权重。
运行该算法后,我们可以获得针对有监督/半监督任务以及图中节点的隐藏状态训练的模型。
vanilla GNN模型提供了一种有效的方法来对图数据进行建模,这是将神经网络纳入图域的第一步。
4.3 局限性
尽管实验结果表明,GNN是用于对结构数据进行建模的强大架构,但vanilla GNN仍然存在一些局限性。
- 首先,通过迭代更新节点的隐藏状态来获得不动点,计算效率较低。该模型需要步计算才能逼近不动点。
如果放宽不动点的假设,我们可以设计一个多层GNN来获得节点及其邻域的稳定表示。 - 其次,Vanilla GNN在迭代中使用相同的参数,而大多数流行的神经网络在不同的层使用不同的参数,这是一种分层的特征提取方法。此外,节点隐含状态的更新是一个顺序的过程,可以受益于RNN中的GRU和LSTM核。
- 第三,在边上也有一些信息量大的特征,这些特征在Vanilla GNN中不能有效地建模。例如,知识图谱中的边代表关系类型,通过不同边的消息传播应根据其类型的不同而不同。此外,如何学习边的隐藏状态也是一个重要的问题。
- 最后,如果很大,如果我们把注意力集中在节点的表示上而不是图上,则不适合使用不动点,因为不动点中的表示分布在值上要平滑得多,而且用于区分每个节点的信息量要小得多。
除了普通GNN之外,还提出了几个变体来解决这些限制。
例如,门控图神经网络(GGNN)[Li等人,2016]被提出用于解决第一个问题。
关系GCN(R-GCN)[Schlichtkrull等人,2018]被提出用于处理有向图。更多细节见以下章节。