自从深度学习兴起,许多机器学习中有趣的问题重新被提起。最近提出的图卷积完美的整合了局部顶点特征和图拓扑信息。虽然GCN优于其他state-of-the-art的方法,但是GCN的工作机制并不清晰。本文介绍来自AAAI 2018的工作,深入的剖析了图卷积层中是什么在起作用,并且针对少量标签数据集上的GCN训练,提出Co-Training和self-Training方法。
Graph Conv
Kipf & Welling提出的图卷积包括下面几步:
1.利用图邻接矩阵创建图卷积滤镜。每个节点增加self-loop。这样新的邻接矩阵为
A
~
=
A
+
I
\tilde{A}=A+I
A~=A+I,新的节点度矩阵
D
~
=
D
+
I
\tilde{D}=D+I
D~=D+I。归一化得到滤镜
A
^
=
D
~
−
1
2
A
~
D
~
−
1
2
\hat{A} = \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}
A^=D~−21A~D~−21。
2.定义图卷积层传播规则
H
(
l
+
1
)
=
σ
(
A
^
H
(
l
)
Θ
(
l
)
)
H^{(l+1)} = \sigma (\hat{A}H^{(l)}\Theta^{(l)})
H(l+1)=σ(A^H(l)Θ(l))
其中,
H
(
l
)
H^{(l)}
H(l)为第l层的激活值矩阵,
H
(
0
)
=
X
H^{(0)}=X
H(0)=X。
Θ
(
l
)
\Theta^{(l)}
Θ(l)表示第l层训练权重矩阵。代表图卷积的操作是归一化的邻接矩阵
A
^
\hat{A}
A^左乘每层的输入。然后,节点的卷积特征输入标准的全连接层。
3.叠加两层卷积,后接softmax,构建预测模型
Z
=
s
o
f
t
m
a
x
(
A
~
R
E
L
U
(
A
~
Θ
(
0
)
)
Θ
(
1
)
)
Z = \mathrm{softmax} \Bigl(\tilde{A}\ \mathrm{RELU}(\tilde{A}\Theta^{(0)})\Theta^{(1)}\Bigl)
Z=softmax(A~ RELU(A~Θ(0))Θ(1))
在有标签的数据集上,使用交叉熵损失函数训练模型。
Why GCNs Work
The Key of GCN
对比GCN与普通的全连接网络的区别,FC分层传播规则为:
H
(
l
+
1
)
=
σ
(
H
(
l
)
Θ
(
l
)
)
H^{(l+1)} = \sigma (H^{(l)}\Theta^{(l)})
H(l+1)=σ(H(l)Θ(l))
GCN与FC的传播法则唯一的区别在图卷积矩阵
A
^
\hat{A}
A^。分别使用GCN和FC在标记点为20个的Cora citation数据集上测试,发现即使只使用单层的GCN,效果也远远优于单层FC。
只看单层的GCN,他实际上只对输入数据做了两步操作:1)通过图卷积生成了新的特征矩阵, Y = D ~ − 1 2 A ~ D ~ − 1 2 X Y=\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}X Y=D~−21A~D~−21X。2)将生成的新特征 Y Y Y喂给FC层。很显然,关键就在图卷积层。
那么图卷积层做了什么? 搞清楚这个问题之前,我们先来看看什么是拉普拉斯平滑。
Laplacian Smoothing
一条折线包含一系列离散的点
p
i
p_i
pi。如何平滑这条折现?一个有效的方法是,将每个点移动到其邻居点的加权平均值
p
i
←
p
i
+
1
2
L
(
p
i
)
p_i \leftarrow p_i + \frac{1}{2} L(p_i)
pi←pi+21L(pi)
其中,
L
(
p
i
)
=
(
p
i
+
1
+
p
i
−
1
)
/
2
L(p_i)=(p_{i+1}+p_{i-1})/2
L(pi)=(pi+1+pi−1)/2。如此操作,反复迭代
将折线换成邻接矩阵为
A
A
A的图,对角矩阵
D
D
D对角线上的元素
d
i
i
d_{ii}
dii表示第i个顶点的度。那么上述的平滑写成矩阵的形式
P
←
(
I
−
1
2
L
r
w
)
P
P \leftarrow (I - \frac{1}{2}L_{rw}) P
P←(I−21Lrw)P
其中,
这里的L是归一化的图拉普拉斯算子。定义
L
=
D
−
A
L = D - A
L=D−A,它有两个版本,即对称形式
L
s
y
m
:
=
D
~
−
1
2
L
~
D
~
−
1
2
L_{sym}:=\tilde{D}^{-\frac{1}{2}}\tilde{L}\tilde{D}^{-\frac{1}{2}}
Lsym:=D~−21L~D~−21和标准形式
L
r
w
:
=
D
~
−
1
L
~
L_{rw} := \tilde{D}^{-1}\tilde{L}
Lrw:=D~−1L~。这样拉普拉斯平滑就是:
P
←
(
I
−
γ
L
r
w
)
P
P \leftarrow (I - \gamma L_{rw}) P
P←(I−γLrw)P
这里
0
≤
γ
≤
1
0 \leq \gamma \leq 1
0≤γ≤1,控制平滑的强度。
如果为图中的每个节点增加self-loop,邻接矩阵变为
A
~
=
A
+
I
\tilde{A}=A+I
A~=A+I, 再将拉普拉斯算子的标准形式替换为对称形式,那么平滑方法与与GCN中的图卷积层一样。
Y
^
=
(
I
−
γ
D
~
−
1
2
L
~
D
~
−
1
2
)
X
\hat{Y} = (I - \gamma \tilde{D}^{-\frac{1}{2}}\tilde{L}\tilde{D}^{-\frac{1}{2}})X
Y^=(I−γD~−21L~D~−21)X
此时
L
~
=
D
~
−
A
~
\tilde{L} = \tilde{D}-\tilde{A}
L~=D~−A~,
γ
\gamma
γ参数控制节点本身特征和邻居特征之间的权重,设置
γ
=
1
\gamma=1
γ=1,可以得到熟悉的图卷积形式
Y
^
=
D
~
−
1
2
A
~
D
~
−
1
2
X
\hat{Y} = \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}X
Y^=D~−21A~D~−21X
拉普拉斯平滑法计算每个顶点的局部邻居特征的平均值,作为顶点的新特征。因为同一类别的顶点之间往往连接紧密,所以平滑时他们的特征趋于相似,为后续的工作降低了难度。这就是GCN的工作原理。
When GCNs Fail
半监督GCN中建议最多使用两层叠加,可见,图卷积不是叠加层次越多越好。一方面卷积层越多越难训练,另一方面频繁使用拉普拉斯平滑会导致over-smoothing。来自不同类别的节点的特征会通过节点簇之间的连接混淆,这时,即使来自不同类别的两个节点特征也会很相似。
作者使用不同层数的图卷积模型,在karate club数据集上试验。随机初始化模型参数,不训练。隐藏层维度为16,输出层维度为2,所有节点特征使用one-hot向量。实验结果,如图Figure2,它有效的说明了图卷积(拉普拉斯平滑)在小数据集上的影响。当使用一次时,两类节点没有很好的分开,使用两次时,已经能够比较好的分开了,继续增加次数,效果变得越来越差。由于节点数量少,两个类别的节点之间存在一定数量的连接,通过这些连接,不同类别节点之间的差异被平滑掉了。
graph中节点类别簇之间总是存在连接,多次使用拉普拉斯平滑,不同类别的顶点特征会收敛到同一个值。假设graph中有k个连通分量,各连通分量的指示向量为
1
j
(
i
)
\mathbb{1}^{(i)}_j
1j(i)。对称拉普拉斯算子
L
s
y
m
L_{sym}
Lsym的特征值为0的特征空间,由各连通分量
D
−
1
/
2
1
D^{-1/2}\mathbb{1}
D−1/21组成。对
L
s
y
m
L_{sym}
Lsym做特征分解,
L
s
y
m
=
V
Λ
V
T
L_{sym} = V\Lambda V^T
Lsym=VΛVT。根据图谱理论,如果图中没有二分分量,拉普拉斯矩阵的特征值范围[0, 2),特征值0对应的特征向量值为1。 m次重复拉普拉斯平滑法矩阵形式:
P
(
m
)
=
V
(
I
−
γ
Λ
)
m
V
T
P
(
0
)
P^{(m)} = V(I-\gamma \Lambda)^mV^T P^{(0)}
P(m)=V(I−γΛ)mVTP(0)
由于
0
≤
γ
≤
1
0 \leq \gamma \leq 1
0≤γ≤1,m趋于正无穷时,m次重复平滑矩阵
V
(
I
−
γ
Λ
)
m
V
T
V(I-\gamma \Lambda)^mV^T
V(I−γΛ)mVT的最大特征值为1(其他特征趋于0)。结果会收敛于特征值为1的特征向量,比如
D
−
1
/
2
1
D^{-1/2}\mathbb{1}
D−1/21的线性组合。回到图卷积,由于为graph中的每个节点加上self-loop,graph中没有二分组件。所以over-smoothing会使节点的特征没有差异。下图直观的给出了over-smoothing的影响。
另一方面,Kipf and Welling 2017中的GCNs使用了两层卷积,然而图卷积是一个局部滤镜,它线性聚合邻居节点的特征。当GCNs模型层数太浅,标记的数据太少时,标签信息恐怕不能够传播到整个图。在图Figure1,中可以看到当graph中标记数据的比率下降时,模型效果下降的速度很快。
Solutions
图卷积可以是一个强大的特征提取器,可以简化分类任务,但是它是一个局部滤镜,无法适应少量标记样本。这里作者给出的解决办法是从增加标记节点的数量入手。提出Co-Training和Self-Training方法,实际训练的时候,综合Co-Training和Self-Training两个方法,将random walk和GCN模型预测的高度置信的样本加入训练。至于两个方法标记的样本,可以取并集也可以取交集。视实际表现来定。
Co-Training
利用随机游走模型对图全局结构信息的探索,与GCN协同训练。随机游走是对GCN的补充。随机游走模型直接标记一部分置信度高的节点,这些节点都是每类labeled节点的最近邻居。将这部分模型标记的节点加入到labeled训练集,训练GCN。
这里作者选择PARW作为协同训练的随机游走模型。首先,计算标准化absorption概率矩阵, P = ( L + α Λ ) − 1 P=(L + \alpha \Lambda)^{-1} P=(L+αΛ)−1, P i , j P_{i,j} Pi,j表示节点i与节点j来自相同类别的概率。然后计算顶点属于类别K的置信度。将已经有标签的节点划分为集合 S 1 , S 2 , . . . \mathcal{S}_1,\mathcal{S}_2,... S1,S2,...,其中, S k \mathcal{S}_k Sk表示标签为类别K的节点集合。对每个类别K,计算置信度矩阵 p = ∑ j ∈ S k P : , j \mathbf{p}=\sum_{j\in \mathcal{S}_k} P_{:,j} p=∑j∈SkP:,j,那么 p i p_i pi就是顶点i属于类别k的置信度。最后,选择置信度最高的t个节点,将它们标签记为K,加入样本集,训练GCN。
Self-Training
另一个增加labeled节点的方式是self-train。首先,在当前标记节点上训练GCN,使用训练好GCN预测节点的类别,然后,比较softmax得分,选择最有信心的预测节点和预测标签,加入有标签训练集。这样,利用扩增的数据集,继续训练GCN。当然,使用之前pre-train的GCN初始化参数。
对比高度置信的GCN预测节点和原始标记节点,如果它们标签相同,那么它们特征必然近似。将这些预测节点加入训练集有助于提升鲁棒性和准确度。
Experiment
分别在 CiteSeer, Cora, 和 PubMed 三个文献引用数据集上测试模型表现。对与ParWalks设置 Λ = I , α = 1 0 − 6 \Lambda = I, \alpha = 10^{-6} Λ=I,α=10−6。GCNs超参数设置与(Kipf and Welling 2017)中一样。GCN+V中,采样另外的500个标记样本作为验证集。从实验结果中可以看出,当训练数据很小时,本方法表现优于GCN。当训练数据足够大时,效果与GCN持平,因为足够多的标记样本已经可以训练出一个比较好的分类器了。
相关资料
https://arxiv.org/pdf/1801.07606.pdf
https://graphics.stanford.edu/courses/cs468-12-spring/LectureSlides/06_smoothing.pdf
http://www.kyb.mpg.de/fileadmin/user_upload/files/publications/attachments/Luxburg07_tutorial_4488%5b0%5d.pdf
http://www1.se.cuhk.edu.hk/~manchoso/papers/parw-nips12.pdf