论文:Large-Scale Learnable Graph Convolutional Networks?,
代码:https://github.com/divelab/lgcn/

摘要

卷积神经网络在网格数据上取得了很大的成功,但是在学习像图这样的数据的时候就面临着很多的挑战。CNN中,可学习的局部滤波器可以自动地捕获高层次的特征。滤波器的计算需要感受野内有固定数量的单元。然而,在图结构中,邻居单元的数量不固定,而且邻居也不有序,所以阻碍了卷积的操作。我们提出了可学习图卷积层(learnable graph convolutional layer LGCL)来解决这些挑战。基于值的排序,LGCL为每个特征自动地选择固定数量的邻居结点,以此将图结构数据变换到1维的网格结构中,然后就可以在图上使用常规的卷积操作了。为了能让模型在大尺度的图上训练,我们提出了一个子图训练方法来减少过多的内存和计算资源的开销。在顶点分类任务上,不论是transductive 还是 inductive,表现得都更好一些。我们的结果展示出了我们的子图训练方法比前人的方法更高效。

3 方法

3.1 在图数据上应用卷积运算的挑战

为了让传统的卷积操作可以应用在图上,需要解决两个图结构数据和网格数据的差异。首先,顶点的邻居数量通常会变化。其次,我们不能对邻居顶点进行排序,因为他们没有可供排序的信息。举个例子,社交网络中,每个人都可以看作是一个顶点,边表示人与人之间的关系。显然,每个顶点的邻居顶点数量是不同的,因为人们可以有不同数量的朋友。而且,如果没有额外的信息,很难对他们进行排序。

网格数据可以看作是一种特殊的图结构数据,每个顶点有固定数量的邻居。因为卷积操作是直接应用在图像这样的网格数据上。为了看清楚固定邻居数量以及排序信息的重要性,我们举个例子,有一个 3×33\times 33×3 的卷积核,扫描一张图像。我们将这张图片考虑成一个特殊的图,每个像素是一个顶点。在扫描的过程中,计算包括了中心结点和周围8个邻居结点的计算。这8个顶点在这个特殊的图中通过边连接到中心结点。与此同时,我们使用他们和中心结点的相对位置对他们排序,这对于卷积操作很重要,因为在扫描的过程中,滤波器的权重和图中的顶点要一一对应。举个例子,在上面的例子中, 3×33\times 33×3 的卷积核,左上角的权重应该总是对应中心节点左上方的邻居结点。没有这样的排序信息,卷积的输出结果就不再是确定的。从刚才的讨论中可以看到传统卷积在图结构数据上应用的挑战。为了解决这两个挑战,我们提出了一个方法将图结构数据变换到网格数据内。

3.2 可学习的卷积层(LGCL)

为了让传统卷积可以在图上可用,我们提出了LGCL。LGCL的layer-wise传播规则写为:
X~l=g(Xl,A,k),Xl+1=c(X~l)(3)\tag{3} \tilde{X}_l = g(X_l, A, k),\\ X_{l+1} = c(\tilde{X}_l)X~l​=g(Xl​,A,k),Xl+1​=c(X~l​)(3)

其中, AAA 是邻接矩阵, g(⋅)g(\cdot)g(⋅) 使用了 kkk -largest Node Selection, 将图结构数据映射到网格结构, c(⋅)c(\cdot)c(⋅) 表示1维常规的CNN, 将顶点信息聚合, 为每个顶点输出 了一个新的特征向量。我们会在下面分开讨论 g(⋅)g(\cdot)g(⋅) 和 c(⋅)∘c(\cdot)_{\circ}c(⋅)∘​

kkk-largest Node Selection. 我们提出了一个新的方法称为 kkk -largest Node Selection, 将图结构映射到网格数据上, 其中 kkk 是LGCL的超参数。在这个操作之后,每个顶点的邻居信息聚合, 表示成一个有 (k+1)(k+1)(k+1) 个位置的1维的网格状。变换后的数据会输入到CNN中来生成新的特征向量。

