CNN已经在计算机视觉(CV)以及自然语言处理等领域取得了非常好的水平,其中的数据可以被称作是一种Euclidean Data,CNN正好能够高效的处理这种数据结构,探索出其中所存在的特征表示。所谓的欧氏(欧几里德)数据指的是类似于grids, sequences… 这样的数据,例如图像就可以看作是2D的grid数据,语音信号就可以看作是1D的grid数据。但是现实的处理问题当中还存在大量的 Non-Euclidean Data,如社交多媒体网络数据,化学成分结构数据,生物基因蛋白数据以及知识图谱数据等等,这类的数据属于图结构的数据(Graph-structured Data)。
图结构数据
如果数据看起来像这样该怎样利用深度学习,
一个简单的方法:
· 求邻接矩阵A和特征矩阵X
· 串联Xin=[A,X]
· 输入全连接神经网络
缺点:
·参数数量过大
·图形变化需重新训练
为什么研究GCN?
1.CNN无法处理Non Euclidean Structure的数据,学术上的表达是传统的离散卷积在Non Euclidean Structure的数据上无法保持平移不变性。也就是说在拓扑图中每个顶点的相邻顶点数目都可能不同,那么也就无法用一个同样的尺寸的卷积核来进行卷积运算。
2.CNN无法处理Non Euclidean Structure的数据,又希望在拓扑图上有效的提取空间特征来进行学习,所以GCN成为研究重点。
3.数据不是拓扑结构的网络时,也会用到GCN。广义上来讲任何数据在赋范空间内都可以建立拓扑关系,谱聚类就是这样的思想。
两种主流方式来提取拓扑图的空间特征:基于空间域 :Learning Convolutional Neural Networks for Graphs ——ICML 2016
为了能够对任意结构的图进行卷积操作,这篇文章提出了PATCHY-SAN (Select-Assemble-Normalize)的方法,通过三个步骤构建卷积分片:1.从图中选择一个固定长度的节点序列;2.对序列中的每个节点,收集固定大小的邻域集合;3.对由当前节点及其对应的邻域构成的子图进行规范化,作为卷积结构的输入。通过上述三个步骤构建出所有的卷积片之后,利用卷积结构分别对每个分片进行操作。具体示意图如下图所示。
总体上讲,就是用w个固定size=k的子图来表示输入的graph,再将这w个子图正则化后,生成一个w*k维的向量,作为传统的CNN的输入,进行学习。其实就是做了一个从graph到向量的映射的一个预处理过程。
具体构建卷积分片的步骤:
1.节点序列选择:为对图中所有的节点进行标号排序,将图中的节点集合根据向心性(节点的度、中心度等)映射为有序的节点序列。从该序列中根据一定的间隔s隔段选取w个节点构成最终的节点序列。
2.邻域节点收集:对于上一步获得的节点序列中的每一个节点,利用广度优化搜索扩展邻域节点,和源节点一起构成一个k大小的邻域集合。
3.子图规范化:对邻域集合中的各节点标号排序,得到接受域。那么,对于节点的属性,k个节点属性值构成了一个输入通道,对于边的属性,k^2个属性值也构成了一个输入通道。我们可以分别用一维的卷积层来处理这两种输入通道(对于节点属性卷积层长度为k,对于边属性卷积层长度为k^2)。
香港中大-商汤科技联合实验室的最新 AAAI 会议论文“Spatial Temporal Graph Convolution Networks for Skeleton Based Action Recognition”提出了一种新的 ST-GCN,即时空图卷积网络模型,用于解决基于人体骨架关键点的人类动作识别问题。该方法除了思路新颖之外,在标准的动作识别数据集上也取得了较大的性能提升。
ST-GCN 的基础是时空图结构。大致步骤:
·构建时空图(包括相邻关键点的连接关系或身体部件等,如手-手肘-肩膀的连接关系)。
·图结构上的卷积网络
2. 基于频谱域 :借助图谱的理论来实现拓扑图上的卷积操作 Spectral Networks and Deep Locally Connected Networks on Graphs ——NIPS 2014
对于图G=(V,E),其中Laplacian矩阵的定义为L=D-A,其中L是Laplacian矩阵,D是顶点的度矩阵(对角矩阵),对角线上的元素依次为各顶点的的度,A是图的邻接矩阵。
Symmetric normalized Laplacian:
,很多GCN的论文中应用的是这样的拉普拉斯矩阵。
对于拉普拉斯矩阵进行谱分解为:
所以特征分解可以写成:
特征分解最右边的特征矩阵的逆,只是拉普拉斯的性质可以写成特征矩阵的转置
卷积定理:函数卷积的傅里叶变化是函数傅里叶变化的乘积,即对于函数f(t)与h(t)两者的卷积是其函数傅里叶变换乘积的逆变换:
类比到Graph上并把傅里叶变换的定义带入,f与卷积核h在Graph上的卷积可以由下面步骤得到:
f的傅里叶变换为
卷积核h的傅里叶变换写成对角矩阵的形式
两者的傅里叶变换乘积即为
这种参数方法缺点:每一次前向传播,都要计算U,diag(θl)以及UT三者的乘积,特别是对于大规模的graph,计算代价较高,也就是论文中的O(n2)的计算复杂度
卷积核需要n个参数