译自非常好的一篇博客,原文链接
图数据对我们非常重要,因为现实中物体之间总有着千丝万缕的联系,有联系的物体集合我们可以表示为一张图。目前GNN发展了十余年,我们已经能够看到其在抗菌发现、物理模拟、假新闻检测、流量预测和推荐系统方面的应用了。
我们将用以下四部分解释现代GNN:
首先,我们的Graph表示为
当然,事实上用图表示这些数据是冗余的,因为图和文本都有很规整的结构。这只是为了说明图是很强力的数据结构来表示诸如此类以外的很多东西。下面我们来展示图所表示的更为异构的数据。
在图结构的预测任务上,有图级、点级和边级之分。图/点/边级的任务上,主要侧重点便是预测图/点/边的一些性质。GNN可以解决这三级的问题。
Graph-Level:与MNIST和CIFAR的图像分类任务类似,我们希望将整个图关联到一个标签上,应用到文本上大概就类似情感识别任务。
Node-Level:以下是典型的例子:扎克的空手道俱乐部。通过社交网络去预测每个成员所属的俱乐部。在图像领域,这相当于分割任务,而在文本上相当于预测每个单词的词性。
Edge-Level:典型的例子是图像场景理解,除了识别对象以外,我们可进一步理解它们的关系,并预测对象相互的一些行为。
使用神经网络解决不同的图上问题的第一步就是如何表示与神经网络兼容的图。机器学习通常采用的是规整或格状的数据,而图至少存储点、边、全局信息和相关性。对于前三种是比较简单的,可以不用其他特殊技术就转换为机器学习的输入。而相关性相对复杂一些,最显然的选择是邻接矩阵。而这种表示存在一些短板:
现在既然图的描述是排列不变的矩阵格式,我们就可以使用图神经网络(gnn)来解决图预测任务了。 GNN 是对图的所有属性(节点、边、全局上下文)进行优化转换,以保持图的对称性(置换不变性)。
在此我们不考虑图上的相关信息,从点、边和全局信息出发,在图的每个部分使用独立的多层感知机(MLP),称为GNN的一层。我们的MLP返回的是经过学习的点向量、边向量以及全局信息向量,这样就相当于对整个图学习了单一层的嵌入向量。simple GNN的一层表示如下:
跟普通神经网络一样,我们可以把GNN层堆叠起来。在GNN不更新关联信息的前提下,我们将使用与输入相同的邻接表和相同数量的特征向量作为输出,但是输出图已经更新了嵌入,因为GNN已经更新了每个节点、边缘和全局上下文表示。
通常我们需要一种从邻边收集信息到点上做预测的方法,我们可以用**池化(Pooling)**来做(类似于CNN中的全局平均池化),分为以下两步:
不管我们拥有的是点级的信息还是边级的信息,我们都可以这样转换。同理对于边预测任务也可以这样做。也就是说我们可以建立一个简单的GNN模型,并通过在图的不同部分之间路由信息来进行二分类预测。这种池化技术将作为构建更复杂的GNN模型的基础。如果我们有新的图形属性,我们只需要定义如何将信息从一个属性传递到另一个属性。
在这个最简单的GNN公式中,我们在GNN层中根本没有使用图的连通性。每个节点、每条边以及全局上下文都是独立处理的。我们只在汇集信息进行预测时使用连通性。
我们可以使用一种叫message passing的技术使相邻节点和边相互交换信息并影响其他的已更新嵌入向量。步骤如下:
跟前面一样,如果我们数据只有边的信息,我们可以采用与前面使用相邻节点信息相同的方法合并来自相邻边的信息,首先将边信息池化,用更新函数对其进行转换然后存储,从而对其他信息进行预测(比如节点分类)。但是存储在图中的点和边不一定是相同的大小或形状,因此如何将它们组合起来并不是很明确。一种方法是学习从边空间到节点空间的线性映射,或者可以在更新函数之前将它们连接在一起。
在构造GNN中我们选何种方法、以怎样的顺序嵌入信息是一个较为开放的研究领域。比方说我们有’weave’ fashion的更新方式,对新的点边可以四种更新表示:node to node (linear), edge to edge (linear), node to edge (edge layer), edge to node (node layer).
即便多次使用message passing,我们描述的网络仍有着较远节点无法有效传递信息的缺陷。对k层的网络,信息最多会传递到k步远,而对于以一组点为单位的预测任务来说这会是个问题。一种解决方法是使信息在所有点之间传递,而这对很大的图来讲这会是代价昂贵的(一种叫虚边的方式被应用在小型图比方说分子方面)
我们使用一种叫master node或者context vector的全局表示方法处理,即存在一个vector连接网络中所有节点和边,作为桥梁他可以传递信息并建立图整体的表示,这使图的表示能更加复杂和丰富。在这机制下更新信息由邻点邻边和全局信息三部分组成,我们可以简单使用线性映射投射到同一特征空间中,这被视为一种特征注意力机制。
请大家移步到原文,互动对于理解上述内容会很有帮助。同时非常感谢distill的高质量文章,鄙人翻译也许不太精确。
采用注意力机制(QKV),将节点用线性的向量空间表示其,各点可以用内积同步更新参数。与Transformer不同的使GAN(Graph Attention Networks)要关注稀疏的网络。
因为图存在很多概念和性质,我们关心特定图形的可解释性,可从上下文信息、子图存在与否或是连通程度进行解释。
通过学习分布采样或者给定起点,我们可以生成新图。这在新药设计中具有很大前景(构造图)。
关键挑战在于对图的拓扑进行建模,图的大小可能变化很大,一种解决方案是将邻接矩阵直接建模为带有自动编码器框架的图像。
构造顺序图:可以用自回归模型(如RNN)或强化学习场景