假设有行向量 xl1,xl2,…,xlNx_{l}^{1}, x_{l}^{2}, \ldots, x_{l}^{N}xl1​,xl2​,…,xlN​ 的 Xl∈RN×CX_{l} \in \mathbb{R}^{N \times C}Xl​∈RN×C, 表示 NNN 个顶点的图,每个顶点有 CCC 个特征。邻接矩阵 A∈NN×N,kA \in \mathbb{N}^{N \times N}, \quad kA∈NN×N,k 为定值。顶点 iii 的特征向量是 xlix_{l}^{i}xli​, 它有 nnn 个邻居。通过在 AAA 中的一个简单查找,我们可以获得这些邻居结点的下标, i1,i2,…,in∘i_{1}, i_{2}, \ldots, i_{n_{\circ}}i1​,i2​,…,in∘​​ 对它们对应的特征向量 xli1,xli2,…,xlinx_{l}^{i 1}, x_{l}^{i_{2}}, \ldots, x_{l}^{i_{n}}xli1​,xli2​​,…,xlin​​ 进行拼接, 得到 Mli∈Rn×CM_{l}^{i} \in \mathbb{R}^{n \times C}Mli​∈Rn×C 。假设 n≥kn \geq kn≥k, 就没有泛化上的损失。如果 n<kn<kn<k, 我们可以使用全为0的列,给 MliM_{l}^{i}Mli​ 加padding。 kkk -largest node selection是在 MliM_{l}^{i}Mli​ 上做的:也就是, 对于每列,我们排出 nnn 个值,然后选最大的k个数。我们就可以得到一 个 k×Ck \times Ck×C 的输出矩阵。因为 MliM_{l}^{i}Mli​ 表示特征,这个操作等价于为每个特征选择k个最大值。通过在第一行插入 xlix_{l}^{i}xli​, 输出变为 M~li∈R(k+1)×C\tilde{M}_{l}^{i} \in \mathbb{R}^{(k+1) \times C}M~li​∈R(k+1)×C 。如图2左部分。通 过对每个顶点重复这个操作, g(⋅)g(\cdot)g(⋅) 将 XlX_{l}Xl​ 变为 X~l∈RN×(k+1)×C\tilde{X}_{l} \in \mathbb{R}^{N \times(k+1) \times C}X~l​∈RN×(k+1)×C 。

注意,如果将 N,(k+1),CN,(k+1), CN,(k+1),C 分别看作是batch size, spatial size, 通道数, 那么 X~l\tilde{X}_{l}X~l​ 可以看作是1维网格状的结构。因此, kkk 个最大顶点选择函数 g(⋅)g(\cdot)g(⋅) 成功地将图结构变换为网格结构。这个操作充分利用了实数的自然顺序信息, 使得 每个顶点有固定数量的有序邻居。

1-D Convolutional Neural Networks. 就像3.1节讨论的,传统的卷积操作可以直接应用到网格状的数据上。 X~l∈RN×(k+1)×C\tilde{X}_{l} \in \mathbb{R}^{N \times(k+1) \times C}X~l​∈RN×(k+1)×C 是1维的数据,我们部署一个 维CNN模型 c(⋅)∘c(\cdot)_{\circ}c(⋅)∘​ LGCL基本的功能是聚合邻居信息,为每个顶点更新特征。 后续的话, 它需要 Xl+1∈RN×DX_{l+1} \in \mathbb{R}^{N \times D}Xl+1​∈RN×D, 其中 DDD 是更新后的特征空间的维度。一维 CNN c(⋅)c(\cdot)c(⋅) 使用 X~l∈RN×(k+1)×C\tilde{X}_l \in \mathbb{R}^{N \times (k + 1) \times C}X~l​∈RN×(k+1)×C 作为输入, 输出一个 N×DN \times DN×D 的矩阵,或是 N×1×DN \times 1 \times DN×1×D 的矩阵。 c(⋅)c(\cdot)c(⋅) 可以将空间维度从 (k+1)(k+1)(k+1) 减小到 1 。

