本文是SGC(简化版GCN),主要通过连续去除非线性和在连续层之间的折叠权矩阵来减少GCN的复杂性。而且这些简化不会对准确性产生负面影响。在Reddit上比FastGCN产生两个数量级的加速。
一、Introduction
简单来说,本文就是把非线性的GCN转换成一个简单的线性模型SGC,反复消除GCN层之间的非线性并将得到的函数折叠成一个线性变换来减少GCNs额外的复杂度。其实对于要求较低的应用来说,这是不必要的。
上图为SGC与普通卷积过程的区别。
二、普通GCN算法过程
在每一个图卷积层,节点的表现由三个阶段进行更新:特征传播,线性变换和一个节点层级的非线性激活。
特征传播
这是区别于MLP的一点,因为每一层的输入都是节点局部邻居的平均值。
直接用矩阵运算来表示:
这个结构类似当时的计算对称的规范化的拉普拉斯算子时相似的计算方法。S计算过后会用到。
再将平均值用矩阵形式表达
相当于提取特征。
特征变化和非线性变化
加上一层Relu激活函数,使得上一层的输出是非线性的。
最后分类器
加上一层softmax分类器,将每个节点的特征组成的长度为n的向量softmax处理,得到分类。
三、SGC算法过程
整体思路相当于去除普通GCN的非线性激活处理步骤,即每一层的传播都是线性的,或者用另一种角度来说,就是在为最后的逻辑回归作预处理,而不经过非线性激活函数。整体就是一次逻辑回归。
线性化处理
首先用S对每个节点的特征作线性变换,然后乘权值矩阵,如图
或者换成矩阵的方式
逻辑回归
将输出的
S
K
X
Θ
S^KX\Theta
SKXΘ通过分类器,将节点分类。
Y
^
S
G
C
=
s
o
f
t
m
a
x
(
S
K
X
Θ
)
\hat Y_{SGC} = softmax(S^KX\Theta)
Y^SGC=softmax(SKXΘ)
综上,在使用GCN时,中间层的非线性激活函数输出对整个模型的作用可能是小的,因为一般的神经网络的传播层都是需要非线性函数来保证输出的非线性。因此可以判断出GCN的核心应该是重复图的传播而不是非线性特征提取。