原文地址:
- https://distill.pub/2021/gnn-intro/
不同形式来源的图
Images as graphs
- 论文中提到将图像建模为一张拓扑图的方法是将图像的每一个像素看作图的一个结点,并将单个像素结点与其相邻的所有像素之间建立一条边。 每一个非边缘的像素结点具有8个邻接顶点,然后每一个像素结点具有一个三维的特征向量,其值为该像素点的RGB值。
- 下图是建模的示意图,最左边的图示表示的是图像的一个个像素点,而在最右边的图就可以看到左图的每一个像素点都变成了拓扑图上的一个顶点,并且与它相邻的点都建立了一条边。而中间的图为右图的一个邻接矩阵,如果两个顶点之间有边相连,则标为蓝色。
Text as graphs
- 类似的,我们也可以将文本建模为一张拓扑图,如下图所示,将文本中的词语看作一个结点,认为相邻的词语之间存在关联,建立一条有向边,具体的拓扑图结构可以用图中的邻接矩阵表达
- 在实践中并不会直接使用上述的邻接矩阵对图进行表述,因为它们过于稀疏,会造成计算资源的浪费。
Graph-valued data in the wild
- 之前提到的两种形式的图的邻居结点的数量都比较固定,现在,让我们将注意力放到结构更加异构的数据。在以下示例中,每个节点的邻居数量是可变的,这些数据很难用拓扑图以外的方式来表达。
Molecules as graphs
- 将分子建模为图结构,原子作为图的顶点,而原子之间的化学键作为图的边,如下图所示
Social networks as graphs
- 社交网络是研究人们、机构和组织的集体行为模式的工具。我们可以通过将个体建模为节点,将他们的关系建模为边来构建一个表示人群的图。
Citation networks as graphs
- 科学家在发表论文时经常引用其他科学家的研究成果。我们可以将这些引用网络可视化成一个图,其中每篇论文是一个节点,每个有向边代表一篇论文和另一篇论文之间的引用。此外,我们可以在每个节点中添加关于每篇论文的信息,例如摘要的词嵌入。
Other Examples
- 在计算机视觉的图像分割任务中,我们有时需要对视觉场景中的物体进行标记。然后我们可以通过将这些对象视为节点,将它们的关系视为边来构建图。
- 现实世界的图的结构在不同类型的数据之间可能会有很大的不同——可能存在有些图有很多节点,但它们之间的边很少,反之亦然。图数据集在节点、边的数量和节点的连通性方面变化很大。
图结构的数据集能够处理哪些任务呢?
全图级任务(Graph-level)
- 在全图级任务中,我们的目标是预测整个图的属性。例如,我们可能想要使用分子的拓扑图去预测分子是否具有某种气味,或者它是否会和与疾病有关的受体结合等性质。
- 对于图像,这类似于使用MNIST和CIFAR的图像分类问题,我们希望将标签与整个图像关联起来。对于文本,一个类似的问题是情感分析,我们想要一次识别整个句子的情绪是positive还是negative。
节点级任务(Node-level)
-
节点级任务关注于预测每个节点的身份或角色。文中给出了一个社交网络图中的问题,该数据集是由在政治分歧后宣誓效忠两个空手道俱乐部之一的individuals组成。随着故事的发展,Mr.Hi和John H之间的不和导致了空手道俱乐部的分裂。节点表示单个空手道练习者,边缘表示空手道之外这些成员之间的交互。预测问题是,在争执之后,一个给定的成员是忠于Mr.Hi还是忠于John H。在这种情况下,某个节点到Mr.Hi或John H之间的距离对它最终预测的结果将产生显著影响。
-
对于图像,节点级预测问题类似于图像分割,我们尝试标记图像中每个像素的是否为某个实体。对于文本,类似的任务是词性标注,即预测句子中每个单词的词性(例如名词、动词、副词等)。
边级任务(Edge-level)
- 边级任务的一个例子是Image scene understanding。除了识别图像中的实体之外,深度学习模型还可以用于预测实体之间的关系。
- 我们可以将其描述为边级分类:
- 给定代表图像中对象的节点,我们希望预测这些节点中的哪些节点存在边或在已经存在边的情况下预测该边的值是多少。
- 如果我们希望发现实体之间的联系,我们可以认为图是完全连接的,并根据它们的预测值修剪边,得到一个稀疏图。
将图应用于深度学习需要应对的挑战
邻接矩阵的稀疏性
- 深度学习模型通常采用矩阵作为输入,但是在刚才的例子中也有提到,直接使用图的邻接矩阵作为输入的话,通常会产生稀疏性问题。
邻接矩阵的排列不变性
- 随节点的编号顺序不同,不同的邻接矩阵可能表示同一张图,但将这些不同的邻接矩阵输入神经网络并不能保证输出的结果一致
应对策略
- 为了解决以上的两个问题,一种优雅且节省内存的方法是使用邻接表。
- 值得注意的是,该图使用每个Node/Edge/global级别的标量值。在实际中,大多数都将每个图属性的向量拼接为一个张量。对于Node属性,我们将其处理为大小为 [ n n o d e s , n o d e d i m ] [n_{nodes}, node_{dim}] [nnodes,nodedim]的节点张量,其他图属性也一样。
图神经网络(GNN)
- 由于图的Representation是具有排列不变性的矩阵,因此我们将使用图神经网络(GNN)来解决图预测任务。GNN是对图的所有属性(Node,Edge,Global)的可优化变换,它保持了图的排列不变性。
- 我们将使用 消息传递神经网络(MPNN) 框架来构建GNN.
- GNN采用graph-in, graph-out 架构,这意味着这些模型类型接受图作为输入,将信息加载到其节点,边和全局上下文中,并逐步转换这些嵌入,而不改变输入图的连通性。
最简单的GNN架构
- 对于图的每个属性,即Node,Edge和Global context分别使用一个多层感知机(MLP)