Graph U-Nets小结

Graph U-Nets中提出了gPool和gUnpool两个操作,基于这两层生成encoder-decoder的模型,关于gPool层:

1. 这里使用一个可训练的投影向量Graph U-Nets小结,将所有的点投影到1D上,对于每个点Graph U-Nets小结的特征向量Graph U-Nets小结都有:Graph U-Nets小结Graph U-Nets小结保留了节点投影到Graph U-Nets小结方向上时的信息

2. 进行池化操作时,是取Graph U-Nets小结上的前Graph U-Nets小结个。为了尽可能多的保留前面图上的特征信息,这里先将投影到Graph U-Nets小结上的排序,然后取前Graph U-Nets小结个:Graph U-Nets小结

3. 然后根据2中拿到的索引对对应的Graph U-Nets小结行**操作:Graph U-Nets小结

4. 根据2中得到的索引截取特征Graph U-Nets小结Graph U-Nets小结

5. 根据2中得到的索引形成新的邻接矩阵:Graph U-Nets小结

6. 根据2中得到的索引形成新的特征矩阵,其中用Graph U-Nets小结来控制所选节点的信息

上述过程就完成了图数据上的池化操作过程,得到了池化后的特征矩阵和邻接矩阵,下面是gPool的过程图以及各个标识符的意义:

Graph U-Nets小结

 上述的池化层即模型中的encoder部分,主要是减少特征图的大小,扩大感受野,在decoder部分特征图需要进行上采样操作,回复原来的分辨率。这里Granph U-Nets中提出了gUnpool层,将图恢复到其原始结构。为了实现这一点,记录gPool层中选择的点的位置信息,并利用这些信息将这些点放回原始位置。这里作者提出图的分层传播规则:Graph U-Nets小结 。

其中Graph U-Nets小结包含了从Graph U-Nets小结个节点选出Graph U-Nets小结个节点的索引信息,Graph U-Nets小结是当前图的特征矩阵,Graph U-Nets小结是新图初始的空特征矩阵。Graph U-Nets小结即根据Graph U-Nets小结相应的索引Graph U-Nets小结,将行向量Graph U-Nets小结填入新的特征空矩阵Graph U-Nets小结,矩阵的其他地方则保持为0。下图示从gPool到gUnpool的过程:

Graph U-Nets小结

 文章提到了两处改进:

改进1:为了在GCN层能更好的聚合邻居节点的信息,需要增加节点之间的连通性,这里使用了Graph U-Nets小结阶的Graph U-Nets小结来聚集其邻居节点的信息,这里Graph U-Nets小结取值为2,因为在GCN层已经聚集了一阶的相邻节点的信息。所以这里利用下面的等式来代替gPool层中第五小点处等式:Graph U-Nets小结         Graph U-Nets小结

改进2:邻接矩阵在归一化之前会增加一个自环:Graph U-Nets小结,赋予自身节点和邻居节点一样的权重,在这里考虑到自身的特征对预测来说应该更加重要,就增加自身节点的权重,将邻接矩阵改为:Graph U-Nets小结

下图是整个graph u-nets的过程:

Graph U-Nets小结