文章概述

作者指出现如今GCN和其变体模型好多遵从如下范式:
Hl+1=σ(SHkWk+1)(1)H^{l + 1} = \sigma(SH^{k}W^{k + 1}) \tag{1} Hl+1=σ(SHkWk+1)(1)
其中σ\sigmaσ表示非线性变换,例如RELU,矩阵SSS表示包含图结构信息的各种矩阵变体,例如D−1/2AD−1/2D^{-1/2}AD^{-1/2}D−1/2AD−1/2,而Wk+1W^{k + 1}Wk+1表示第k+1k + 1k+1层的可学习的权重矩阵。但这种范式的GCN模型复杂度通常比较高且计算成本也高,在大图上通常束手无策。为此,作者针对现有的GCN及其变体进行了简化,其具体措施是:

  • 去除层与层间的非线性变换;
  • 扁平(collapsing)连续层间的权重矩阵。

作者将他们提出的模型命名为SGC(Simple Graph Convolution),实验表明尽管进行了简化,但是SGC在许多任务上都的性能都与现有的GCN模型相当甚至更好,此外SGC的运算速度有的极大的提升。

SGC框架

符号表

在具体介绍之前,先摆出论文中使用到的符号

符号 说明
G=(V,A)\mathcal{G}=(\mathcal{V},A)G=(V,A)
AAA 对称的邻接矩阵
did_idi​ 结点iii的度
DDD 度矩阵,D=diag(d1,...,dn)D=\text{diag}(d_1,...,d_n)D=diag(d1​,...,dn​)
X∈Rn×dX \in \mathbb{R}^{n \times d}X∈Rn×d 结点的特征矩阵,其中nnn表示图中的结点数,ddd表示特征的维数
yi∈{0,1}Cy_i \in \{0,1\}^{C}yi​∈{0,1}C 结点iii的标签,one-hot码,CCC为类别数
H(k)H^{(k)}H(k) GCNs第kkk层的结点表示,其中H(0)=XH^{(0)} = XH(0)=X

GCNs模型简介

GCNs模型的模式通常为==KKK个图卷积层+111个分类层==(也可能不是分类,取决于下游任务是什么)。对于GCNs的每个卷积层,结点表示的更新分为三个阶段:

  • 特征传播
  • 线性变换
  • 非线性激活

特征传播阶段,每个结点都会聚合其邻居的消息并结合自身的结点特征表示来生成自身新的结点表示,即:
h‾i(k)←1di+1hi(k−1)+∑j=1naij(di+1)(dj+1)hj(k−1)(2)\overline{\mathbf{h}}_{i}^{(k)} \leftarrow \frac{1}{d_{i}+1} \mathbf{h}_{i}^{(k-1)}+\sum_{j=1}^{n} \frac{a_{i j}}{\sqrt{\left(d_{i}+1\right)\left(d_{j}+1\right)}} \mathbf{h}_{j}^{(k-1)} \tag{2} hi(k)​←di​+11​hi(k−1)​+j=1∑n​(di​+1)(dj​+1)​aij​​hj(k−1)​(2)
上述公式写成矩阵形式可表示为:
S=D~−12A~D~−12H‾(k)←SH(k−1)(3)\mathrm{S}=\tilde{\mathrm{D}}^{-\frac{1}{2}} \tilde{\mathrm{A}} \tilde{\mathrm{D}}^{-\frac{1}{2}} \\ \overline{\mathbf{H}}^{(k)} \leftarrow \mathrm{SH}^{(k-1)} \tag{3} S=D~−21​A~D~−21​H(k)←SH(k−1)(3)
其中A~=A+I\tilde{\mathbf{A}}=\mathbf{A}+\mathbf{I}A~=A+I,D~\tilde{\mathbf{D}}D~为矩阵A~\tilde{\mathbf{A}}A~的度矩阵。

然后,便是线性变换(乘以权重矩阵WWW)和非线性激活阶段(应用非线性激活函数如RELU),
H(k)←ReLU⁡(H‾(k)Θ(k))(4)\mathbf{H}^{(k)} \leftarrow \operatorname{ReLU}\left(\overline{\mathbf{H}}^{(k)} \Theta^{(k)}\right) \tag{4} H(k)←ReLU(H(k)Θ(k))(4)
经过多个上述的图卷积层后,便可利用最终得到的结点表示进行分类任务了,即:
Y^GCN=softmax⁡(SH(K−1)Θ(K))(5)\hat{\mathrm{Y}}_{\mathrm{GCN}}=\operatorname{softmax}\left(\mathrm{SH}^{(K-1)} \Theta^{(K)}\right) \tag{5} Y^GCN​=softmax(SH(K−1)Θ(K))(5)

对图卷积的简化

