深度学习:GCN(图卷积神经网络)理论学习总结

目录

  • 来源
  • 作用
  • 原理
    • 解释
    • 核心
    • 两种理解
      • 空间域的缺点
    • 图的概念
    • 学习新特征
      • 目标
      • 提出
      • 步骤
      • 图卷积
  • 分类
  • 特点
  • 常见问题
  • 缺点
  • 改进
    • 残差结构与扩张卷积
    • 图注意力网络GAT
    • 邻接矩阵的探索
      • Adaptive Graph Convolution Network (AGCN)
    • 空间域的GCNs
  • 参考

来源

  • 解决:发现了很多CNN、RNN无法解决或者效果不好的问题——图结构的数据
    具体:

  • 对CNN:
    核心在于kernel,kernel是一个个小窗口,在图片上平移,通过卷积的方式来提取特征。这里的关键在于图片结构上的平移不变性:一个小窗口无论移动到图片的哪一个位置,其内部的结构都是一模一样的,因此CNN可以实现参数共享

  • 对RNN
    对象是自然语言这样的序列信息,是一个一维的结构,通过各种门的操作,使得序列前后的信息互相影响,从而很好地捕捉序列的特征。

  • 共同点:都属于欧式空间的数据,欧式空间的数据的特点就是结构很规则

  • 问题:
    现实生活中,有很多不规则的数据结构,典型的就是图结构,或称拓扑结构,如社交网络、化学分子结构、知识图谱等等;
    目标识别的时候,关注的实际上只是二维图片上的部分关键点,这些点组成的也是一个图的结构。
    图的结构是十分不规则的,可以认为是无限维的一种数据,所以它没有平移不变性。每一个节点的周围结构可能都是独一无二的,这种结构的数据,就让传统的CNN、RNN瞬间失效

作用

  • 跟CNN的作用一样,就是一个特征提取器
  • 设计了一种从图数据中提取特征的方法,可以使用这些特征去对图数据进行
  • 节点分类(node classification)、图分类(graph classification)、边预测(link prediction),还可以得到图的嵌入表示(graph embedding)
    深度学习:GCN(图卷积神经网络)理论学习总结_第1张图片

原理

解释

  1. 图卷积是利用其他结点的信息来推导该结点的信息
  2. 图中的每个结点无时无刻不因为邻居和更远的点的影响而在改变着自己的状态直到最终的平衡,关系越亲近的邻居影响越大。
  3. 图数据中的空间特征具有以下特点:
    1) 节点特征:每个节点有自己的特征;(体现在点上)
    2) 结构特征:图数据中的每个节点具有结构特征,即节点与节点存在一定的联系。(体现在边上)
    总地来说,图数据既要考虑节点信息,也要考虑结构信息,图卷积神经网络就可以自动化地既学习节点特征,又能学习节点与节点之间的关联信息。

核心

图卷积的核心思想是利用边的信息节点信息进行聚合从而生成新的节点表示
GCN的本质目的就是用来提取拓扑图的空间特征

两种理解

  • 图卷积方法主要有两大流派:基于频谱的方法和基于空间的方法
  1. 基于频谱的方法主要有Spectral CNN (第一代 GCN)、第二代GCN、ChebyNet、 CayleyNet、一阶 ChebyNet等。在行为识别领域,ChebyNet 及一阶近似被广泛应用。
  2. 基于空间的方法主要有消息传递与聚合、图采样与聚合、图结构序列化、关注卷积方式、基于注意力机制、关注感知域的方法。
  • . GCN方法,其方法主要分为两大类:基于频谱的方法 (spectral-based)和基于空间的方法 (spatial-based)
  1. 基于频谱的图卷积网络是将图信号与频谱信号进行转换和分析,然后再恢复图信号所在的空域,从而完成图信号的降噪与特征提取。以“降低复杂度”为主线,将常用于图像的卷积神经网络应用到图数据上。

