图神经网络|5.消息传递的计算方法 6.多层GNN的作用

本文探讨了图神经网络中消息传递的计算方法,强调了邻接矩阵在实际应用中的局限性,提出采用2XN存储结构以减少开销。同时,文章介绍了多层GNN如何保持图结构不变,通过迭代更新节点特征,类比于路由信息交换,最终实现收敛。

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

5.消息传递的计算方法

边的存放方式

注意,在实际的边的实现方式中,并不是以邻接矩阵来进行实现的,这是因为在图的更新中,用邻接矩阵进行更新所占用的时间开销相对大,二是因为领接矩阵占用的空间大(N方)。
所以在实际实现中会采用2XN的存储结构,从而避免多余的存储开销。

节点更新

在这里插入图片描述
在图神经网络中,某个节点的更新,不应该只关心自身的变化,还应该关心相邻节点与本节点的关系。

6.多层GNN的作用

在这里插入图片描述

首先,多层GNN并不会破坏图的结构(拓扑关系/邻接结构)。
而多层GNN能使得本点上的特征信息,不断进行迭代(就好像计算机网络中rip,不断交换路由信息,来得到更远处的路由信息,从而最后收敛)
在这里插入图片描述
GCN是Graph Convolutional Network图卷积神经网络的缩写。

### 图神经网络中的消息传递与聚合 #### 消息传递的概念与发展 消息传递图神经网络GNN)的核心思想之一,其主要目标是在给定的图结构上更新每个节点的特征表示[^2]。这一过程使得模型能够捕捉到节点之间的复杂关系,并有效地处理不规则的数据分布。 #### 消息传递的具体步骤 具体而言,消息传递范式可以分为三个关键阶段: 1. **邻接节点信息变换** 首先,对于每一个中心节点 \( v \),计算来自其邻居节点的信息转换。这一步骤通常涉及应用某种形式的线性或非线性的映射函数 \( f_{\theta}(\cdot) \)[^3]。 2. **邻接节点信息聚合至中心节点** 接下来,将所有经过变换后的邻居节点信息汇总起来形成新的表征向量。常见的汇聚操作有求和、平均以及最大池化等。该过程中可能会引入权重参数以调整不同邻居的重要性程度。 3. **聚合信息再变换** 最后,在完成上述两步之后,还需进一步对得到的新特征进行加工处理,以便更好地适应下游任务需求。此环节同样依赖于特定的设计模式,比如多层感知机MLP或其他类型的激活单元。 #### 实现MPNN框架的方法论 为了便于开发者构建自定义的消息传递算法,PyTorch Geometric库提供了一个名为`MessagePassing`的基础抽象类[^4]。通过继承此类并重写其中的关键成员方法,即可轻松搭建起高效的GNN架构实例。下面给出一段简化版代码片段用于说明如何创建一个基本的GCNConv层: ```python import torch from torch_geometric.nn import MessagePassing from torch_geometric.utils import add_self_loops, degree class GCNConv(MessagePassing): def __init__(self, in_channels, out_channels): super(GCNConv, self).__init__(aggr='add') # "Add" aggregation. self.lin = torch.nn.Linear(in_channels, out_channels) def forward(self, x, edge_index): # Step 1: Add self-loops to the adjacency matrix. edge_index, _ = add_self_loops(edge_index, num_nodes=x.size(0)) # Step 2: Linearly transform node feature matrix. x = self.lin(x) # Step 3-5: Start propagating messages. return self.propagate(edge_index, size=(x.size(0), x.size(0)), x=x) def message(self, x_j): # Step 4: Normalize node features. return x_j def update(self, aggr_out): # Step 5 (optional): Apply a final transformation. return aggr_out ``` 这段程序展示了怎样利用`MessagePassing`基类快速实现经典的图卷积网络(Graph Convolutional Network)。值得注意的是,这里仅选取了最基础的功能模块作为示范;实际应用场景下往往还需要考虑更多细节因素,如正则化项设置、残差连接加入等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值