文章目录
GAT
主要思想
对于一个一节点,计算所有邻接节点与其的相关系数(包括该节点自身),然后通过聚合这些邻接特征得到该节点的新特征。

相关系数的计算公式

N i N_i Ni表示节点 i i i的邻近节点,包括 i i i本身。
文中还涉及到一个新概念,叫多抽头注意力,如图1右边的图像所示,不同颜色的箭头都代表独立的一个注意力计算,进行多次注意力计算然后拼接或求平均。


pytorch实现代码
GraphSAGE

个人认为和空域gcn思想的区别不大,都是通过聚合邻接节点的信息来更新节点,只是提供了三种不同的的聚合方式(第5行类似于跳跃连接)。其目的和node2vec一样,得到节点的向量表示供下游任务使用。
注:邻接节点是通过某个固定采样大小采样得到的(只采样了一阶邻接),并不像gcn要得到整个图的邻接矩阵,所有GraphSAGE属于归纳(inductive)学习,能泛化到未知节点,而GCN则是转导(transductive)学习,对于新增节点只能重新训练。
Mean aggregator
将自身特征与邻接节点特征一起求平均,也就是将如下公式替换掉上图算法中的4、5行,

此时就类似于gcn中的传播规则了。
Pooling aggregator
分为max pooling和mean pooling,如下是max pooling的聚合方式

LSTM aggregator
通过将邻居序列的嵌入作为LSTM的输入来实现邻居节点的聚合。
JK-Net (Representation Learning on Graphs with Jumping Knowledge Networks)
with Jumping Knowledge Networks)
问题提出
我们知道,对于gcn,堆叠几层就相当于聚合几阶邻域的节点的信息,对于比较中心且密集的节点,层数如果较深的话,聚合信息就会很快地扩展到全图,而对于那些比较边缘且稀疏的点,如果层数较少的话,就只能聚集到局部很少的信息。作者做了一个实验来验证。

如上图,方块形的节点为起始节点,蓝色为影响的节点,对比a、b,同样扩展4步,在核心的节点的影响分布几乎覆盖整个图,在边枝节点的影响分布就很少。对比b、c,随着步数的增加,影响分布会越来越广。
作者表示,太快的信息扩张可能会导致平均范围过广,丢失重要信息,同时在一个图的其他部分,为了稳定节点表示,一个充足的邻接信息可能是需要的。至此,作者提出了一个对每个节点和任务自适应调节聚合邻接范围的网络。
网络结构

如上图,是一个4层的JK-Net,每层的输出表示聚合了不同范围的邻接信息,将每层的输出都送到最后一层进行层级聚合来得到最终输出。
层级聚合分三种:
1、拼接
拼接 [ h v ( 1 ) , . . . , h v ( k ) ] [h_v^{(1)},...,h_v^{(k)}] [hv(1),...,hv(k)]之后我们可以进行一个线性变换,如果线性变换矩阵是共享的,则该方法并不是节点自适应的。
2、最大池化
m a x ( h v ( 1 ) , . . . , h v ( k ) ) max(h_v^{(1)},...,h_v^{(k)}) max(h
2302



被折叠的 条评论
为什么被折叠?



