在这篇文章中,我们将仔细研究一个名为GCN的著名图神经网络。首先,我们先直观的了解一下它的工作原理,然后再深入了解它背后的数学原理。

在这篇文章中,咱们将细心研讨一个名为GCN的闻名图神经网络。首要,咱们先直观的了解一下它的作业原理,然后再深化了解它背面的数学原理。

为什么要用Graph?

许多问题的本质上都是图。在咱们的国际里,咱们看到许多数据都是图,比方分子、交际网络、论文引证网络。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第1张

图的比如。(图片来自[1])

Graph上的使命

  • 节点分类:猜测特定节点的类型。
  • 链接猜测:猜测两个节点是否有联络
  • 社区检测:辨认密布联络的节点群落。
  • 网络相似性:两个(子)网络的相似性有多大?

机器学习的生命周期

在图中,咱们有节点特征(代表节点的数据)和图的结构(表明节点怎么衔接)。

关于节点来说,咱们能够很简略地得到每个节点的数据。可是当涉及到图的结构时,要从中提取有用的信息就不是一件简略的作业了。例如,假如2个节点互相间隔很近,咱们是否应该将它们与其他对节点区别对待呢?高低度节点又该怎么处理呢?其实,关于每一项详细的作业,仅仅是特征工程,即把图结构转换为咱们的特征,就会耗费很多的时刻和精力。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第2张

图上的特征工程。(图片来自[1])

假如能以某种办法一起得到图的节点特征和结构信息作为输入,让机器自己去判别哪些信息是有用的,那就更好了。

这也是为什么咱们需求图表明学习的原因。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第3张

咱们期望图能够自己学习 "特征工程"。(图片来自[1])

图卷积神经网络(GCNs)

论文:根据图神经网络的半监督分类(2017)[3]

GCN是一种卷积神经网络,它能够直接在图上作业,并运用图的结构信息。

它处理的是对图(如引文网络)中的节点(如文档)进行分类的问题,其间仅有一小部分节点有标签(半监督学习)。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第4张

在Graphs上进行半监督学习的比如。有些节点没有标签(不知道节点)。

首要思维

就像"卷积"这个姓名所指代的那样,这个主意来自于图画,之后引进到图(Graphs)中。可是,当图画有固定的结构时,图(Graphs)就杂乱得多。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第5张

从图画到图形的卷积思维。 (图片来自[1])

GCN的基本思路:关于每个节点,咱们从它的一切街坊节点处获取其特征信息,当然也包含它本身的特征。假定咱们运用average()函数。咱们将对一切的节点进行相同的操作。终究,咱们将这些核算得到的均匀值输入到神经网络中。

鄙人图中,咱们有一个引文网络的简略实例。其间每个节点代表一篇研讨论文,一起边代表的是引文。咱们在这儿有一个预处理进程。在这儿咱们不运用原始论文作为特征,而是将论文转换成向量(经过运用NLP嵌入,例如tf-idf)。NLP嵌入,例如TF-IDF)。

让咱们考虑下绿色节点。首要,咱们得到它的一切街坊的特征值,包含本身节点,接着取均匀值。终究经过神经网络回来一个成果向量并将此作为终究成果。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第6张

GCN的首要思维。咱们以绿色节点为例。首要,咱们取其一切街坊节点的均匀值,包含本身节点。然后,将均匀值经过神经网络。请留意,在GCN中,咱们仅仅运用一个全衔接层。在这个比如中,咱们得到2维向量作为输出(全衔接层的2个节点)。

在实际操作中,咱们能够运用比average函数更杂乱的聚合函数。咱们还能够将更多的层叠加在一起,以取得更深的GCN。其间每一层的输出会被视为下一层的输入。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第7张

2层GCN的比如:榜首层的输出是第二层的输入。相同,留意GCN中的神经网络仅仅是一个全衔接层(图片来自[2])。

让咱们仔细从数学视点看看它到底是怎么起作用的。

直观感触和背面的数学原理

首要,咱们需求一些注解

咱们考虑图G,如下图所示。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第8张

从图G中,咱们有一个邻接矩阵A和一个度矩阵D。一起咱们也有特征矩阵X。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第9张

那么咱们怎样才能从街坊节点处得到每一个节点的特征值呢?处理办法就在于A和X的相乘。

看看邻接矩阵的榜首行,咱们看到节点A与节点E之间有衔接,得到的矩阵榜首行便是与A相衔接的E节点的特征向量(如下图)。同理,得到的矩阵的第二行是D和E的特征向量之和,经过这个办法,咱们能够得到一切街坊节点的向量之和。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第10张

核算 "和向量矩阵 "AX的榜首行。

这儿还有一些需求改善的当地。

  • 咱们疏忽了节点本身的特征。例如,核算得到的矩阵的榜首行也应该包含节点A的特征。
  • 咱们不需求运用sum()函数,而是需求取均匀值,乃至更好的街坊节点特征向量的加权均匀值。那咱们为什么不运用sum()函数呢?原因是在运用sum()函数时,度大的节点很或许会生成的大的v向量,而度低的节点往往会得到小的调集向量,这或许会在今后形成梯度爆破或梯度消失(例如,运用sigmoid时)。此外,神经网络好像对输入数据的规划很灵敏。因而,咱们需求对这些向量进行归一化,以脱节或许呈现的问题。

在问题(1)中,咱们能够经过在A中添加一个单位矩阵I来处理,得到一个新的邻接矩阵Ã。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第11张

