图神经网络(GNN)总结

使用GNN的原因:图结构数据的表示一般是不规则,传统的CNN等模型无法直接运用在图数据上,所以需要在图上重新定义卷积操作。其中要着重考虑感受野如何定义,节点的顺序性如何定义,如何进行池化操作。

具体有以下三点:

  • CNN无法处理Non Euclidean Structure的数据,学术上的表达是传统的离散卷积在Non Euclidean Structure的数据上无法保持平移不变性。通俗理解就是在拓扑图中每个顶点的相邻顶点数目都可能不同,那么当然无法用一个同样尺寸的卷积核来进行卷积运算
  • 由于CNN无法处理Non Euclidean Structure的数据,又希望在这样的数据结构(拓扑图)上有效地提取空间特征来进行机器学习,所以GCN成为了研究的重点
  • 广义上来讲任何数据在赋范空间内都可以建立拓扑关联,所以说拓扑连接是一种广义的数据结构,GCN有很大的应用空间

最早的图神经网络是Network Embedding的形式,它的核心思想是通过表征学习的方式,在保持当前空间一些几何特性的前提下,把数据转换到一个低维的、更加有判别能力的空间。常见的方法有LLE、DeepWalk、SNE、Graph Factorization等方法

Recurrent graph neural networks,这种方法的主要思想是假设一个节点不断地与邻居节点交换信息直到达到一个平衡,其大多借鉴了LSTM、GRU这些RNN模型,然后改进并运用到图数据上。参考论文《A comprehensive survey on graph neural networks》

论文《Semi-supervised classification with graph convolutional networks》是图卷积领域一篇非常经典的论文,将图卷积应用于半监督学习中。我们这里不讨论其半监督学习的方法。该论文在论文《Convolutional neural networks on graphs with fast localized spectral filtering》的基础上进行了一阶近似,即每次卷积操作只对节点的一阶邻居进行信息聚合,并且省略了部分参数。但是目前GNN存在着很多问题:

  1. 无法进行分批训练,无法对分批的数据完成运算,这也对应了该方法的灵活性差,无法处理大图。
  2. 模型基于transductive,即在训练过程中,测试集的数据也有参与,这造成模型的泛化能力很差。
  3. 无法通过加深网络层数来加强网络,这是GNN领域的一个重要问题。

基于以上前两个两个比较致命的缺点,研究者使用空间域卷积来解决。空间域卷积的工作也比较多:DCNN(扩散卷积)、GraphSage、GAT(基于self-attention)、LGCN(邻居采样+top-k selection+ 1DCNN)等等

有比较有代表性的模型即GraphSAGE,该模型指出,以前的模型的目标是为每个不同的节点学习到一个唯一的Embedding,这导致模型的可扩展性很差。论文《Inductive representation learning on large graphs》提出GraphSAGE将目标定于学习聚合器,聚合器的任务在于完成邻居节点的信息聚合,因此GraphSAGE不会因为新节点的加入而造成模型无法工作。除此之外,GraphSAGE支持分批训练。

GNN领域中的一些问题:

  1. 训练方式问题(sampling):目的是寻找一种训练方式,使得收敛速度加快、time per epoch时间降低,并且不明显损耗效果。值得一提VR-GCN在重要性采样这一方面已经做到了方差为0,很不错了。
  2. Deep network : GNN现在一般的层数为2-3层,研究者发现加深网络会导致模型的效果变差。可能是因为:(1)拉普拉斯矩阵的幂运算在指数很大时, 参数变化很小。(2)GCN它基于假设:让相邻的节点尽可能的处于同一类,如果加深层数会导致距离比较远(不属于同一类)的节点成为同类,这明显会损耗GNN效果。(3)当GNN的层数加深,会聚集更多节点的noise information。(4)当GNN层数加深时,中心节点的节点特征会慢慢地被丢弃,所以有工作通过加多个自旋的方式来加深层数。(5)统计学常识:参数越多,需要的数据越多,然而没有大型图数据集。解决加深GNN层数的问题主要使用skip connection的方法,如残差网络,hightway network,Dilated 等方法。
  3. 异质图:异质图中的节点和边拥有不同的类型,异质图问题一般很复杂,现在也有很多相关的工作,其中一个重要思想是先想办法将节点和边分类,然后进行类内的信息聚合,然后在进行类间的节点聚合。
  4. 有向图:前面提到的很多GNN模型只面向无向图,要想处理有向图,就必须考虑child和father这一项信息。
  5. 动态图:图中的节点信息、节点存在与否动态变化,这要求模型泛化能力极强并且拥有很好的灵活性。
  6. 有信息的边:遇到带信息的边,需要考虑边带有的信息。现在有这么几个方法:(i)将边变为一个节点和两条边,这样就去掉了信息边。(ii)不同的边拥有不同的参数矩阵(需要考虑参数数量问题)。

你可能感兴趣的:(机器学习)