注意, NNN 看作是batch size, 与 c(⋅)c(\cdot)c(⋅) 的设计无关。结果就是, 我们只聚焦于一个 样本,也就是图中的一个顶点。对于顶点 iii, 变换得到的输出是 M~li∈R(k+1)×C\tilde{M}_{l}^{i} \in \mathbb{R}^{(k+1) \times C}M~li​∈R(k+1)×C 是 c(⋅)c(\cdot)c(⋅) 的输入。由于任何一个卷积核大于1且没有padding的卷积都会减少空间的大小,最简单的 c(⋅)c(\cdot)c(⋅) 只有一个卷积核大小为 (k+1)(k+1)(k+1) 的卷积, 没有 padding。输入和输出的通道数分别为 CCC 和 D∘D_{\circ}D∘​ 同时, 可以部署任意一个多层 CNN\mathrm{CNN}CNN, 得到最后的输出的维度是 1×D∘1 \times D_{\circ}1×D∘​ 图2右侧展示了一个两层CNN的例子。再对所有的 NNN 个顶点使用一次 c(⋅)c(\cdot)c(⋅), 输出 Xl+1∈RN×DX_{l+1} \in \mathbb{R}^{N \times D}Xl+1​∈RN×D 。总结一下,我们 的LGCL使用 kkk 最大顶点选择以及传统的一维CNN, 将图结构变换到网格数据, 实现了对每个顶点进行的特征聚合和特征过滤

3.3 可学习的图卷积网络

越深的网络一般会产生越好的结果。然而,之前在图上的深度模型,如GCN,只有两层。尽管随着深度的增加,它们的性能有有所下降[Kipf & Welling 2017],我们的LGCL可以构造的很深,构造出图顶点分类的可学习的图卷积网络。我们基于densely connected convolutional networks(DCNNs),构造了LGCNs,前者获得了ImageNet分类任务最好的成绩。

以上图为例:
(1) 第一层为图嵌入层:将输入节点的多通道特征进行降维,减少节点的通道数; 图嵌入层相当于 一层全连接层;
X1=X0W0X_{1}=X_{0} W_{0} X1​=X0​W0​
其中, X0∈RN×C0,X1∈RN×D0,W0∈RC0×D0,C0>D0X_{0} \in R^{N \times C_{0}}, X_{1} \in R^{N \times D_{0}}, W_{0} \in R^{C_{0} \times D_{0}}, C_{0}>D_{0}X0​∈RN×C0​,X1​∈RN×D0​,W0​∈RC0​×D0​,C0​>D0​ 。图中 C=2,D0=1∘C=2, D_{0}=1_{\circ}C=2,D0​=1∘​
(2) 第二层为LGCL层, 输入节点维度为 C1=D0C_{1}=D_{0}C1​=D0​,输出维度为 D1=1;D_{1}=1 ;D1​=1;
(3) 第三层为LGCL层, 输入为第二层LGCL的输出与输入的拼接,输入维度为 C2=2C_{2}=2C2​=2,输出维度 D2=1D_{2}=1D2​=1
(4) 第四层为全连接层, 输入为第三层LGCL的输出与输入的拼接,输入维度 C3=3C_{3}=3C3​=3,输出为节点的分类概率。

在LGCN中,我们先用一个图嵌入层来生成顶点的低维表示,因为原始输入一般都是高维特征, 比如Cora数据集。第一层的图嵌入层本质上就是一个线性变换,表示为:
X1=X0W0X_{1}=X_{0} W_{0} X1​=X0​W0​
其中, X0∈RN×C0X_{0} \in \mathbb{R}^{N \times C_0}X0​∈RN×C0​ 表示高维的输入, W0∈RC0×C1W_0 \in \mathbb{R}^{C_0 \times C_1}W0​∈RC0​×C1​ 将特征空间从 C0C_{0}C0​ 映射到了 C1C_{1}C1​ 。结果就是, X1∈RN×C1X_{1} \in \mathbb{R}^{N \times C 1}X1​∈RN×C1 和 C1<C0C_{1}<C_{0}C1​<C0​ 。或者,使用一个GCN层来做图嵌入。如第二部分描述的, GCN层中的参数数量等价于传统的图嵌入层中参数的数量。

