论文学习笔记:Semi-Supervised Classification with Graph Convolutional Network


原文链接:Semi-Supervised Classification with Graph Convolutional Network
代码实现:https://github.com/tkipf/pygcn

一、亮点

1.分层传播规则,模型 f ( A , X ) f(A, X) f(A,X)直接编码结构信息,不需要显式的使用图正则。
2.节点的半监督分类实现

二、显式的图正则

基于图的半监督学习问题,需要通过显式的基于图的正则化项来将标签信息平滑到整个图上。在损失函数中使用Laplace正则化项
L = L 0 + λ L r e g , 其 中 , L r e g = ∑ i j A i j ∣ ∣ f ( X i ) − f ( X j ) ∣ ∣ 2 = f ( X ) T Δ f ( X ) \mathcal{L}=\mathcal{L}_0+\lambda \mathcal{L}_{reg}, 其中,\mathcal{L}_{reg}=\sum_{ij}A_{ij}||f(X_i)-f(X_j)||^2=f(X)^T\Delta f(X) L=L0+λLreg,Lreg=ijAijf(Xi)f(Xj)2=f(X)TΔf(X)
上式中, A i j A_{ij} Aij为邻接矩阵; f ( ⋅ ) f(\cdot) f()神经网络模型;X表示节点的特征矩阵; f ( X i ) f(X_i) f(Xi)代表节点i的特征表示(包含结构和顶点特征信息); A i j ∣ ∣ f ( X i ) − f ( X j ) ∣ ∣ 2 A_{ij}||f(X_i)-f(X_j)||^2 Aijf(Xi)f(Xj)2的意义是如果节点i和j之间边的权重很大,即 A i j A_{ij} Aij很大,那么节点i、j之间特征表示的距离越近。

三、分层传播规则

1.Fast Approximate Convolutions on Graphs

图卷积模型的分层向前传播规则如下
H ( l + 1 ) = σ ( D ~ − 1 2 A ~ D ~ − 1 2 H ( l ) W ( l ) ) H^{(l+1)} = \sigma(\tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}H^{(l)}W^{(l)}) H(l+1)=σ(D~21A~D~21H(l)W(l))
其中, H ( l + 1 ) H^{(l+1)} H(l+1)代表第l+1层的激活值, H ( 0 ) = X H^{(0)}=X H(0)=X σ ( ⋅ ) \sigma(\cdot) σ()表示激活值; A ~ = A + I N \tilde{A}=A+I_N A~=A+IN表示给每个节点加上自连接的边( I N I_N IN); W ( l ) W^{(l)} W(l)表示第l层的权重; D ~ = ∑ j A ~ i j \tilde{D}=\sum_j \tilde{A}_{ij} D~=jA~ij

2.传播规则是图谱滤波的一阶近似

定义图谱卷积是信号和过滤器 g θ g_{\theta} gθ的乘积, g θ g_{\theta} gθ是由 θ ∈ R N \theta \in \mathbb{R}^N θRN在傅里叶域内参数化得到, g θ = d i a g ( θ ) g_{\theta}=diag(\theta) gθ=diag(θ)
g θ ∗ x = U g θ U T x g_{\theta} \ast x = Ug_{\theta}U^Tx gθx=UgθUTx
U U U是标准化laplace算子 L L L的特征向量, L = I N − D − 1 2 A D − 1 2 = U Λ U T L=I_N-D^{-\frac{1}{2}}AD^{-\frac{1}{2}}=U\Lambda U^T L=IND21AD21=UΛUT g θ g_{\theta} gθ可以理解为关于 L L L的特征值 Λ \Lambda Λ的函数,如 g θ ( Λ ) g_{\theta}(\Lambda) gθ(Λ)。其计算代价为 O ( N 2 ) O(N^2) O(N2)

