第二代图卷积网络:应用快速局部谱卷积的图卷积网络

论文标题:Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
论文链接:https://arxiv.org/abs/1606.09375
论文来源:NeurIPS 2016

之前的文章:
傅里叶级数与傅里叶变换
图神经网络中的谱图理论基础
第一代图卷积网络:图的频域网络与深度局部连接网络

一、概述

在将CNN泛化到图数据上的一个主要的瓶颈在于局部图卷积核的定义。本文在第一代图卷积神经网络上进行改进,定义了第二代图卷积神经网络,主要的贡献如下:
①谱图理论表达式:一种基于图信号处理(Graph Signal Processing,GSP)中已建立的工具的图上卷积神经网络的谱图理论公式。
②严格局部化的卷积核:本文提出的卷积核在中心节点的以K为半径的最短路径内是严格局部化的。
③低计算复杂度:本文提出的卷积核的复杂度是和卷积核的尺寸K以及边的数量|\varepsilon |成线性关系的,另外由于大多数图稀疏的,我们可以估计地认为|\varepsilon |\ll n^{2}并且|\varepsilon |=kn,也就是每个节点只和k个近邻有边,这样复杂度就和节点数量n成线性关系。另外本方法避免了使用傅里叶基底,因此不再需要进行昂贵的特征值分解以及存储傅里叶基底(使用一个n^2大小的矩阵)。除了数据,本方法只需要存储拉普拉斯矩阵这个包含|\varepsilon |个非零值的稀疏矩阵。
④高效池化:本文提出了一种图上的高效池化策略。
⑤实验结果:通过实验证明了方法的有效性,并与其他方法进行了对比。

二、方法

将CNN泛化到图上需要3个基本步骤:
①设计图上的局部卷积核;
②图的粗化(coarsening);
③图的池化(pooling)。

  1. 学习快速局部谱卷积核

定义图卷积核的方法分空域(spatial)和频域(spectral)两种。空域的方法可以通过定义有限大小的卷积核来确保卷积核的局部性。卷积定理将卷积定义为在傅里叶基底(表示为拉普拉斯矩阵的特征向量)中对角化的线性算子,频域方法应用这一定理,然而频域卷积核存在两个限制:
①频域卷积核并非天然局部化;
②由于需要与图傅里叶基底相乘,会产生O(n^2)的复杂度,转换成本很高。在本文中上述两个限制可以通过特殊的卷积核参数化选择来克服,这也是本文的主要内容之一。

  • 图信号的谱卷积核

图信号的卷积操作无法在空域完成,不过通过卷积定理可以定义频域的卷积操作,假设有图记作G,并且两个图信号xy的卷积操作记作*_{G},即:

x\, *_{G}\, y=U((U^{T}x)\odot (U^{T}y))

这里的U指图的拉普拉斯矩阵的特征向量矩阵,U的每一列都是一个特征向量,\odot代指哈达玛积。同样的,一个图信号xg_{\theta }所卷积后得到的结果y可以表示为:

y=g_{\theta }(L)x=g_{\theta }(U\Lambda U^{T})x=Ug_{\theta }(\Lambda )U^{T}x

这里的\Lambda是特征值的对角矩阵。一个非参数化(non-parametric)的卷积核,也就是说它的参数全部都是自由参数,被定义为:

g_{\theta }(\Lambda )=diag(\theta )

这里\theta \in \mathbb{R}^{n},是一个傅里叶系数向量,其实可以理解为卷积核与U相乘后的结果,这个结果的每一维相当于这一维对应的特征向量的系数。

  • 局部卷积核的多项式参数化

前述非参数化的卷积核有两个局限性:
①这样的卷积核在空间上不是局部化的;
②他们的学习复杂度是O(n)

这些局限性可以通过采用多项式卷积核来解决:

g_{\theta }(\Lambda )=\sum_{k=0}^{K-1}\theta _{k}\Lambda ^{k}

这里的\theta \in \mathbb{R}^{K},是多项式的系数向量,是要学习的参数。此时,图信号xg_{\theta }所卷积后得到的结果y为:

y=U\left (\sum_{k=0}^{K-1}\theta _{k}\Lambda ^{k}\right )U^{T}x\\ =\left (\sum_{k=0}^{K-1}\theta _{k}U\Lambda ^{k}U^{T}\right )x\\ =\sum_{k=0}^{K-1}\theta _{k}L^{k}x

