Graph U-Nets小结

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

1. 这里使用一个可训练的投影向量p,将所有的点投影到1D上,对于每个点i的特征向量x_{i}都有:y_{i}=x_{i}p/||p||y_{i}保留了节点投影到p方向上时的信息

2. 进行池化操作时,是取y上的前k个。为了尽可能多的保留前面图上的特征信息,这里先将投影到y上的排序,然后取前k个:idx=rank(\textbf{y},k)

3. 然后根据2中拿到的索引对对应的y行激活操作:\widetilde{y}=sigmoid(y(idx))

4. 根据2中得到的索引截取特征X\widetilde{X}^{l}=X^{l}(idx:)

5. 根据2中得到的索引形成新的邻接矩阵:A^{l+1}=A^{l}(idx,idx)

6. 根据2中得到的索引形成新的特征矩阵,其中用X^{l+1}=\widetilde{X}^{l}\bigodot (\widetilde{y}\textbf{1}_{C}^{T})来控制所选节点的信息

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

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

其中idx包含了从N个节点选出k个节点的索引信息,X^{l}\in R^{K\times C}是当前图的特征矩阵,0_{N\times C}是新图初始的空特征矩阵。distribute(0_{N\times C},X^{l},idx)即根据X^{l}相应的索引idx,将行向量X^{l}填入新的特征空矩阵0_{N\times C},矩阵的其他地方则保持为0。下图示从gPool到gUnpool的过程:

 文章提到了两处改进:

改进1:为了在GCN层能更好的聚合邻居节点的信息,需要增加节点之间的连通性,这里使用了k阶的A来聚集其邻居节点的信息,这里k取值为2,因为在GCN层已经聚集了一阶的相邻节点的信息。所以这里利用下面的等式来代替gPool层中第五小点处等式:A^{2}=A^{l}A^{l}         A^{l+1}=A^{2}(idx,idx)

改进2:邻接矩阵在归一化之前会增加一个自环:\widehat{A}=A+I,赋予自身节点和邻居节点一样的权重,在这里考虑到自身的特征对预测来说应该更加重要,就增加自身节点的权重,将邻接矩阵改为:\widehat{A}=A+2I

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

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值