1.LGCL算法框架

使得卷积神经神经网络无法直接应用于图数据的原因主要有两个:
(1)图数据没有固定数量的领域节点;
(2)图数据的节点没有显式或者隐式的顺序;
在LGCL算法中,作者通过k-最大节点选择部分确定图数据的邻域节点以及领域节点的顺序;通过1-D卷积神经网络将节点的邻域信息进行卷积形式的信息聚合得到输出。下图为LGCL的算法流程图。
《Large-Scale Learnable Graph Convolutional Networks》论文理解

2.k-最大节点选择

k-最大节点选择的主要目的就是将图结构数据转化为欧式结构的网格状数据。函数公式表示为:
Xl~=g(Xl,A,k)(1)\tilde{X_l}=g(X_l,A,k)\tag1

其中,XlRN×CX_l\in R^{N\times C}表示图结构数据的特征矩阵,CC表示节点的特征维度,AA表示邻接矩阵,kk为超参数,表示选择最大节点的个数,一般等于所有节点的度的平均值。
具体实现步骤(以节点ii为例):
(1)利用AA矩阵,找到节点ii的所有1-邻域节点{i1,...,in}\{i_1,...,i_n\},并将这nn个节点拼接成矩阵MliRn×CM_l^i \in R^{n\times C};如果n<kn<k,可以构造节点的所有特征都为0的伪节点进行拼接。
(2)对MliM_l^i矩阵每一列的值进行由大到小的排序,并选出前kk个值,得到M^liRk×C\hat M_l^i\in R^{k\times C}矩阵,目的是选出邻域节点的各个特征中良好表现该特征的值,之后将节点ii拼接于M^li\hat M_l^i的第一行,得到最后的网格化数据M~liRk+1×C\tilde M_l^i\in R^{k+1\times C}
对所有节点上述操作后就相当于实现了函数g()g(*),将矩阵XlX_l转化为张量Xl~RN×(k+1)×C\tilde{X_l}\in R^{N\times (k+1)\times C}

3.1-D卷积神经网络

1-D卷积神经网络的主要目的将整理好的每个节点邻域信息利用一维卷积核卷积实现信息聚合操作,得到最后的输出。函数公式表示为:
Xl+1=c(Xl~)(2)X_{l+1}=c(\tilde{X_l})\tag2
其中,Xl+1X_{l+1}表示卷积后的输出。
Xl~RN×(k+1)×C\tilde{X_l}\in R^{N\times (k+1)\times C}中,NN可以视为批大小(batch size)(batch\ size)(k+1)(k+1)可以视为一维图像(样本)的大小,CC可以认为每个像素的通道数。所以与传统卷积类比,卷积核的大小,与批大小无关,与输入样本的特征维度CC,输出样本维度DD,以及自定义的卷积核大小mm有关,卷积核Rm×C×D\in R^{m\times C \times D}。可以使用多层1-D卷积神经网络,但是对每个节点而言,多层1-D卷积神经网络之后的输出,必须还是一维向量R1×D\in R^{1\times D},才可以再次输入k-最大节点选择部分。最简单的卷积为卷积核大小选择为k+1k+1,可以直接得到Xl+1RN×DX_{l+1}\in R^{N\times D}

3. 可学习图卷积网络

作者使用下图所示的网络结构实现了最好的分类性能:
以下图为例:
(1)第一层为图嵌入层:将输入节点的多通道特征进行降维,减少节点的通道数;图嵌入层相当于一层全连接层;
X1=X0W0(3)X_1=X_0W_0\tag3
其中,X0RN×C0X_0\in R^{N\times C_0},X1RN×D0X_1\in R^{N\times D_0},W0RC0×D0W_0\in R^{C_0\times D_0},C0>D0C_0>D_0。图中C=2C=2,D0=1D_0=1
(2)第二层为LGCL层,输入节点维度为C1=D0C_1=D_0,输出维度为D1=1D_1=1;
(3)第三层为LGCL层,输入为第二层LGCL的输出与输入的拼接,输入维度为C2=2C_2=2,输出维度D2=1D_2=1;
(4)第四层为全连接层,输入为第三层LGCL的输出与输入的拼接,输入维度C3=3C_3=3,输出为节点的分类概率。
《Large-Scale Learnable Graph Convolutional Networks》论文理解

4.利用子图训练大型图数据

主要的思想是:将一个大型的图通过采样的方式确定初始的中心节点以及中心节点的邻域节点,由这些节点可以组成原图数据的子图(单个样本),通过多次采样得到多个样本实现小批量训练。
下图是得到子图的伪代码:
(1)首先从所有节点NN中,随机采样NinitN_{init}个节点,表示为initNodesinitNodes;(代码第2行)
(2)从initNodesinitNodes节点的1-邻域中再随机采样NmN_m个节点,表示为newAddNodesnewAddNodes;(代码6-10行)
(3)循环过程(2)直到采样节点总数SS大于等于NsN_s停止循环;每次迭代过程中的NmN_m都为不同值。
(4)S>NsS>N_s时,需要把最后一次过程(2)得到的采样节点再次采样NrN_r个节点,使得S=NsS=N_s。(代码11-14行)
《Large-Scale Learnable Graph Convolutional Networks》论文理解
下图可以更加直观的了解子图的采样原理:
《Large-Scale Learnable Graph Convolutional Networks》论文理解

相关文章: