初探图卷积网络(GCN)
冒泡!小李又上线啦!拖延晚期终于要更新上周末没有更的了~
福州降温啦,大家要注意保暖鸭!
图卷积网络是之前就很想写的,一直被拖延,今天就简单记录一下哈。
——————————————
图卷积网络(GCN)
正式探讨之前,先解释一个问题:
为什么传统的卷积神经网络不能直接运用到图上?还需要设计专门的图卷积网络?
简单来说,卷积神经网络的研究的对象是限制在Euclidean domains的数据。什Euclidean data最显著的特征就是有规则的空间结构,比如图片是规则的正方形栅格,或者语音是规则的一维序列。而这些数据结构能够用一维、二维的矩阵表示,卷积神经网络处理起来很高效,[画个重点,这是要规则的、是序列的、可以用矩阵表示的。]但是,我们的现实生活中有很多数据并不具备规则的空间结构,称为Non Euclidean data。比如推荐系统、电子交易、计算几何、脑信号、分子结构等抽象出的图谱。这些图谱结构每个节点连接都不尽相同,有的节点有三个连接,有的节点有两个连接,是不规则的数据结构.
从更深的层面去理解,那我们需要区分两个概念:传统卷积的图像(欧式空间)与图(非欧空间)的区别。如果把图像中的每个像素点视作一个结点,如下图左侧所示,一张图片就可以看作一个非常稠密的图;下图右侧则是一个普通的图。阴影部分代表卷积核,左侧是传统的卷积核,右侧则是图卷积核。 仔细观察两个图的结构,可以发现:
1.在图像为代表的欧式空间中,结点的邻居数量都是固定的。比如说绿色结点的邻居始终是8个。在图这种非欧空间中,结点有多少邻居并不固定。目前绿色结点的邻居结点有2个,但其他结点也会有5个邻居的情况。
2.欧式空间中的卷积操作实际上是用固定大小可学习的卷积核来抽取像素的特征。但是因为邻居结点不固定,所以传统的卷积核不能直接用于抽取图上结点的特征。
画个重点:难点聚焦于邻居结点数量不固定上。
目前主流的研究从2条路来解决这件事:
1.提出一种方式把非欧空间的图转换成欧式空间。
2.找出一种可处理变长邻居结点的卷积核在图上抽取特征。
这实际上也是图卷积神经网络的设计原则:
图卷积的本质是想找到适用于图的可学习卷积核。举个例子:
社交网络非常适合用图数据来表达 上面的图谱刻画社交网络中各个节点以及它们之间的关系,这是不规则的形状,邻居节点也不固定。用户A、用户B、帖子都是节点,用户与用户之间的关系是关注,用户与帖子之间的关系可能是发布或者转发。通过这样一个图谱,可以分析用户对什么人、什么事感兴趣,进一步实现推荐机制。
总结一下图的一些特征:
1.图中的每个节点都有自己的特征信息。
2.图谱中的每个节点还具有结构信息
(具体来说就是节点与节点之间相连的信息)。
3.图的形状不规则,邻居节点不固定。
图卷积
进入正题,图卷积就是对图数据进行深度学习的一种模型方法。
第一步 第二步 第三步
具体的算法过程分为三步:
第一步:发射
每一个节点将自身的特征信息经过变换后发送给邻居节点。这一步是在对节点的特征信息进行抽取变换。
第二步:接收
每个节点将邻居节点的特征信息聚集起来。对节点的局部结构信息进行融合。
第三步:变换
把前面的信息聚集之后做非线性变换,增加模型的表达能力。
动图表示:
那么可以发现,第一步发射和第二步的接收其实是一个相互的过程,先发射信息进行信息的抽取然后再信息融合。
图卷积网络的性质:
1、局部参数共享,处处共享。
2、感受域正比于层数,最开始的时候,每个节点包含了直接邻居的信息,再计算第二层时就能把邻居的邻居的信息包含进来,这样参与运算的信息就更多更充分。层数越多,感受域就更广,参与运算的信息就更多。
网络模型
如图所示,输入的是整张图,在Convolution Layer 1里,对每个结点的邻居都进行一次卷积操作,并用卷积的结果更新该结点;然后经过激活函数如ReLU,然后再过一层卷积层Convolution Layer 2与一词激活函数;反复上述过程,直到层数达到预期深度。与GNN类似,图卷积神经网络也有一个局部输出函数,用于将结点的状态(包括隐藏状态与结点特征)转换成任务相关的标签,比如水军账号分类,本文中笔者称这种任务为Node-Level的任务;也有一些任务是对整张图进行分类的,比如化合物分类。卷积操作关心每个结点的隐藏状态如何更新,而对于Graph-Level的任务,它们会在卷积层后加入更多操作。
关于GNN可参考
:从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一)
假设我们手头有一批图数据,其中有N个节点(node),每个节点都有自己的特征,我们设这些节点的特征组成一个N×D维的矩阵X,然后各个节点之间的关系也会形成一个N×N维的矩阵A,也称为邻接矩阵(adjacency matrix)。X和A便是我们模型的输入,在这个网络模型里面层与层之间的传播方式如下:
这个公式中:
- A波浪=A+I,I是单位矩阵
- D波浪是A波浪的度矩阵(degree matrix),公式为 3.H是每一层的特征,对于输入层的话,H就是X
4.σ是非线性激活函数
注意,这个部分,是可以事先算好的,因为D波浪由A计算而来,而A是我们的输入之一。
图卷积算子(设中心节点为i)
GCN模型同样具备深度学习的三种性质:
1、层级结构(特征一层一层抽取,一层比一层更抽象,更高级);
2、非线性变换 (增加模型的表达能力);
3、端对端训练(不需要再去定义任何规则,只需要给图的节点一个标记,让模型自己学习,融合特征信息和结构信息。)
GCN特征:
1、GCN 是对卷积神经网络在 graph domain 上的自然推广。
2、它能同时对节点特征信息与结构信息进行端对端学习,是目前对图数据学习任务的最佳选择。
3、图卷积适用性极广,适用于任意拓扑结构的节点与图。
具体应用可以参考:
浅析图卷积神经网络
————————
Ending~
搬砖结束!