给定无向图 G = ( V , E ) G=(V,E) G=(V,E), V = { v 1 , v 2 , . . . , v n } V=\{v_1,v_2,...,v_n\} V={v1,v2,...,vn}是节点集, E ∈ V × V E\in V\times V E∈V×V是边集,若节点 v i v_i vi和 v j v_j vj之间有边相连则 e i , j = 1 e_{i,j}=1 ei,j=1,否则 e i j = 0 e_{ij}=0 eij=0。
A ∈ R N × N A\in R^{N\times N} A∈RN×N为图的邻接矩阵, D = diag ( d 1 , d 2 , . . . , d n ) , d i = ∑ j A i , j D=\text{diag} (d_1,d_2,...,d_n),d_i=\sum_j A_{i,j} D=diag(d1,d2,...,dn),di=∑jAi,j是度矩阵。 L = I − D − 1 2 A D − 1 2 L=I-D^{-\frac12}AD^{-\frac12} L=I−D−21AD−21是拉普拉斯矩阵。
对于无向图,图的拉普拉斯矩阵是对称的,将图拉普拉斯矩阵进行特征值分解 L = U Λ U T L=U\Lambda U^T L=UΛUT,其中 U U U为正交矩阵,满足 U T U = I U^TU=I UTU=I。
设图中每个节点都表示为一个标量,所有节点构成向量 x ∈ R N x\in R^N x∈RN,图上的傅里叶变换定义为 x ^ = U x \hat{x}=Ux x^=Ux,逆傅里叶变换定义为 x = U T x ^ x=U^T\hat{x} x=UTx^。
为了将频域上的滤波器参数化,假设滤波器可以表示为参数化的特征值矩阵 g θ ( Λ ) = diag ( λ 1 θ 1 , . . . , λ n θ n ) g_{\theta}(\Lambda)=\text{diag}(\lambda_1\theta_1,...,\lambda_n\theta_n) gθ(Λ)=diag(λ1θ1,...,λnθn)
在频域上经过滤波的向量为 g θ ( Λ ) x ^ g_{\theta}(\Lambda)\hat{x} gθ(Λ)x^
x new = U T g θ ( Λ ) x ^ = U T g θ ( Λ ) U x x_{\text{new}}=U^Tg_{\theta}(\Lambda)\hat{x}=U^Tg_{\theta}(\Lambda)Ux xnew=UTgθ(Λ)x^=UTgθ(Λ)Ux
对 Λ \Lambda Λ变换尺度, Λ ~ = 2 λ m a x Λ − I \tilde{\Lambda}=\frac{2}{\lambda_{max}}\Lambda-I Λ~=λmax2Λ−I,并假设 λ m a x ≈ 2 \lambda_{max}\approx 2 λmax≈2,再利用切比雪夫多项式近似 g θ ( Λ ) ≈ g θ ′ ( Λ ~ ) = ∑ k = 0 K θ k ′ T k ( Λ ~ ) g_{\theta}(\Lambda)\approx g_{\theta'}(\tilde{\Lambda})=\sum_{k=0}^K\theta'_kT_k(\tilde{\Lambda}) gθ(Λ)≈gθ′(Λ~)=k=0∑Kθk′Tk(Λ~)
切比雪夫多项式的形式为 T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) , T 2 ( x ) = x , T 1 ( x ) = 1 T_k(x)=2xT_{k-1}(x)-T_{k-2}(x), T_2(x)=x, T_1(x)=1 Tk(x)=2xTk−1(x)−Tk−2(x),T2(x)=x,T1(x)=1
取 k = 2 k=2 k=2,于是得到 g θ ( Λ ) ≈ θ 0 I + θ 1 Λ ~ = θ 0 I + θ 1 ( Λ − I ) g_\theta(\Lambda)\approx \theta_0 I+\theta_1 \tilde{\Lambda}=\theta_0 I+\theta_1(\Lambda-I) gθ(Λ)≈θ0I+θ1Λ~=θ0I+θ1(Λ−I)
利用 U U U是正交矩阵,于是 U T Λ k U = ( U T Λ U ) k = L k U^T\Lambda^k U=(U^T\Lambda U)^k=L^k UTΛkU=(UTΛU)k=Lk
因此, x new = U T g θ ( Λ ) x ^ = U T g θ ( Λ ) U x ≈ θ 0 I + θ 1 ( L − I ) = θ 0 I − θ 1 D − 1 2 A D − 1 2 x_{\text{new}}=U^Tg_{\theta}(\Lambda)\hat{x}=U^Tg_{\theta}(\Lambda)Ux\approx \theta_0I+\theta_1(L-I)=\theta_0I-\theta_1D^{-\frac12}AD^{-\frac12} xnew=UTgθ(Λ)x^=UTgθ(Λ)Ux≈θ0I+θ1(L−I)=θ0I−θ1D−21AD−21
假设 θ 0 = − θ 1 = θ \theta_0=-\theta_1=\theta θ0=−θ1=θ,于是得到 x new = θ ( I + D − 1 2 A D − 1 2 ) x_{\text{new}}=\theta(I+D^{-\frac12}AD^{-\frac12}) xnew=θ(I+D−21AD−21)
使用重参数化技巧,即令 A ~ = A + I \tilde{A}=A+I A~=A+I, D ~ \tilde{D} D~为 A ~ \tilde{A} A~的度矩阵,上式近似为
x new = θ ( D ~ − 1 2 A ~ D ~ − 1 2 ) x x_{\text{new}}=\theta(\tilde{D}^{-\frac12}\tilde{A}\tilde{D}^{-\frac12})x xnew=θ(D~−21A~D~−21)x
假设 X ∈ R N × C X\in R^{N\times C} X∈RN×C,即每个节点都由一个向量而非一个标量表示,那么得到
X new = ( D ~ − 1 2 A ~ D ~ − 1 2 ) X Θ X_{\text{new}}=(\tilde{D}^{-\frac12}\tilde{A}\tilde{D}^{-\frac12})X\Theta Xnew=(D~−21A~D~−21)XΘ
其中 Θ ∈ R C × F \Theta\in R^{C\times F} Θ∈RC×F
将矩阵形式写为分量形式,可以看出,在GCN层,对节点更新时,输入向量是此节点的所有邻居节点(包括这个节点本身)。这些点在GCN层中经过参数 Θ \Theta Θ的变换,按每条边上的两个节点的度计算的权重进行求和,最后通过激活函数得到此节点的输出
参考论文:Thomas N Kipf and Max Welling. 2016. Semi-supervised classification with graph
convolutional networks. arXiv preprint arXiv:1609.02907 (2016).