基于频谱的图卷积通过添加自我连接单位矩阵、归一化邻接矩阵 A 的方式解决了基于空间的图卷积忽略节点自身特征、邻接矩阵过于庞大的两个问题
缺点:灵活性不高、普适性不强、运行效率较低

== 基于空间的图卷积方法利用邻域聚合的思想降低了复杂度,增强了泛化能力,提高了运行效率,是行为识别领域在图结构数据上进行分析的基本思想==。

基于谱和基于空间的模型的对比
谱模型是图数据处理的理论基础。基于谱的模型作为针对图数据最早期的卷积网络在很多图相关的分析任务种取得了非常好的效果。通过设计新的图信号滤波器(如Cayleynets),理论上可以建立新的卷积神经网络。然而,由于效率、通用性和灵活性等问题,空间模型比谱模型更受欢迎。

效率
基于谱的方法的计算量会随着图的大小急剧增加,因为模型需要同时计算特征向量[[21]或者同时处理大图,这就使得模型很难对大图进行并行处理或缩放。

基于空间的图方法由于直接对图域的邻居节点进行聚合,所以有潜力处理大图,方法是对一个batch数据计算而不是在整个图上计算。如果邻居节点的数量增加,能够通过采样技术GraphSage、LGCN[25,28] 提高效率。

通用性
基于谱的图方法假设图是固定的,因此对新的或者不同的图泛化性能很差。
基于空间的方法在每个节点上进行局部图卷积,权值可以很容易地在不同地位置和结构之间共享。

灵活性
基于谱的模型只适用于无向图,谱方法用于有向图的唯一方法是将有向图转换为无向图(因为没有有向图的拉普拉斯矩阵明确的定义)。基于空间的模型可以将输入合并到聚合函数中,所以在处理多源输入像是边特征边方向上更灵活。

因此,近年来,基于空间的方法更受关注。

在空域,用拓扑关系能更好地做运算;
在谱域,用拉普拉斯矩阵的全部特征向量组成的那组正交基能更好地做运算。

卷积的本质:对一个范围内的像素点进行加权求平均,这能有助于提取空间特征

对于广义拓扑图结构的数据,也可以按照这种思想来定义卷积操作,如图4所示,将每个节点的邻居节点的特征传播到该节点,再进行加权平均,就可以得到该点的聚合特征值,我们直接将这个聚合特征值作为传播到下一层的特征值

共享权重:
不过不同于 CNN 中每个 kernel 的权重都是规则的矩阵,按照对应位置分配,图卷积中的权重通常是一个集合。在对一个节点计算聚合特征值时,按一定规律将参与聚合的所有点分配为多个不同的子集,同一个子集内的节点采用相同的权重,从而实现权重共享。例如对于图4,我们可以规定和红色点距离为 1 的点为 1 邻域子集,距离为 2 的点为 2 邻域子集。当然,也可以采用更加复杂的策略,例如按照距离图重心的远近来分配权重。权重的分配策略有时也称为 label 策略,对邻接节点分配 label,label 相同节点的共享一个权重。
深度学习:GCN(图卷积神经网络)理论学习总结_第2张图片

  • 基于空间域或顶点域vertex domain(spatial domain)**
    空域可以类比到直接在图片的像素点上进行卷积。
    将卷积操作定义在每个结点的连接关系上,它跟传统的卷积神经网络中的卷积更相似一些。
    直接使用图的拓扑结构,根据图的邻居信息进行信息收集
    继承了递归神经网络的思想,通过信息传播来定义图的卷积。
  • 基于频域或谱域spectral domain的
    频域可以类比到对图片进行傅里叶变换后,再进行卷积。应用图的拉普拉斯矩阵分解进行节点的信息收集
    是谱域图卷积网络的理论基础了。这种思路就是希望借助图谱的理论来实现拓扑图上的卷积操作。
    通过从图信号处理的角度引入滤波器来定义图卷积,其中图卷积运算被解释为从图信号中去除噪声。

空间域的缺点

图卷积操作就是将每个节点的特征与其邻居节点的特征加权平均后传播到下一层。这种图卷积操作称为在空域上的图卷积,有如下几个特点:

  1. 随着层数的加深,每个节点能聚合到的特征越远,也就是感受野越大。

  2. 权重是共享的,不会具体到每个节点,这和传统CNN相同。(直观的理解,如果权重是因节点而不同的,那么一旦图结构发生变化,权重就会立刻失效)

3.每个顶点的邻居节点数可能不同,这导致邻居节点多的顶点的特征值更显著。

4.邻接矩阵在计算时无法将节点自身的特征包含到聚合特征值中。

为了克服空域图卷积的缺点,学者们提出了谱域上的图卷积,大概思想是利用图的拉普拉斯矩阵和傅里叶变换来进行卷积操作。基于谱域的图卷积目前在行为识别中应用较少,并且原理非常复杂

图的概念

  • 一批图数据,其中有N个节点(node),每个节点都有自己的特征
    模型的输入
    对于图,我们习惯上用G=(V,E)表示。这里V是图中节点的集合,而E为边的集合,这里记图的节点数为N。一个G中有3个比较重要的矩阵:
  • 特征矩阵X:这些节点的特征组成一个N×D维的矩阵
  • 邻接矩阵A(adjacency matrix):各个节点之间的关系会形成一个N×N维的矩阵
  • 度矩阵D:degree matrix,每个节点的度指的是其连接的节点数,这是一个对角矩阵,其中对角线元素在这里插入图片描述
    深度学习:GCN(图卷积神经网络)理论学习总结_第3张图片
    层特征传播公式
    在这里插入图片描述

A波浪=A+I,I是单位矩阵
D波浪是A波浪的度矩阵(degree matrix),公式为
H是每一层的特征,对于输入层的话,H就是X
σ是非线性激活函数
-在这里插入图片描述
这个部分,是可以事先算好的,因为D波浪由A计算而来,而A是我们的输入之一

  • 用这个公式就可以很好地提取图的特征
    深度学习:GCN(图卷积神经网络)理论学习总结_第4张图片
    上图中的GCN输入一个图,通过若干层GCN每个node的特征从X变成了Z,但是,无论中间有多少层,node之间的连接关系,即A,都是共享的。

学习新特征

目标

从图的最初始特征X出发学习到更抽象的特征,比如学习到了某个节点的高级特征,这个特征根据图结构融合了图中其他节点的特征,就可以用这个特征用于节点分类或者属性预测。那么图网络就是要学习新特征,用公式表达就是:
在这里插入图片描述
k指的是网络层数,H(k)就是网络第k层的特征

提出

简单的神经网络层:

  • 输入:邻接矩阵A和node的特征H;
  • 直接做一个内积,
  • 再乘一个参数矩阵W,
  • 然后激活一下,相当于一个简单的神经网络层
    深度学习:GCN(图卷积神经网络)理论学习总结_第5张图片

步骤

将上述学习分成三个部分:
变换(transform):对当前的节点特征进行变换学习,这里就是乘法规则(Wx);
聚合(aggregate):聚合领域节点的特征,得到该节点的新特征,这里是简单的加法规则;
激活(activate):采用激活函数,增加非线性。

首先这里的权重是所有节点共享的,类比于CNN中的参数共享;另外可以将节点的邻居节点看成感受野,随着网络层数的增加,感受野越来越大,即节点的特征融合了更多节点的信息。直观的图卷积示意图如下:
深度学习:GCN(图卷积神经网络)理论学习总结_第6张图片

图卷积

上述的加法规则只是一个简单实现,其存在两个问题:

  • 在计算新特征时没有考虑自己的特征:由于A的对角线上都是0,所以在和特征矩阵H相乘的时候,只会计算一个node的所有邻居的特征的加权和,该node自己的特征却被忽略了
    **改进:**给图中每个节点增加自连接,给A加上一个单位矩阵 I ,这样就让对角线元素变成1
    在这里插入图片描述
  • 采用加法规则时,对于度大的节点特征越来越大,而对于度小的节点却相反,这可能导致网络训练过程中梯度爆炸或者消失的问题。
    **改进:**可以对邻接矩阵进行归一化,使得A]的每行和值为1,在实现上可以乘以度矩阵的逆矩阵 在这里插入图片描述
    这里的度矩阵是更新[公式]后重新计算的。这样我们就得到
    在这里插入图片描述
    相比加法规则,这种聚合方式其实是对领域节点特征求平均,这里:
    深度学习:GCN(图卷积神经网络)理论学习总结_第7张图片
    由于在这里插入图片描述
    这种聚合方式其实就是求平均,对领域节点的特征是求平均值,这样就进行了归一化,避免求和方式所造成的问题。

