今天学习了图神经网络论文《ASAP: Adaptive Structure Aware Pooling for Learning Hierarchical Graph Representations》提出的自适应结构感知池化方法(Adaptive Structure Aware Pooling, ASAP),发表于AAAI,2020.
前言
这篇论文回顾近年图神经网络中的池化方法并提出了(1)一种能够分层捕获局部子图信息的稀疏池化算子,该池化方法能够根据池化图的边连接更好的学习全局特征;(2)一种新的更适合与像池化这种全局任务的自注意力机制;(3)一种新的图卷积方法LEConv,用来自适应的学习图子结构中的局部极值(local extremas)。
该论文着重回顾了一些典型的non-spectral的池化方法并将此类方法划分为了全局池化方法(Global pooling)和层次化池化方法(Hierarchical pooling)。
全局池化方法可以一步完成池化,该论文列举了3种基于注意力机制的全局池化方法:
- 通过迭代的基于内容的注意力方法找到图中每个节点的重要性的 S e t 2 S e t Set2Set Set2Set。(https://arxiv.org/abs/1511.06391)
- 使用全局注意力机制聚合图中节点的Global-Attention方法。(https://arxiv.org/abs/1511.05493)
- 根据节点特征排序再将几个节点拼接来表述图结构的SortPool。(https://chyson.net/papers/AAAI_2018_DGCNN.pdf)
相比之下,层次化池化方法侧重于捕捉图的拓扑结构信息。
- DiffPool通过聚合节点形成了若干个簇,簇个数为固定的(超参数)。其中聚类所用的矩阵为通过一层GNN计算的软分配矩阵,该矩阵是一个稠密矩阵,导致其对大图计算效率较低。(http://papers.nips.cc/paper/7729-hierarchical-graph-representation-learning-with-differe)
- TopK基于一个可学习的投影向量对节点进行评分,并保留部分高分节点。它避免了节点聚类和软分配矩阵的计算,以保持图计算的稀疏性。(https://arxiv.org/abs/1905.05178)
- SAGPool通过自注意力机制改进了TopK,使用GNN为节点打分的同时能够考虑图结构。(https://arxiv.org/abs/1904.08082)
该论文提到:由于TopK和SAGPool不聚合节点,也不计算软边权值,无法有效保存节点和边信息。该论文提出的ASAP具有层次化池化方法的所有优良特性的同时不影响图操作的稀疏性。
方法
Cluster Formation using Master2Token
稀疏的聚类分配矩阵通过local clustering方法构建,具体可参考 http://yalma.fime.uanl.mx/~roger/ftp/MM17_removed/cites/evidence/2007%20CSR%20Schaeffer.pdf。
每一个簇表示为 c v ( v i ) c_v(v_i) cv(vi)。获得簇的第二步为学习该簇的整体表征。该论文首先回顾了两种典型的自注意力方法:Token2Token和Source2Token。
Token2Token:
α
i
,
j
=
s
o
f
t
m
a
x
(
v
→
T
σ
(
W
h
i
∣
∣
W
h
j
)
)
{\alpha _{i,j}} = softmax ({\overrightarrow v ^T}\sigma (W{h_i}||W{h_j}))
αi,j=softmax(vTσ(Whi∣∣Whj))
其中
h
i
h_i
hi和
h
j
h_j
hj分别为输入集合
h
h
h中的target和candidate。我最近看到的一篇应用这种注意力的图网络文章推荐给大家:Attributed Graph Clustering: A Deep Attentional Embedding Approach (https://arxiv.org/pdf/1906.06532.pdf)。
Source2Token:
α
i
,
j
=
s
o
f
t
m
a
x
(
v
→
T
σ
(
W
h
j
)
)
{\alpha _{i,j}} = softmax ({\overrightarrow v ^T}\sigma (W{h_j}))
αi,j=softmax(vTσ(Whj))
上述两种自注意力方法都没有考虑簇内的信息,就此动机,该论文提出了考虑簇内信息的自注意力方法Master2Token。首先通过对簇内所有节点特征取最大值的方式获取一个自注意力机制中的master query。进一步通过结合所有附加节点计算
α
i
,
j
\alpha_{i,j}
αi,j:
α
i
,
j
=
s
o
f
t
m
a
x
(
w
→
T
σ
(
W
m
i
∣
∣
x
j
′
)
)
{\alpha _{i,j}} = softmax ({\overrightarrow w ^T}\sigma (W{m_i}||x_j^{'}))
αi,j=softmax(wTσ(Wmi∣∣xj′))
α
i
,
j
\alpha_{i,j}
αi,j表达着节点
v
j
v_j
vj在簇
c
h
(
v
i
)
c_h(v_i)
ch(vi)中的隶属度。该文使用这个
α
i
,
j
\alpha_{i,j}
αi,j作为类似于其他层次化池化方法中的聚类分配矩阵,即
S
i
,
j
=
α
i
,
j
S_{i,j}=\alpha_{i,j}
Si,j=αi,j。于是,簇
c
h
(
v
i
)
c_h(v_i)
ch(vi)的特征向量的每一维度特征可通过如下计算:
x
i
c
=
∑
j
=
1
∣
c
h
(
v
i
)
∣
α
i
,
j
x
j
x_i^c = \sum\limits_{j = 1}^{\left| {{c_h}({v_i})} \right|} {{\alpha _{i,j}}{x_j}}
xic=j=1∑∣ch(vi)∣αi,jxj
这个
α
i
,
j
\alpha_{i,j}
αi,j融合了簇内的结构信息。
Cluster Selection using LEConv
该论文也用到了TopK方法,但是对簇进行打分而不是节点,然后也会根据池化率pooling ratio淘汰得分较低的簇。对簇进行打分的函数,就是这部分设计的GCN的变体(Local Extrema Convolution, LEConv)。簇
i
i
i的得分
ϕ
i
\phi _i
ϕi由如下LEConv计算:
ϕ
i
=
σ
(
x
i
c
W
1
+
∑
j
∈
N
(
i
)
A
i
,
j
c
(
x
i
c
W
2
−
x
j
c
W
3
)
{\phi _i} = \sigma (x_i^c{W_1} + \sum\limits_{j \in {\rm N}(i)} {A_{i,j}^c(x_i^c{W_2} - x_j^c{W_3})}
ϕi=σ(xicW1+j∈N(i)∑Ai,jc(xicW2−xjcW3)
注意这里的簇
x
i
c
x_i^c
xic在上文已经通过Master2Token方法映射成向量表示了。上式第一项是对自身的评价,第二项是考虑了其与邻簇的关系的评价,二者综合得到最终的分数。类似于SAGPool方法,该得分也同样被点乘到了簇特征上,以保证上式参数的可学习性。LEConv可以同时考虑簇的全局和局部重要性来学习给簇打分。
实验
类似于SAGPool中的层次化网络结构,该论文也同样基于此结构设计的网络模型,如下图。
图分类实验所使用数据集如下:
该论文对比了我们上面提到的几种典型的全局池化方法和层次化池化方法,从外部比较结果来看,ASAP方法具有明显的效果提升。结果如下表:
此外,该论文也分别设计了消融实验来分析其设计的自注意力方法Master2Token和GCN方法LEConv的有效性,结果分别如下面两表。
总结:
该论文是对层次化池化方法的综合和优化,它解决了DiffPool中非稀疏的问题,同时利用聚类的思想进行了采样。该方法实际上利用了两次自注意力机制打分,一次作用在簇内,一次作用在簇间,是一个非常值得学习的层次化池化方法。