线性化(Linearization): 作者删除了图卷积中的非线性激活操作,因此整个GCN模型可以表示为:
Y^=softmax⁡(S…SSXΘ(1)Θ(2)…Θ(K))(6)\hat{\mathrm{Y}}=\operatorname{softmax}\left(\mathrm{S} \ldots \mathrm{SSX} \Theta^{(1)} \Theta^{(2)} \ldots \Theta^{(K)}\right) \tag{6} Y^=softmax(S…SSXΘ(1)Θ(2)…Θ(K))(6)
为了简化符号,作者用SK\mathbf{S}^{K}SK表示 S\mathbf{S}S的KKK次幂,并用Θ\ThetaΘ表示Θ(1)Θ(2)…Θ(K)\Theta^{(1)} \Theta^{(2)} \ldots \Theta^{(K)}Θ(1)Θ(2)…Θ(K),然后模型可以简写为:
Y^SGC=softmax⁡(SKXΘ)(7)\hat{\mathbf{Y}}_{\mathrm{SGC}}=\operatorname{softmax}\left(\mathbf{S}^{K} \mathbf{X} \Theta\right) \tag{7} Y^SGC​=softmax(SKXΘ)(7)
上述模型其实可以看成先对故进行KKK轮消息传播(SKX\mathbf{S}^{K} \mathbf{X}SKX),然后对经过KKK轮传播后的结点的特征进行传统的softmax回归,这便是作者提出的SGC模型,该模型的结构图以及与传统的GCNs的对比如下:

Θ(1)Θ(2)…Θ(K)\Theta^{(1)} \Theta^{(2)} \ldots \Theta^{(K)}Θ(1)Θ(2)…Θ(K)虽然乘了很多个权重矩阵,其实还是线性的,因此可以扁平化为单个权重矩阵。

谱(Spectral)分析

GCN图卷积公式的谱图推导

作者介绍了如何根据谱图理论得到GCN中的图卷积公式,假设x∈Rnx \in \mathbb{R}^{n}x∈Rn是图的顶点上定义的信号,则图上的傅里叶变换可以定义为:
x^=U⊤x(8)\hat{\mathrm{x}}=\mathrm{U}^{\top} \mathrm{x} \tag{8} x^=U⊤x(8)
则信号xxx和滤波器ggg间的卷积操作可以定义为:
g∗x=U((U⊤g)⊙(U⊤x))=UG^U⊤x(9)\mathrm{g} * \mathrm{x}=\mathrm{U}\left(\left(\mathbf{U}^{\top} \mathrm{g}\right) \odot\left(\mathbf{U}^{\top} \mathrm{x}\right)\right)=\mathbf{U} \hat{\mathbf{G}} \mathbf{U}^{\top} \mathrm{x} \tag{9} g∗x=U((U⊤g)⊙(U⊤x))=UG^U⊤x(9)
当公式(9)的计算复杂度比较高,因此引入切比雪夫多项式来降低计算的复杂度,即:
UG^U⊤x≈∑i=0kθiΔix=U(∑i=0kθiΛi)U⊤x(10)\mathrm{U} \hat{\mathbf{G}} \mathbf{U}^{\top} \mathbf{x} \approx \sum_{i=0}^{k} \theta_{i} \Delta^{i} \mathbf{x}=\mathbf{U}\left(\sum_{i=0}^{k} \theta_{i} \Lambda^{i}\right) \mathbf{U}^{\top} \mathbf{x} \tag{10} UG^U⊤x≈i=0∑k​θi​Δix=U(i=0∑k​θi​Λi)U⊤x(10)
而Kipf & Welling (2017)提出的GCN模型中直接取k=1k=1k=1,即图卷积的近似公式为:
g∗x=θ(I+D−1/2AD−1/2)x(11)\mathrm{g} * \mathrm{x}=\theta\left(\mathbf{I}+\mathrm{D}^{-1 / 2} \mathrm{AD}^{-1 / 2}\right) \mathrm{x} \tag{11} g∗x=θ(I+D−1/2AD−1/2)x(11)
Kipf & Welling (2017)还使用了一个**重正则化(renormalization)**的技巧,即用D~−1/2A~D~−1/2\tilde{\mathbf{D}}^{-1 / 2} \tilde{\mathbf{A}} \tilde{\mathbf{D}}^{-1 / 2}D~−1/2A~D~−1/2来代替I+D−1/2AD−1/2\mathbf{I}+\mathbf{D}^{-1 / 2} \mathbf{A D}^{-1 / 2}I+D−1/2AD−1/2,其中A~=A+I\tilde{\mathbf{A}}=\mathbf{A}+\mathbf{I}A~=A+I。

SGC和低通滤波器

作者论文中的定理1指出,添加自环后,正则化后的图拉普拉斯矩阵的最大特征值会变小,即添加自循环有效缩减了图的谱域,在该缩放的谱域上,SGC充当了一个低通滤波器,在图上生成平滑的特征。因此,邻居结点倾向于共享相似性的表示。

实验

作者在Cora、Citeseer、Pubmed和Reddit数据集上进行了半监督结点分类任务(semi-supervised node classification),这几个数据集的特征为:

在三个论文引用网络上的性能如下:

在Reddit数据集上与其他模型的F1 score对比结果如下:

另外作者还展示了在Pubmed和Reddit数据集上的训练时间与性能:

