问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

图神经网络(GNN)简介

创作时间:
作者:
@小白创作中心

图神经网络(GNN)简介

引用
CSDN
1.
https://m.blog.csdn.net/qq_45827638/article/details/143953701

图神经网络(GNN)是一种用于处理图结构数据的神经网络模型。它能够有效地捕捉图中节点之间的关系,并通过多层神经网络进行特征学习。本文将介绍GNN的基本概念、输入格式以及其核心工作原理。

图的邻接矩阵(类似数据结构的图)

图:

每个像素点周围都有邻居,中间的是邻接矩阵(25*25)主对角线对称。A表示邻居之间的关系。
GNN(A,X),A是每个点和其他点之间的关系,X是每个点的特征

文本数据

文本数据也可以表示图的形式,邻接矩阵表示是连接关系,也就是词之间的有向连接

GNN输入格式

在cv、nlp和其他神经网络结构中对输入格式有一定要求,但是GNN输入数据可以不规则,适应不同类型的图数据和应用场景。

以下是一些常见的GNN输入格式的要素,它们在不同的框架中可能有所变化,但核心概念是相似的:

节点特征矩阵:在不同的框架中,这可能被称为
node_features

x

features
等。它是一个二维数组或矩阵,其中每一行代表一个节点的特征向量。

邻接矩阵或边列表:在某些框架中,这可能被称为
adjacency_matrix

edge_index

edges
等。它表示图中节点之间的连接关系。邻接矩阵是一个方阵,而边列表是一个形状为(2, E)的矩阵,其中E是边的数量。

边特征矩阵(如果存在):这可能被称为
edge_features

edge_attr
等。它是一个二维数组或矩阵,其中每一行代表一条边的特征向量。

图的标签:在节点分类或图分类任务中,这可能被称为
labels

y
等。它是一个一维数组,其中每个元素对应于一个节点或图的标签。

掩码:在半监督学习中,这可能被称为
train_mask

val_mask

test_mask
等。它们是布尔数组,用于区分训练集、验证集和测试集中的节点。

图的索引(如果处理多个图):在处理多个图的情况下,这可能被称为
graph_indices

batch
等。它是一个一维数组,用于指示每个节点属于哪个图。

邻接矩阵

邻接矩阵表达形式应该是(source,target)

消息传递神经网络(每个点如何更新)

1、每个点更新时,需要考虑邻接结点

上图
每一个点提供的特征,有一组可学习的参数经过一个可学习的特征映射得出的结果,即特征 xj 通过一个权重矩阵Wj 进行变换。

节点 i 的当前特征表示 hi 通过权重矩阵 W1 进行变换这个是邻居节点 j 的特征表示 hj 通过权重矩阵 W2 变换后进行求和,得到邻居节点特征的聚合。最后,将节点 i 的变换特征与邻居节点特征的聚合相加,并通过一个非线性激活函数 σ(如ReLU)进行变换,得到节点 i 的新特征表示 hi

一些概念

GNN本质是更新各部分的特征:在每一轮迭代(或称为层)中,每个节点会收集来自其邻居的信息,并结合自己的特征,通过神经网络层进行处理,从而得到新的特征表示

邻接矩阵不会变化:在大多数GNN模型中,邻接矩阵是固定的,它定义了图中节点之间的连接关系。这个矩阵在训练过程中不会变化,它为GNN提供了图的结构信息

GNN经过多层融合之后,一个节点的感受野会越来越大,最终可以覆盖整个图:随着GNN层数的增加,每个节点的感受野(即节点能够直接或间接获取信息的范围)会逐渐扩大。在单层GNN中,节点只能获取其直接邻居的信息。但是,随着层数的增加,节点能够获取到的信息将包括其邻居的邻居,以及更远的节点。理论上,经过足够多层的融合后,一个节点的感受野可以覆盖整个图。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号