有文献可以证明,当d_{G}(i,j)>K时有(L^{K})_{i,j}=0d_{G}代表最短路径距离,也就是图中连接两个顶点的最小的边的数量。也就是说这样的卷积核是严格K-localized的。另外,需要学习的参数复杂度为O(K),与CNN相同。

总结来说,这样设计的卷积核有以下特点:
①卷积核只有K个参数,一般K\ll n,参数复杂度大大降低了;
②不需要进行拉普拉斯矩阵的特征分解了,直接用拉普拉斯矩阵L进行变换,然而由于要计算L^k,计算复杂度还是O(n^3)
③卷积核具有很好的空间局部性,具体来说,K就是卷积核的感受野,也就是说每次卷积会将中心顶点K-hop neighbor上的feature进行加权求和,权系数就是\theta _{k}

  • 应用递归多项式的快速卷积

非参数化的卷积核的复杂度较高,并且上述多项式卷积核的计算复杂度仍然是比较高的,本小节介绍的卷积核应用切比雪夫多项式,能够实现O(K|\varepsilon |)的复杂度。设计的思想是将g_{\theta }(L)参数化为一个可由L递归计算的多项式函数,这样的多项式可以采用切比雪夫多项式,如下:

T_{0}(x)=1\\ T_{1}(x)=x\\ T_{k}(x)=2xT_{k-1}(x)-T_{k-2}(x)

这里需要x[-1,1]之间,不熟悉切比雪夫多项式的读者可以自行百度。利用切比雪夫多项式,卷积核可以设计为:

g_{\theta }(\Lambda )=\sum_{k=0}^{K-1}\theta _{k}T_{k}(\widetilde{\Lambda })

这里的\theta是切比雪夫系数向量,也就是需要学习的参数。T_{k}(\widetilde{\Lambda })\in \mathbb{R}^{n\times n}k阶的切比雪夫多项式,\widetilde{\Lambda }=2\Lambda /\lambda _{max}-I_{n},这样可以将特征值标准化到[-1,1]之间。如此卷积操作就是下面这样的过程:

y=g_{\theta }(L)x=\sum_{k=0}^{K-1}\theta _{k}T_{k}(\widetilde{L})x

上式的推导过程很简单就不赘述了,这里的\widetilde{L}\in \mathbb{R}^{n\times n}也就是标准化以后的L,即\widetilde{L}=2L/\lambda _{max}-I_{n}

\overline{x}_{k}记作\overline{x}_{k}=T_{k}(\widetilde{L})x\in \mathbb{R}^{k},同样地也可以利用递归关系去计算\overline{x}_{k}=2\widetilde{L}\overline{x}_{k-1}-\overline{x}_{k-2},此时\overline{x}_{0}=x,\overline{x}_{1}=\widetilde{L}x,此时卷积的过程又可以表示为:

y=g_{\theta }(L)x=[\overline{x}_{0},\cdots ,\overline{x}_{K-1}]\theta

这样设计的卷积过程的复杂度为O(K|\varepsilon |)。对比上一小节的多项式卷积核,这里利用切比雪夫多项式设计的卷积核不再需要计算L^k,而只是利用仅包含加减操作的递归关系来计算T_{k}(\widetilde{L}),这样大大减少了计算的复杂度。

  • 卷积核的学习

在一个卷积层中,一个样本s的第j个feature map的输出为:

y_{s,j}=\sum_{i=1}^{F_{in}}g_{\theta _{i,j}}(L)x_{s,i}\in \mathbb{R}^{n}

x_{s,i}是输入的feature map,总计有F_{in}\times F_{out}个向量\theta _{i,j},这些是需要学习的参数向量。

另外在训练时需要计算两个梯度:

\frac{\partial E}{\partial \theta _{i,j}}=\sum_{s=1}^{S}[\overline{x}_{s,i,0},\cdots, \overline{x}_{s,i,K-1}]^{T}\frac{\partial E}{\partial y_{s,j}}\\ \frac{\partial E}{\partial x_{s,i}}=\sum_{j=1}^{F_{out}}g_{\theta _{i,j}}(L)\frac{\partial E}{\partial y_{s,j}}

