Press "Enter" to skip to content

网络上的CNN-图卷积网络模型

前置知识:需要大致了解卷积神经网络(CNN),以及具备一定的线性代数功底

 

本篇文章主要是介绍图卷积神经网络。也就是将卷积神经网络的方法用在“图”这种数据上。

 

什幺是图数据 / 为何要处理图数据

 

首先,虽然以及在前面发布的两篇文章中都说到了,但还是想再次重申,处理图数据的重要性。

 

当前机器学习技术在各个领域都发展的非常好,尤其在图像和语言领域,代表的经典模型有CNN和RNN,以及基于它们的其他扩展模型,他们在图片识别,语音识别等任务上都取得了非常好的效果。

 

然而,这些模型都是作用于规则的欧式数据——图像是规则的二维晶格数据,文本或者声音都是规则的一维序列数据。离开了这些规则的数据之后,这些模型就很难再有很好的表现。而我们日常遇到的,其实更多是不规则的非欧式几何数据,社交网,交通网,电路网,大脑神经系统,天气系统等等等等,我们迫切地需要更好的方法去处理这些数据,完成更复杂的任务。

图1:左边两张语音、文本和图像是欧式数据,右侧的四张是非欧数据

 

对于不规则的数据,也有一些传统的方法可以进行处理。但是目前都仅仅局限于小数据集上,一旦数据量达到一定的规模,传统方法就会非常难以处理。而有了深度学习的方法之后,大家就开始思考如何将深度学习应用在对不规则数据的处理上。近几年也有非常多的研究。这类研究还有一个名字叫做 Geometric deep leaning 。像这篇文章就是对处理非欧数据做了一个综述。

 

Geometric deep leaning:going beyond Euclidean data

 

根据这篇文章,非欧数据可以分成流型数据和图数据。那幺因为我们一直都是关注复杂网络,所以对流型数据并不是很关注,主要的关注点在于对图结构数据,也就是网络数据的研究。

 

机器学习在图数据的应用

 

将机器学习的方法应用在图结构数据研究上,当然首先想到的就是对经典RNN和CNN的扩展。

 

首先简单提一下对RNN的扩展。下面这篇文章是16年有人提出来了Gated Graph Sequence Neural Networks,是根据RNN的思路来对图结构的数据进行处理,它将图上面的每一个节点都处理成一个神经元。用RNN来处理的一个优点是,它擅长处理时序性数据。缺点就是对于很大型的网络,它的效率很低。

 

Gated Graph Sequence Neural Networks

 

我们团队主要关注的是使用CNN的思路来处理图数据,这个研究相对来说关注的人也很多,方法的效果也更好。所以接下来就介绍一下如何用CNN的方法来处理图结构数据,也就是我们说的graph convolutional network(GCN,图卷积神经网络)。

 

CNN在图上的应用

 

接下来我们会具体围绕下面这篇论文展开对GCN的介绍,这是一篇关于GCN理论基础的文章。主要解决了如何在拓扑图中定义卷积操作。

 

convolutional neural networks on graph with fast localized spectral filtering

 

文章背景

 

CNN主要是用于图像的分类。以手写体数据集MINIST为例,输入一张图片,模型会告诉你图片上的是哪一个数字(分类),CNN在图像分类任务上的精度非常高。同时CNN还可以做一些识别或者检测任务,效果也都很不错。

 

在这篇文章中,最后的实验是使用GCN在MINIST数据集(手写体数据集)上做了基础的分类任务。网络分类和节点分类。其中网络分类任务的输入是多个网络,最后输出这每个网络的对应的类别;节点分类任务的输入是一个网络,最终输出网络中的节点各自的所属标签。

下面我们就来说明GCN是怎样工作的。

 

因为GCN可以说是CNN的扩展,所以我们先来简单看一下CNN的网络架构。

图2. CNN架构图

 

对于一个在CNN执行的分类任务:

输入是图片,输出是每张图片对应的类别。
上图中间一层一层的操作,就是在不断地进行卷积(convolution) + 池化(pooling)的过程。
卷积是为了强化图像特征信息,池化是在保留图像特征的前提下,提取特征,减少维度。
最后是几个全连接层,映射为输出。

整个过程最关键的,就是使用卷积核进行的卷积操作,以及池化的过程。

 

首先卷积层,是定义了一个卷积核( Filter)。卷积核会对图片进行不断的扫描,和扫描到的区域做卷积操作,最终得到一个结果可以看成是这张图的特征。卷积操作有助于我们找到特定的局部图像特征(如边缘) www.zhihu.com/question/49…

图3.卷积操作。把图像特征使用定义的卷积核进行特征强化。而为了保证维度不变,所以会在提取前的像素四周补0。

图4.卷积之后的示意

 

池化层可以理解为对图片做一个缩小的操作。目的是在保留原图特征的前提下,减少图像特征维度,降低训练参数数量级,同时也排除掉图像中的冗余信息。

图5.池化操作。通常使用平均值,最大值、最小值等简单操作完成

 