在图嵌入层后,我们堆叠多个LGCL, 多少个取决于数据的复杂程度。因为每个LGCL只能聚合一阶邻居的信息, 也就是直接相连的邻居顶点, 堆叠LGCL可以从一个更大的顶点集中获得信息, 这也是传统CNN的功能。为了提升模型 的性能,帮助训练过程,我们使用skip connections来拼接LGCL的输入和输出。最后,在softmax激活前使用一个全连接层

就像LGCN的设计理念, kkk 以及堆叠的LGCL的数量是最重要的超参数。顶点的平均度是选择 kkk 的一个重要参数。LGCL的数量应该依赖任务的复杂度, 比如类别的个数,图的顶点数等。越复杂的模型需要越深的模型

3.4 大规模数据的子图训练

主要的思想是:将一个大型的图通过采样的方式确定初始的中心节点以及中心节点的邻域节点, 由这些节点可以组成原图数据的子图 (单个样本), 通过多次采样得到多个样本实现小批量训练。

大部分图上的深度学习模型都有另一个限制。在训练的时候,输入的是所有顶点的特征向量以及整个图的邻接矩阵。图的尺寸大的时候这个矩阵就会变大。这些方法在小尺度的图上表现的还可以。但是对于大尺度的图,这些方法一般都会导致内存和计算资源极大的开销,限制了这些模型的一些应用

其他类型的数据集也有相似的问题,比如网格数据。举个例子,图像分割上的深度模型通常使用随机切片的方式来处理大的图片。受到这种策略的启发,我们随机的将图“切分”,使用得到的小图进行训练。然而,尽管一张图片的一个矩形部分很自然地包含了像素的邻居信息。如何处理图中顶点的不规则连接还是一个问题。

我们提出了子图选择算法来解决大尺度图上计算资源的问题,如算法1所示。给定一个图,我们先采样出一些初始顶点。从它们开始,我们使用广度优先搜索算法,迭代地将邻接顶点扩充到子图内。经过一定次数的迭代后,初始顶点的高阶邻居顶点就会被加进去。注意,我们在算法1中使用一个简单的参数 NmN_mNm​ 。实际上在每个迭代中,我们将 NmN_mNm​ 设置为了不同的值。图4给出了子图选择过程的一个例子。

上图是得到子图的伪代码:
(1) 首先从所有节点 NNN 中,随机采样 NinitN_{i n i t}Ninit​ 个节点, 表示为 initNodesinitNodesinitNodes; (代码第2行)
(2) 从 initNodesinitNodesinitNodes 节点的1-邻域中再随机采样 NmN_{m}Nm​ 个节点,表示为 newAddNodesnew AddNodesnewAddNodes; (代码6-10行)
(3) 循环过程 (2) 直到采样节点总数 SSS 大于等于 NsN_{s}Ns​ 停止循环; 每次迭代过程中的 NmN_{m}Nm​ 都为不同值。
(4) S>NsS>N_{s}S>Ns​ 时,需要把最后一次过程 (2) 得到的采样节点再次采样 NrN_{r}Nr​ 个节点, 使得 S=NsS=N_sS=Ns​。 (代码11-14行)


这样随机的切分子图,我们可以在大尺度的图上训练深层模型。此外,我们可以充分利用mini-batch训练方法来加速学习过程。在每轮训练中,我们可以使用子图训练方法采样多个子图,然后把它们放到batch中。对应的特征向量和邻接矩阵组成了网络的输入。

