GCNII《Simple and Deep Graph Convolutional Networks》阅读笔记

GCNII是为了解决GNN模型的过平滑问题而提出的,通过引入初始剩余连接和恒等映射,增强了深层图卷积网络的性能。文章介绍了过平滑现象的原因和相关解决方案,如skip-connection、JKNet和DropEdge,然后详细阐述了GCNII模型的结构和原理,以及在实验中取得的成果。GCNII的未来发展方向可能包括与注意力机制的结合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GCNII

Chen M, Wei Z, Huang Z, et al. Simple and deep graph convolutional networks[C]//International Conference on Machine Learning. PMLR, 2020: 1725-1735.

本文主要是针对GNN模型的过平滑(over-smooth)问题展开研究与讨论,回顾之前的一些解决方案,并且借鉴ResNet设计了GCNII模型。


过平滑问题以及其相关工作

其实到现在为止,大部分GNN模型都是浅层的,可以称得上深层模型的屈指可数——GCNII和DeeperGCN。之所以不能太深,是因为过平滑问题会导致性能下降。

所谓过平滑,就是指当我们堆叠多个图卷积层时,模型的性能不升反降的现象。至于为什么会这样,一种比较合理的解释是:这些模型都可以看作是一些滤波器,而这些滤波器所模拟的lazy随机游走会最终收敛到一个稳定的向量,因而导致了无法区分出不同的节点。并且,高度节点由于从邻居获得更多的信息,所以更容易出现过平滑问题。

而模型过浅,我们就无法从高阶邻居中提取信息了。

当然,从GNN刚兴起的时候大家就发现这个问题了,很多人都对此提出了各式各样的解决方案,其中一些思路对于我们自己设计model是很有帮助的。

第一类大方向是沿着ResNet中的剩余连接以及图的正则化等方法进行扩展和思考。

  1. skip-connection。一般是把当前层的结果和上一层的结果进行连接/拼接,这样,既可以保留之前的运算结果,又可以加速模型在训练过程中的收敛速度。
  2. JKNet。保存每一层的运算结果,最后统一对所有层的结果进行一个连接,可以减轻过平滑问题。
  3. DropEdge。训练时随机丢弃途中的一些边,是一种图数据增强的方法。

第二类大方向是浅层模型中的深度传播方法。

  1. SGC。
  2. APPNP。
  3. GDC。

第一类方法确实是模型深度有了小幅提升,但是无法更深,还是存在过平滑的问题;第二类方法根本就没有加深模型深度,只是每一层深度传播去聚合更多的信息,也失去了深层模型的非线性结构。

虽然如此,层数一多,仍然会有过平滑问题。

GCNII模型

GCNII(Graph Convolutional Network via Initial residual and Identity mapping),就是带有初始剩余连接和恒等映射的GCN。
PyG官方文档:GCN2Conv
X ′ = ( ( 1 − α ) P ^ X + α X ( 0 ) ) ( ( 1 − β ) I + β Θ ) \mathbf{X}^{\prime} = \left( (1 - \alpha) \mathbf{\hat{P}}\mathbf{X} + \alpha \mathbf{X^{(0)}}\right) \left( (1 - \beta) \mathbf{I} + \beta \mathbf{\Theta} \right) X

### Simple and Deep Graph Convolutional Networks (SD-GCN) #### 背景介绍 图卷积网络(Graph Convolutional Networks, GCNs)作为一种强大的深度学习工具,在处理图结构数据方面表现优异。然而,传统的GCN模型由于过度平滑的问题,通常局限于较浅的网络架构[^5]。为了克服这一局限性并充分利用深度网络的强大表示能力,研究人员提出了多种改进方案。 其中一种重要的扩展是 **Simple and Deep Graph Convolutional Networks (SD-GCN)** 的设计思路,它引入了初始残差(Initial Residual)和恒等映射(Identity Mapping),从而有效解决了过平滑问题,并实现了更深层次的网络结构[^1]。 --- #### 工作原理 ##### 初始残差(Initial Residual) 初始残差的核心思想是在每层的输入中加入原始节点特征 \( X \) 。这种机制可以看作是对传统残差连接的一种增强形式: \[ H^{(l)} = f(H^{(l-1)}, A) + \alpha_l X, \] 其中: - \( H^{(l)} \) 表示第 \( l \)-th 层的隐藏状态; - \( f(\cdot,\cdot) \) 是基于邻接矩阵 \( A \) 的传播函数; - \( \alpha_l \) 是可学习参数,控制原始特征的影响程度。 通过这种方式,即使在网络层数增加时,原始特征仍然能够被保留下来,从而减轻了因多层传播而导致的信息损失或同质化现象。 ##### 恒等映射(Identity Mapping) 除了利用初始残差外,SD-GCN 还采用了跳跃连接的形式——即直接将前几层的结果传递给后续层作为附加输入之一。具体而言, \[ H^{(l)} = f(H^{(l-1)}, A) + \beta_l H^{(k)}, \] 这里 \( k<l \),\( \beta_l \) 同样是一个待优化系数向量。这种方法不仅有助于梯度流动更加顺畅,而且进一步增强了整个体系捕捉复杂模式的能力。 上述两项关键技术共同作用下,使得所构建出来的深层GCN具备更强表达力的同时也保持良好泛化性能。 --- #### 实现细节 以下是基于PyTorch框架的一个简化版 SD-GCN 示例代码片段: ```python import torch import torch.nn as nn import torch.nn.functional as F class GCNIILayer(nn.Module): def __init__(self, input_dim, output_dim, alpha=0.1, beta=0.1): super(GCNIILayer, self).__init__() self.linear = nn.Linear(input_dim, output_dim) self.alpha = alpha self.beta = beta def forward(self, x, adj_matrix, initial_x=None, prev_h=None): h = F.relu(torch.spmm(adj_matrix, self.linear(x))) if initial_x is not None: h += self.alpha * initial_x if prev_h is not None: h += self.beta * prev_h return h class SDCNNModel(nn.Module): def __init__(self, num_layers, input_dim, hidden_dim, output_dim, dropout_rate=0.5): super(SDCNNModel, self).__init__() layers = [] for i in range(num_layers): dim_in = input_dim if i == 0 else hidden_dim dim_out = output_dim if i == num_layers - 1 else hidden_dim layer = GCNIILayer(dim_in, dim_out) layers.append(layer) self.layers = nn.Sequential(*layers) self.dropout = nn.Dropout(dropout_rate) def forward(self, features, adjacency_matrix): init_features = features.clone() out = features residuals = [] for idx, gcn_layer in enumerate(self.layers): res_input = residuals[idx//2] if idx >=2 else None out = gcn_layer(out, adjacency_matrix, init_features, res_input) out = self.dropout(out) residuals.append(out) return out ``` 此段程序定义了一个基本版本的SDCNN模块,包含了多个`GCNIILayer`实例以及必要的dropout操作以提高鲁棒性和防止过拟合等问题发生。 --- #### 应用场景与优势对比 相比其他类型的GNN模型如u-net风格架构【^2】或者单纯依赖于线性变换的传统方法【^3】,采用SD-GCN策略具有如下几个显著优点: 1. 更加灵活可控:允许用户自定义不同层次间相互关系权重比例。 2. 显著提升效果:实验证明其能够在多项分类预测任务上取得超越现有SOTA水平的表现【^4】。 3. 广泛适用范围:无论是半监督还是完全标注的数据集均能展现出色适应能力和稳定性【^5】。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值