背景
Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. ICLR, 2017.
模型
给定一个过滤器
f
θ
=
d
i
a
g
(
θ
)
{f_{\bf{\theta }}} = {\rm{diag}}({\bf{\theta }})
fθ=diag(θ) ,考虑信号
x
∈
R
d
{\bf{x}} \in {\mathbb{R}^d}
x∈Rd ,并且
θ
∈
R
d
{\bf{\theta }} \in {\mathbb{R}^d}
θ∈Rd ,
d
d
d 表示向量的纬度。在图上的光谱卷积被定义为
f
θ
∗
x
=
M
f
θ
M
T
x
{f_{\bf{\theta }}} * {\bf{x}} = {\bf{M}}{f_{\bf{\theta }}}{{\bf{M}}^{\rm{T}}}{\bf{x}}
fθ∗x=MfθMTx
M
{\bf{M}}
M是归一图拉普拉斯的特征向量矩阵。归一化的图拉普拉斯被表示为
L
=
I
−
D
−
1
2
A
D
−
1
2
=
M
Λ
M
T
{\bf{L}} = {\bf{I}} - {{\bf{D}}^{ - \frac{1}{2}}}{\bf{A}}{{\bf{D}}^{ - \frac{1}{2}}} = {\bf{M}}\Lambda {{\bf{M}}^{\rm{T}}}
L=I−D−21AD−21=MΛMT
Λ
\Lambda
Λ表示特征值的对角矩阵,
M
T
x
{{\bf{M}}^{\rm{T}}}{\bf{x}}
MTx是信号
x
{\bf{x}}
x的傅里叶域。
f
θ
(
Λ
)
{f_{\bf{\theta }}}(\Lambda )
fθ(Λ)由于计算
L
{\bf{L}}
L的特征分解花费的计算资源是比较昂贵的,为解决这个问题,可以对
f
θ
(
Λ
)
{f_{\bf{\theta }}}(\Lambda )
fθ(Λ) 进行近似操作,近似后,被定义为:
f
θ
′
(
Λ
)
≈
∑
k
=
0
K
θ
′
k
C
k
(
Λ
~
)
{f_{{\bf{\theta '}}}}(\Lambda ) \approx \sum\limits_{k = 0}^K {{{\theta '}_k}{{\rm{C}}_k}(\tilde \Lambda )}
fθ′(Λ)≈k=0∑Kθ′kCk(Λ~)
θ
′
∈
R
K
{\bf{\theta '}} \in {\mathbb{R}^K}
θ′∈RK 是一个切比雪夫系数组成的向量。
C
k
(
⋅
)
{{\rm{C}}_k}( \cdot )
Ck(⋅)被定义为:
C
k
(
x
)
=
2
x
C
k
−
1
(
x
)
−
C
k
−
2
(
x
)
{{\rm{C}}_k}(x) = 2x{{\rm{C}}_{k - 1}}(x) - {{\rm{C}}_{k - 2}}(x)
Ck(x)=2xCk−1(x)−Ck−2(x)
其中,
C
0
(
x
)
=
1
{{\rm{C}}_0}(x) = 1
C0(x)=1 ,
C
1
(
x
)
=
x
{{\rm{C}}_1}(x) = x
C1(x)=x 。
我们定义的过滤器
f
θ
′
{f_{{\bf{\theta '}}}}
fθ′对于信号
x
{\bf{x}}
x的卷积定义为:
f
θ
′
∗
x
≈
∑
k
=
0
K
θ
′
k
C
k
(
L
~
)
x
{f_{{\bf{\theta '}}}} * {\bf{x}} \approx \sum\limits_{k = 0}^K {{{\theta '}_k}{{\rm{C}}_k}({\bf{\tilde L}})} {\bf{x}}
fθ′∗x≈k=0∑Kθ′kCk(L~)x
L
~
=
2
λ
max
L
−
I
{\bf{\tilde L}} = \frac{2}{{{\lambda _{\max }}}}{\bf{L}} - {\bf{I}}
L~=λmax2L−I。在GCN中
λ
max
{\lambda _{\max }}
λmax被近似等于2。
通过
λ
max
{\lambda _{\max }}
λmax 的近似操作,我们可以得到
L
~
=
L
−
I
{\bf{\tilde L}} = {\bf{L}} - {\bf{I}}
L~=L−I
所以可以得到
f
θ
′
∗
x
≈
θ
0
′
x
+
θ
1
′
(
L
−
I
)
x
=
θ
0
′
x
−
θ
1
′
D
−
1
2
A
D
−
1
2
x
{f_{{\bf{\theta '}}}} * {\bf{x}} \approx {\theta '_0}{\bf{x}} + {\theta '_1}({\bf{L}} - {\bf{I}}){\bf{x}} = {\theta '_0}{\bf{x}} - {\theta '_1}{{\bf{D}}^{ - \frac{1}{2}}}{\bf{A}}{{\bf{D}}^{ - \frac{1}{2}}}{\bf{x}}
fθ′∗x≈θ0′x+θ1′(L−I)x=θ0′x−θ1′D−21AD−21x
为更好的对参数进行约束,因此可以重新表达为
f
θ
′
∗
x
≈
θ
(
I
+
D
−
1
2
A
D
−
1
2
)
x
{f_{{\bf{\theta '}}}} * {\bf{x}} \approx \theta ({\bf{I}} + {{\bf{D}}^{ - \frac{1}{2}}}{\bf{A}}{{\bf{D}}^{ - \frac{1}{2}}}){\bf{x}}
fθ′∗x≈θ(I+D−21AD−21)x
值得注意的是
θ
0
′
{\theta '_0}
θ0′,$ - {\theta '_1}$都可以被表达为
θ
\theta
θ 。为缓解梯度消失的问题,图卷积神经网络中引入一个重新归一化的技巧,将
I
+
D
−
1
2
A
D
−
1
2
{\bf{I}} + {{\bf{D}}^{ - \frac{1}{2}}}{\bf{A}}{{\bf{D}}^{ - \frac{1}{2}}}
I+D−21AD−21 改写为
D
~
−
1
2
A
~
D
~
−
1
2
{{\bf{\tilde D}}^{ - \frac{1}{2}}}{\bf{\tilde A}}{{\bf{\tilde D}}^{ - \frac{1}{2}}}
D~−21A~D~−21。
Graph Convolution Neural Networks ,给定输入
G
(
V
,
E
)
{\mathcal G}({\mathcal V},{\mathcal E})
G(V,E),输入节点的特征表示为
x
v
{{\bf{x}}_v}
xv,
∀
v
∈
V
\forall v \in {\mathcal V}
∀v∈V,
∀
u
∈
N
(
v
)
\forall u \in {\mathcal N}(v)
∀u∈N(v), 表示
v
v
v的邻接节点。我们重新初始化多维度的向量权重。特征矩阵被表示为
X
{\bf{X}}
X,
X
∈
R
n
×
d
{\bf{X}} \in {\mathcal{R}^{n \times d}}
X∈Rn×d 。对于无向图表示,我们使用
A
{\bf{A}}
A表示邻接矩阵的连接关系。其中,
A
^
=
D
~
−
1
2
A
~
D
~
−
1
2
{\bf{\hat A}} = {{\bf{\tilde D}}^{ - \frac{1}{2}}}{\bf{\tilde A}}{{\bf{\tilde D}}^{ - \frac{1}{2}}}
A^=D~−21A~D~−21 ,${{\bf{\tilde D}}{ii}} = \sum\nolimits_j {{{{\bf{\tilde A}}}{ij}}} $ ,
A
~
=
A
+
I
{\bf{\tilde A}} = {\bf{A}} + {\bf{I}}
A~=A+I。GCN在网络中信息的传播可以被表述为
H
(
l
+
1
)
=
σ
(
A
^
H
(
l
)
W
(
l
)
)
{{\bf{H}}^{(l + 1)}} = \sigma ({\bf{\hat A}}{{\bf{H}}^{(l)}}{{\bf{W}}^{(l)}})
H(l+1)=σ(A^H(l)W(l))
H
(
0
)
=
X
{{\bf{H}}^{(0)}} = {\bf{X}}
H(0)=X,
σ
(
⋅
)
\sigma ( \cdot )
σ(⋅) 表示为ReLu激活函数。
图卷积神经网络通过局部一阶近似谱卷积得到一种新的卷积结构,这种卷积结构可以更好的学习节点特征的嵌入,并在引文网络和知识图谱的数据集中达到更优异的性能。在图卷积网络中,邻接矩阵与特征的卷积可在网络训练之前被计算,这样可以更少的引入网络的计算量。除此以外,图卷积网络使用全部样本计算梯度,因此可以使用全部邻域进行卷积。对于批量样本训练时,仅需要考虑部分邻域卷积。
代码
https://github.com/ChenaniahMe/codes/tree/main/GNN/comgcn