本文是清华大学刘知远老师团队出版的图神经网络书籍《Introduction to Graph Neural Networks》的部分内容翻译和阅读笔记。
个人翻译难免有缺陷敬请指出,如需转载请联系翻译作者作者:Riroaki
原文:https://zhuanlan.zhihu.com/p/129305050
第一部分-Introduction
图是一种数据结构,可对一组对象(节点)及其关系(边)进行建模。近年来,由于图的强大表达能力,利用机器学习来分析图的研究受到越来越多的关注,即图可以用作包括社会科学(社会网络)在内的各个领域的大量系统的表示图是一种数据结构,可对一组对象(节点)及其关系(边)进行建模。
作为用于机器学习的独特的非欧氏数据结构,图引起了人们对节点分类,链接预测和聚类分析的关注。图神经网络(GNN)是在图域上运行的基于深度学习的方法。由于其令人信服的性能和高解释性,GNN最近已成为一种广泛应用的图形分析方法。
首先,GNN是由卷积神经网络(CNN)启发的。CNN能够提取和组合具有高表示能力的特征的多尺度局部空间特征,这导致了几乎所有机器学习领域的突破和深度学习的革命。CNN的关键在于:本地连接,共享权重和多层使用。这些特点对于解决图域问题也非常重要,因为
图是最典型的局部连接结构;
与传统的频谱图理论相比,共享权重降低了计算成本;
多层结构是处理分层模式的关键,它捕获了各种大小的特征。
但是,CNN只能对诸如图像(2D网格)和文本(1D序列)之类的常规欧几里得数据进行操作,这些数据也可以视为图的实例,但是很难定义局部卷积滤波器和池化运算符以应用于一般的图结构。
另一个动机来自图嵌入(Graph Embedding),它旨在学会表示图节点,边缘或低维向量中的子图。在图分析中,传统的机器学习方法通常依赖于手工设计的特征,并且受其灵活性和高成本的限制。继表示学习的思想和词嵌入的成功以来,DeepWalk被认为是基于表示学习的第一种图嵌入方法,它采用了SkipGram模型。诸如node2vec,LINE和TADW等类似方法也取得了突破。然而,这些方法具有两个严重的缺点。
编码器中的节点之间没有共享参数,这导致计算效率低下,因为这意味着参数的数量随节点的数量线性增长;
直接嵌入方法缺乏泛化能力,这意味着它们无法处理动态图或无法泛化为新图。
第二部分-Vanilla Graph Neural Networks
在图结构中,一个节点自然是由其特征和图中的相关节点定义的。GNN的目标是为每个节点学习节点的状态嵌入 的状态,该状态对邻域信息进行编码。状态嵌入 用于产生输出 ,例如预测节点标签的分布。原始GNN模型处理无向齐次图,其中图中的每个节点都有其输入特征 ,每条边也可能都有其特征。本文使用 和 来表示节点 的边和邻居的集合。
为了根据输入邻域更新节点状态,定义一个在所有节点之间共享的参数函数 ,称为局部转移函数。为了产生节点的输出,有一个参数函数 ,称为局部输出函数。然后, 定义为:
对于节点 , 分别表示节点特征、节点连接的边的特征、节点的邻居的隐藏状态和节点邻居的特征。
如果将所有的状态、输出、特征和节点特征分别堆叠起来并使用矩阵表示为: ,那么上面的公式可以改写为:
其中 分别是全局的转移和输出函数,由所有节点的对应函数堆叠构成。 的值是等式(3)的不动点,并以 作为压缩映射(Contraction Map)唯一定义。因而,在实践中通过迭代方式求出 。这里, 的计算过程可以用前馈神经网络(Feedforward Neural Network)来解释。
以上是GNN的基本框架。下面介绍如何学习转移函数和输出函数的参数。
利用用于监督信号的目标信息(对于特定节点记为 ),损失函数可以写为:
于是整个基于梯度下降的学习算法可以描述为如下步骤:
隐藏状态 通过迭代 时间步获得,然后我们获得公式(3)一个近似的不动点解 ;
通过损失函数计算梯度,并使用最后一步计算得到的梯度更新网络参数。
该模型的局限之处在于:
迭代更新节点的隐藏状态以获取固定点的计算效率低下。该模型需要 步计算才能逼近固定点。如果放宽固定点的假设,可以设计一个多层GNN来获得节点及其邻域的稳定表示。
模型在迭代中使用相同的参数,而大多数流行的神经网络在不同的层中使用不同的参数,这是一种分层的特征提取方法。此外,节点隐藏状态的更新是一个顺序过程,可以从RNN核(如GRU和LSTM)中受益。
图的边上还有一些信息特征,无法在模型中有效地建模。例如,知识图中的边具有关系的类型,通过不同边的消息传播应根据其类型而不同。此外,如何学习边缘的隐藏状态也是一个重要的问题。
如果