GNN中的Message Passing方法解析
一、GNN中是如何实现特征学习的?
深度学习方法的兴起是从计算图像处理(Computer Vision)领域开始的。以卷积神经网络(CNN)为代表的方法会从邻近的像素中获取信息。这种方式对于结构化数据(structured data)十分有效,例如,图像和体素数据。但是,CNN的处理方式对于类似图(graph)数据则并不适用。对于一个图而言,类似图像像素的邻近关系是不存在的。考虑图中任意一个节点,我们几乎不可能始终找到8个有序邻近节点,因此类CNN卷积核将不再适用非结构数据(unstructured data)特征提取,这种非结构数据包括图(graph)和点集(set),例如点云数据(point cloud)和场景图(scene graph)。
那么对于图来说,GNN是如何学习到有效的特征呢?这就是这篇博文将要讨论的十分重要的方法——Message Passing。如果知道Message Passing准确的中文翻译的小伙伴可以给我留言,这篇博文中我将用缩写MP代表Message Passing。
大致来说,GNN与CNN在思想上是相通的。GNN也希望能够从“邻接”的元素中获取信息,并学习到固定的且可以固化在向量中的特征。因此,在字面意义上来说MP的思想就是,节点与节点之间可以相互传播(pass)信息(message),通过对于邻接节点信息的处理和原本节点特征的融合,来更新每一个点的特征,最后得到节点级别(node-level)或者图级别(graph-level)的序列化模式表达,这种表达可以完成节点分类,图分类,图生成等十分基本的任务。
二、如何用数学定义Message Passing过程?
小伙伴们不用害怕复杂的数学公式,只需要跟着思路走就可以,我会使用可以直观理解的变量命名方式的。首先,先在脑海中构建一个抽象的图结构G\mathcal{G}G,这个图的节点集合为V\mathcal{V}V,边的集合为E\mathcal{E}E。重点讨论的变量我列在了下面:
u,u∈Vu, u\in \mathcal{V}u,u∈V:我们重点讨论节点,可以是图中的任意一个节点。
{
v∣v∈N(u)}\{v| v \in N(u)\}{
v∣v∈N(u)}:节点uuu的邻接节点集合,与uuu有有效连接的节点的集合。
xux_{u}xu:节点uuu的初始特征向量,如果是节点vvv的特征则标记为xvx_vxv。
huh_{u}hu:节点uuu</
图神经网络GNN中的消息传递机制解析

本文深入探讨了图神经网络(GNN)如何通过Message Passing方法学习图数据的特征。GNN借鉴了CNN的思想,但针对非结构化数据如图和点集进行信息提取。Message Passing涉及节点间信息的传递和融合,通过Faggregate和Fcombine函数实现邻接节点特征的聚合和组合。在数学上,Message Passing可以用一个公式概括,描述了节点特征的更新过程。此外,文章还介绍了PytorchGeometric库中GCNConv类的实现,展示了一个具体的Message Passing实例。
最低0.47元/天 解锁文章
1177





