Administrator
发布于 2022-10-03 / 3 阅读
0

Graph U-Nets(ICML 2019)

我们研究了图数据的表示学习问题。卷积神经网络可以自然地对图像进行操作,但在处理图形数据方面存在重大挑战。虽然像U-Nets这样的编码器-解码器架构已经成功地应用于许多图像像素化预测任务,但在图数据方面还缺乏类似的方法。这是因为池化和上采样操作在图数据上并不自然。为了解决这些挑战,我们在这项工作中提出了新的图池(gPool)和去池(gUnpool)操作。gPool层根据节点在可训练投影向量上的标量投影值,自适应地选择一些节点组成一个较小的图。我们进一步提出gUnpool层作为gPool层的逆操作。gUnpool层利用在对应的gPool层中选择的节点位置信息,将图恢复到原来的结构。基于我们提出的gPool和gUnpool层,我们在图上开发了一个编码器-解码器模型,称为图U-Nets。我们在节点分类和图分类任务上的实验结果表明,我们的方法比以前的模型取得了一致的更好的性能。

Graph Pooling Layer

在本节中,我们建议使用图池(gPool)层来支持对图数据进行下采样。在这一层中,我们自适应地选择一个节点子集来形成一个新的但更小的图。为此,我们采用了一个可训练的投影向量。通过将所有节点特征投影到1D,我们可以对节点选择执行最大池化。因为选择是基于每个节点的1D占用,所以新图中的连通性在节点之间是一致的。给定一个节点i及其特征向量xi, xi在p上的标是yi = xip/‖p‖。这里,yi衡量的是在投影到p的方向上时,节点i能保留多少信息。通过采样节点,我们希望尽可能多地保留原始图中的信息。为了实现这一点,我们选择p上标量投影值最大的节点形成一个新图。(类似LDA) 假设图G中有N个节点,每个节点包含C个特征。图可以用两个矩阵表示;它们是邻接矩阵A '∈RN ×N和特征矩阵X '∈RN ×C。邻接矩阵A中的每个非零项表示图中两个节点之间的一条边。特征矩阵xx '中的每个行向量x ' i表示图中节点i的特征向量。图池层的分层传播规则为 其中k为新图中选择的节点数。rank(y, k)是节点排序的操作,它返回y中k个最大值的索引。rank(y, k)返回的idx包含为新图选择的节点的索引。A(idx, idx)和X(idx,:)执行行/列提取,形成新图的邻接矩阵和特征矩阵。Y (idx)提取Y中的值,索引为idx,然后进行sigmoid操作。 表示按元素计算的矩阵乘法。 在pyg库中当设置参数min_score时使用sigmoid(y(idx))将y输出到[0,1]区间,若未给出min_score时则使用tanh(y(idx)/‖p‖_2)将y输出到[-1,1]区间

Graph Unpooling Layer

为了对图数据进行上采样操作,我们提出了图解池(gUnpool)层,它执行与gPool层相反的操作,并将图恢复到其原始结构。为了实现这一点,我们记录在相应的gPool层中选择的节点的位置,并使用该信息将节点放回到图中的原始位置。形式上,我们提出了图解池层的分层传播规则为 其中idx包含对应gPool层中选定节点的索引,该索引将图的大小从n个节点减少到k个节点。X '是当前图的特征矩阵, 是新图的初始空特征矩阵。Distribute函数是将X '中的行向量根据存储在idx中的对应索引分布到 特征矩阵中的操作。在 中,带有idx下标的行向量被X '中的行向量更新,而其他的行向量保持为零。

Graph U-Nets Architecture

在我们的图U-Nets (g-U-Nets)中,我们首先应用一个图嵌入层将节点转换为低维表示,因为一些数据集(如Cora (Sen et al., 2008))的原始输入通常具有非常高维的特征向量。在图嵌入层之后,我们通过堆叠几个编码块来构建编码器,每个编码块包含一个gPool层,后面是一个GCN层。gPool层减少了图的大小以编码高阶特征,而GCN层负责从每个节点的一阶信息中聚合信息。在解码器部分,我们堆叠与编码器部分相同数量的解码块。每个译码块由gUnpool层和GCN层组成。gUnpool层将图恢复到其更高分辨率的结构,GCN层从邻域聚集信息。在编码器层和解码器层的对应块之间存在跳跃式连接,将空间信息传输到解码器以获得更好的性能。跳过连接既可以是特征映射的添加,也可以是连接。最后,我们在softmax函数之前使用GCN层进行最终预测。图3展示了一个g-U-Nets示例,其中编码器和解码器中有两个模块。值得注意的是,在每个gPool层之前都有一个GCN层,从而使gPool层能够隐式地捕获图中的拓扑信息。