【LGCN】如何理解Large-Scale Learnable Graph Convolutional Networks?相关推荐

  1. [LGCN论文笔记]:Large-Scale Learnable Graph Convolutional Networks

    文章目录 Abstract 补充:如何理解 inductive learning 与 transductive learning? 1. Introduction 2. Related Work 图卷 ...

  2. FastGCNL:FAST LEARNING WITH GRAPH CONVOLUTIONAL NETWORKS VIA IMPORTANCE SAMPLING

    一.数据集cora介绍 Cora数据集包含2708篇科学出版物, 5429条边,总共7种类别.数据集中的每个出版物都由一个 0/1 值的词向量描述,表示字典中相应词的缺失/存在. 该词典由 1433 ...

  3. 【Graph Neural Network 图神经网络】3.Spatial-based Graph Convolutional Networks 基于空间的图卷积网络

    前言 类似于图像上传统的卷积运算,基于空间的方法根据节点的空间关系定义图卷积.图像可以看作是一种特殊的图形式,每个像素代表一个节点.每个像素都直接连接到它附近的像素,如下图左所示.对3*3的区域应用一 ...

  4. 【论文翻译】GCN-Semi-Supervised Classification with Graph Convolutional Networks(ICLR)

    学习总结 传统深度学习模型如 LSTM 和 CNN在欧式空间中表现不俗,却无法直接应用在非欧式数据上.因此大佬们通过引入图论中抽象意义上的"图"来表示非欧式空间中的结构化数据,并通 ...

  5. 2018_WWW_Dual Graph Convolutional Networks for Graph-Based Semi-Supervised Classification

    [论文阅读笔记]2018_WWW_Dual Graph Convolutional Networks for Graph-Based Semi-Supervised Classification-(T ...

  6. 图融合GCN(Graph Convolutional Networks)

    图融合GCN(Graph Convolutional Networks) 数据其实是图(graph),图在生活中无处不在,如社交网络,知识图谱,蛋白质结构等.本文介绍GNN(Graph Neural ...

  7. 论文阅读课1-Attention Guided Graph Convolutional Networks for Relation Extraction(关系抽取,图卷积,ACL2019,n元)

    文章目录 abstract 1.introduction 1.1 dense connection+GCN 1.2 效果突出 1.3 contribution 2.Attention Guided G ...

  8. 【论文笔记】Factorizable Graph Convolutional Networks

    文章目录 1. Abstract 2. Method 2.1 Disentangling Step 2.2 Aggregation Step 2.3 Merging Step 3. 总体架构 4. 超 ...

  9. paper reading:[renormalization]Semi-supervised Classification with Graph Convolutional Networks

    paper reading:[Renormalization Trick] Semi-supervised classification with graph convolutional networ ...

最新文章

  1. mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...
  2. 寻找兄弟单词(2012.5.6百度实习)
  3. 【百度地图API】如何区分地址解析和智能搜索?
  4. java 外部覆盖内部配置,Spring 与自定义注解、外部配置化的结合使用
  5. web大作业介绍自己的家乡_襄阳市恒大名都小学2018—2019年度寒假实践作业
  6. 在ASP.NET 3.5中使用新的ListView控件(5)
  7. mysql explain预估剖析
  8. lcl手术和飞秒区别_想知道自己适合哪种近视手术?Mark!
  9. Xslt中的Xsl:copy与Xsl:copy-of的区别
  10. 连锁店管理系统有什么特点?便利店管理系统的优势
  11. 高通9008驱动_安卓手机高通9008模式下如何救砖
  12. Ant Chmod命令详解
  13. gazebo添加末端六维力传感器
  14. 网易云信短信接口java_短信接入示例
  15. python如何做混合模型面板回归_面板模型回归操作指南,适合初学者!
  16. 第 296 场力扣周赛(C语言解
  17. unity动画状态机做到立即取消当前动画的播放,再次播放该动画
  18. 网络管理与运维(SNMP包括理论和实验)
  19. 计算机技能测试题库,计算机应用技能测试题库
  20. Hexo yilia 主题一揽子使用方案

热门文章

  1. 仿QQ即时通讯聊天软件Windows新版可定制客户端演示
  2. Redis解决商品秒杀与超卖
  3. 《名贤集》《明贤集》四言集
  4. ubuntu经常断网、掉线、上不去网的原因
  5. php怎么实现根据图片搜索图片功能
  6. springmvc案例
  7. 为什么IT白领生命如此短暂--猝死!!! 让所谓的PMP和IT项目管理见鬼吧。
  8. 用matlab画标准雷电波,雷电波发生器的MATLAB仿真及参数选取sc
  9. 新司机的黑裙战斗机 篇四:新司机的黑群晖指北—软件篇(下)
  10. 好嗨呦是谁_好嗨哦是什么梗