GNN(图神经网络)基本概念

本文探讨了图注意力网络(GAT)与图卷积网络(GCN)在节点和图分类中的应用,GAT通过注意力机制赋予邻节点个性化权重,而GCN则采用固定标准化。重点讲解了GAT的注意力机制公式和多头注意力策略,以及GCN的一次图卷积操作。

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

功能:节点分类和图分类

空域 :空间上考虑图结构的模型,即考虑目标节点和其他节点的几何关系(有无连接)。

模型代表:GAT(Graph Attention Networks)图注意力模型

注意力机制对邻近节点特征加权求和。邻近节点特征的权重完全取决于节点特征,独立于图结构。

卷积神经网络中的池化看成一种特殊的平均加权的注意力机制,或者说注意力机制是一种具有对输入分配偏好的通用池化方法(含参数的池化方法

图 1:图注意力网络示意图和更新公式

对于上述公式的一些解释:

  • 公式(1)对 l 层节点嵌入

做了线性变换,W^((l)) 是该变换可训练的参数

  • 公式(2)计算了成对节点间的原始注意力分数。它首先拼接了两个节点的 z 嵌入,注意 || 在这里表示拼接;随后对拼接好的嵌入以及一个可学习的权重向量 做点积;最后应用了一个 LeakyReLU 激活函数。这一形式的注意力机制通常被称为加性注意力,区别于 Transformer 里的点积注意力。

  • 公式(3)对于一个节点所有入边得到的原始注意力分数应用了一个 softmax 操作,得到了注意力权重。

  • 公式(4)形似 GCN 的节点特征更新规则,对所有邻节点的特征做了基于注意力的加权求和。

频域:

模型代表:GCN(Graph Convolutional Network )图卷积网络

优点:省参数

缺点:不易作用于动态图

(对于同阶的邻域上分配给不同的邻居的权重是完全相同的(无法允许为邻居中的不同节点指定不同的权重)

一次图卷积操作包含对邻节点特征的标准化求和

其中 N(i) 是对节点 i 距离为 1 邻节点的集合。我们通常会加一条连接节点 i 和它自身的边使得 i 本身也被包括在 N(i) 里。

是一个基于图结构的标准化常数;

σ是一个激活函数(GCN 使用了 ReLU);

W^((l)) 是节点特征转换的权重矩阵,被所有节点共享。

由于 c_ij 和图的机构相关,使得在一张图上学习到的 GCN 模型比较难直接应用到另一张图上。

共同步骤:

  1. 加工图邻接矩阵
  2. 图邻接矩阵特征分解,得到特征值,
  3. 核心区别(如何收集并累和距离为 1 的邻居节点的特征表示
  4.  将特征向量看作常数,而卷积核作用在特征值上

GAT 用注意力机制替代了图卷积中固定的标准化操作,将原本的标准化常数替换为使用注意力权重的邻居节点特征聚合函数

多头注意力 (Multi-head attention)

神似卷积神经网络里的多通道,GAT 引入了多头注意力来丰富模型的能力和稳定训练的过程。每一个注意力的头都有它自己的参数。如何整合多个注意力机制的输出结果一般有两种方式:

以上式子中 K 是注意力头的数量。作者们建议对中间层使用拼接对最后一层使用求平均。

### 图神经网络 (Graph Neural Network, GNN) 的入门教程 #### 什么是图神经网络图神经网络是一种专门用于处理图结构数据的深度学习模型。它能够通过节点、边以及它们之间的连接关系来捕捉复杂的数据依赖性[^1]。 #### 学习资源推荐 以下是几个适合初学者的学习资料: 1. **《Introduction to Graph Neural Network》** 这本书提供了关于图神经网络的基础知识,涵盖了数学基础和图理论的核心概念。书中还介绍了神经网络的基本原理及其如何应用于图结构数据。 2. **AAAI 2019 Tutorial on Graph Representation Learning** 此教程深入浅出地讲解了图表示学习的概念,并讨论了几种基本的图神经网络架构。对于希望快速掌握 GNN 实现细节的研究者来说是一个很好的起点[^2]。 3. **在线课程与博客文章** 许多高质量的博客和技术文档也对理解 GNN 非常有帮助。例如,“几种图神经网络方法总结”一文中提到的内容可以帮助读者了解当前最流行的几类 GNN 架构及其应用场景。 #### 应用场景概述 GNN 已被广泛应用于多个领域,包括但不限于: - 文本分类(Text classification) - 关系抽取(Relation extraction) - 神经机器翻译(Neural machine translation) - 图像分类(Image Classification) 下面给出一段简单的 Python 示例代码展示如何构建一个基础版本的消息传递机制(Message Passing Mechanism),这是许多现代 GNN 方法的核心组件之一: ```python import torch from torch.nn import Linear class SimpleGNN(torch.nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(SimpleGNN, self).__init__() self.linear1 = Linear(input_dim, hidden_dim) self.linear2 = Linear(hidden_dim, output_dim) def forward(self, x, edge_index): row, col = edge_index out = self.linear1(x[col]) out += self.linear1(x[row]) return self.linear2(out.mean(dim=0)) ``` 此代码片段定义了一个简易版的两层线性变换组成的 GNN 层,其中 `edge_index` 表示图中的边集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值