Graph neural network —— 图神经网络简单介绍


一、图的基本结构

1. 图的基本结构

要了解图神经网络,首先要了解图。图是由节点和边组成的,如下图所示。一般图中的节点表示实体对象(比如一个用户、一件商品、一辆车、一张银行卡等都可以作为节点),边代表事件或者实体之间的特殊关系(比如用户和商品之间的购买关系)。边可以为有向/无向。 在数学中,一般使用邻接矩阵来表示图,如上图右边所示。邻接矩阵中的值为 1 表示节点之间有边,即有连接关系。邻接矩阵能够很好的将图的结构信息表达出来。

2. 图的分类

  • 同质图(Homogeneity): 指图中的节点类型和关系类型都仅有一种。
  • 异质图(heterogeneous): 指图中的节点类型或关系类型多于一种。
  • 属性图 : 在异质图基础上增加了额外的属性信息。属性图是现实中最常用的一种图,因为他往往能包含更丰富的信息,但是处理起来也更为复杂。下图为一张属性图: 这个图里的用户节点有姓名、性别,话题节点具体的话题类别,公司节点有名称,注册时间等属性信息。边也可以有属性信息,比如开始工作时间是边“工作于”的一种属性。所以,属性图就是节点和边带有自己的属性信息,同时每个节点又有自己的拓扑结构信息。

二、图神经网络

图神经网络是能够处理图数据结构的特殊类型的神经网络,受卷积神经网络(CNN)和图嵌入(Graph Embedding)的影响发展而来。其中图嵌入的本质是将高维稠密矩阵形式的图数据(例如图的邻接矩阵)映射为低维向量的过程,最终得到的低维向量则称为图的嵌入特征向量(embedding)。

图嵌入通常包含在图神经网络计算的过程当中,因此通常在一些关于GNN的文献中会出现 embedding 一词,表示的是利用某些方法得到的嵌入特征向量,这些embeddings是整个图结构/图节点/图边的特征向量,可以作为下游(机器学习)任务的输入,以进行分类、预测、或者推理。

1. 图神经网络的计算过程 —— 以图卷积为例

图卷积网络(Graph Convolutional Networks, GCNs)首次由 Kipf 等人在2016年提出,Kipf 本人也写了一篇博客介绍 GCNs。GCNs中的卷积过程与CNN中的类似,即GCNs也存在卷积核(filter)并且卷积核的参数在同一卷积层中共享。在利用CNN进行图像处理时,卷积核对图像像素构成的矩阵进行卷积操作;在GCNs中,卷积核通常是对图节点的特征矩阵进行卷积操作。


不了解卷积原理的可以简单把神经网络的卷积过程理解成矩阵相乘后求和(或求平均),下面是一个卷积核计算的动图,中间3×3的小矩阵为卷积核,左边为图像像素矩阵/特征矩阵,右边为卷积计算输出。


与CNN不同的是,GCNs在卷积的同时,相邻节点之间还需要进行信息传递。信息传递的过程如下图所示,节点2作为节点1,3,4的邻居可以收到来自它们的所有信息,在收到信息之后,再利用信息聚合算法(简单的算法如:求和、取平均),将获得的所有信息聚合成一份。

综上,GCNs的计算过程可以简单的分成两步:(1) 卷积;(2) 信息传递与聚合;

GCNs与CNN一样都是分层计算的,每一层都在重复上面两个步骤,只是每一层的参数互不相同。GCNs的卷积最后一层输出为节点的嵌入向量,嵌入向量再作为下游的机器学习任务的输入得到最终需要的结果。

2. 热门的图神经网络模型

