GNN和GGNN学习笔记

本文介绍了图神经网络(GNN)的工作原理。GNN将每个节点编码为向量,通过不同的边类型连接节点。在GNN处理过程中,节点从邻居获取信息,更新自身状态,形成消息传递的过程。这一过程反复进行,使得节点逐渐获取更广泛的上下文信息。文章还提到了GRU在状态更新中的应用,并展示了如何通过邻接矩阵和矩阵运算来计算节点的邻居信息。GNN可以从简单的自我认知扩展到对整个图的理解,逐步积累全图信息。

GNN

在这里插入图片描述
对于图上每个节点被编码为嵌入向量,因此,节点可能是一个图,可以通过cnn进行计算,可能是一个词、一个嵌入,它可以是自己希望的任何东西,这是图神经网络的输入。
在这里插入图片描述
对于F,GNN处理可以看作节点的特征提取,F通过不同的边类型与E和D连接,D和F有自己的初始向量。
在这里插入图片描述
从F的邻居开始,做一些类似计算消息的操作,实际上是获得另一个向量。合并得到的邻居消息结合F节点当前状态,将更新t时刻的F节点状态(拥有自身和邻居的信息)。
在这里插入图片描述
具体一点,x代表邻居信息,是由当前节点的边类型为K的邻居信息合并而成。
在这里插入图片描述
对于图神经网络,每个时间点,所有节点都从其邻居获得输入,计算消息然后更新状态。此过程,一次又一次重复操作。
在这里插入图片描述
一开始,每个节点都了解自己,下一步中,了解了邻居,逐步扩大自己的感知区域。
在这里插入图片描述

GNN-1

在这里插入图片描述
E是模型的参数,消息取决于边类型K和邻居状态。E与不同类型的邻居节点进行矩阵乘法,汇总邻居的输入状态,通过GRU更新状态,GRU实现从上一个状态转移到下一个状态。

GGNN中的矩阵运算

在这里插入图片描述
邻居矩阵可以将一个节点用邻居节点表示。如上图,c节点乘上邻接矩阵得到了他邻居a和b的表示,即用a和b表示c。
对于K个边类型,就要K个邻接矩阵。
在这里插入图片描述
在这里插入图片描述
首先,节点状态是一个n x D 的矩阵,每一行是节点在t时刻初始向量表示。接下来,计算要发送的消息,不同的K,使用E乘上节点状态矩阵,M代表所有向外发送的消息。接收消息,使用邻接矩阵乘上M,会受到所有类型K的边的邻居消息。最后,通过GRU得到t+1时刻的更新状态。

GGNN-2

起点是递归神经网络RNN,是对特殊的图(链图)进行操作,可以处理文字、一系列tokens。
在这里插入图片描述
我们用recurrent unit表示链图中每一个节点,箭头进行连接。一次给每个节点嵌入一个节点特征(信封表示),每个节点通过递归神经网络得到新的状态。

对于普通图,如下
在这里插入图片描述
每个节点代表任何你想要的东西(不同的原子、图像等),都有一个特征向量。

关联到一个网络,具有不同类型的边。边不同,知识库就不同。
在这里插入图片描述
将节点替换成递归单元,如下
在这里插入图片描述
消息传递将如下进行,对于一个特定节点放大
在这里插入图片描述

该节点将从邻居拉取特征,随着消息被拉出,将通过网络经过特定的边。新的状态由自己,和邻居特征和组成。

对于图中所有节点同一个时间步同时更新,其中单个时间步节点可以知道自身信息和相距一阶的邻居的信息。
在这里插入图片描述
第二次重复操作,节点又知道了一阶和二阶的信息,经过固定T个时间步停止后,节点知道信息的范围越来越大。
在这里插入图片描述
一次一次重复前进,将图的全部信息收集起来进行求和。
在这里插入图片描述

### 图神经网络 (GNN) 学习资源 对于希望深入了解图神经网络(Graph Neural Networks, GNNs)的学习者来说,有多种高质量的教程、论文技术博客可以作为参考资料。 #### 论文阅读 一些重要的研究工作奠定了现代GNN的基础。例如,《DeepWalk: Online Learning of Social Representations》探讨了如何通过随机游走的方式捕捉社交网络中的节点特征[^1];《node2vec: Scalable Feature Learning for Networks》则进一步扩展了这一思路,提出了更灵活的方法来生成节点嵌入表示;而《Semi-Supervised Classification with Graph Convolutional Networks》引入了一种基于卷积操作处理图形数据的新框架——GCN(Graph Convolutional Network),它能够有效地利用未标记的数据进行半监督分类任务。 #### 教程视频 除了学术文章外,在线教育平台也提供了许多易于理解的教学材料。比如B站上有一个名为“GNN从入门到精通”的系列课程,该课程由浅入深地讲解了有关GNN的知识点,并配有实际案例分析编程练习[^3]。 #### 技术文档与笔记整理 为了帮助初学者更好地掌握理论概念并应用于实践当中,“【GNN】图神经网络学习小结and笔记汇总”这份总结性的资料非常有价值。这里不仅包含了对核心算法原理详尽解释的文字描述,还有配套代码实现供读者参考学习[^2]。 ```python import torch from torch_geometric.nn import GCNConv class Net(torch.nn.Module): def __init__(self): super(Net, self).__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) ``` 上述Python代码片段展示了如何使用PyTorch Geometric库构建简单的两层GCN模型来进行节点分类预测。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值