解决:发现了很多CNN、RNN无法解决或者效果不好的问题——图结构的数据
具体:
对CNN:
核心在于kernel,kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性:一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享
对RNN:
对象是自然语言这样的序列信息,是一个一维的结构,通过各种门的操作,使得序列前后的信息互相影响,从而很好地捕捉序列的特征。
共同点:都属于欧式空间的数据,欧式空间的数据的特点就是结构很规则
问题:
现实生活中,有很多不规则的数据结构,典型的就是图结构,或称拓扑结构,如社交网络、化学分子结构、知识图谱等等;
做目标识别的时候,关注的实际上只是二维图片上的部分关键点,这些点组成的也是一个图的结构。
图的结构是十分不规则的,可以认为是无限维的一种数据,所以它没有平移不变性。每一个节点的周围结构可能都是独一无二的,这种结构的数据,就让传统的CNN、RNN瞬间失效
图卷积的核心思想是利用边的信息对节点信息进行聚合从而生成新的节点表示。
GCN的本质目的就是用来提取拓扑图的空间特征。
基于频谱的图卷积通过添加自我连接单位矩阵、归一化邻接矩阵 A 的方式解决了基于空间的图卷积忽略节点自身特征、邻接矩阵过于庞大的两个问题
缺点:灵活性不高、普适性不强、运行效率较低
== 基于空间的图卷积方法利用邻域聚合的思想降低了复杂度,增强了泛化能力,提高了运行效率,是行为识别领域在图结构数据上进行分析的基本思想==。
基于谱和基于空间的模型的对比
谱模型是图数据处理的理论基础。基于谱的模型作为针对图数据最早期的卷积网络在很多图相关的分析任务种取得了非常好的效果。通过设计新的图信号滤波器(如Cayleynets),理论上可以建立新的卷积神经网络。然而,由于效率、通用性和灵活性等问题,空间模型比谱模型更受欢迎。
效率
基于谱的方法的计算量会随着图的大小急剧增加,因为模型需要同时计算特征向量[[21]或者同时处理大图,这就使得模型很难对大图进行并行处理或缩放。
基于空间的图方法由于直接对图域的邻居节点进行聚合,所以有潜力处理大图,方法是对一个batch数据计算而不是在整个图上计算。如果邻居节点的数量增加,能够通过采样技术GraphSage、LGCN[25,28] 提高效率。
通用性
基于谱的图方法假设图是固定的,因此对新的或者不同的图泛化性能很差。
基于空间的方法在每个节点上进行局部图卷积,权值可以很容易地在不同地位置和结构之间共享。
灵活性
基于谱的模型只适用于无向图,谱方法用于有向图的唯一方法是将有向图转换为无向图(因为没有有向图的拉普拉斯矩阵明确的定义)。基于空间的模型可以将输入合并到聚合函数中,所以在处理多源输入像是边特征边方向上更灵活。
因此,近年来,基于空间的方法更受关注。
在空域,用拓扑关系能更好地做运算;
在谱域,用拉普拉斯矩阵的全部特征向量组成的那组正交基能更好地做运算。
卷积的本质:对一个范围内的像素点进行加权求平均,这能有助于提取空间特征
对于广义拓扑图结构的数据,也可以按照这种思想来定义卷积操作,如图4所示,将每个节点的邻居节点的特征传播到该节点,再进行加权平均,就可以得到该点的聚合特征值,我们直接将这个聚合特征值作为传播到下一层的特征值
共享权重:
不过不同于 CNN 中每个 kernel 的权重都是规则的矩阵,按照对应位置分配,图卷积中的权重通常是一个集合。在对一个节点计算聚合特征值时,按一定规律将参与聚合的所有点分配为多个不同的子集,同一个子集内的节点采用相同的权重,从而实现权重共享。例如对于图4,我们可以规定和红色点距离为 1 的点为 1 邻域子集,距离为 2 的点为 2 邻域子集。当然,也可以采用更加复杂的策略,例如按照距离图重心的远近来分配权重。权重的分配策略有时也称为 label 策略,对邻接节点分配 label,label 相同节点的共享一个权重。
图卷积操作就是将每个节点的特征与其邻居节点的特征加权平均后传播到下一层。这种图卷积操作称为在空域上的图卷积,有如下几个特点:
随着层数的加深,每个节点能聚合到的特征越远,也就是感受野越大。
权重是共享的,不会具体到每个节点,这和传统CNN相同。(直观的理解,如果权重是因节点而不同的,那么一旦图结构发生变化,权重就会立刻失效)
3.每个顶点的邻居节点数可能不同,这导致邻居节点多的顶点的特征值更显著。
4.邻接矩阵在计算时无法将节点自身的特征包含到聚合特征值中。
为了克服空域图卷积的缺点,学者们提出了谱域上的图卷积,大概思想是利用图的拉普拉斯矩阵和傅里叶变换来进行卷积操作。基于谱域的图卷积目前在行为识别中应用较少,并且原理非常复杂
A波浪=A+I,I是单位矩阵
D波浪是A波浪的度矩阵(degree matrix),公式为
H是每一层的特征,对于输入层的话,H就是X
σ是非线性激活函数
-
这个部分,是可以事先算好的,因为D波浪由A计算而来,而A是我们的输入之一
从图的最初始特征X出发学习到更抽象的特征,比如学习到了某个节点的高级特征,这个特征根据图结构融合了图中其他节点的特征,就可以用这个特征用于节点分类或者属性预测。那么图网络就是要学习新特征,用公式表达就是:
k指的是网络层数,H(k)就是网络第k层的特征
简单的神经网络层:
将上述学习分成三个部分:
变换(transform):对当前的节点特征进行变换学习,这里就是乘法规则(Wx);
聚合(aggregate):聚合领域节点的特征,得到该节点的新特征,这里是简单的加法规则;
激活(activate):采用激活函数,增加非线性。
首先这里的权重是所有节点共享的,类比于CNN中的参数共享;另外可以将节点的邻居节点看成感受野,随着网络层数的增加,感受野越来越大,即节点的特征融合了更多节点的信息。直观的图卷积示意图如下:
上述的加法规则只是一个简单实现,其存在两个问题:
更进一步地,我们可以采用对称归一化来进行聚合操作,这就是论文1中所提出的图卷积方法:
这种新的聚合方法不再是单单地对邻域节点特征进行平均,这里:
这种聚合方式不仅考虑了节点i的度,而且也考虑了邻居节点j的度,当邻居节点j的度较大时,而特征反而会受到抑制。
定义了图卷积,我们只需要将图卷积层堆积起来就构成了图卷积网络GCN:
图神经网路(GNN,Graph Neural Network)是一个庞大的家族,如果按照f分类,其可以分成以下类型:
可以看到GCN只是其中的一个很小的分支,我们上面所述的GCN其实是属于谱图卷积。
GNN分类方式
主要从图类型、传播类型和训练方法三个方面分类
介绍传播类型
==即使不训练,完全使用随机初始化的参数W,GCN提取出来的特征就已经十分优秀了!==这跟CNN不训练是完全不一样的,后者不训练是根本得不到什么有效特征的。
对于很多网络,我们可能没有节点的特征,这个时候可以使用GCN吗?
答案是可以的,如论文中作者对那个俱乐部网络,采用的方法就是用单位矩阵 I 替换特征矩阵 X。
我没有任何的节点类别的标注,或者什么其他的标注信息,可以使用GCN吗?
当然,就如前面讲的,不训练的GCN,也可以用来提取graph embedding,而且效果还不错。
-GCN网络的层数多少比较好?
论文的作者做过GCN网络深度的对比研究,在他们的实验中发现,GCN层数不宜多,2-3层的效果就很好了。
GCN缺点与改进
1)、扩展性差:由于训练时需要需要知道关于训练节点、测试节点在内的所有节点的邻接矩阵A AA,因此是transductive的,不能处理大图,然而工程实践中几乎面临的都是大图问题,因此在扩展性问题上局限很大,为了解决transductive的的问题,GraphSAGE:Inductive Representation Learning on Large Graphs 被提出;
GraphSage这篇论文旨在提升gcn扩展性和改进训练方法缺陷。它将模型目标定于学习一个聚合器而不是为每个节点学习到一个表示,这中思想可以提升模型的灵活性和泛化能力。除此之外,得益于灵活性,它可以分批训练,提升收敛速度。但是它的问题是因为节点采样个数随层数指数增长,会造成模型在time per batch上表现很差,弱于GCN,这方面的详细讨论可以参考Cluster-GCN这篇论文。
2)、局限于浅层:GCN论文中表明,目前GCN只局限于浅层,实验中使用2层GCN效果最好,为了加深,需要使用残差连接等trick,但是即使使用了这些trick,也只能勉强保存性能不下降,并没有提高,Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning一文也针对When GCNs Fail ?这个问题进行了分析。虽然有一篇论文:DeepGCNs-Can GCNs Go as Deep as CNNs?就是解决GCN局限于浅层的这个问题的,但个人觉得并没有解决实质性的问题,这方面还有值得研究的空间。
gcn增加深度会降低模型效果主要是因为过度平滑的问题。现在解决这个问题的方法主要就是skip-connection的方法,其中包括你说的残差网络。这方面推荐你几篇论文:1.DeepGCNs: Can GCNs Gobas Deep as CNNs?这篇论文主要讨论了GCN的深度问题,文中才用了ResGCN,DenseGCN和Dilation等方法,最后效果比较明显。网络层数可以达到56层,并且有3.7个点的提升。2.Deep insights into Graph Convolution Networks for Semi-supervised Learning.这篇论文只看前面对于过度平滑的分析即可。3.Representation learning on graphs with jumping knowledge networks.这篇论文建立一个相对比较深的网络,在网络的最后当一个层聚合器来从所有层的输出中进行选择,来抑制noise information的问题
3)、不能处理有图:理由很简单,推导过程中用到拉普拉斯矩阵的特征分解需要满足拉普拉斯矩阵是对称矩阵的条件;
(4)这个模型对于同阶的邻域上分配给不同的邻居的权重是完全相同的(也就是G A T GATGAT论文里说的:无法允许为邻居中的不同节点指定不同的权重)。这一点限制了模型对于空间信息的相关性的捕捉能力,这也是在很多任务上不如G A T GATGAT的根本原因。
2018_ICLR_Graph Attention Networks
GCN局限有: 难处理动态图; 难分配不同的权重给不同的neighbor.
GAT是GNN的改进, 与GCN类似, 只是它是基于self-attention的图模型.
假设相邻节点对中心节点的贡献既不像GraphSage一样相同,也不像GCN那样预先确定。GAT在聚合节点的邻居信息的时候使用注意力机制确定每个邻居节点对中心节点的重要性,也就是权重。
自适应GCN(AGCN)为了探索图拉普拉斯矩阵为指明的隐藏结构
AGCN利用所谓的残差图来扩充图,残差图是通过计算节点对的距离来构造的。
自适应图卷积网络(AGCN)通过图的邻接矩阵学习未知的隐藏结构关系。它通过一个以两个节点的特征为输入的可学习的距离函数来构造一个所谓的残差图邻接矩阵。
GCN强烈推荐!解释原理都很好
GCN归一化解释
图卷积神经网络(GCN)入门