Task05 超大图上的节点表征学习
一、超大图节点表征学习面临的挑战
- 随着图神经网络层数增加,计算成本呈指数增长的问题,面临着保存整个图的信息和每一层每个节点的表征到内存(显存)而消耗巨大内存(显存)空间的问题。
- 也有不用把整个图的信息和每一层每个节点的表征放到GPU内存,但是有精度有损失,而且不利于提高内存利用率。
二、Cluster-GCN
为了解决普通方法无法训练超大图的问题,Cluster-GNN采取如下方法:
-
利用图节点聚类算法将一个图的节点划分为 c c c个簇,每一次选择几个簇的节点和这些节点对应的边构成一个子图,然后对子图做训练。
-
由于是利用图节点聚类算法将节点划分为多个簇,所以簇内边的数量要比簇间边的数量多得多,所以可以提高表征利用率,并提高图神经网络的训练效率。
-
每一次随机选择多个簇来组成一个batch,这样不会丢失簇间的边,同时也不会有batch内类别分布偏差过大的问题。
-
基于小图进行训练,不会消耗很多内存空间,于是我们可以训练更深的神经网络,进而可以达到更高的精度。
三、节点表征
-
每一层都通过聚合邻接节点的上一层的表征来生成中心节点的当前层的表征:
Z ( l + 1 ) = A ′ X ( l ) W ( l ) , X ( l + 1 ) = σ ( Z ( l + 1 ) ) (1) Z^{(l+1)}=A^{\prime} X^{(l)} W^{(l)}, X^{(l+1)}=\sigma\left(Z^{(l+1)}\right)\tag{1} Z(l+1)=A′X(l)W(l),X(l+1)=σ