背景
Kipf T N, Welling M. Semi-supervised classification with graph convolutional networks[J]. ICLR, 2017.
模型
给定一个过滤器fθ=diag(θ){f_{\bf{\theta }}} = {\rm{diag}}({\bf{\theta }})fθ=diag(θ) ,考虑信号x∈Rd{\bf{x}} \in {\mathbb{R}^d}x∈Rd ,并且θ∈Rd{\bf{\theta }} \in {\mathbb{R}^d}θ∈Rd , ddd 表示向量的纬度。在图上的光谱卷积被定义为
fθ∗x=MfθMTx
{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−12AD−12=MΛMT
{\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Λ表示特征值的对角矩阵,MTx{{\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=0Kθ′kCk(Λ~)
{f_{{\bf{\theta '}}}}(\Lambda ) \approx \sum\limits_{k = 0}^K {{{\theta '}_k}{{\rm{C}}_k}(\tilde \Lambda )}
fθ′(Λ)≈k=0∑Kθ′kCk(Λ~)
θ′∈RK{\bf{\theta '}} \in {\mathbb{R}^K}θ′∈RK 是一个切比雪夫系数组成的向量。 Ck(⋅){{\rm{C}}_k}( \cdot )Ck(⋅)被定义为:
Ck(x)=2xCk−1(x)−Ck−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)
其中,C0(x)=1{{\rm{C}}_0}(x) = 1C0(x)=1 ,C1(x)=x{{\rm{C}}_1}(x) = xC1(x)=x 。
我们定义的过滤器fθ′{f_{{\bf{\theta '}}}}fθ′对于信号x{\bf{x}}x的卷积定义为:
fθ′∗x≈∑k=0Kθ′kCk(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λmaxL−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−12AD−12x
{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−12AD−12)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−12AD−12{\bf{I}} + {{\bf{D}}^{ - \frac{1}{2}}}{\bf{A}}{{\bf{D}}^{ - \frac{1}{2}}}I+D−21AD−21 改写为D~−12A~D~−12{{\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),输入节点的特征表示为 xv{{\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), 表示vvv的邻接节点。我们重新初始化多维度的向量权重。特征矩阵被表示为X{\bf{X}}X,X∈Rn×d{\bf{X}} \in {\mathcal{R}^{n \times d}}X∈Rn×d 。对于无向图表示,我们使用 A{\bf{A}}A表示邻接矩阵的连接关系。其中,A^=D~−12A~D~−12{\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