图卷积网络 GCN 综述

本文深入探讨了图卷积网络(GCN),从离散卷积的概念开始,介绍了CNN到GCN的转变,重点讲解了GCN的理论基础,包括拉普拉斯矩阵和傅立叶变换,并阐述了GCN的网络结构。此外,还提供了相关的参考资料和源代码链接。

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

文献题目:Semi-Supervised Classification with Graph Convolutional Networks
文献来源:ICLR 2017
原文链接:https://arxiv.org/abs/1609.02907

参考笔记
GCN 理论:https://blog.csdn.net/weixin_36474809/article/details/89316439
离散卷积:https://zhuanlan.zhihu.com/p/35630785

离散卷积

( f ∗ g ) ( n ) (f*g)(n) (fg)(n) f , g f,g fg 的卷积,离散卷积本质是一种加权求和

连续卷积定义为:

( f ∗ g ) ( n ) = ∫ − ∞ ∞ f ( τ ) g ( n − τ ) d τ (f*g)(n) = \int_{-∞}^∞f(\tau)g(n-\tau)d\tau (fg)(n)=f(τ)g(nτ)dτ

离散卷积定义为:

( f ∗ g ) ( n ) = ∑ τ = − ∞ ∞ f ( τ ) g ( n − τ ) (f*g)(n) = \sum_{\tau=-∞}^∞f(\tau)g(n-\tau) (fg)(n)=τ=f(τ)g(nτ)

卷积神经网络 - CNN

CNN 中的卷积本质上是利用一个共享参数的过滤器(kernel),通过计算像素中心点的加权和来构成 feacher map 实现空间特征的提取, 其中加权系数是卷积核的权重系数。

图1 CNN中的卷积过程

CNN 中的卷积过程如图1所示,首先随机化 kernel 初值,然后根据误差函数通过反向传播梯度下降进行迭代优化。

CNN → \rightarrow GCN

CNN 可以有效提取空间特征,但是 CNN 处理的图像或视频数据中的像素点(pixel)是整齐排列的矩阵,即很多论文中提到的欧式结构(Euclidean Structure),如图2所示。

图2 欧几里得空间与非欧几里得空间

现实世界中的许多问题都可以通过非欧结构的图结构表述,如基因序列关系、蛋白质结构、知识图谱和社交网络等。概率图模型(Probablistic Graphical Model,PGM)和图神经网络(Graph Neural Networks,GNN)是处理图结构的两个代表性的方向。

融入 CNN 的 GCN 框架是最流行的 GNN 之一,但是图结构中邻居节点的个数不固定,无法计算核卷积,所以 CNN 不能直接用在属于非欧空间的图结构上。对此有两种解决办法:一是固定邻居节点数,二是将非欧空间的图转换到欧式空间,GCN 属于第二种思路。

图卷积网络

图卷积网络(Graph Convolutional Network,GCN)是对图结构进行操作的卷积神经网络。

理论基础

1. 拉普拉斯矩阵

对于图结构的特征提取主要分为空域(Spatial Domain)和频域(Spectral Domain)两种方法:频域法使用谱分解的方法,应用图的拉普拉斯矩阵分解进行节点的信息收集;空域法直接使用图的拓扑结构,根据图的邻接信息进行信息收集。

GCN 采用的是频域法,对于给定图 G = ( V , E ) G=(V,E) G=(V,E),其拉普拉斯矩阵定义为 L = D − A L=D-A L=D

### 图卷积神经网络概述 图卷积神经网络GCNs)是一类专门用于处理图结构数据的深度学习模型。这类模型能够有效地捕捉节点之间的复杂关系,并应用于多种任务,如节点分类、链接预测以及整个图的属性预测。 #### GCN的工作原理 GCN的核心在于其消息传递机制,在每一层中,节点聚合来自邻居的信息并更新自身的表示向量。这种操作可以通过矩阵乘法实现,其中邻接矩阵代表图形结构而特征矩阵则存储节点特性[^1]。 对于更深入理解GCN内部运作方式的研究指出,当层数增加时可能会遇到过平滑问题——即随着堆叠更多层,所有顶点最终会收敛到相同的嵌入空间位置,从而丧失区分度[^3]。 #### 发展历程与变体 早期版本采用简单的谱域定义方法;然而为了克服计算效率低下的挑战,后续工作转向了空间领域的方法论转变。特别是由Kipf & Welling提出的简化形式极大地推动了该领域的进展[^2]。 近年来还出现了许多改进方案试图解决原有架构中存在的局限性,比如利用PageRank算法作为传播规则来缓解过度平滑现象的影响。 ```python import torch from torch_geometric.nn import GCNConv class SimpleGCN(torch.nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(SimpleGCN, self).__init__() self.conv1 = GCNConv(input_dim, hidden_dim) self.conv2 = GCNConv(hidden_dim, output_dim) def forward(self, data): x, edge_index = data.x, data.edge_index # Apply first layer with ReLU activation x = self.conv1(x, edge_index).relu() # Second layer without non-linearity for final prediction x = self.conv2(x, edge_index) return x ``` 此代码片段展示了如何使用PyTorch Geometric库创建一个基本的两层GCN模型来进行节点级别的任务。 #### 应用场景 除了传统的社交网络分析外,GCNs还在推荐系统、化学分子建模等领域展现出巨大潜力。它们可以用来识别蛋白质相互作用模式或是预测药物反应效果等生物医学研究方面的重要课题[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值