说完了CNN,我们再来看看这篇文章中的GCN是怎样的一个架构。同样的我们在它上面执行一个分类任务

图6.GCN架构图

 

GCN输入和输出:

 

类比图像中的每像素点会有的灰度值,图数据中每个节点也会带有一个“信号值”作为节点的特征。所以在GCN的分类任务里,如果是节点分类任务,那幺输入的是整张图,即图中所有节点及其信号值,输出的内容,就是每个节点的分类信息;如果是图分类任务,输入的则是一堆图(包含图的信号值),输出的是每张图对应的分类信息。

 

我们这里以节点分类任务为例,再来形象的来看一下,这里的“信号”是如何传递的。

图7.GCN的输入示意

 

如上图所示,每一个红色的点代表网络网络中的一个节点。蓝色的小柱子代表节点携带的信号。每一个节点都有一个属于自己的信号值,也就是节点状态。这个状态可以转化为一个向量来表示。假设网络中有n个节点,表示节点状态的向量是d维,那幺模型的输入是所有节点的信号值,就意味着输入是一个大小是 n * d 的矩阵。

 

对应的输出,就是每个节点代表的类别(label),每个类别也可以使用一个向量表示,假设l类别的输出是d’,那幺输出的就是一个大小为 n * d' 矩阵。模型要做的,就是要把输入映射成输出。

 

图上的卷积操作

 

GCN的卷积,目的和CNN的卷积是类似的,是为了提取输入节点的特征。在图卷积操作中,同样也定义了一个卷积核filter。而这个步骤和CNN最大不同之处在于,图像每个晶格周围链接固定大小的节点,所以CNN的filter可以是固定尺寸的。而在非欧数据中,节点的度大小不尽相同,对于GCN来说,首要任务就是定义出一个可以完成提取特征任务的“卷积核”。

 

在这里,主要是受到图信号处理领域的启发,利用图谱的理论去实现拓扑图上的卷积。研究者们提出可以把图上的卷积,理解为傅立叶变换在时域上的卷积,对于傅立叶变化来说,时域上的卷积计算,就可以将信号转化到频域上再直接进行相乘。

 

傅立叶变换:把x轴上的周期信号,分解为多个波函数的线性求和(离散的话就是求和,连续的话就是求积分),这就是一个傅立叶变换的过程(谱分解)

上图是傅立叶变换的图示(谱分解),以及傅立叶变换的公式,f(X)可以被分解为多个f(λ) 乘以基函数

 

两个函数做卷积其实用他们的傅立叶变换(逆变换)表示

这里的f和h代表的是两个要做卷积的函数,那幺他们的卷积操作,就可以表示成f函数的傅立叶变换(逆变换),乘上h函数的傅立叶变换(逆变换)。

 

现在我们再回到CNN中的卷积,我们就可以根据这种理解,将卷积核在图像上游走的卷积过程,看成是原图的傅立叶变换与卷积核的傅立叶变换的乘积。

 

这样有什幺好处呢?其实这就意味着,我们不需要像在图像任务中一样,去定义一个显示卷积核,只需要找出卷积核函数的逆傅立叶变换就可以了。

 

更多谱分解的数学原理,可以阅读这篇论文。

 

The Emerging Field of Signal Processing on Graph

 

本文在这里引入了图谱的理论,主要参考了Kpif的GraphConvNet中对卷积的定义,用了切比雪夫多项式来定义的filter。之后还演化出了很多关于图卷积的定义,不过基于图谱的卷积定义依然是经典,之后我们所说的GCN,就特指kipf基于之前的工作,提出的一种基于谱分解的图卷积方法,并且在下游分类任务中取得了非常好的效果。

 

GraphConvNet:kipf, Welling 2016

 

Semi-Supervised Classification With Graph Convolutional Network

 

粗粒化、池化

 

接着就是池化和粗粒化。这里的两个步骤,相当于CNN中的池化操作,目的是为了保留特征的同时提高训练效率。粗粒化可以理解为对图的结构进行精简,这里是使用了Graclus算法,通过比对节点的权重,找出相似的节点进行融合,得到一张新的图,新的图可以认为保留了原图的结构信息。然后再对节点信号进行融合和聚类,即池化的步骤,将节点信号融入精简之后的图上。

图。Graclus算法示意

图上的粗粒化和池化操作。先固定图的大小(新图大小是一个超参),再对相似节点进行聚合,得到一张新的图。以此类推,完成粗粒化和池化的过程

 

GCN的效果

 

GCN可以认为是对CNN的泛化,使其不仅仅局限于在图像领域应用,还能扩展到结构更复杂,数据更庞杂的网络,从而能够完成更多的任务。

 

之后更多对GCN的研究和扩展都表明了,GCN不仅仅在图像领域效果达到了CNN的水平,比如本文的实验是把GCN这个方法用在了MINIST数据集上(手写体数据集),和CNN对比后发现二者在识别任务中的精度相差无几。

上图是在MINIST数据集上,graph CNN和经典CNN的表现对比

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注