从实验结果可以看出来,SGC虽然对模型进行了简化,但是其性能相比于其它SOTA来说还是差不多的,与此同时,SGC的训练时间大幅度降低。

《Simplifying Graph Convolutional Networks》阅读笔记相关推荐

  1. trainer setup_Detectron2源码阅读笔记-(一)Configamp;Trainer

    一.代码结构概览 1.核心部分 configs:储存各种网络的yaml配置文件 datasets:存放数据集的地方 detectron2:运行代码的核心组件 tools:提供了运行代码的入口以及一切可 ...

  2. VoxelNet阅读笔记

    作者:Tom Hardy Date:2020-02-11 来源:VoxelNet阅读笔记

  3. Transformers包tokenizer.encode()方法源码阅读笔记

    Transformers包tokenizer.encode()方法源码阅读笔记_天才小呵呵的博客-CSDN博客_tokenizer.encode

  4. 源码阅读笔记 BiLSTM+CRF做NER任务 流程图

    源码阅读笔记 BiLSTM+CRF做NER任务(二) 源码地址:https://github.com/ZhixiuYe/NER-pytorch 本篇正式进入源码的阅读,按照流程顺序,一一解剖. 一.流 ...

  5. Mina源码阅读笔记(一)-整体解读

    2019独角兽企业重金招聘Python工程师标准>>> 今天的这一节,将从整体上对mina的源代码进行把握,网上已经有好多关于mina源码的阅读笔记,但好多都是列举了一下每个接口或者 ...

  6. “CoreCLR is now Open Source”阅读笔记

    英文原文:CoreCLR is now Open Source 阅读笔记如下: CoreCLR是.NET Core的执行引擎,功能包括GC(Garbage Collection), JIT(将CIL代 ...

  7. QCon 2015 阅读笔记 - 团队建设

    QCon 2015阅读笔记 QCon 2015 阅读笔记 - 移动开发最佳实践 QCon 2015 阅读笔记 - 团队建设 中西对话:团队管理的五项理论和实战 - 谢欣.董飞(今日头条,LinkedI ...

  8. 05《软件需求模式》阅读笔记

    剩下的两个阅读笔记写第二部分.各类需求模式,共八个领域和它的需求模式,这一次写前四个. 基础需求模式,它是所有种类的系统都可能需要的一些东西.系统间接口需求模式使用系统间接口需求模式定义被定义的系统和 ...

  9. [置顶] Linux协议栈代码阅读笔记(一)

    Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int p ...

  10. 大型网站技术架构:核心原理与案例分析阅读笔记二

    大型网站技术架构:核心原理与案例分析阅读笔记二 网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变 ...

最新文章

  1. ABAddressBookSave关于保存到通讯录失败的问题
  2. mysql聚簇索引存储结构_MySQL聚簇索引的实际应用于结构描述
  3. 使用webpack打包ES6代码
  4. 华为鸿蒙系统学习笔记9-华为鸿蒙OS与LiteOS对比
  5. 计算机屏幕总闪烁,教你如何解决电脑屏幕闪烁
  6. 程序员快放弃 Android 9.0 吧,10.0 正在来的路上!
  7. 从SDE库文件手工删除SDE图层(转载)
  8. 苹果x来电闪光灯怎么设置_苹果6splus来电没有声音,苹果6sp听筒没有声音怎么回事...
  9. DotNET的GNU版开源实现DotGNU
  10. [读书] 《未来世界的幸存者》关于熵减的心得
  11. 【操作系统安全】_Win7Win8系列提权漏洞
  12. mysql 导入tsv文件,MySQL导出TSV格式文件
  13. java中String优化之intern()方法
  14. panada python_Python Pandas
  15. 全景照片是如何拍摄出来的?
  16. ReadProcessMemory函数的用法
  17. 国产开源操作系统OpenCloudOS新进展:装机量超1000万节点,合作伙伴超500家
  18. Eclipse中新建安卓模拟机报错:ANDROID_SDK_HOME is defined but could not find Test.ini file in $ANDROID_SDK_HOME\
  19. 西门子博途v16系统要求_西门子正式发布博途V16(内含百度云盘下载地址)
  20. 小技巧!微信发朋友圈长文字怎样才能避免被折叠成一行?

热门文章

  1. 关于拼多多以图搜图的探索和分析
  2. Java 基本数据类型 - 四类八种
  3. Nike最新AR应用可扫描测量消费者脚大小,提供合适鞋码
  4. c 语言与自动控制原理,自动控制原理C作业(第二章)答案
  5. 小米扫地机器人清扫完成暂停_小米扫地机器人怎么清扫?采用新“看法” 让家里干净如新...
  6. 第二课 ceph基础学习-OSD扩容换盘和集群运维
  7. 浙江省计算机英语三级,关于2020年下半年浙江省高校计算机和大学外语三级考试报名的通知...
  8. 怎样求FIRST集、FOLLOW集和SELECT集
  9. c++ ——静态成员变量和静态成员函数
  10. 招商头条:四川新设64个省级开发区;百亿项目签约落地浙江嘉兴科技城