2018 ICLR
1 intro
1.1. GCN的不足
- 无法完成inductive任务
- inductive任务是指:
- 训练阶段与测试阶段需要处理的graph不同。
- 通常是训练阶段只是在子图上进行,测试阶段需要处理未知的顶点。
- GGN 的参数依赖于邻接矩阵A/拉普拉斯矩阵L,所以换了一张图,就会有不同的A和L
- inductive任务是指:
- 处理有向图的瓶颈,不容易实现分配不同的学习权重给不同的邻居
1.2 本文思路
- 引入masked self-attentional layers 来改进前面图卷积的缺点
- 对不同的相邻节点分配相应的权重,既不需要矩阵运算,也不需要事先知道图结构
- attention为每个节点分配不同权重,关注那些作用比较大的节点,而忽视一些作用较小的节点
2 GAT
- 和一般注意力机制一样,GAT的计算也分为两步
- 计算注意力系数
- 加权求和
2.1 输入 输出
2.1.1 输入
单个 graph attentional layer的输入是一个节点特征向量集合
- N是节点数量
- F是每个节点特征维度
2.1.2 输出
新的节点特征集合
2.2 计算注意力系数
2.2.1 全局attention的弊端
- self-attention是一种Global graph attention,会将注意力分配到图中所有的节点上,但是这样会存在以下问题
- 1,丢失结构信息
- 基于空间相似假设,一个样本与一定范围内的样本关系较密切
- 2,样本较多的时候,计算量非常大
- 1,丢失结构信息
2.2.2 masked self-attention
- 为了解决这一问题,作者使用了一种 masked attention 的方法
- 对于一个样本来说只利用邻域内的样本计算注意力系数和新的表示
- 即仅将注意力分配到节点的一阶邻居节点集上
- 针对每个节点执行 self-attention机制
-
- eij就是i点和其邻居j点的注意力相关系数
- 为一个映射函数(这边计算eij的时候漏了一个激活函数,论文中使用的是LeakyReLU)
- hi,hi是点i和点j的特征向量
-
- 计算完点i和所有邻居的注意力相关系数后,引入softmax对所有相邻节点进行正则化
- || 表示拼接(concat)操作
2.2.3 加权求和
- 得到归一化的注意力系数后,使用归一化的值计算对应特征的线性组合,作为每个顶点这一层最后的输出特征
2.2.4 多头自注意力
-
使用K个独立的 attention 机制,然后他们的特征拼接在一起
- 这样每一层输出的维度为KF'
-
对于最后一个卷积层,不采用拼接的方式合并不同的attention机制的结果了,而是采用求平均的方式进行处理
3 实验
3.1 数据集
3.2 实验结果
3.2.1 transductive learning
训练和测试在一张图上
3.2.2 inductive learning
训练和测试不在一张图上