本篇博客要介绍的是图注意力网络(Graph Attention Networks,GAT),它通过注意力机制(Attention Mechanism)来对邻居节点做聚合操作,实现对不同邻居权重的自适应分配(GCN中不同邻居的权重是固定的,来自归一化的拉普拉斯矩阵),从而大大提高了图神经网络模型的表达能力。论文下载(提取码:68e6)
注意力机制
DNN中的注意力机制是受到认知科学中人类对信息处理机制的启发而产生的。由于信息处理能力的局限,人类会选择性地关注完整信息中的某一部分,同时忽略其他信息。例如,我们在看一幅画时,通常会把视觉关注焦点放到语义信息更丰富的前景物体上,而减少对背景信息的关注,这种机制大大提高了人类对信息的处理效率。
如下图所示,我们的视觉会更加关注画面上的猫,这种对视觉信息集中处理的机制在视觉问答场景中被发挥得淋漓尽致。 比如,如果要确定上图中的猫在做什么,人类会把视觉信息快速集中在猫的前爪以及面部上,而忽略对其他视觉信息的辨职,从而准确得出图中的猫在睡觉的答案。
可见,注意力机制的核心在于对给定信息进行权重分配,权重高的信息意味着需要系统进行重点加工。 下面来进一步阐述神经网络中注意力机制的数学表达形式(如下图所示):
如上图所示,Source是需要系统处理的信息源,Query代表某种条件或者先验
信息,Attention Value 是给定 Query信息的条件下,通过注意力机制从Source中提取得到的信息。一般Source里面包含有多种信息,我们将每种信息通过Key-Value对的形式表示出来,注意力机制的定义如下:
A t t e n t i o n ( Q u e r y , S o u r c e ) = ∑ i s i m i l a r i t y ( Q u e r y , K e y i ) ⋅ V a l u e i Attention(Query,Source) = \sum_isimilarity(Query,Key_i) \cdot Value_i Attention(Query,Source)=i∑similarity(Query,Keyi)⋅Valuei
上式中的 Query,Key,Value,Attention Value在实际计算时均可以是向量形式。 s i m i l a r i t y ( Q u e r y , K e y i ) similarity(Query,Key_i) similarity(Query,Keyi)表示Query 向量和Key向量的相关度,最直接/简单的方法是可以取两向量(向量维度相同)的内积 < Q u e r y , K e y i > <Query,Key_i> <Query,Keyi>(用内积去表示两个向量的相关度是DNN里面经常用到的方法,对于两个单位向量(两个单位向量的内积就是余弦相似度[-1,1]),如果内积接近1,代表两向量接近重合,相似度就高),上式清晰地表明,注意力机制就是对所有的Value信息进行加权求和,权重是Query与对应Key的相关度。
我们可以继续通过上述视觉问答的例子来说明注意力机制是怎样运用的。
首先,显然Query 应该是代表问题句子“小猫在做什么?”的语义向量表达,一
般我们用LSTM模型进行提取。H表示整张图像在经过CNN模型后得到的特征图张量 H ∈ R H ′ × W ′ × C ′ H\in R^{H'\times W' \times C'} H∈RH′×W′×C′, H ′ 、 W ′ 、 C ′ H'、W'、 C' H′、W′、C′分别代表特征图的高度、 宽度和通道数。 通过前面所学的知识我们知道,人类的视觉系统分配给图里不同位置的信息的注意力是不同的。所以很自然地,我们将特征图H转化成 H ∈ R L × C ′ H\in R^{L\times C'} H∈RL×C′,其中 L = H ′ × W ′ L=H'\times W' L=H′×W′表示空间位置的长度, H i , : ∈ R C ′ H_{i,:} \in R^{C'}