解读三种经典GCN中的Parameter Sharing

解读三种经典GCN中的Parameter Sharing

Parameter Sharing对于卷积运算来讲也是至关重要,因为如何sharing直接决定了参数的数量。在GCN可能更尤为重要了,因为graph上每个顶点的度都不一样,所以不能按照CNN的方式来进行sharing。

这里介绍三种目前较为流行的GCN模型。

1 Defferrard, M., Bresson, X., & Vandergheynst, P. (2016)

这里的GCN运算可以写成如下公式:

y=\sigma \left(U  g_\theta(\Lambda)  U^T x \right) \qquad(1)

g_\theta(\Lambda)=\sum_{j=1}^K \alpha_j \Lambda^j \qquad(2)

公式中符号的定义与我之前的回答(如何理解 Graph Convolutional Network(GCN)?)保持一致,并且我推导了以上的运算等价于:

y=\sigma \left( \sum_{j=0}^{K-1} \alpha_j L^j x \right) \qquad(3)

很明显 \alpha_j 是可学习的参数,可以看到 \alpha_jL^j 保持一致,我们知道 L^j 对应着 j 阶neighbor,这意味着在同阶的邻居上参数共享(可以学习的参数相同),不同阶的邻居上参数不共享(可以学习的参数不同)。

举个例子,具体信息还是同(如何理解 Graph Convolutional Network(GCN)?

在下图的graph上我们取 K=1,2,3 的卷积核,结果如下所示:

graph示意图
  • 卷积核(K=1)

\left[  \begin{matrix}    \alpha_0 & 0 & 0 &0&0&0\\    0 & \alpha_0 & 0 &0&0&0 \\    0 & 0 & \alpha_0 &0&0&0\\    0 & 0 & 0 &\alpha_0&0&0\\   0 & 0 & 0 &0&\alpha_0&0\\    0 & 0 & 0 &0&0&\alpha_0   \end{matrix}   \right]

  • 卷积核(K=2)

\left[  \begin{matrix}    \alpha_0+2\alpha_1 & -\alpha_1 & 0 &0&-\alpha_1&0\\    -\alpha_1 & \alpha_0+3\alpha_1 & -\alpha_1 &0&-\alpha_1&0 \\    0 &- \alpha_1 & \alpha_0+2\alpha_1 &-\alpha_1&0&0\\    0 & 0 & -\alpha_1 &\alpha_0+3\alpha_1&-\alpha_1&-\alpha_1\\  -\alpha_1 & -\alpha_1 & 0 &-\alpha_1&\alpha_0+3\alpha_1&0\\    0 & 0 & 0 &-\alpha_1&0&\alpha_0+\alpha_1   \end{matrix}   \right]

  • 卷积核(K=3)

\left[  \begin{matrix}    \alpha_0+2\alpha_1+6\alpha_2 & -\alpha_1-4\alpha_2 & \alpha_2 &\alpha_2&-\alpha_1-4\alpha_2&0\\    -\alpha_1-4\alpha_2 & \alpha_0+3\alpha_1+12\alpha_2 & -\alpha_1-5\alpha_2 &2\alpha_2&-\alpha_1-5\alpha_2&0 \\    \alpha_2 &- \alpha_1-5\alpha_2 & \alpha_0+2\alpha_1+6\alpha_2 &-\alpha_1-5\alpha_2&2\alpha_2&\alpha_2\\    \alpha_2 & 2\alpha_2 & -\alpha_1-5\alpha_2 &\alpha_0+3\alpha_1+12\alpha_2&-\alpha_1-6\alpha_2&-\alpha_1-4\alpha_2\\  -\alpha_1-4\alpha_2 & -\alpha_1-5\alpha_2 & 2\alpha_2 &-\alpha_1-6\alpha_2&\alpha_0+3\alpha_1+12\alpha_2&\alpha_2\\    0 & 0 & \alpha_2 &-\alpha_1-4\alpha_2&\alpha_2&\alpha_0+\alpha_1+2\alpha_2   \end{matrix}   \right]

我们可以看到,当 K=0 ,只有一个参数,即所有顶点自身的特征都由共享的 \alpha_0 控制,更高阶的neighbor也没有参与运算。

K=2 ,可以注意到所有一阶neighbor上学习的卷积系数都由 \alpha_0\alpha_1 控制。

K=3 ,所有二阶neighbor上学习的卷积系数都仅由 \alpha_2 控制。

上述的例子与我们前面的分析完全相同。

特别地,如果利用Chebyshev多项式作为卷积核,参数共享方式和上述的内容完全一致,区别只是在于参数前的系数不同。Chebyshev多项式的相关内容可以参考如下的文章。

superbrother:Chebyshev多项式作为GCN卷积核zhuanlan.zhihu.com图标

总结一下优缺点:

优点:

  • 这样的共享方式是有“物理意义”的,因为我们知道graph通常本身是有local stationary性质的。也就是说随着neighbor阶数的增加,顶点间的相关性递减(相当于距离近的邻域内相关性强)。这种共享方式,本质上可以很容易实现上述性质。
  • 参数很少,如果是超大规模的图,可以利用这种方式。

缺点:

  • 参数太少了,只有 K 个,使得模型无法很好地实现在同阶的邻域上分配不同的权重给不同的邻居(也就是GAT论文里说的 enable specifying different weights to different nodes in a neighborhood)

2 Kipf, T. N., & Welling, M. (2016)

作者的blog可谓让GCN一鸣惊人,其运算公式如下:

H^{l+1}=\sigma \left(\hat D^{-\frac{1}{2}} \hat A \hat D^{-\frac{1}{2}}   H^{l} W^l\right ) \qquad(4)

H^{0}=x \qquad(5)

其中 A 是graph的邻接矩阵, \hat A=A+I 是为了实现self-accessible, \hat D\hat A 中每个顶点的度矩阵。

运算 \hat D^{-\frac{1}{2}} \hat A \hat D^{-\frac{1}{2}} 是为了对 \hat A 进行归一化,防止在运算中出现数值不稳定的情况。

这个版本中,记 Y^l=\hat D^{-\frac{1}{2}} \hat A \hat D^{-\frac{1}{2}} H^{l} ,这个运算可以理解为实现了空间信息的聚合,类似于下图。其中第0层的输入,是原始的特征,以后每增加一层,就会多聚合一阶neighbor上的信息( l 层就对每个顶点融合了 l 阶邻域的信息)。

空间信息的聚合示意

很显然模型可学习的参数是W^lY^lW^l 进行了线性变换,我个人认为是实现了feature augment。也就是说模型在每一层共享了用于特征增强的参数变化矩阵。矩阵W^l的两个维度分别是 ( H^l 的第二个维度,根据特征增强需要设计的维度(是超参数))。很显然,这个矩阵维度与顶点数目或者每个顶点的度无关,于是说这是一个在同层内顶点上共享的参数矩阵。

总结一下优缺点:

优点:

  • 这样的共享方式, W^l 的维度是可以进行调节的,与顶点的数目无关,使得模型可以用于大规模的graph数据集。另一方面这个模型可以完成图结构train在test上不一样的任务。

缺点:

  • 这个模型对于同阶的邻域上分配给不同的邻居的权重是完全相同的(也就是GAT论文里说的无法 enable specifying different weights to different nodes in a neighborhood)。这一点限制了模型对于空间信息的相关性的捕捉能力,这也是在很多任务上不如GAT的根本原因。

3 Zhang, Z., Li, M., Lin, X., Wang, Y., & He, F. (2019)

(这是我自己的一篇论文,感兴趣的朋友可以通过下面的链接查看。当然,这种运算模型也不是我提出的,在之前的论文中已有相似的内容

Multistep speed prediction on traffic networks: A deep learning approach considering spatio-temporal dependenciessciencedirect.xilesou.top

我使用的GCN其实是一种不共享参数的形式,其计算具体如下:

A_{GC}^K=Ci \left\{ (A+I)^K \right\} \qquad(6)

y=(A_{GC}^K\odot W_{GC})\cdot x \qquad(7)

(A+I)^K 是为了构建一个 K 阶可达的类邻接矩阵, Ci(\cdot) 是归一化的算子,防止出现数值不稳定的情况。 W_{GC} 是一个和graph邻接矩阵维度相同的参数矩阵。

A_{GC}^K\odot W_{GC} 是一个逐位乘法,其作用相当于添加了一个mask矩阵,使得参数矩阵只在 K 阶neighbor的位置上有参数,其余位置均为0。

如果想直接感受一下,这是一种什么样的运算,可以在CNN上这样类比:

CNN卷积核共享


CNN参数不共享示意

这里的实现就相当于后者。

(更详细的对比可以参考我的另一个回答如何理解卷积神经网络中的权值共享?

总结一下优缺点:

优点:

  • 这样的共享方式,在规模较小的graph数据集上极大地提高了对于空间相关性的刻画能力,可以实现对于任意的邻居分配任意的权重系数,也就是和GAT一样可以 enable specifying different weights to different nodes in a neighborhood。
  • 学习完的参数矩阵具有可解释性,这一点和GAT的相关系数 e_{i,j} 类似,通过分析 W_{GC}[i,j] 对于模型刻画的空间相关性进行分析,然后再与真实的物理条件进行对比。我在论文中对于交通场景中的理解进行了较为细致的分析,大家感兴趣可以参考。

缺点:

  • 参数量与图的规模有关,也就是说对于对于顶点数目为 N 的图,其参数量为 N*N ,可以想象在大规模的数据集上,内存很可能会溢出。当然也无法在train和test阶段graph结构不一样的任务上应用。

最后总结一句:如果要在小规模图数据上,实现具有可解释性的图卷积,那么这种方式值得一试!

参考文献:

Defferrard, M., Bresson, X., & Vandergheynst, P. (2016). Convolutional neural networks on graphs with fast localized spectral filtering. InAdvances in neural information processing systems(pp. 3844-3852).

Kipf, T. N., & Welling, M. (2016). Semi-supervised classification with graph convolutional networks.arXiv preprint arXiv:1609.02907.

如果这个回答对于大家的科研有帮助,希望可以引用我们的论文

Zhang, Z., Li, M., Lin, X., Wang, Y., & He, F. (2019). Multistep speed prediction on traffic networks: A deep learning approach considering spatio-temporal dependencies.Transportation Research Part C: Emerging Technologies,105, 297-322.

编辑于 02-13

文章被以下专栏收录