为了克服计算复杂,使用切比雪夫多项式k-阶展开
g θ ′ ≈ ∑ k = 0 K θ k ′ T k ( Λ ~ ) g_{\theta'}\approx\sum_{k=0}^K \theta_k'T_k(\tilde{\Lambda}) gθk=0KθkTk(Λ~)
其中, Λ ~ = 2 λ m a x L − I N \tilde{\Lambda}=\frac{2}{\lambda_{max}}L-I_N Λ~=λmax2LIN λ m a x \lambda_{max} λmax是L最大的特征值; θ ′ \theta' θ为切比雪夫系数。
回到我们定义的信号x和 g θ g_{\theta} gθ的卷积,得到
g θ ′ ∗ x ≈ ∑ k = 0 K θ k ′ T k ( L ~ ) x g_{\theta'} \ast x \approx \sum_{k=0}^K \theta_k'T_k(\tilde{L})x gθxk=0KθkTk(L~)x
其中, L ~ = 2 λ m a x L − I N \tilde{L}=\frac{2}{\lambda_{max}}L-I_N L~=λmax2LIN;切比雪夫多项式 T k ( L ~ ) = 2 L ~ T k − 1 ( L ~ ) − T k − 2 ( L ~ ) T_k(\tilde{L})=2\tilde{L}T_{k-1}(\tilde{L})-T_{k-2}(\tilde{L}) Tk(L~)=2L~Tk1(L~)Tk2(L~),所以 T k ( L ~ ) T_k(\tilde{L}) Tk(L~)是关于 L ~ \tilde{L} L~的k阶多项式。所以上式反映是中心节点的k阶领域。

3.逐层学习模型

基于图卷积的神经网络模型就是如上式中模式的多个卷积层的堆积。每个层后跟一个非线性运算。限制K=1,上式就是一个关于L的线性函数。我们可以通过堆叠这样的层来恢复卷积滤波器函数。此时, T 0 ( L ~ ) = 1 , T 1 ( L ~ ) = L ~ T_0(\tilde{L})=1, T_1(\tilde{L})=\tilde{L} T0(L~)=1,T1(L~)=L~
近似 λ = 2 \lambda = 2 λ=2,可得
g θ ′ ∗ x = θ 0 ′ x + θ 1 ′ L ~ x = θ 0 ′ x + θ 1 ′ ( L − I N ) x = θ 0 ′ x + θ 1 ′ D − 1 2 A D − 1 2 x g_{\theta'}\ast x=\theta_0'x+\theta_1'\tilde{L}x=\theta_0'x+\theta_1'(L-I_N)x=\theta_0'x+\theta_1'D^{-\frac{1}{2}}AD^{-\frac{1}{2}}x gθx=θ0x+θ1L~x=θ0x+θ1(LIN)x=θ0x+θ1D21AD21x
连续运用这种形式的过滤器k次,有效卷积一个节点的k阶邻域。k就是卷积层的个数。

在实际中,衰减参数的个数进一步防止过拟合,同时最小化每层中的矩阵乘法操作数,简化得
g θ ′ ∗ x = θ ( I N + D − 1 2 A D − 1 2 ) x g_{\theta'}\ast x = \theta (I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}})x gθx=θ(IN+D21AD21)x
上式中, θ = θ 0 ′ = − θ 1 ′ \theta=\theta_0'=-\theta_1' θ=θ0=θ1 I N + D − 1 2 A D − 1 2 I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}} IN+D21AD21的特征值近似在 [ 0 , 2 ] [0,2] [0,2]之间。在神经网络中多次重复使用此操作会导致数值不稳定、梯度爆炸/消失,缓解的trick是 I N + D − 1 2 A D − 1 2 ⟶ D ~ − 1 2 A ~ D ~ − 1 2 I_N+D^{-\frac{1}{2}}AD^{-\frac{1}{2}} \longrightarrow \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}} IN+D21AD21D~21A~D~21,其中, A ~ = A + I N , D ~ i i = ∑ j A ~ i j \tilde{A}=A+I_N, \tilde{D}_{ii}=\sum_j\tilde{A}_{ij} A~=A+IN,D~ii=jA~ij

将信号 X X X定义为更一般化的 X ∈ R N × C X\in \mathbb{R}^{N\times C} XRN×C, C表示channel数,代表每个节点的特征维度。那么
Z = D ~ − 1 2 A ~ D ~ − 1 2 X Θ Z = \tilde{D}^{-\frac{1}{2}}\tilde{A}\tilde{D}^{-\frac{1}{2}}X\Theta Z=D~21A~D~21XΘ

四、节点的半监督分类

预先计算 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,向前传播模型
Z = f ( A , X ) = s o f t m a x ( A ^ R e l u ( A ^ X W ( 0 ) ) W ( 1 ) ) Z = f(A, X) = softmax(\hat{A} Relu(\hat{A}XW^{(0)})W^{(1)}) Z=f(A,X)=softmax(A^Relu(A^XW(0))W(1))

只是用有标签的数据计算损失, y L \mathcal{y}_L yL表示有标签的节点的集合,交叉熵损失函数定义如下:
L = − ∑ l ∈ y L ∑ f = 1 F Y l f ln ⁡ Z l \mathcal{L}=-\sum_{l\in \mathcal{y}_L}\sum_{f=1}^FY_{lf}\ln Z_{l} L=lyLf=1FYlflnZl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值