一:初识GNN
1.什么是GNN
-
图(Graph)
在讨论GNN之前,我们先来了解一下什么是图。在计算机科学中,图是由节点和边两部分组成的一种数据结构。图G可以通过节点集合V和它包含的边E来进行描述。如下图所示:
-
GNN
GNN全称—-图神经网络,它是一种直接作用于图结构上的神经网络。我们可以把图中的每一个节点 当作个体对象,而每一条边 当作个体与个体间的某种联系,所有节点组成的关系网就是最后的图 。
这里的都可以编码成一个特征向量,所以实际上GNN还是做的是提取特征的工作而已。GNN的一个典型应用是节点分类,我们希望利用GNN提取出每个节点 的特征向量,来预测每个节点的标签。同样的,也可以通过节点与节点间的特征,来预测出对应边 的标签。当然,也可以利用所以节点提取出的特征,来预测整个图 的标签。 如下图:
2.GNN与CNN、RNN的区别
那都是提取特征的神经网络,那为什么要利用图模型来提取呢?CNN的卷积和RNN的递归方式不行吗?
答案还真不行,或者说十分麻烦。
因为GNN面向的输入对象其实都是结构不规则、不固定的数据结构,而CNN面向的图像数据和RNN面向的文本数据的格式都是固定的,所以自然不能混为一谈。因此,面对本身结构、彼此关系都不固定的节点特征,必须需要借助图结构来表征它们的内在联系。
3.GNN的应用领域
GNN应用的领域自然都是由结构不规则、不固定的数据组成的场合了。比如下图所示的场景:
二:GNN原理
1.邻接矩阵
首先引入邻接矩阵(Adjacency Matrix)的概念,它来表示节点与节点间的连接关系,即Edge的关系,矩阵的具体样式如下图所示:
2.聚合操作
GNN的输入一般是每个节点的起始特征向量和表示节点间关系的邻接矩阵,有了这两个输入信息,接下来就是聚合操作了。所谓的聚合,其实就是将周边与节点 有关联的节点{ }加权到上,当作一次特征更新。同理,对图中的每个节点进行聚合操作,更新所有图节点的特征。
聚合操作的方式多种多样,可根据任务的不同自由选择,如下图所示:
3.多层迭代
CNN,RNN都可以有多个层,那么GNN也当然可以。一次图节点聚合操作与 加权,可以理解为一层,后面再重复进行聚合、加权,就是多层迭代了。一般GNN只要3~5层即可,所以训练GNN对算力要求很低。如下图所示:
至此我对GNN的基本概念和工作原理,进行了简单讲解,希望对大家有所帮助,有不懂的地方或者建议,欢迎大家在下方留言评论。
我是努力在CV泥潭中摸爬滚打的江南咸鱼,我们一起努力,不留遗憾!
文章出处登录后可见!