图神经网络之GAT
上一篇博客提到了在图神经网络中应用比较广泛的GCN(Graph Convolutional Networks),这篇博客就来谈谈GAT(Graph Attention Networks)。
目录
什么是GAT
什么是GAT呢?先看论文的名字”Graph Attention Networks“,图注意力网络,其实它的缩写应该是”GAN”,但是无奈这个名字已经被大名鼎鼎的”Generative Adversarial Network“捷足先登了,只能退而求其次称之为”GAT”了。
上面仅是个人猜想,如有雷同不甚荣幸,哈哈哈!下面言归正传。
GCN
对于GCN而言,要解决的问题是如何在非殴式数据(Non Euclidean Data)上进行卷积运算,为此大致分出两个派别,一派选择在Spatial domain上进行卷积运算,另一派则在Spectral domain上进行卷积运算。
- 对于Spatial approach,棘手的问题是如何处理graph data中每个顶点不同数量的邻居顶点和实现参数共享。
- 对于Spectral approach,该方法使用图上的傅里叶变换,将数据变换到频域进行处理之后再使用傅里叶逆变换回到时域,该方法很巧妙,但是受限于图的结构。该方法要求图的拉普拉斯矩阵是一个半正定的对称矩阵,因此Spectral domain的方法并不适合处理有向图和带权图等。
GAT
GAT则另辟蹊径,其引入注意力机制实现了图数据的特征表示(feature representation)。注意力机制可以处理变长的输入,同时通过注意力系数可以更多的关注输入中最相关的部分。
GAT有以下优点:
- GAT的操作是高效的
- 可以应用在有任意度的图节点上
- 可以应用到归纳学习(Inductive Learning)问题上
GAT 架构
Graph Attention Layer
GAT网络由多层的Graph Attention Layer组成。
对于每一层,输入是节点特征集合:
其中
输出是新的特征集合:
其中
类似于CNN卷积层的输入是一个feature map,输出是一个新的feature map。
Attention Coefficient
对于输入的每一个节点特征
另外还需要学习一个注意力机制
上式计算了节点
其中

之后使用 softmax 对
在GAT模型的实际处理中,
其中
Linear Combination
计算得到的注意力系数

新特征的公式化表示为:
这里添加了一个非线性激活函数
Multi-head Attention
为了学习到更多的特征,可以使用multi-head attention策略,即在每一层学习
其中
特别的,如果Graph Attention Layer是最后一层,则不能使用 concatenation 操作,因为在最后一层我们希望得到的是一个实数(在分类问题中该实数可能表示的是属于某一类的概率,在回归问题中可能表示的是一个预测值),而非一个
至此,GAT模型的结构介绍就完结啦。
GAT模型源码
Reference
- Graph Attention Networks,arxiv