E是损失函数,由于采用多项式卷积核,不同阶直接是累加关系,因此无论是计算E\theta还是x的梯度,都只需要先计算Ey的梯度,再利用累加关系很方便地就能得到最终结果,因此应用反向传播算法学习参数是可行的,在并行运算时也是高效的。还有一点就是[\overline{x}_{s,i,0},\cdots, \overline{x}_{s,i,K-1}]只需要计算一次。

  1. 图的粗化

池化操作需要将相似的节点聚类到一起,对于多层网络来说做到这一点相当于对需要保持局部几何结构的图进行多尺度聚类(multi-scale clustering)。图的聚类方法存在多种,比如常见的谱聚类方法(参考链接:谱聚类|机器学习推导系列(二十))。在本文的方法中没有采用谱聚类这种方法,而是选择了一种近似能够将图的规模除以2的聚类方法,这样的方法可以精确控制粗化和池化的size。本文采用的图粗化方法为Graclus多尺度聚类算法。

Graclus方法采用一种贪婪的方法来计算给定图的连续的粗化的版本,并且能够最小化多种谱聚类的目标,在这里选择的目标为normalized cut。具体的方法是在每层进行粗化时,选择一个未标记的节点i,然后选择一个能够最小化W_{ij}(1/d_{i}+1/d_{j})的未标记的邻居节点,然后将这两个节点标记,这两个匹配的节点在池化时被合并,合并节点的信号是这两个节点的信号加和。上述匹配的过程一直进行下去知道所有节点被遍历。这种方法是非常快速的,并且能够将图的规模近似除以2,之所以近似是因为可能有一些未匹配的节点(文中称为singleton节点)。

  1. 图信号的快速池化

池化操作被执行多次,所以必须是高效的。输入的图和粗化图的节点的排列方法是无意义的,因此,一个直接的池化操作的方法是需要一张表来保存匹配的节点,然而这种方法是内存低效的,并且缓慢,也不能并行处理。本文采用的方法可以使得池化操作像1D池化那样高效。

本文采用的方法分两个步骤:
①创建一个平衡二叉树;
②重排列所有节点。

在进行图的粗化以后,粗化图的每个节点要么有两个子节点(被匹配到的节点),要么只有一个节点(singleton节点)。从最粗到最细的图,将会添加fake节点(不与图连接在一起)到每一层来与singleton节点进行匹配。这样的结构是一个平衡二叉树,主要包含3种节点:
①regular节点(或者singleton节点),拥有两个regular子节点(如下图 level 1节点0);
②regular节点(或者singleton节点),拥有一个regular节点和一个singleton节点座位子节点的节点(如下图 level 2节点0);
③fake节点,总是拥有两个fake子节点(如下图 level 1节点1)。

fake节点的值初始化通常选择一个中性的值,比如当使用max pooling和ReLU激活函数时初始化为0。这些fake节点不与图的节点连接,因此卷积操作不会影响到它们。虽然这些节点会增加数据的维度,这样会增加计算的花费,但是在实践中证明Graclus方法所剩下的singleton节点是比较少的。在最粗化的图中任意排列节点,然后传播回最细的图中,这是由于粗化图中第k的节点的子节点是上一层图中的2k2k+1节点,这样就可以在最细的图中有一个规范的排列顺序,这里规范是指相邻节点在较粗的层次上分层合并。这种pooling方法类似1D pooling。这种规范的排列能够让pooling操作非常的高效且可以并行化,并且内存访问是local的。下图是这种方法的一个例子:

pooling

三、实验

这里简单列几个实验结果,具体实验设置可以自行参考原论文。

  1. MNIST数据集上对比经典CNN
MNIST数据集上对比经典CNN
  1. 20NEWs数据集上多种架构效果
20NEWs数据集上多种架构效果
  1. MNIST数据集上多种卷积核的对比

下图中Non-Param和Spline代表第一代GCN论文中提出的两种卷积核,Chebyshev代表本文提出的卷积核:

MNIST数据集上多种卷积核的对比
  1. GPU加速效果对比

下图表明本文提出的GCN结构在使用GPU加速时比经典CNN能获得更多的加速倍数,说明该架构的并行化处理能力是比较可观的:

GPU加速效果对比
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容