加油,继续看论文。
这次学图神经网络,这个概念经常在其他论文里出现,所以我想先学习一下这方面的知识。
参考:
【图神经网络综述】一文道尽GNN原理、框架和应用-CSDN博客
【图神经网络】10分钟掌握图神经网络及其经典模型_图神经网络建模-CSDN博客
强烈推荐:
【GNN 图神经网络】直观透彻理解_哔哩哔哩_bilibili
(视频4分钟)
1. Intro
1.1 图的基本概念
通常使用G = ( V , E ) G=(V, E)G=(V,E)来表示图,其中V VV表示节点的集合、E EE表示边的集合。对于两个相邻节点u , v u, vu,v, 使用e = ( u , v ) e=(u,v)e=(u,v)表示这两个节点之间的边。
图分为有向图(Directed Graph)和无向图(Undirected Graph)。
1.2 图神经网络
这是一个图,节点的值假设为他们index的ont-hot encoding(注意,实际使用的时候用的是一些更有意义的特征,例如年龄、性别)
2.2 消息传递
一旦节点和边的转化完成,图就可在节点之间执行消息传递。这个过程也被称为「近邻聚合
(Neighbourhood Aggregation)」,因为其涉及到围绕给定节点,通过有向边从周围节点推送消息(即嵌入)。
对于单个参考节点,近邻节点会通过边神经网络向参考节点上的循环单元传递它们的消息(嵌入)。参考循环单位的新嵌入更新,基于在循环嵌入和近邻节点嵌入的边神经网络输出的和上使用循环函数。
紫色方块是一个应用于来自近邻节点的嵌入(白色信封)上的简单前馈神经网络;红色三角形是应用于当前嵌入(白色信封)和边神经网络输出(黑色信封)之和上的循环函数,以得到新的嵌入(最上面的白色信封)。
- (有一种数据不断蔓延的感觉,然后上述是完成了红色三角信封的更新)
为了根据输入节点邻居信息更新节点状态,将局部转移函数f定义为循环递归函数的形式, 每个节点以周围邻居节点和相连的边作为来源信息来更新自身的表达h。为了得到节点的输出o, 引入局部输出函数g。因此,有以下定义
(h就是从其他周边区域提取到的信息,也就是
,也就是函数f处理后的结果)
将所有局部转移函数f 堆叠起来, 有:
- F:全局转移函数(Global Transition Function)
- G:全局输出函数(Global Output Function)
- 方框里是归一化后的邻接矩阵
- 这里相当于给所有节点的嵌入进行了一次线性变化
核心思想:
1) 利用邻接矩阵, 实现图结构的矩阵化表示
2)通过聚合操作实现消息传递