Graph-Neural-Network 图神经网络
1. 图数据结构
1.1 Graph结构的两种特征
图数据结构由顶点和边组成,顶点为目标研究的实体,边则表示顶点之间的联系。
图数据结构包含两种特征:
- 顶点自己的特征,其通常是一个高维向量,也就是研究目标的特征。
- 对于任意一个节点 i ,它在图上的相邻节点 Ni 构成图的结构关系(特征)
任何图神经网络的目的,就是试图更好的学习Graph结构的这两种特征。
2. Graph Attention Network (GAT)图注意力网络
- 注意力机制认为,对于中心节点来说,相邻节点对它而言重要程度不一样,要量化这一指标。
- 图注意力机制的本质,是给边赋予权重,即给 节点及其相邻节点 构成的边 赋予不同的注意力系数。
- 边的注意力系数是通过计算得到的,这也是GAT理论的根本点。
- 图注意力机制是从图的 结构关系特征 入手的。
2.1 计算注意力系数(attention coefficient)##
①计算节点的相关系数
对于节点i,逐个计算它的相邻节点(j∈Ni)和它自己之间的相似系数。
计算公式如下:
其中:
- $ W $为共享参数矩阵,其用于对节点特征增维,是一种常见的 特征增强 的方法。
- [·||·]表示对于节点 \(i, j\) 变换之后的 特征进行拼接(concatenate)。
- 最后$ a(·) $把拼接后的高维特征映射到一个实数上,作为该公式的输出。这是通过 single-layer feedforward neural network实现的。
显然,节点 \(i, j\) 之间的相关性是通过可学习参数$ W \(和\) a(·) $完成的。
②计算注意力系数
在 相关系数 的基础上,进行归一化处理得到注意力系数,这是通过softmax函数完成的。
计算公式如下:
此式输出 $ aij $ 即为两节点的边的注意力系数。
2.2 加权求和
根据计算好的注意力系数,把特征加权求和(aggregate)一下。公式如下:
其中,$ hi' $ 就是GAT输出的节点 \(i\) 的新特征(这是融合了领域信息得到的)。
这就是基本的,图注意力机制。
2.3 多通道注意力机制
常见的,使用multi-head机制增强注意力机制。
其类似于CNN的多维卷积,有多个卷积核且每个卷积核相互独立,使得输出的特征图也具有更多的通道数。
公式如下:
其中** \(K\) 为通道数**,下图中的曲线数表示了这一点。
这3条波浪线就代表3个独立的attention系数,独立学习,并且有着独立的注意力系数矩阵。
这在代码中是使用for循环实现的。
2.4 最终的输出
多头注意力机制输出层最终的输出如下:
这里的激活函数为softmax。