更进一步地,我们可以采用对称归一化来进行聚合操作,这就是论文1中所提出的图卷积方法:

这种新的聚合方法不再是单单地对邻域节点特征进行平均,这里:
深度学习:GCN(图卷积神经网络)理论学习总结_第8张图片
这种聚合方式不仅考虑了节点i的度,而且也考虑了邻居节点j的度,当邻居节点j的度较大时,而特征反而会受到抑制。

定义了图卷积,我们只需要将图卷积层堆积起来就构成了图卷积网络GCN:
深度学习:GCN(图卷积神经网络)理论学习总结_第9张图片

分类

图神经网路(GNN,Graph Neural Network)是一个庞大的家族,如果按照f分类,其可以分成以下类型:
深度学习:GCN(图卷积神经网络)理论学习总结_第10张图片
可以看到GCN只是其中的一个很小的分支,我们上面所述的GCN其实是属于谱图卷积。
 GNN分类方式
主要从图类型、传播类型和训练方法三个方面分类
 介绍传播类型

  1. 介绍传播
    汇集从邻居节点和连接的边的信息,来对节点进行更新的过程
  2. 传播的方式
    卷积、注意力机制、门机制,跳跃连接
  3. 卷积的分类
    谱方法(Spectral Methods) :应用图的拉普拉斯矩阵分解进行节点的信息收集
    空间域(spatial domain):直接使用图的拓扑结构,根据图的邻居信息进行信息收集
    主要思想