取lambda=1(使得节点本身的特征和街坊相同重要),咱们就有Ã=A+I,留意,咱们能够把lambda作为一个可练习的参数,但现在只要把lambda赋值为1就能够了,即便在论文中,lambda也仅仅简略的赋值为1。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第12张

经过给每个节点添加一个自循环,咱们得到新的邻接矩阵

关于问题(2): 关于矩阵缩放,咱们一般将矩阵乘以对角线矩阵。在当时的情况下,咱们要取聚合特征的均匀值,或许从数学视点上说,要根据节点度数对聚合向量矩阵ÃX进行缩放。直觉告知咱们这儿用来缩放的对角矩阵是和度矩阵D̃有关的东西(为什么是D̃,而不是D?由于咱们考虑的是新邻接矩阵Ã 的度矩阵D̃,而不再是A了)。

现在的问题变成了咱们要怎么对和向量进行缩放/归一化?换句话说:

咱们怎么将街坊的信息传递给特定节点?咱们从咱们的老朋友average开端。在这种情况下,D̃的逆矩阵(即,D̃^{-1})就会用起作用。基本上,D̃的逆矩阵中的每个元素都是对角矩阵D中相应项的倒数。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第13张

例如,节点A的度数为2,所以咱们将节点A的聚合向量乘以1/2,而节点E的度数为5,咱们应该将E的聚合向量乘以1/5,以此类推。

因而,经过D̃取反和X的乘法,咱们能够取一切街坊节点的特征向量(包含本身节点)的均匀值。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第14张

到现在为止一切都很好。可是你或许会问加权均匀()怎么样?直觉上,假如咱们对高低度的节点区别对待,应该会更好。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第15张

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第16张

但咱们仅仅按行缩放,但疏忽了对应的列(虚线框)。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第17张

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第18张

为列添加一个新的缩放器。

新的缩放办法给咱们供给了 "加权 "的均匀值。咱们在这儿做的是给低度的节点加更多的权重,以削减高度节点的影响。这个加权均匀的主意是,咱们假定低度节点会对街坊节点发生更大的影响,而高度节点则会发生较低的影响,由于它们的影响力涣散在太多的街坊节点上。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第19张

在节点B处聚合邻接节点特征时,咱们为节点B本身分配最大的权重(度数为3),为节点E分配最小的权重(度数为5)。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第20张

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第21张

由于咱们归一化了两次,所以将"-1 "改为"-1/2"

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第22张


 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第23张

例如,咱们有一个多分类问题,有10个类,F 被设置为10。在第2层有了10个维度的向量后,咱们将这些向量经过一个softmax函数进行猜测。

Loss函数的核算办法很简略,便是经过对一切有标签的比如的穿插熵差错来核算,其间Y_{l}是有标签的节点的调集。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第24张

层的数量

#layers的含义

层数是指节点特征能够传输的最远间隔。例如,在1层的GCN中,每个节点只能从其街坊那里取得信息。每个节点搜集信息的进程是独立进行的,对一切节点来说都是在同一时刻进行的。

当在榜首层的基础上再叠加一层时,咱们重复搜集信息的进程,但这一次,街坊节点已经有了自己的街坊的信息(来自上一步)。这使得层数成为每个节点能够走的最大跳步。所以,这取决于咱们认为一个节点应该从网络中获取多远的信息,咱们能够为#layers设置一个适宜的数字。但相同,在图中,一般咱们不期望走得太远。设置为6-7跳,咱们就简直能够得到整个图,可是这就使得聚合的含义不大。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第25张

例: 搜集方针节点 i 的两层信息的进程

GCN应该叠加几层?

在论文中,作者还分别对浅层和深层的GCN进行了一些试验。鄙人图中,咱们能够看到,运用2层或3层的模型能够得到最好的成果。此外,关于深层的GCN(超越7层),反而往往得到欠好的功能(虚线蓝色)。一种处理方案是凭借躲藏层之间的剩余衔接(紫色线)。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第26张

不同层数#的功能。图片来自论文[3]

做好笔记

  • GCNs用于图上的半监督学习。
  • GCNs一起运用节点特征和结构进行练习
  • GCN的首要思维是取一切街坊节点特征(包含本身节点)的加权均匀值。度低的节点取得更大的权重。之后,咱们将得到的特征向量经过神经网络进行练习。
  • 咱们能够堆叠更多的层数来使GCN更深。考虑深度GCNs的残差衔接。一般,咱们会挑选2层或3层的GCN。
  • 数学笔记:当看到对角线矩阵时,要想到矩阵缩放。
  • 这儿有一个运用StellarGraph库的GCN演示[5]。该库房还供给了许多其他GNN的算法。

论文作者的阐明

该结构现在仅限于无向图(加权或不加权)。可是,能够经过将原始有向图表明为一个无向的两头图,并添加代表原始图中边的节点,来处理有向边和边特征。

下一步是什么呢?

关于GCN,咱们好像能够一起运用节点特征和图的结构。可是,假如图中的边有不同的类型呢?咱们是否应该对每种联系进行不同的处理?在这种情况下怎么聚合街坊节点?最近有哪些先进的办法?

在图专题的下一篇文章中,咱们将研讨一些更杂乱的办法。

 GCN图卷积网络入门详解(图卷积网络gcn预测) GCN 神经网络 节点 第27张

怎么处理边的不同联系(兄弟、朋友、......)?

转载请说明出处
知优网 » GCN图卷积网络入门详解(图卷积网络gcn预测)

发表评论

您需要后才能发表评论