GCN

图卷积网络(Graph Convolutional networks, GCN) 简述

1 背景

卷积神经网络(CNN)的输入是图片等具有欧几里得结构的图结构,也就是这样的图:

这样的“图”并不是广义上的“图”。我们经常需要提取广义的具有点和边的图的特征:

2 问题描述

我们的目标是提取出这种广义图结构的特征,进而完成一些任务,如标签补全等。

3 解决思路

在问题描述中我们提到两类特征:节点特征图结构特征。如果我们使用节点特征进行标签补全,那么完全就可以看作是一个标准的结构化特征分类问题,所以我们现在的挑战是如何使用图结构特征帮助训练。公式化的描述为:

其中 H0=X。

解决思路I:

首先,我们可以使用一种简单的思路:

这里 W是上一层特征H的权重; δ是激活函数,此处可以使用简单的 Relu。

这种思路是基于节点特征与其所有邻居节点有关的思想

邻接矩阵A与特征H相乘,等价于令,某节点的邻居节点的特征相加。

多层隐含层,表示我们想近似利用多层邻居的信息。

这样的思路存在两大问题:

  1. 如果节点不存在自连接(自身与自身有一条边),邻接矩阵A在对角线位置的值为0。但事实上在特征提取时,自身的信息非常重要。
  2. 邻接矩阵A没有被规范化,这在提取图特征时可能存在问题,比如邻居节点多的节点倾向于有更大的特征值。

解决思路II:

来源:参考文献[2]

基于以上问题,可以提出改进的思路:

这种思路解决了上述问题1和问题2:

  1. 解决问题1的方法是利用以下式子:

让邻接矩阵A与单位矩阵I相加,就引入了节点自连接的特征。

2. 解决问题2的方法是让邻接矩阵规范化,其中矩阵D的定义如下:

矩阵D是一个对角线矩阵,其对角线位置上的值也就是相应节点的度。

上述式子也可以表示为:

其中

其中di和dj分别表示节点i和节点j的度。

在这种思路下,使用多层隐含层进行训练,我们就可以使用多层邻居的信息。

4 训练过程

对于整个训练过程,我们只需要对各层的权重矩阵W进行梯度下降训练,而规范化后的邻接矩阵,在训练过程中实际上是个常量:

5 实际问题

我们可以用上述思路解决图数据的标签补全问题。在这个问题中,对于部分节点,我们有其标注的分类,而其他标签,我们需要训练好的模型帮助我们进行分类。

在训练过程中,我们可以看到特征提取层后的结果:

我们可以看到经过特征提取后,相似的节点被嵌入到了相近的位置。

 

------------------------need to read-----------------

(1)使用GCN的第一篇比较好理解的paper

https://blog.youkuaiyun.com/hongbin_xu/article/details/89670096

(2)一般工业界使用GCN的改进版graphSAGE

(3)graphattenion

(4)https://www.bilibili.com/video/av83519765?from=search&seid=4211414597548239676

(5)GCN挑战

怎么做大:采样fastgcn,asgcn

怎么做深:原因过拟合,过平滑。dropedge,highway

 

 

参考文献

  1. How powerful are Graph Convolutional Networks?
  2. [1609.02907] Semi-Supervised Classification with Graph Convolutional Networks
  3. 转自https://zhuanlan.zhihu.com/p/38612863
### Graph Convolutional Network (GCN) 概述 Graph Convolutional Networks (GCNs) 是一种专门用于处理图数据的深度学习模型。这类网络能够有效地捕捉节点之间的关系以及整个图结构中的复杂模式[^1]。 #### 图的重要性 传统机器学习方法通常假设输入样本之间相互独立同分布(i.i.d.),但在许多实际场景下,这种假设并不成立。例如社交网络、推荐系统等领域内的实体间存在复杂的关联性。为了更好地建模这些依赖关系并利用其中蕴含的信息,研究者们提出了基于图的方法来表达对象及其交互方式。通过引入邻接矩阵A描述连接情况,并结合特征向量X刻画顶点属性,使得我们可以构建更加贴近现实世界的表示形式[^2]。 ### 工作原理 GCN 的核心思想是在每一层聚合邻居节点的信息来进行更新操作: \[ H^{(l+1)}=\sigma\left(\tilde{D}^{-\frac{1}{2}} \tilde{A} \tilde{D}^{-\frac{1}{2}} H^{(l)} W^{(l)}\right)\] 这里 \(H^{(0)}=X\) 表示初始输入特征;\(W^{(l)}\) 代表第 l 层可训练权重参数;而 \(\tilde{A}=A+I_N\) 则是对原始邻接矩阵加上单位阵后的版本,用来考虑自环的影响;最后 \(\tilde{D}\) 定义为度数矩阵【即对角线上元素等于各节点总边数】。激活函数 σ() 可选 ReLU 或其他非线性变换以增加表达能力。 值得注意的是,即便仅采用随机初始化而不经过任何迭代优化过程,由于融入了拓扑结构先验知识的缘故,所得到的结果依然具备一定解释力和区分度[^3]。 ### 应用领域 - **半监督分类**:当仅有部分标签可用时,GCN 能够借助未标记样本间的相似性和局部一致性原则实现高效预测。 - **链接预测**:对于缺失或潜在的关系挖掘任务而言,该技术同样表现出色,因为它可以直接作用于任意形状大小的无向/有向图之上。 - **社区发现与聚类分析**:凭借其强大的表征学习机制,有助于揭示隐藏在网络背后的群体划分规律。 ```python import torch from torch_geometric.nn import GCNConv class Net(torch.nn.Module): def __init__(self): super().__init__() self.conv1 = GCNConv(dataset.num_node_features, 16) self.conv2 = GCNConv(16, dataset.num_classes) def forward(self, data): x, edge_index = data.x, data.edge_index x = self.conv1(x, edge_index) x = F.relu(x) x = F.dropout(x, training=self.training) x = self.conv2(x, edge_index) return F.log_softmax(x, dim=1) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值