这篇文章针对的点是:现在的graph上的representation learning的一种方式是neighborhood aggregation,也就是在每一个节点做卷积时,都是将其周围邻居节点的信息聚合在一起。这样做的话,有k层网络,就是将每个节点的k-hop邻近节点的信息都聚合过来了。但是这种策略并不完美,Kipf & Welling在2017年的一篇关于GCN的论文中展示了,两层的GCN表现效果最好,层数增加反而表现下降(一种想法是,层数增加了,局域信息在不断的卷积,加权平均中被washed out了)。基于这样的观察,本文作者首先要探究一下这种neighborhood aggregation来做卷积的方法的特点及局限,然后提出自己的卷积策略。
同样一个graph中,如果起点不同,random walk相同步数之后的影响范围也就不同(见下图),这个random walk多少步对应的就是进行卷积的迭代次数。
上图中展示的graph可以大体分为两个部分,一个是中间的,连接很密集,节点也很密集的core部分,另一个是graph周边节点很稀疏,连接也很稀疏的tree部分。a,b,c分别是从core部分的方块标记处开始迭代四步,从tree部分的方块开始迭代4步,从tree方块标记处开始迭代5步。可以看出,在连接密集节点密集的节点,在迭代相同步数之后,他所聚合的信息,远远大于那些边缘地带,连接稀疏区域的节点。也就是说,graph不同位置的结构严重影响了每一个点所能够获得的信息范围大小,也就是receptive field的大小。不同的应用中,需要的receptive field大小是不同的,更重要的是,在同一个graph中,由于不同区域结构的差异,有些节点可能聚合了太多节点的信息,以至于一些有用的信息都损失掉了,而有的位置的节点反而聚合的信息更少,需要更大的receptive field来使得预测更加稳定。基于这种想法,作者提出了jumping knowledge networks,也就是能根据graph不同位置不同结构调整每一个节点所聚合信息范围大小的网络,而不是像传统的aggregation那样,有几层layer,就是聚合了几个hop的邻近节点信息,考虑不到虽然hop数相同,但是有的节点加权平均了太多节点的信息,而有的节点又没有得到足够多的邻近节点的信息。
jumping knowledge的jumping指的是卷积网络的每一层的representation并不是只输出到下一层网络,而是每一层的representation都直接jump到最后一层网络,也就是不同receptive field所抓取出的信息全都送到最后一层网络,这样,需要给哪个节点多大的receptive field就可以通过training来确定。
上图便是JK-Net的示意图。作者在本文中探索了三种将不同layer的representation结合在一起的aggregation mechanism,分别是concatenation,max-pooling,LSTM-attention。
concatenation:将每一个layer的representation简单的连接起来(这里面1~k代表layer的层数,h是hidden state,v代表某一个节点),然后进行线性变换,如果进行线性变换的权重是所有节点共享的,那么这个就不是针对每个节点进行适应、调节的,否则就是。
max-pooling:针对每一个feature选择一个最informative,最适合的layer,例如节点的某个feature是表示一些局部信息的,而有些feature是表示全局信息的,那么表示局部信息的就要选取浅层网络的输出,而全局信息的就要选取深层网络的输出。
LSTM-attention:这个是能够针对每个节点都单独选择聚合信息的neighborhood range大小的方法。对于l层节点v的输出,在layer aggregation的时候会分配一个attention score 给第l层的节点v的输出,这样,每一个节点最终的输出是,不同的节点分配给不同layer的attention score不同,就能实现每一个节点聚合信息时都可以选择合适自己的neighborhood range。至于LSTM是这样的,都输入到一个双向的LSTM中,forward-LSTM和backward-LSTM的结果合并起来,经过线性映射得到每一layer每个节点v的一个importance score,然后这个score经过softmax得到attention。而最终的输出是双向LSTM的输出经过attention score的加权求和得到的。