GNN和GGNN学习笔记

GNN

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

GNN-1

GNN和GGNN学习笔记_第8张图片
E是模型的参数,消息取决于边类型K和邻居状态。E与不同类型的邻居节点进行矩阵乘法,汇总邻居的输入状态,通过GRU更新状态,GRU实现从上一个状态转移到下一个状态。

GGNN中的矩阵运算

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

GGNN-2

起点是递归神经网络RNN,是对特殊的图(链图)进行操作,可以处理文字、一系列tokens。
GNN和GGNN学习笔记_第12张图片
我们用recurrent unit表示链图中每一个节点,箭头进行连接。一次给每个节点嵌入一个节点特征(信封表示),每个节点通过递归神经网络得到新的状态。

对于普通图,如下
GNN和GGNN学习笔记_第13张图片
每个节点代表任何你想要的东西(不同的原子、图像等),都有一个特征向量。

关联到一个网络,具有不同类型的边。边不同,知识库就不同。
GNN和GGNN学习笔记_第14张图片
将节点替换成递归单元,如下
GNN和GGNN学习笔记_第15张图片
消息传递将如下进行,对于一个特定节点放大
GNN和GGNN学习笔记_第16张图片

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

对于图中所有节点同一个时间步同时更新,其中单个时间步节点可以知道自身信息和相距一阶的邻居的信息。
GNN和GGNN学习笔记_第17张图片
第二次重复操作,节点又知道了一阶和二阶的信息,经过固定T个时间步停止后,节点知道信息的范围越来越大。
GNN和GGNN学习笔记_第18张图片
一次一次重复前进,将图的全部信息收集起来进行求和。
GNN和GGNN学习笔记_第19张图片

你可能感兴趣的:(大数据与人工智能)