特点

==即使不训练,完全使用随机初始化的参数W,GCN提取出来的特征就已经十分优秀了!==这跟CNN不训练是完全不一样的,后者不训练是根本得不到什么有效特征的。

  • GCN 是对卷积神经网络在 graph domain 上的自然推广
  • 它能同时对节点特征信息与结构信息进行端对端学习,是目前对图数据学习任务的最佳选择。
  • 图卷积适用性极广,适用于任意拓扑结构的节点与图。
  • 在节点分类与边预测等任务上,在公开数据集上效果要远远优于其他方法。

常见问题

  • 对于很多网络,我们可能没有节点的特征,这个时候可以使用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的根本原因。

改进

残差结构与扩张卷积

图注意力网络GAT

2018_ICLR_Graph Attention Networks

GCN局限有: 难处理动态图; 难分配不同的权重给不同的neighbor.

GAT是GNN的改进, 与GCN类似, 只是它是基于self-attention的图模型.

假设相邻节点对中心节点的贡献既不像GraphSage一样相同,也不像GCN那样预先确定。GAT在聚合节点的邻居信息的时候使用注意力机制确定每个邻居节点对中心节点的重要性,也就是权重。

邻接矩阵的探索

Adaptive Graph Convolution Network (AGCN)

自适应GCN(AGCN)为了探索图拉普拉斯矩阵为指明的隐藏结构

AGCN利用所谓的残差图来扩充图,残差图是通过计算节点对的距离来构造的。

自适应图卷积网络(AGCN)通过图的邻接矩阵学习未知的隐藏结构关系。它通过一个以两个节点的特征为输入的可学习的距离函数来构造一个所谓的残差图邻接矩阵。

空间域的GCNs

参考

GCN强烈推荐!解释原理都很好
GCN归一化解释
图卷积神经网络(GCN)入门

你可能感兴趣的:(pytorch深度学习,GCN,深度学习,cnn,知识图谱)