图卷积神经网络——GCN的原理

写在前面

参考文章:

  • https://zhuanlan.zhihu.com/p/71200936

GCN是做什么的?

在现实生活中,其实有很多很多不规则的数据结构,它们不属于欧式结构(欧式结构的特点就是结构很规则),典型的就是图结构,或称拓扑结构,如社交网络、化学分子结构、知识图谱等等;即使是语言,实际上其内部也是复杂的树形结构,也是一种图结构;而像图片,在做目标识别的时候,我们关注的实际上只是二维图片上的部分关键点,这些点组成的也是一个图的结构。

图的结构一般来说是十分不规则的,可以认为是无限维的一种数据,所以它没有平移不变性。每一个节点的周围结构可能都是独一无二的,这种结构的数据,就让传统的CNN、RNN瞬间失效。

GCN,图卷积神经网络,实际上跟CNN的作用一样,就是一个特征提取器,只不过它的对象是图数据

GCN是如何运作的?

说实话,面对繁杂的GCN数学原理公式,作为一个准大三的学生,笔者是完全懵的状态,但是看到知乎上讲解GCN的高赞文章中指出,对于90%的复杂数学公式,我们只要知道它有,就可以了。因为它们的存在只是为了证明GCN是可以走得通的,而它们是怎么实现的我们则不关心。

对于GCN的核心部分,我们还是很有必要探讨的。
由上文可知,GCN读取的是图数据,怎么存储图数据?在数据结构这门专业课中,我们知道邻接矩阵,邻接表,边集数组( Kruscal )等是可以用来存储图数据的,而邻接矩阵这种数据结构应该是最简易的。笔者目前使用的数据结构,就是邻接矩阵。
假设我们手头有一批数据,其中有N个结点(N条数据,假设我们的任务是判别化学分子是否属于芳香烃,那么N个结点代表的是M个化合物中总共有N个原子,而M个化合物则对应M张图),每个结点都有自己的特征(还是以化学分子为例,自己的特征即用一个数字表示这个原子是什么原子(碳氢氧溴等等)),我们假设这些节点的特征构成N×D维的矩阵X,然后各个结点之间的关系构成N×N的邻接矩阵A,那么X和A就是我们的输入(输入到卷积神经网络,当然,还需要进行一些预处理,比如邻接矩阵网上每条边的权值,点属于哪张图等(显然一批图数据可以有许多张图))。

GCN也是一个神经网络层,这是显而易见的,因为它的名字叫卷积神经网络。原理我们不关心,因为太过于复杂,可以参考下式。而GCN一般由三部分堆叠构成,分别是卷积层(Convolutional Layer),池化层(Pooling)和全连接层(FC(Fully Connected))。卷积层是对上一层输入的数据通过卷积核(Kernel)进行特征提取,池化层是用于压缩图数据,而全连接层是提取图数据中数据,纵向展开(形成一个很长的单维向量),输入到下一层(softmax分类器、神经网络等)中。
图卷积神经网络——GCN的原理_第1张图片
图卷积神经网络——GCN的原理_第2张图片
上图中的GCN输入一个图,通过若干层GCN每个node的特征从X变成了Z,但是,无论中间有多少层,node之间的连接关系,即A,都是共享的 (CNN具有参数共享的特征,GCN也差不多)。
图卷积神经网络——GCN的原理_第3张图片

为什么是GCN?

因为即使不训练,完全使用随机初始化的参数W,GCN提取出来的特征就以及十分优秀了!这跟CNN不训练是完全不一样的,后者不训练是根本得不到什么有效特征的。
论文原文:即使是一个不经训练的GCN模型,通过随机初始化赋予超参数初值,也可以作为一个十分强大的特征提取器用于提取图数据中的特征。
图卷积神经网络——GCN的原理_第4张图片
当然此处embedding的含义我还没有理解,如果有了解的朋友可以于评论区告诉我。
图卷积神经网络——GCN的原理_第5张图片

其他一些关于GCN的细节

  • 对于很多网络,我们可能没有节点的特征,这个时候可以使用GCN吗?答案是可以的,如论文中作者对那个俱乐部网络,采用的方法就是用单位矩阵 I 替换特征矩阵 X。
  • 我没有任何的节点类别的标注,或者什么其他的标注信息,可以使用GCN吗?当然,就如前面讲的,不训练的GCN,也可以用来提取graph embedding,而且效果还不错。
  • GCN网络的层数多少比较好?论文的作者做过GCN网络深度的对比研究,在他们的实验中发现,GCN层数不宜多,2-3层的效果就很好了。(当然也有形如ResNet这种深达百层的网络,但是ResNet的处理方法很巧妙,像是加了一个桥。否则深达百层的NN会不可避免地出现过拟合等状况)

你可能感兴趣的:(深度学习,异常检测)