图神经网络有几种类型,其中大多数都为图卷积神经网络的一些变体。

  • 图自编码网络(Graph Auto-Enconder Networks, GAE):图自编码网络由一个编码层和一个解码层组成,两个网络层由一个瓶颈层连接。编码层利用卷积计算来获得图节点的特征,解码器则尝试重新生成图的输入。图自编码器广泛应用于无监督学习中,适用于无监督信息的图节点表示。

  • 图采样和聚合 (Graph sample and aggregate,GraphSAGE) : GraphSAGE是一种能够利用节点的属性信息高效产生未知节点embedding的一种归纳式(inductive)学习的框架。其核心思想是通过学习一个对邻居顶点进行聚合表示的函数来产生目标顶点的embedding向量。可以分为三个步骤:(1)对图中每个顶点邻居顶点进行采样;(2)根据聚合函数聚合邻居顶点蕴含的信息;(3)得到图中各顶点的向量表示供下游任务使用。

  • 图注意力网络(Graph attention networks, GAT):GAT的本质与GraphSAGE类似,但是解决了GraphSAGE中未考虑不同邻居节点的信息对于当前目标节点的重要性问题。GAT利用attention机制对该问题给出了改进方案,在聚合时通过一个函数来刻画邻居节点v对于目标节点w的重要性,通常这是通过一个浅层神经网络实现的,之后GAT在聚合时对不同邻居节点的特征信息按照重要性进行加权聚合得到下一层的节点特征。

3. GNN的功能

  • 节点分类:通过节点邻居的标签来预测节点的标签。
  • 链接/边分类:目标是预测图中各个实体之间的关系。例如预测社交网络个体间的连接关系。
  • 图聚类:将图的节点划分为不同的集群。划分的依据可以为边的权重、边的距离、节点的属性等。
  • 图分类:对于整个图结构的分类。可以应用于社会网络分析和自然语言处理中的文档分类。

4. GNN的优势和应用场景

GNN的优势
  • 擅长推理:

    大规模的图数据可以表达丰富和蕴含逻辑关系的人类常识和专家规则,图节点定义了可理解的符号化知识,不规则图拓扑结构表达了图节点之间的依赖、从属、逻辑规则等推理关系。 以保险和金融风险评估为例,一个完备的 AI 系统不仅需要基于个人的履历、行为习惯、健康程度等进行分析处理,还需要通过其亲友、同事、同学之间的来往数据和相互评价进一步进行信用评估和推断。基于图结构的学习系统能够利用用户之间、用户与产品之间的交互,做出非常准确的因果和关联推理。 ——达摩院2020十大科技趋势白皮书

  • 可解释性强:图具有很强的语义可视化能力,这种优势被所有的 GNN 模型所共享。比如在异常交易账户识别的场景中,GNN 在将某个账户判断为异常账户之后,可以将该账户的局部子图可视化出来。我们可以直观地从子图结构中发现一些异常模式,比如同一设备上有多个账户登录,或者同一账户在多个设备上有行为。还可以从特征的维度,比如该账户与其他有关联的账户行为模式非常相似(包括活跃时间集中,或者呈现周期性等),从而对模型的判断进行解释。

图神经网络的应用
  • 计算机视觉:GNN能够图像生成图像生成和视觉推理。简单来说,就是GNN能够根据提供的语义生成图像,还可以运用推理能力对图像中被遮挡的物体进行识别。

  • 自然语言处理:GNNs 在自然语言处理中的应用也很多,包括多跳阅读、实体识别、关系抽取以及文本分类等。多跳阅读是指给机器有很多语料,让机器进行多链条推理的开放式阅读理解,然后回答一个比较复杂的问题。

  • 生物医疗:化合物是由原子和化学键构成的,它们天然就是一种图数据的形式。GNN可以用于新药物的发现、化合物筛选、蛋白质相互作用点检测检测等。

  • 推荐系统:利用用户的社交网络或知识图谱对用户的喜好进行推理,以实现商品、音乐、电影等推荐。

三、图神经网络存在的问题

  • 层数很浅。传统的神经网络通常网络层数越多能达到的效果越好。而GNN的网络层通常很浅,大多数只有三层,因为多层GNN的信息聚合操作会导致节点特征趋于一致,丧失了可区分度。深度GNN的结构的设计仍然是一个活跃的研究领域。
  • 对动态图的处理。现阶段的GNN模型大多针对于静态图/变化较小的图,GraphSAGE虽然能对新增节点进行预测,但是本质上原本的图结构是不变的。因此针对动态图的GNN结构设计的研究有待突破。
  • 可扩展性。将GNN应用于大规模推荐系统和社交网络等是一个挑战,主要的障碍是GNN的计算成本很高。
图神经网络代码教程

https://uvadlc-notebooks.readthedocs.io/en/latest/tutorial_notebooks/tutorial7/GNN_overview.html