图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导

文章目录

1. 为什么会出现图卷积神经网络?

普通卷积神经网络研究的对象是具备Euclidean domains的数据,Euclidean domains data数据最显著的特征是他们具有规则的空间结构,如图片是规则的正方形,语音是规则的一维序列等,这些特征都可以用一维或二维的矩阵来表示,卷积神经网络处理起来比较高效。

CNN的【平移不变性】在【非矩阵结构】数据上不适用

  • 平移不变性(translation invariance):比较好理解,在用基础的分类结构比如ResNet、Inception给一只猫分类时,无论猫怎么扭曲、平移,最终识别出来的都是猫,输入怎么变形输出都不变这就是平移不变性,网络的层次越深这个特性会越明显。
  • 平移可变性(translation variance):针对目标检测的,比如一只猫从图片左侧移到了右侧,检测出的猫的坐标会发生变化就称为平移可变性。当卷积网络变深后最后一层卷积输出的feature map变小,物体在输入上的小偏移,经过N多层pooling后在最后的小feature map上会感知不到,这就是为什么R-FCN原文会说网络变深平移可变性变差。

离散卷积本质就是一种加权求和。CNN中的卷积就是一种离散卷积,本质上就是利用一个共享参数的过滤器(kernel),通过计算中心像素点以及相邻像素点的加权和来构成feature map实现空间特征的提取,当然加权系数就是卷积核的权重系数(W)

那么卷积核的系数如何确定的呢?是随机化初值然后根据误差函数通过反向传播梯度下降进行迭代优化。这是一个关键点,卷积核的参数通过优化求出才能实现特征提取的作用,GCN的理论很大一部分工作就是为了引入可以优化的卷积参数

生活中很多数据不具备规则的空间结构,称为Non Euclidean data,如,推荐系统、电子交易、分子结构等抽象出来的图谱。这些图谱中的每个节点连接不尽相同,有的节点有三个连接,有的节点只有一个连接,是不规则的结构。对于这些不规则的数据对象,普通卷积网络的效果不尽人意。CNN卷积操作配合pooling等在结构规则的图像等数据上效果显著,但是如果作者考虑非欧氏空间比如图(即graph,流形也是典型的非欧结构,这里作者只考虑图),就难以选取固定的卷积核来适应整个图的不规则性,如邻居节点数量的不确定和节点顺序的不确定。

例如,社交网络非常适合用图数据来表达,如社交网络中节点以及节点与节点之间的关系,用户A(有ID信息等)、用户B、帖子都是节点,用户与用户之间的关系是关注,用户与帖子之间的关系可能是发布或者转发。通过这样一个图谱,可以分析用户对什么人、什么事感兴趣,进一步实现推荐机制。

总结一下,图数据中的空间特征具有以下特点:
1) 节点特征:每个节点有自己的特征;(体现在点上)
2) 结构特征:图数据中的每个节点具有结构特征,即节点与节点存在一定的联系。(体现在边上)
总地来说,图数据既要考虑节点信息,也要考虑结构信息,图卷积神经网络就可以自动化地既学习节点特征,又能学习节点与节点之间的关联信息

综上所述,GCN是要为除CV、NLP之外的任务提供一种处理、研究的模型。
图卷积的核心思想是利用『边的信息』对『节点信息』进行『聚合』从而生成新的『节点表示』。

2. 图卷积网络的两种理解方式

GCN的本质目的就是用来提取拓扑图的空间特征。 而图卷积神经网络主要有两类,一类是基于空间域或顶点域vertex domain(spatial domain)的,另一类则是基于频域或谱域spectral domain的。通俗点解释,空域可以类比到直接在图片的像素点上进行卷积,而频域可以类比到对图片进行傅里叶变换后,再进行卷积。

所谓的两类其实就是从两个不同的角度理解,关于从空间角度的理解可以看本文的从空间角度理解GCN

2.1 vertex domain(spatial domain):顶点域(空间域)

基于空域卷积的方法直接将卷积操作定义在每个结点的连接关系上,它跟传统的卷积神经网络中的卷积更相似一些。在这个类别中比较有代表性的方法有 Message Passing Neural Networks(MPNN)[1], GraphSage[2], Diffusion Convolution Neural Networks(DCNN)[3], PATCHY-SAN[4]等。

2.2 spectral domain:频域方法(谱方法)

这就是谱域图卷积网络的理论基础了。这种思路就是希望借助图谱的理论来实现拓扑图上的卷积操作。从整个研究的时间进程来看:首先研究GSP(graph signal processing)的学者定义了graph上的Fourier Transformation,进而定义了graph上的convolution,最后与深度学习结合提出了Graph Convolutional Network。

基于频域卷积的方法则从图信号处理起家,包括 Spectral CNN[5], Cheybyshev Spectral CNN(ChebNet)[6], 和 First order of ChebNet(1stChebNet)[7] 等

论文Semi-Supervised Classification with Graph Convolutional Networks就是一阶邻居的ChebNet

认真读到这里,脑海中应该会浮现出一系列问题:
Q1 什么是Spectral graph theory?
Spectral graph theory请参考维基百科的介绍,简单的概括就是借助于图的拉普拉斯矩阵的特征值和特征向量来研究图的性质

Q2 GCN为什么要利用Spectral graph theory?
这是论文(Semi-Supervised Classification with Graph Convolutional Networks)中的重点和难点,要理解这个问题需要大量的数学定义及推导

过程:
(1)定义graph上的Fourier Transformation傅里叶变换(利用Spectral graph theory,借助图的拉普拉斯矩阵的特征值和特征向量研究图的性质)
(2)定义graph上的convolution卷积

下面将介绍关于频谱域的图卷积网络的推导相关的内容。

3. 什么是拉普拉斯矩阵?

拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵、基尔霍夫矩阵离散拉普拉斯算子,主要应用在图论中,作为一个图的矩阵表示。对于图 G=(V,E),其Laplacian 矩阵的定义为 L=D-A,其中 L 是Laplacian 矩阵, D=diag(d)是顶点的度矩阵(对角矩阵),d=rowSum(A),对角线上元素依次为各个顶点的度, A 是图的邻接矩阵。

Graph Fourier Transformation及Graph Convolution的定义都用到图的拉普拉斯矩阵。

频域卷积的前提条件是图必须是无向图,只考虑无向图,那么L就是对称矩阵。

3.1 常用的几种拉普拉斯矩阵
普通形式的拉普拉斯矩阵

L = D − A L=D-A L=DA
L中的元素给定为:
L i , j = { d i a g ( v i ) i = j − 1 i ≠ j   a n d   v i   i s   a d j a c e n t   t o   v j 0 o t h e r w i s e L_{i,j}=\begin{cases} diag(v_i) & i=j\\ -1 & i \neq j \ and \ v_i \ is\ adjacent \ to \ v_j\\ 0 & otherwise \end{cases} Li,j=diag(vi)10i=ji=j and vi is adjacent to vjotherwise
其中diag(vi) 表示顶点 i 的度。

对称归一化的拉普拉斯矩阵(Symmetric normalized Laplacian)

L s y s = D − 1 / 2 L D − 1 / 2 = I − D − 1 / 2 A D − 1 / 2 L^{sys}=D^{-1/2}LD^{-1/2}=I-D^{-1/2}AD^{-1/2} Lsys=D1/2LD1/2=ID1/2AD1/2
矩阵元素定义为:

L i , j s y s = { 1 i = j   a n d   d i a g ( v i )   ≠   0 − 1 d i a g ( v i ) d i a g ( v j ) i ≠ j   a n d   v i   i s   a d j a c e n t   t o   v j 0 o t h e r w i s e L^{sys}_{i,j}=\begin{cases} 1 & i=j \ and \ diag(v_i) \ \neq \ 0\\ -\frac{1}{\sqrt{diag(v_i)diag(v_j)}} & i \neq j \ and \ v_i \ is\ adjacent \ to \ v_j\\ 0 & otherwise \end{cases} Li,jsys=1diag(vi)diag(vj) 10i=j and diag(vi) = 0i=j and vi is adjacent to vjotherwise

很多GCN的论文中应用的是这种拉普拉斯矩阵

随机游走归一化拉普拉斯矩阵(Random walk normalized Laplacian)

L r w = D − 1 L = I − D − 1 A L^{rw}=D^{-1}L=I-D^{-1}A Lrw=D1L=ID1A
矩阵元素定义为:

L i , j r w = { 1 i = j   a n d   d i a g ( v i )   ≠   0 − 1 d i a g ( v i ) i ≠ j   a n d   v i   i s   a d j a c e n t   t o   v j 0 o t h e r w i s e L^{rw}_{i,j}=\begin{cases} 1 & i=j \ and \ diag(v_i) \ \neq \ 0\\ -\frac{1}{diag(v_i)} & i \neq j \ and \ v_i \ is\ adjacent \ to \ v_j\\ 0 & otherwise \end{cases} Li,jrw=1diag(vi)10i=j and diag(vi) = 0i=j and vi is adjacent to vjotherwise

泛化的拉普拉斯 (Generalized Laplacian)

泛化的拉普拉斯(用得少)定义为:

{ Q i , j < 0 i   ≠   j   a n d   d i a g ( v i )   ≠   0 Q i , j = 0 i ≠ j   a n d   v i   i s   a d j a c e n t   t o   v j a n y n u m b e r o t h e r w i s e \begin{cases} Q_{i,j}<0 & i \ \neq \ j \ and \ diag(v_i) \ \neq \ 0\\ Q_{i,j}=0 & i \neq j \ and \ v_i \ is\ adjacent \ to \ v_j\\ any number & otherwise \end{cases} Qi,j<0Qi,j=0anynumberi = j and diag(vi) = 0i=j and vi is adjacent to vjotherwise

一个拉普拉斯矩阵的计算例子(依据于上图):

A = { 0 1 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 1 0 0 } , D = { 2 0 0 0 0 0 0 3 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 3 0 0 0 0 0 0 1 } , L = D − A = { 2 − 1 0 0 − 1 0 − 1 3 − 1 0 − 1 0 0 − 1 2 − 1 0 0 0 0 − 1 3 − 1 − 1 − 1 − 1 0 − 1 3 0 0 0 0 − 1 0 1 } A=\left\{ \begin{matrix} 0 & 1 & 0 & 0 & 1 & 0\\ 1 & 0 & 1 & 0 & 1 & 0\\ 0 & 1 & 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0 & 1 & 1\\ 1 & 1 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0 \end{matrix} \right\} , D= \left\{ \begin{matrix} 2 & 0 & 0 & 0 & 0 & 0\\ 0 & 3 & 0 & 0 & 0 & 0\\ 0 & 0 & 2 & 0 & 0 & 0\\ 0 & 0 & 0 & 3 & 0 & 0\\ 0 & 0 & 0 & 0 & 3 & 0\\ 0 & 0 & 0 & 0 & 0 & 1 \end{matrix} \right\}, L=D-A= \left\{ \begin{matrix} 2 & -1 & 0 & 0 & -1 & 0\\ -1 & 3 & -1 & 0 & -1 & 0\\ 0 & -1 & 2 & -1 & 0 & 0\\ 0 & 0 & -1 & 3 & -1 & -1\\ -1 & -1 & 0 & -1 & 3 & 0\\ 0 & 0 & 0 & -1 & 0 & 1 \end{matrix} \right\} A=010010101010010100001011110100000100D=200000030000002000000300000030000001,L=DA=210010131010012100001311110130000101

D − 1 / 2 = { 1 2 0 0 0 0 0 0 1 3 0 0 0 0 0 0 1 2 0 0 0 0 0 0 1 3 0 0 0 0 0 0 1 3 0 0 0 0 0 0 1 } , L s y s = D − 1 / 2 L D − 1 / 2 = I − D − 1 / 2 A D − 1 / 2 = { 1 − 1 6 0 − 1 6 0 0 − 1 6 1 − 1 6 0 − 1 9 0 0 − 1 6 1 − 1 6 0 0 − 1 6 0 − 1 6 1 − 1 9 − 1 3 0 − 1 9 0 − 1 9 1 0 0 0 0 − 1 3 0 1 } D^{-1/2}= \left\{ \begin{matrix} \frac{1}{\sqrt{2}} & 0 & 0 & 0 & 0 & 0\\ 0 & \frac{1}{\sqrt{3}} & 0 & 0 & 0 & 0\\ 0 & 0 & \frac{1}{\sqrt{2}} & 0 & 0 & 0\\ 0 & 0 & 0 & \frac{1}{\sqrt{3}} & 0 & 0\\ 0 & 0 & 0 & 0 & \frac{1}{\sqrt{3}} & 0\\ 0 & 0 & 0 & 0 & 0 & 1 \end{matrix} \right\}, L^{sys}=D^{-1/2}LD^{-1/2}=I-D^{-1/2}AD^{-1/2}= \left\{ \begin{matrix} 1 & -\frac{1}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{6}} & 0 & 0\\ -\frac{1}{\sqrt{6}} & 1 & -\frac{1}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{9}} & 0\\ 0 & -\frac{1}{\sqrt{6}} & 1 & -\frac{1}{\sqrt{6}} & 0 & 0\\ -\frac{1}{\sqrt{6}} & 0 & -\frac{1}{\sqrt{6}} & 1 & -\frac{1}{\sqrt{9}} & -\frac{1}{\sqrt{3}}\\ 0 & -\frac{1}{\sqrt{9}} & 0 & -\frac{1}{\sqrt{9}} & 1 & 0\\ 0 & 0 & 0 & -\frac{1}{\sqrt{3}} & 0 & 1 \end{matrix} \right\} D1/2=2 10000003 10000002 10000003 10000003 10000001,Lsys=D1/2LD1/2=ID1/2AD1/2=16 106 1006 116 109 1006 116 1006 106 119 13 109 109 1100003 101
可以看出,标准归一化的拉普拉斯矩阵还是对称的,并且符合前面的公式定义。

Graph Convolution与Diffusion相似之处,当然从Random walk normalized Laplacian就能看出了两者确有相似之处(其实两者只差一个相似矩阵的变换,可参考Diffusion-Convolutional Neural Networks)
其实维基本科对Laplacian matrix的定义上写得很清楚,国内的一些介绍中只有第一种定义。这让我在最初看文献的过程中感到一些的困惑,特意写下来,帮助大家避免再遇到类似的问题。

3.2 无向图的拉普拉斯矩阵有什么性质

(1)拉普拉斯矩阵是半正定矩阵。(最小特征值大于等于0)
(2)特征值中0出现的次数就是图连通区域的个数
(3)最小特征值是0,因为拉普拉斯矩阵(普通形式: L = D − A L=D-A L=DA)每一行的和均为0,并且最小特征值对应的特征向量是每个值全为1的向量
(4)最小非零特征值是图的代数连通度。

拉普拉斯矩阵的半正定性证明,如下:
要证明拉普拉斯矩阵是半正定的,只需要证明其二次型 f T L f ≥ 0 f^TLf \geq0 fTLf0
证明:
f T L f = f T D f − f T A f = f T ∗ d i a g ( d ) ∗ f − f T A f = ∑ i = 1 m d i f i 2 − ∑ j = 1 m [ ∑ i = 1 m f j ∗ a i j ] f j = ∑ i = 1 m d i f i 2 − ∑ i , j = 1 m f i ∗ f j ∗ a i j = 1 2 [ ∑ i = 1 m d i f i 2 − 2 ∑ i , j = 1 m f i f j a i j + ∑ j = 1 m d j f j 2 ] = 1 2 ∑ i , j = 1 m a i j ( f i − f j ) 2 \begin{aligned} f^TLf & =f^TDf-f^TAf \\ & = f^T*diag(d)*f-f^TAf \\ & =\sum_{i=1}^m d_i f_i^2-\sum_{j=1}^m[\sum_{i=1}^m f_j*a_{ij}]f_j \\ & =\sum_{i=1}^m d_i f_i^2-\sum_{i,j=1}^m f_i*f_j*a_{ij} \\ & =\frac{1}{2} [ \sum_{i=1}^md_if_i^2-2\sum_{i,j=1}^m f_i f_j a_{ij}+\sum_{j=1}^m d_j f_j^2 ] \\ & = \frac{1}{2}\sum_{i,j=1}^m a_{ij}(f_i-f_j)^2 \\ \end{aligned} fTLf=fTDffTAf=fTdiag(d)ffTAf=i=1mdifi2j=1m[i=1mfjaij]fj=i=1mdifi2i,j=1mfifjaij=21[i=1mdifi22i,j=1mfifjaij+j=1mdjfj2]=21i,j=1maij(fifj)2

所以,对于任意一个属于实向量 f ∈ R m f \in \mathbb{R}^m fRm(f为m∗1的实数列向量 ),都有此公式成立:

f T L f = 1 2 ∑ i , j = 1 m a i j ( f i − f j ) 2 f^TLf = \frac{1}{2}\sum_{i,j=1}^m a_{ij}(f_i-f_j)^2 fTLf=21i,j=1maij(fifj)2

3.3 为什么GCN要用拉普拉斯矩阵?
  • 拉普拉斯矩阵是对称矩阵,可以进行特征分解(谱分解)
  • 由于卷积在傅里叶域的计算相对简单,为了在graph上做傅里叶变换,需要找到graph的连续的正交基对应于傅里叶变换的基,因此要使用拉普拉斯矩阵的特征向量。
3.4. 拉普拉斯矩阵的谱分解(特征分解)

GCN的核心基于拉普拉斯矩阵的谱分解,文献中对于这部分内容没有讲解太多,初学者可能会遇到不少误区,所以先了解一下特征分解。

特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。只有对可对角化矩阵或有n个线性无关的特征向量的矩阵才可以施以特征分解。

不是所有的矩阵都可以特征分解,其充要条件为n阶方阵存在n个线性无关的特征向量

但是拉普拉斯矩阵是半正定矩阵(半正定矩阵本身就是对称矩阵),有如下三个性质:

  • 对称矩阵一定n个线性无关的特征向量
  • 半正定矩阵的特征值一定非负
  • 对阵矩阵的不同特征值对应的特征向量相互正交,这些正交的特征向量构成的矩阵为正交矩阵。

由上拉普拉斯矩阵对称知一定可以谱分解,且分解后有特殊的形式。

对于拉普拉斯矩阵其谱分解为:

L = U Λ U − 1 = U [ λ 1 ⋱ λ n ] U − 1 L=U \Lambda U^{-1}=U \left[ \begin{matrix} \lambda_1 & & \\ & \ddots & \\ & & \lambda_n \\ \end{matrix} \right] U^{-1} L=UΛU1=Uλ1λnU1
其中 U = ( u 1 ⃗ , u 2 ⃗ , ⋯   , u n ⃗ ) U=(\vec{u_1},\vec{u_2},\cdots,\vec{u_n}) U=(u1 ,u2 ,,un ),是列向量为单位特征向量的矩阵,也就说 $ \vec{u_l} $是列向量,Λ是n个特征值构成的对角阵。

由于 U 是正交矩阵,即 U U T = E UU^{T}=E UUT=E,所以特征分解又可以写成:
L = U Λ U − 1 = U Λ U T L=U \Lambda U^{-1}=U \Lambda U^{T} L=UΛU1=UΛUT
注意,特征分解最右边的是特征矩阵的逆,只是拉普拉斯矩阵是对称矩阵才可以写成特征矩阵的转置。

3.5 拉普拉斯算子

定义:拉普拉斯算子是n维欧几里德空间中的一个二阶微分算子,定义为梯度( ∇ f \nabla f f)的散度( ∇ ⋅ f \nabla \cdot f f,即 ∇ f ⋅ f \nabla f \cdot f ff)。因此如果f是二阶可微的实函数,则f的拉普拉斯算子∆定义为:

∆ f = ∇ 2 f = ∇ ⋅ ∇ f ∆f=\nabla^2 f=\nabla \cdot \nabla f f=2f=f
f的拉普拉斯算子也是笛卡尔坐标系xi中的所有非混合二阶偏导数:

∆ f = ∑ i = 1 n ∂ 2 f ∂ x i 2 ∆f=\sum_{i=1}^n \frac{\partial^2f}{\partial x_i^2} f=i=1nxi22f
函数f的拉普拉斯算子也是该函数的海塞矩阵(是一个多元函数的二阶偏导数构成的方阵)的迹:
∆ f = t r ( H ( f ) ) ∆f=tr(H(f)) f=tr(H(f))

拉普拉斯算子(Laplacian operator) 的物理意义是空间二阶导,准确定义是:标量梯度场中的散度,一般可用于描述物理量的流入流出。比如说在二维空间中的温度传播规律,一般可以用拉普拉斯算子来描述。

拉普拉斯矩阵也叫做离散的拉普拉斯算子

4. 如何通俗易懂地理解卷积?

4.1 连续形式的一维卷积

在泛函分析中,卷积是通过两个函数f(x)和g(x)生成第三个函数的一种算子,它代表的意义是:两个函数中的一个(取g(x),可以任意取)函数,把g(x)经过翻转平移,然后与f(x)的相乘,得到的一个新的函数,对这个函数积分,也就是对这个新的函数求它所围成的曲边梯形的面积。

设f(t),g(t)是两个可积函数,f(t)与g(t)的卷积记为 f ( t ) ∗ g ( t ) f(t)*g(t) f(t)g(t),它是其中一个函数翻转并平移后与另一个函数乘积的积分,是一个自变量是平移量的函数。也就是:

f ( t ) ∗ g ( t ) = ∫ − ∞ + ∞ f ( τ ) g ( t − τ ) d τ = ∫ − ∞ + ∞ f ( t − τ ) g ( τ ) d τ f(t)*g(t)= \int_{-\infty}^{+\infty}f(\tau)g(t-\tau)d\tau= \int_{-\infty}^{+\infty}f(t-\tau)g(\tau)d\tau f(t)g(t)=+f(τ)g(tτ)dτ=+f(tτ)g(τ)dτ

4.2 离散形式的一维卷积

对于定义在整数 Z \mathbb{Z} Z上的函数f,g,卷积定义为

( f ∗ g ) ( t ) = ∑ τ = − ∞ ∞ f ( τ ) g ( t − τ ) (f*g)(t)={\sum}_{\tau=-\infty}^{\infty}f(\tau)g(t-\tau) (fg)(t)=τ=f(τ)g(tτ)

4.3 实例:掷骰子问题

光看数学定义可能会觉得非常抽象,下面举一个掷骰子的问题,该实例参考了知乎问题"如何通俗易懂地解释卷积"的回答。

想象现在有两个骰子,两个骰子分别是f跟g,f(1)表示骰子f向上一面为数字1的概率。同时抛掷这两个骰子1次,它们正面朝上数字和为4的概率是多少呢?相信读者很快就能想出它包含了三种情况,分别是:

  • f向上为1,g向上为3;
  • f向上为2,g向上为2;
  • f向上为3,g向上为1;

最后这三种情况出现的概率和即问题的答案,如果写成公式,就是 ∑ τ = 1 3 f ( τ ) g ( 4 − τ ) \sum_{\tau=1}^{3}f(\tau)g(4-\tau) τ=13f(τ)g(4τ)。可以形象地绘制成下图:

如果稍微扩展一点,比如说认为 f(0) 或者 g(0)等是可以取到的,只是它们的值为0而已。那么该公式可以写成 ∑ τ = − ∞ ∞ f ( τ ) g ( 4 − τ ) \sum_{\tau=-\infty}^{\infty}f(\tau)g(4-\tau) τ=f(τ)g(4τ)。仔细观察,这其实就是卷积(f∗g)(4)。如果将它写成内积的形式,卷积其实就是

[ f ( − ∞ ) , ⋯   , f ( 1 ) , ⋯   , f ( ∞ ) ] ⋅ [ g ( ∞ ) , ⋯   , g ( 3 ) , ⋯   , g ( − ∞ ) ] [f(-\infty),\cdots,f(1),\cdots,f(\infty)] \cdot [g(\infty),\cdots,g(3),\cdots,g(-\infty)] [f(),,f(1),,f()][g(),,g(3),,g()]

这么一看,是不是就对卷积的名字理解更深刻了呢? 所谓卷积,其实就是把一个函数卷(翻)过来,然后与另一个函数求内积。

对应到不同方面,卷积可以有不同的解释:g 既可以看作我们在深度学习里常说的核(Kernel),也可以对应到信号处理中的滤波器(Filter)。而 f 可以是我们所说的机器学习中的特征(Feature),也可以是信号处理中的信号(Signal)。f和g的卷积 (f∗g)就可以看作是对f的加权求和。下面两个动图就分别对应信号处理与深度学习中卷积操作的过程。

5. 傅里叶变换

5.1 连续形式的傅立叶变换

关于傅立叶变换相关的详细而有趣的内容,可以看这几篇文章:

下面是一个大致流程:
任意函数可以分解为奇偶函数之和:
f ( x ) = f ( x ) + f ( − x ) 2 + f ( x ) − f ( − x ) 2 = f e v e n + f o d d f(x)=\frac{f(x)+f(-x)}{2} + \frac{f(x)-f(-x)}{2}=f_{even}+f_{odd} f(x)=2f(x)+f(x)+2f(x)f(x)=feven+fodd

任意一个周期函数可以由若干个正交函数(由 s i n , c o s sin, cos sin,cos 构成)的线性组合构成,写出傅里叶级数的形式如下:
f ( x ) = a 0 + ∑ n = 1 ∞ ( a n c o s ( 2 π n T x ) + b n s i n ( 2 π n T x ) ) , a 0 ∈ R \displaystyle f(x)=a_0+\sum _{{n=1}}^{\infty}\left(a_{n}cos({\frac{2\pi n}{T}x})+b_{n}sin({\frac{2\pi n}{T}x})\right),a_0\in\mathbb{R} f(x)=a0+n=1(ancos(T2πnx)+bnsin(T2πnx)),a0R
利用欧拉公式 e i x = cos ⁡ x + i sin ⁡ x e^{ix}=\cos x+i \sin x eix=cosx+isinx(这里的指复数中的i), cos ⁡ x , sin ⁡ x \cos x, \sin x cosx,sinx可表示成

cos ⁡ x = e i x + e − i x 2 , sin ⁡ x = e i x − e − i x 2 i \cos x=\frac{e^{ix} +e^{-ix}}{2} ,\sin x=\frac{e^{ix} -e^{-ix}}{2i} cosx=2eix+eix,sinx=2ieixeix

在时间t轴上,把 e i t e^{it} eit向量的虚部(也就是纵坐标)记录下来,得到的就是 s i n ( t ) sin(t) sin(t)

在时间t轴上,把 e i 2 t e^{i2t} ei2t向量的虚部记录下来,得到的就是 s i n ( 2 t ) sin(2t) sin(2t)

如果在时间t轴上,把 e i t e^{it} eit的实部(横坐标)记录下来,得到的就是 c o s ( t ) cos(t) cos(t)的曲线:

更一般的,具有两种看待 s i n , c o s sin, cos sin,cos的角度:

e i ω t    ⟺    { s i n ( ω t ) c o s ( ω t ) e^{i\omega t}\iff \begin{cases}sin(\omega t)\\cos(\omega t)\end{cases} eiωt{sin(ωt)cos(ωt)

这两种角度,一个可以观察到旋转的频率,所以称为频域;一个可以看到流逝的时间,所以称为时域:

所以,任意周期函数可以以 e i ω t e^{i\omega t} eiωt为基函数用傅里叶级数的指数形式表示。即,对于一个周期函数 f ( x ) f(x) f(x)以傅里叶级数的指数形式表示为:
f ( x ) = ∑ n = − ∞ ∞ c n ⏟ 基的坐标 ⋅ e i 2 π n x T ⏟ 正交基 f(x)=\sum ^{\infty }_{n=-\infty }\underbrace{c_{n}}_{\text{基的坐标}} \cdot \underbrace{e^{i\tfrac{2\pi nx}{T}}}_{\text{正交基}} f(x)=n=基的坐标 cn正交基 eiT2πnx
但是对于非周期函数,并不能用傅里叶级数的形式表示。但是还是用某个周期函数 f T ( x ) f_T(x) fT(x) T → ∞ T \rightarrow \infty T来逼近,即 lim ⁡ T → ∞ f T ( x ) = f ( x ) \lim_{T \rightarrow \infty} f_T(x)=f(x) limTfT(x)=f(x),用积分的形式可以表示为:

f ( x ) = ∫ − ∞ ∞ [ ∫ − ∞ + ∞ f ( x ) e − i ω x d x ]   e i ω x   d ω = ∫ − ∞ ∞ F ( ω )   e i ω x   d ω f(x) = \int_{-\infty}^\infty [\int ^{+\infty }_{-\infty } f(x)e^{-i\omega x} dx]\ e^{i\omega x}\,d\omega=\int_{-\infty}^\infty F(\omega)\ e^{i\omega x}\,d\omega f(x)=[+f(x)eiωxdx] eiωxdω=F(ω) eiωxdω
其中, F ( ω ) F( \omega ) F(ω)就是 f ( x ) f(x) f(x)的连续形式的傅里叶变换
F ( ω ) = F [ f ( x ) ] = ∫ − ∞ + ∞ f ( x ) e − i ω x d x F( \omega ) =\mathcal{F}[f(x)]=\int ^{+\infty }_{-\infty } f(x)e^{-i\omega x} dx F(ω)=F[f(x)]=+f(x)eiωxdx
可以看出, f ( x ) f(x) f(x) F ( ω ) F(\omega) F(ω)可以通过指定的积分运算相互表达。

当然,也可以利用欧拉公式通过cos和sin函数表示为 F ( u ) F(u) F(u)

F ( u ) = ∫ − ∞ + ∞ f ( x ) [ c o s ( 2 π x u ) − i s i n ( 2 π x u ) ] d x F(u)=\int_{-\infty}^{+\infty}f(x)\left[cos(2\pi xu)-i sin(2\pi xu)\right]dx F(u)=+f(x)[cos(2πxu)isin(2πxu)]dx

所以,对函数 f ( x ) f(x) f(x)的傅里叶变换 F \mathcal{F} F和傅里叶的逆变换 F − 1 \mathcal{F}^{-1} F1记作:

F ( ω ) = F [ f ( x ) ] , f ( x ) = F − 1 [ F ( ω ) ] F( \omega )=\mathcal{F}[f(x)],f(x)=\mathcal{F}^{-1}[F(\omega)] \\ F(ω)=F[f(x)],f(x)=F1[F(ω)]

  • F ( ω ) F(\omega) F(ω)叫做 f ( x ) f(x) f(x)象函数或傅里叶变换,即通过傅里叶变换后关于频率的函数,函数图像就是频谱图, ω \omega ω 就是f对应在频域中的频率
  • f ( x ) f(x) f(x)叫做 F ( ω ) F(\omega) F(ω)的原象函数

其实可以发现这个对信号 f ( x ) f(x) f(x)的傅立叶变换 F ( ω ) F(\omega) F(ω)形式上是 f ( x ) f(x) f(x)与基函数 e − i ω x e^{-i\omega x} eiωx的积分,本质上将函数 f ( x ) f(x) f(x)映射到了以 e − i ω x e^{-i\omega x} eiωx为基向量的空间中

5.2 频域(frequency domain)和时域(time domain)的理解

时域:真实量到的信号的时间轴,代表真实世界。

频域:为了做信号分析用的一种数学手段。

要理解时域和频域只需要看下面两张动图就可以了:

上图来自于维基百科,图中红色部分就是原函数f(x)在时域里面的曲线图,此函数经过傅里叶变换后可以分解成很多如右图中的曲线。在左图中的的蓝色线就是对应的频域中的频谱图。

频谱图里的竖线分别代表了不同频率的正弦波函数,也就是之前的基,而高度则代表在这个频率上的振幅,也就是这个基上的坐标分量。

很多在时域看似不可能做到的数学操作,在频域相反很容易。这就是需要傅里叶变换的地方。尤其是从某条曲线中去除一些特定的频率成分,这在工程上称为滤波,是信号处理最重要的概念之一,只有在频域才能轻松的做到。

看一个傅里叶变换去噪的例子:
在傅里叶变换前,图像上有一些规律的条纹,直接在原图上去掉条纹有点困难,但我们可以将图片通过傅里叶变换变到频谱图中,频谱图中那些规律的点就是原图中的背景条纹。

只要在频谱图中擦除这些点,就可以将背景条纹去掉,得到下图右侧的结果。

5.3 周期性离散傅里叶变换(Discrete Fourier Transform, DFT)

傅里叶变换有连续时间非周期傅里叶变换,连续时间周期性傅里叶变换,离散时间非周期傅里叶变换和离散时间周期性傅里叶变换,鉴于计算机主要处理离散周期性信号,本文主要介绍周期性离散时间傅里叶变换(DFT)。信号 x n x_n xn的傅里叶变换 X k X_k Xk

X k = ∑ n = 0 N − 1 x n e − i 2 π N k n X_k=\sum_{n=0}^{N-1}x_n e^{-i \frac{2\pi}{N}kn} Xk=n=0N1xneiN2πkn
信号 x n x_n xn用其傅里叶变换 X k X_k Xk表示为:
x n = ∑ n = 0 N − 1 X k e i 2 π N k n x_n=\sum_{n=0}^{N-1}X_k e^{i \frac{2\pi}{N}kn} xn=n=0N1XkeiN2πkn
其中

  • N表示傅里叶变换的点数
  • k表示傅里叶变换的第k个频谱

6. Graph上的傅里叶变换及卷积

把传统的傅里叶变换以及卷积迁移到Graph上来,核心工作其实就是把拉普拉斯算子的特征函数 e − i ω t e^{-i\omega t} eiωt 变为Graph对应的拉普拉斯矩阵的特征向量。

傅立叶变换与拉普拉斯矩阵的关系:传统傅立叶变换的基,就是拉普拉斯矩阵的一组特征向量。

6.1 图上的傅里叶变换

前面讲到可以用一组正交函数cos和sin(或 e − i ω t e^{-i\omega t} eiωt )表示任意函数,且傅里叶变换是连续形式的,在处理Graph时,用到的是傅里叶变换的离散形式。由于拉普拉斯矩阵进行谱分解以后,可以得到n个线性无关的特征向量,构成空间中的一组正交基,因此归一化拉普拉斯矩阵算子的特征向量构成了图傅里叶变换的基。图傅里叶变换将输入图的信号投影到了正交空间,相当于把图上定义的任意向量,表示成了拉普拉斯矩阵特征向量的线性组合。

离散积分就是一种内积形式,由此可以定义Graph上的傅里叶变换(实数域):
F ( λ l ) = f ^ ( λ l ) = ∑ i = 1 N f ( i ) u l ( i ) F(\lambda_l)=\hat{f}(\lambda_l)=\sum_{i=1}^{N}{f(i) u_l(i)} F(λl)=f^(λl)=i=1Nf(i)ul(i)

  • f f f是Graph上的N维向量,可以表示某个点的特征向量, f ( i ) f(i) f(i)表示第 i i i 个特征
  • u l ( i ) u_l(i) ul(i)表示第 l l l 个特征向量的第 i i i 个分量
  • f f f的Graph 傅里叶变换就是与 λ l \lambda_l λl 对应的特征向量 u l u_l ul进行内积运算
  • λ \lambda λ就对应于 ω \omega ω(具体解释见第7部分)
  • f ^ \hat{f} f^表示 f f f的傅里叶变换
6.2 图的傅立叶变换——图的傅立叶变换的矩阵形式

利用矩阵乘法将Graph上的傅里叶变换推广到矩阵形式:
( f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ) = (   u 1 ( 1 ) u 1 ( 2 ) … u 1 ( N ) u 2 ( 1 ) u 2 ( 2 ) … u 2 ( N ) ⋮ ⋮ ⋱ ⋮ u N ( 1 ) u N ( 2 ) … u N ( N ) ) ( f ( 1 ) f ( 2 ) ⋮ f ( N ) ) \left(\begin{matrix} \hat{f}(\lambda_1)\\ \hat{f}(\lambda_2) \\ \vdots \\\hat{f}(\lambda_N) \end{matrix}\right)=\left(\begin{matrix}\ u_1(1) &u_1(2)& \dots &u_1(N) \\u_2(1) &u_2(2)& \dots &u_2(N)\\ \vdots &\vdots &\ddots & \vdots\\ u_N(1) &u_N(2)& \dots &u_N(N) \end{matrix}\right)\left(\begin{matrix}f(1)\\ f(2) \\ \vdots \\f(N) \end{matrix}\right) f^(λ1)f^(λ2)f^(λN)= u1(1)u2(1)uN(1)u1(2)u2(2)uN(2)u1(N)u2(N)uN(N)f(1)f(2)f(N)
f f f在Graph上傅里叶变换的矩阵形式为:

f ^ = U T f ( a ) \hat{f}=U^Tf \qquad(a) f^=UTf(a)

6.3 图的傅立叶逆变换——图的傅立叶逆变换的矩阵形式

类似地,传统的傅里叶变换是对频率 ω \omega ω 求积分:

F − 1 [ F ( ω ) ] = 1 2 Π ∫ F ( ω ) e i ω t d ω \mathcal{F}^{-1}[F(\omega)]=\frac{1}{2\Pi}\int_{}^{}F(\omega)e^{i\omega t} d\omega F1[F(ω)]=2Π1F(ω)eiωtdω

迁移到Graph上变为对特征值 λ l \lambda_l λl求和:

f ( i ) = ∑ l = 1 N f ^ ( λ l ) u l ( i ) f(i)=\sum_{l=1}^{N}{\hat{f}(\lambda_l) u_l(i)} f(i)=l=1Nf^(λl)ul(i)

利用矩阵乘法将Graph上的傅里叶逆变换推广到矩阵形式:

( f ( 1 ) f ( 2 ) ⋮ f ( N ) ) = (   u 1 ( 1 ) u 2 ( 1 ) … u N ( 1 ) u 1 ( 2 ) u 1 ( 2 ) … u N ( 2 ) ⋮ ⋮ ⋱ ⋮ u 1 ( N ) u 2 ( N ) … u N ( N ) ) ( f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ) \left(\begin{matrix}f(1)\\ f(2) \\ \vdots \\f(N) \end{matrix}\right)= \left(\begin{matrix}\ u_1(1) &u_2(1)& \dots &u_N(1) \\u_1(2) &u_1(2)& \dots &u_N(2)\\ \vdots &\vdots &\ddots & \vdots\\ u_1(N) &u_2(N)& \dots &u_N(N) \end{matrix}\right) \left(\begin{matrix} \hat{f}(\lambda_1)\\ \hat{f}(\lambda_2) \\ \vdots \\\hat{f}(\lambda_N) \end{matrix}\right) f(1)f(2)f(N)= u1(1)u1(2)u1(N)u2(1)u1(2)u2(N)uN(1)uN(2)uN(N)f^(λ1)f^(λ2)f^(λN)

即 f 在Graph上傅里叶逆变换的矩阵形式为:

f = U f ^ ( b ) f=U\hat{f} \qquad(b) f=Uf^(b)

6.4 图上的傅里叶变换推广到图卷积

在上面的基础上,利用卷积定理类比来将卷积运算,推广到Graph上。

卷积定理:函数卷积的傅里叶变换是函数傅立叶变换的乘积,即对于函数f与g两者的卷积是其函数傅立叶变换乘积的逆变换(中间的桥梁就是傅立叶变换与反傅立叶变换,证明见:https://zhuanlan.zhihu.com/p/54505069):

f ∗ g = F − 1 { F ( f ) ⋅ F ( g ) } = F − 1 { f ^ ⋅ g ^ } f * g=\mathcal{F}^{-1}{\{\mathcal{F}(f) \cdot \mathcal{F}(g) \}}=\mathcal{F}^{-1}\{ \hat{f} \cdot \hat{g}\} fg=F1{F(f)F(g)}=F1{f^g^}
所以,对图上f和卷积核g的卷积可以表示为:
( f ∗ g ) G = U ( ( U T g ) ⋅ ( U T f ) ) (f*g)_G=U((U^T g)\cdot(U^Tf)) (fg)G=U((UTg)(UTf))
从上面可以看出,对卷积核 g g g f f f进行傅里叶变换的结果 U T g , U T f U^T g,U^T f UTg,UTf都是一个列向量:

( f ^ ( λ 1 ) f ^ ( λ 2 ) ⋮ f ^ ( λ N ) ) , ( f ( 1 ) f ( 2 ) ⋮ f ( N ) ) \left(\begin{matrix} \hat{f}(\lambda_1)\\ \hat{f}(\lambda_2) \\ \vdots \\\hat{f}(\lambda_N) \end{matrix}\right),\left(\begin{matrix}f(1)\\ f(2) \\ \vdots \\f(N) \end{matrix}\right) f^(λ1)f^(λ2)f^(λN)f(1)f(2)f(N)

所以,很多论文中的Graph卷积公式也写作:
( f ∗ g ) G = U ( ( U T g ) ⊙ ( U T f ) ) (f*g)_G=U((U^Tg)\odot(U^Tf)) (fg)G=U((UTg)(UTf))
⊙ \odot 表示hadamard product(哈达马积),对于两个向量,就是进行内积运算;对于维度相同的两个矩阵,就是对应元素的乘积运算。

如果把 U T g U^Tg UTg整体看作可学习的卷积核,这里我们把它写作 g θ g_\theta gθ。最终图上的卷积公式即是:

( f ∗ g ) G = U g θ U T f (f*g)_G = Ug_{\theta}U^Tf (fg)G=UgθUTf
有的地方,还把 g θ = U T g g_\theta=U^Tg gθ=UTg也成对角矩阵的形式,即定义一个滤波 g θ = d i a g ( U T g ) g_\theta=diag(U^T g) gθ=diag(UTg),则:

f ∗ g θ = U g θ U T f = U ( g ^ ( λ 1 ) ⋱ g ^ ( λ n ) ) U T f f*g_\theta=Ug_{\theta}U^Tf= U\left(\begin{matrix}\hat g(\lambda_1) & \\&\ddots \\ &&\hat g(\lambda_n) \end{matrix}\right) U^Tf fgθ=UgθUTf=Ug^(λ1)g^(λn)UTf

接下来第8节要介绍的图上频域卷积的工作,都是在 g θ g_\theta gθ的基础上做文章。

7. 为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?特征值表示频率?

在Chebyshev论文(M. Defferrard, X. Bresson, and P. Vandergheynst, “Convolutional neural networks on graphs with fast localized spectral filtering,”in Advances in Neural Information Processing Systems, 2016)中就有说明,图上进行傅里叶变换时,拉普拉斯矩阵是对称矩阵,所有有n个线性无关的特征向量,因此可以构成傅里叶变换的一组基,而其对应的特征值就是傅里叶变换的频率。

7.1 为什么拉普拉斯矩阵的特征向量可以作为傅里叶变换的基?

傅里叶变换一个本质理解就是:把任意一个函数表示成了若干个正交函数(由sin,cos 构成)的线性组合。

通过即 f 在Graph上傅里叶逆变换的矩阵形式: f = U f ^ ( b ) f=U\hat{f} \qquad(b) f=Uf^(b)也能看出,graph傅里叶变换把graph上定义的任意向量f,表示成了拉普拉斯矩阵特征向量的线性组合,即:

f = f ^ ( 1 ) u 1 + f ^ ( 2 ) u 2 + ⋯ + f ^ ( n ) u n f=\hat{f}(1)u_1+\hat{f}(2)u_2+\cdots +\hat{f}(n)u_n f=f^(1)u1+f^(2)u2++f^(n)un

那么:为什么graph上任意的向量f都可以表示成这样的线性组合?

原因在于 ( u 1 ⃗ , u 2 ⃗ , ⋯   , u n ⃗ ) (\vec{u_1},\vec{u_2},\cdots,\vec{u_n}) (u1 ,u2 ,,un )是graph上 n维空间中的 n 个线性无关的正交向量(拉普拉斯矩阵是对称矩阵,必定可以进行特征分解,有n个线性无关的特征向量),由线性代数的知识可以知道:n 维空间中n 个线性无关的向量可以构成空间的一组基,而且拉普拉斯矩阵的特征向量还是一组正交基。

7.2 怎么理解拉普拉斯矩阵的特征值表示频率?

在graph空间上无法可视化展示“频率”这个概念,那么从特征方程上来抽象理解。

将拉普拉斯矩阵 L 的 n 个非负实特征值,从小到大排列为 λ 1 ≤ λ 2 ≤ ⋯ ≤ λ n \lambda_1 \le \lambda_2 \le \cdots \le \lambda_n λ1λ2λn,而且最小的特征值 λ 1 = 0 \lambda_1=0 λ1=0,因为 n 维的全1向量对应的特征值为0(由 L 的定义就可以得出):

L ( 1 1 ⋮ 1 ) = 0 L \left(\begin{matrix}1\\ 1 \\ \vdots \\1 \end{matrix}\right)=0 L111=0

从特征方程的数学理解来看:

L u = λ u Lu=\lambda u Lu=λu

在由Graph确定的 n 维空间中,越小的特征值 λ l \lambda_l λl表明:拉普拉斯矩阵 L 其所对应的基 u l u_l ul上的分量、“信息”越少,那么当然就是可以忽略的低频部分了。

其实图像压缩就是这个原理,把像素矩阵特征分解后,把小的特征值(低频部分)全部变成0,PCA降维也是同样的,把协方差矩阵特征分解后,按从大到小取出前K个特征值对应的特征向量作为新的“坐标轴”。

Graph Convolution的理论告一段落了,下面开始Graph Convolution Network

8. 深度学习中GCN的演变

Deep learning 中的Graph Convolution直接看上去会和第6节推导出的图卷积公式有很大的不同,但是万变不离其宗,都是根据下式来推导的:
g θ ∗ x = U g θ U T x = U ( g ^ ( λ 1 ) ⋱ g ^ ( λ n ) ) U T x g_\theta * x = Ug_\theta U^Tx =U\left(\begin{matrix}\hat g(\lambda_1) & \\&\ddots \\ &&\hat g(\lambda_n) \end{matrix}\right) U^T x gθx=UgθUTx=Ug^(λ1)g^(λn)UTx

Deep learning 中的Convolution就是要设计含有trainable共享参数的kernel

上式计算量很大,因为特征向量矩阵U 的复杂度 O ( N 2 ) O(N^2) O(N2)。此外,对于大型图来说,L特征值分解的计算量也很大

基于上面最原始的卷积公式,深度学习中的GCN主要是从下面几篇文章演变而来的(引用次数都很高),后面一一进行简单介绍:

  • 【1】Bruna, Joan, et al. “Spectral networks and locally connected networks on graphs.” 源于ICLR 2014(被引740次)
  • 【2】Defferrard, Michaël, Xavier Bresson, and Pierre Vandergheynst. “Convolutional neural networks on graphs with fast localized spectral filtering.” 源于NIPS 2016(被引997次)
  • 【3】Hammond, David K., Pierre Vandergheynst, and Rémi Gribonval. “Wavelets on graphs via spectral graph theory.” Applied and Computational Harmonic Analysis 30.2 (2011)(被引874次)
  • 【4】Kipf, Thomas N., and Max Welling. “Semi-supervised classification with graph convolutional networks.” 源于ICML 2017 (被引1537次)
8.1 Spectral CNN

谱CNN源于论文(J. Bruna, W. Zaremba, A. Szlam, and Y. LeCun, “Spectral networks and locally connected networks on graphs,” in Proceedings of International Conference on Learning Representations, 2014),Bruna等人,第一次提出谱卷积神经网络。他们简单地把 g θ g_\theta gθ 看作是一个可学习参数的集合: g θ = Θ i , j k g_\theta=\Theta_{i,j}^k gθ=Θi,jk。并且假设图信号是多维的,图卷积层顶定义为:

X : , j k + 1 = σ ( ∑ i = 1 f k − 1 U Θ i , j k U T X : , i k ) ( j = 1 , 2 , ⋯   , f k ) X_{:,j}^{k+1} = \sigma(\sum_{i=1}^{f_{k-1}}U\Theta_{i,j}^kU^TX_{:,i}^{k})\quad \quad \quad (j=1,2,\cdots,f_k) X:,jk+1=σ(i=1fk1UΘi,jkUTX:,ik)(j=1,2,,fk)

  • X k ∈ R N × f k − 1 X^k\in \mathbb{R}^{N\times f_{k-1}} XkRN×fk1是输入图信号,对应图上就是点的输入特征
  • N N N是节点数量
  • f k − 1 f_{k-1} fk1是输入通道的数量
  • f k f_{k} fk是输出通道的数量
  • Θ i , j k \Theta_{i,j}^k Θi,jk是一个可学习参数的对角矩阵,就跟三层神经网络中的weight一样是任意的参数,通过初始化赋值然后利用误差反向传播进行调整
  • σ ( ⋅ ) \sigma(\cdot) σ()是激活函数

第一代的参数方法存在着一些弊端,主要在于:
(1)计算复杂:如果一个样本一个图,那么每个样本都需要进行图的拉普拉斯矩阵的特征分解求U矩阵计算复杂;每一次前向传播,都要计算 U , d i a g ( θ l ) U,diag(\theta_l ) U,diag(θl) U T U^T UT三者的乘积,特别是对于大规模的graph,计算的代价较高,需要 O ( n 2 ) \mathcal{O}(n^2) O(n2)的计算复杂度
(2)是非局部性连接的
(3)卷积核需要N个参数,当图中的节点N很大时是不可取的

由于以上的缺点第二代的卷积核设计应运而生。

8.2 Chebyshev谱CNN(ChebNet)

Chebyshev谱CNN源于论文(M. Defferrard, X. Bresson, and P. Vandergheynst, “Convolutional neural networks on graphs with fast localized spectral filtering,”in Advances in Neural Information Processing Systems, 2016)。Defferrard等人提出ChebNet,定义特征向量对角矩阵的切比雪夫多项式为滤波器,也就是

g θ = g θ ( Λ ) ≈ ∑ i = 0 K − 1 θ i T k ( Λ ~ ) g_θ=g_θ(Λ) \approx \sum^{K-1}_{i=0} \theta_i T_k(\tilde Λ) gθ=gθ(Λ)i=0K1θiTk(Λ~)
其实,就是利用Chebyshev多项式拟合卷积核的方法,来降低计算复杂度。

推导过程如下:
考虑信号 x ∈ R N x∈\mathbb{R}^N xRN(x就是graph上对应于每个顶点的feathure vector,即由数据集提取特征构成的向量,而不是和线性代数中常说的特征向量,注意区别)与以参数为 θ ∈ R N θ \in \mathbb{R}^N θRN的滤波器 g θ = d i a g ( θ ) g_θ=diag(θ) gθ=diag(θ)在傅里叶域的谱卷积。

g θ ∗ x = U g θ U T x ( 3 ) g_\theta * x = Ug_\theta U^Tx \qquad (3) gθx=UgθUTx(3)
其中

  • U 是对称归一化的拉普拉斯(normalized graph Laplacian)算子 L = I N − D − 1 / 2 A D − 1 / 2 = U Λ U T L=I_N−D^{−1/2}AD^{−1/2}=UΛU^T L=IND1/2AD1/2=UΛUT的特征向量矩阵,Λ是由L的特征值构成的对角矩阵。

L = D − 1 2 ( D − A ) D − 1 2 = D − 1 2 D D − 1 2 − D − 1 2 A D − 1 2 = I N − D − 1 2 A D − 1 2 \begin{aligned} L &= D^{-\frac{1}{2}}(D - A)D^{-\frac{1}{2}} \\ &= D^{-\frac{1}{2}} D D^{-\frac{1}{2}} - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \\ &= I_N - D^{-\frac{1}{2}} A D^{-\frac{1}{2}} \end{aligned} L=D21(DA)D21=D21DD21D21AD21=IND21AD21
由于normalized graph Laplacian矩阵L是实对称矩阵, 因此其特征向量矩阵U是正交矩阵,即 U U T = I N UU^T=I_N UUT=IN

  • U T x U^Tx UTx是x的傅里叶变换。
  • g θ g_θ gθ是由参数θ构成的对角矩阵diag(θ)。由于参数θ的确定与L的特征值有关,作者认为 g θ g_θ gθ是特征值 Λ的一个函数,即令

g θ = g θ ( Λ ) g_θ=g_θ(Λ) gθ=gθ(Λ)

式3的计算量很大,因为特征向量矩阵U 的复杂度 O ( N 2 ) O(N^2) O(N2)。此外,对于大型图来说,L特征值分解的计算量也很大
为了解决这个问题,Hammond et al.(2011) :Wavelets on graphs via spectral graph theory指出 g θ ( Λ ) g_θ(Λ) gθ(Λ)可以很好的通过Chebyshev多项式 T k ( x ) T_k(x) Tk(x) 的Kth-阶截断展开来拟合,并对Λ进行scale使其元素位于[−1,1]

g θ ( Λ ) ≈ ∑ k = 0 K θ k T K ( Λ ~ ) ( 4 ) g_{\theta}(Λ) \approx \sum^{K}_{k=0} \theta_kT_K(\tilde Λ) \qquad (4) gθ(Λ)k=0KθkTK(Λ~)(4)
其中

  • Λ ~ = 2 Λ / λ m a x − I N \tilde Λ = 2Λ / λ_{max}− I_N Λ~=2Λ/λmaxIN(为缩放后的特征向量矩阵,缩放后范围是[−1,1],单位矩阵的特征值是n重1),缩放的目的是为了满足Chebyshev多项式 T k ( x ) T_k(x) Tk(x) K t h K^{th} Kth 阶截断展开的条件:自变量范围需要在[−1,1]之间
  • λ m a x λ_{max} λmax是L 的最大特征值,也叫谱半径
  • θ ∈ R K θ∈\mathbb{R}^K θRK 是切比雪夫系数的向量
  • Chebyshev多项式递归定义为 T k ( x ) = 2 x T k − 1 ( x ) − T k − 2 ( x ) T_k(x) = 2xT_{k−1}(x) − T_{k−2}(x) Tk(x)=2xTk1(x)Tk2(x), 其中 T 0 ( x ) = 1 , T 1 ( x ) = x T_0(x)=1, T_1(x)=x T0(x)=1T1(x)=x

回到对信号x与滤波器 g θ g_{θ} gθ的卷积的定义,现在有:

g θ ∗ x = ∑ k = 0 K θ k T K ( L ~ ) x ( 5 ) g_{\theta} * x = \sum^{K}_{k=0} \theta_kT_K(\tilde L)x \qquad (5) gθx=k=0KθkTK(L~)x(5)
其中

  • L ~ = 2 L / λ m a x − I N = U Λ ~ U T \tilde L= 2L / λ_{max}− I_N=U \tilde \Lambda U^T L~=2L/λmaxIN=UΛ~UT
  • 易证 ( U Λ U T ) k = U Λ k U T (UΛU^T)^k=UΛ^kU^T (UΛUT)k=UΛkUT

现在,相比于第一种Spectral CNN:

  • 此表达式现在是K-localized,具有局部连接性,因为它是拉普拉斯算子中的Kth-阶多项式,即它仅取决于离中央节点(Kth阶邻域)最大K步的节点
  • T K ( L ~ ) x T_K(\tilde L)x TK(L~)x的复杂度是O(|E|),即与边数E呈线性关系,整个运算的复杂度是 O ( K ∣ E ∣ ) O(K|E|) O(KE)。当graph是稀疏图的时候,计算加速尤为明显,这个时候复杂度远低于 O ( n 2 ) O(n^2) O(n2)

公式4到公式5的补充证明如下:
(1)先用数学归纳法证明

U T k ( Λ ~ ) U T = T k ( U Λ ~ U T ) U T_k (\tilde{\Lambda}) U^T = T_k (U \tilde{\Lambda} U^T) UTk(Λ~)UT=Tk(UΛ~UT)
数学归纳法思路:当n=1时显然成立,假设n=k时成立,只需证n=k+1时成立

证明:
根据切比雪夫多项式的定义, 已知
U T 0 ( Λ ~ ) U T = U U T = 1 = T 0 ( U Λ ~ U T ) U T 1 ( Λ ~ ) U T = U Λ ~ U T = T 1 ( U Λ ~ U T ) \begin{aligned} &U T_0(\tilde{\Lambda}) U^T = UU^T =1 = T_0(U \tilde{\Lambda} U^T) \\ &U T_1(\tilde{\Lambda}) U^T = U\tilde{\Lambda}U^T = T_1(U \tilde{\Lambda} U^T) \end{aligned} UT0(Λ~)UT=UUT=1=T0(UΛ~UT)UT1(Λ~)UT=UΛ~UT=T1(UΛ~UT)
假设对于任意k>1, 满足
U T k − 2 ( Λ ~ ) U T = T k − 2 ( U Λ ~ U T ) U T_{k-2} (\tilde{\Lambda}) U^T= T_{k-2} (U \tilde{\Lambda} U^T) UTk2(Λ~)UT=Tk2(UΛ~UT)

U T k − 1 ( Λ ~ ) U T = T k − 1 ( U Λ ~ U T ) U T_{k-1} (\tilde{\Lambda}) U^T= T_{k-1} (U \tilde{\Lambda} U^T) UTk1(Λ~)UT=Tk1(UΛ~UT)

U T k ( Λ ~ ) U T = 2 U Λ ~ T k − 1 ( Λ ~ ) U T − U T k − 2 ( Λ ~ ) U T = 2 ( U Λ ~ U T ) [ U T k − 1 ( Λ ~ ) U T ] − U T k − 2 ( Λ ~ ) U T = 2 ( U Λ ~ U T ) T k − 1 ( U Λ ~ U T ) − T k − 2 ( U Λ ~ U T ) = T k ( U Λ ~ U T ) \begin{aligned} U T_k (\tilde{\Lambda}) U^T &= 2U \tilde{\Lambda} T_{k-1}(\tilde{\Lambda})U^T - U T_{k-2}(\tilde{\Lambda}) U^T \\ &= 2 (U \tilde{\Lambda} U^T) \left[U T_{k-1}(\tilde{\Lambda})U^T \right] - U T_{k-2}(\tilde{\Lambda}) U^T \\ &= 2 (U \tilde{\Lambda} U^T) T_{k-1} (U \tilde{\Lambda} U^T) - T_{k-2} (U \tilde{\Lambda} U^T) \\ &= T_k (U \tilde{\Lambda} U^T) \end{aligned} UTk(Λ~)UT=2UΛ~Tk1(Λ~)UTUTk2(Λ~)UT=2(UΛ~UT)[UTk1(Λ~)UT]UTk2(Λ~)UT=2(UΛ~UT)Tk1(UΛ~UT)Tk2(UΛ~UT)=Tk(UΛ~UT)
因此,根据数学归纳法, 证毕。

(2)已知

L ~ = U Λ ~ U T \tilde L= U \tilde{\Lambda} U^T L~=UΛ~UT

(3)将(1)、(2)两式带入卷积公式:

g θ ∗ x = U g θ U T x = U g θ ( Λ ) U T x = U ( ∑ k = 0 K θ k T K ( Λ ~ ) ) U T x = ( ∑ k = 0 K θ k T K ( U Λ ~ U T ) ) x = ∑ k = 0 K θ k T K ( L ~ ) x ( 5 ) \begin{aligned} g_\theta * x & = Ug_\theta U^Tx \\ & = U g_{\theta}(Λ) U^Tx \\ & =U (\sum^{K}_{k=0} \theta_kT_K(\tilde Λ)) U^Tx \\ & = (\sum^{K}_{k=0} \theta_kT_K(U\tilde Λ U^T)) x \\ & = \sum^{K}_{k=0} \theta_k T_K(\tilde L) x \qquad (5) \end{aligned} gθx=UgθUTx=Ugθ(Λ)UTx=U(k=0KθkTK(Λ~))UTx=(k=0KθkTK(UΛ~UT))x=k=0KθkTK(L~)x(5)


8.3 CayleyNet

CayleyNet进一步应用了参数有理复合函数的Cayley多项式来捕获窄的频带。CayleyNet的谱图卷积定义为

x ∗ g θ = c 0 x + 2 Re ⁡ { ∑ j = 1 r c j ( h L − i I ) j ( h L + i I ) − j x } \mathbf{x} *g_\theta=c_{0} \mathbf{x}+2 \operatorname{Re}\left\{\sum_{j=1}^{r} c_{j}(h \mathbf{L}-i \mathbf{I})^{j}(h \mathbf{L}+i \mathbf{I})^{-j} \mathbf{x}\right\} xgθ=c0x+2Re{j=1rcj(hLiI)j(hL+iI)jx}
其中

  • R e ( ⋅ ) Re(\cdot) Re()为复数的实部
  • c 0 c_0 c0为实数
  • c j c_j cj为复数
  • i i i为虚数
  • $h4`为控制Cayley滤波器频谱的参数

CayleyNet在保留空间局部性的同时,说明ChebNet可以看作是CayleyNet的一个特例。

8.4 一阶ChebNet(1stChebNet)-GCN

一阶ChebNet源于论文(T. N. Kipf and M.Welling, “Semi-supervised classification with graph convolutional networks,” in Proceedings of the International Conference on Learning Representations, 2017)。这篇论文基于前面的工作,正式成为GCN的开山之作,后面很多变种都是基于这篇文章的。

该篇论文贡献有两点:

  • 作者对于直接操作于图结构数据的网络模型根据频谱图卷积(Hammond等人于2011年提出的Wavelets on graphs via spectral graph theory)使用一阶近似简化计算的方法,提出了一种简单有效的层式传播方法。
  • 作者验证了图结构神经网络模型可用于快速可扩展式的处理图数据中节点半监督分类问题,作者通过在一些公有数据集上验证了自己的方法的效率和准确率能够媲美现有的顶级半监督方法。

下面介绍ChebNet的一阶近似方法:
Kipf等人引入了一种一阶近似ChebNet。假设 K = 1 , λ m a x = 2 K=1,\lambda_{max}=2 K=1,λmax=2,则ChebNet卷积公式简化近似为:

x ∗ g θ = θ 0 x − θ 1 D − 1 / 2 A D − 1 / 2 x x*g_\theta = \theta_0x - \theta_1 D^{− 1 /2} AD^{− 1 /2}x xgθ=θ0xθ1D1/2AD1/2x
为了抑制参数数量防止过拟合,1stChebNet假设 θ = θ 0 = − θ 1 \theta=\theta_0=-\theta_1 θ=θ0=θ1,图卷积的定义就近似为(这是简单的一阶模型):

g θ ∗ x = θ ( I N + D − 1 / 2 A D − 1 / 2 ) x g_θ * x = θ (I_N + D^{− 1 /2} AD^{− 1 /2} ) x gθx=θ(IN+D1/2AD1/2)x
其中

  • I N + D − 1 / 2 A D − 1 / 2 I_N+D^{−1/2}AD^{−1/2} IN+D1/2AD1/2是有范围[0,2]的特征值。因此,如果在深度神经网络模型中使用该算子,则反复应用该算子会导致数值不稳定(发散)和梯度爆炸/消失

为了解决该问题, 引入了一个renormalization trick:
I N + D − 1 / 2 A D − 1 / 2 ⟶ A ~ = A + I N D ~ − 1 / 2 A ~ D ~ − 1 / 2 I_N+D^{−1/2}AD^{−1/2} \stackrel{\tilde A=A+I_N}{\longrightarrow} \tilde D^{−1/2} \tilde A \tilde D^{−1/2} IN+D1/2AD1/2A~=A+IND~1/2A~D~1/2
其中

  • A ~ = A + I N , D ~ i i = ∑ j A ~ i j \tilde A=A+I_N,\tilde D_{ii}=∑_j \tilde A_{ij} A~=A+IN,D~ii=jA~ij,即图中加上自环

再加上一个激活函数,最后就可以得到了论文中的快速卷积公式:
H ( l + 1 ) = f ( H l , A ) = σ ( D ~ − 1 / 2 A ~ D ~ − 1 / 2 H ( l ) W ( l ) ) H ^{(l+1)} =f(H^l,A)=\sigma (\tilde D^{-1/2} \tilde A \tilde D^{ − 1/2} H^{(l)}W^{(l)} ) H(l+1)=f(Hl,A)=σ(D~1/2A~D~1/2H(l)W(l))

  • W W W就是参数 θ \theta θ参数矩阵

推广:特征映射公式
可以将这个定义推广到具有C个输入通道(即每个节点的C维特征向量)的信号 X ∈ R N × C X∈\mathbb{R}^{N×C} XRN×C和 F 个滤波器或特征映射如下:

Z = D ~ − 1 / 2 A ~ D ~ − 1 / 2 X Θ Z = \tilde D^{− 1 /2} \tilde A \tilde D^{− 1/ 2} XΘ Z=D~1/2A~D~1/2XΘ
其中

  • Θ ∈ R C × F Θ∈\mathbb{R}^{C×F} ΘRC×F 是一个滤波器参数矩阵,其实就是参数矩阵W
  • Z ∈ R N × F Z∈\mathbb{R}^{N×F} ZRN×F 是一次卷积的输出矩阵。

这个滤波操作复杂度是 O ( ∣ E ∣ F C ) O(|E|FC) OEFC(其中E为边数,C为特征向量维度,F为卷积核数量),并且 A ~ X \tilde AX A~X `可以有效地实现为密集矩阵和稀疏矩阵的乘积。(在源代码中使用了稀疏矩阵和稠密矩阵乘法)

带一阶滤波器的多层图卷积网络(GCN)的结构图如下图所示。

Input:Feature matrix X ∈ R N × D X \in \mathbb{R}^{N \times D} XRN×D,preprocessed adjacency matrix A ~ \tilde A A~

在看了上面的公式以及论文中的训练方法之后,并没有觉得GCN有多么特别,无非就是一个设计巧妙的公式,也许不用这么复杂的公式,多加一点训练数据或者把模型做深,也可能达到媲美的效果呢。

最后论文的附录里提到“even an untrained GCN model with random weights can serve as a powerful feature extractor for nodes in a graph”,可见即使不训练,完全使用随机初始化的参数W,GCN提取出来的特征就已经十分优秀了!这跟CNN不训练是完全不一样的,CNN不训练是根本得不到什么有效特征的。

然后作者做了一个实验,使用一个俱乐部会员的关系网络,使用随机初始化的GCN进行特征提取,得到各个node的embedding,然后可视化:

可以发现,在原数据中同类别的node,经过GCN的提取出的embedding,已经在空间上自动聚类了。

而这种聚类结果,可以和DeepWalk、node2vec这种经过复杂训练得到的node embedding的效果媲美了。

作者接着给每一类的node,提供仅仅一个标注样本,然后去训练,得到的可视化效果如下:

关于1stChebNet CGN的更多细节,可以参考博客:
Semi-Supervised Classification with Graph Convolutional Networks用图卷积进行半监督分类

GCN的优点

1)、权值共享,参数共享,从 A X W AXW AXW可以看出每一个节点的参数矩阵都是W,权值共享;
2)、具有局部性Local Connectivity,也就是局部连接的,因为每次聚合的只是一阶邻居;
上述两个特征也是CNN中进行参数减少的核心思想
3)、感受野正比于卷积层层数,第一层的节点只包含与直接相邻节点有关的信息,第二层以后,每个节点还包含相邻节点的相邻节点的信息,这样的话,参与运算的信息就会变多。层数越多,感受野越大,参与运算的信息量越充分。也就是说随着卷积层的增加,从远处邻居的信息也会逐渐聚集过来。
4)、复杂度大大降低,不用再计算拉普拉斯矩阵,特征分解

GCN的不足

1)、扩展性差:由于训练时需要需要知道关于训练节点、测试节点在内的所有节点的邻接矩阵 A A A,因此是transductive的,不能处理大图,然而工程实践中几乎面临的都是大图问题,因此在扩展性问题上局限很大,为了解决transductive的的问题,GraphSAGE:Inductive Representation Learning on Large Graphs 被提出;
2)、局限于浅层:GCN论文中表明,目前GCN只局限于浅层,实验中使用2层GCN效果最好,为了加深,需要使用残差连接等trick,但是即使使用了这些trick,也只能勉强保存性能不下降,并没有提高,Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning一文也针对When GCNs Fail ?这个问题进行了分析。虽然有一篇论文:DeepGCNs-Can GCNs Go as Deep as CNNs?就是解决GCN局限于浅层的这个问题的,但个人觉得并没有解决实质性的问题,这方面还有值得研究的空间。
3)、不能处理有图:理由很简单,推导过程中用到拉普拉斯矩阵的特征分解需要满足拉普拉斯矩阵是对称矩阵的条件;

9. GCN的一些改进

9.1 邻接矩阵的探索
Adaptive Graph Convolution Network (AGCN)

自适应GCN(AGCN)为了探索图拉普拉斯矩阵为指明的隐藏结构,(R. Li, S. Wang, F. Zhu, and J. Huang, “Adaptive graph convolutional neural networks,” in Proceedings of the AAAI Conference on Artificial Intelligence, 2018)提出了自适应图卷积网络(AGCN)。AGCN利用所谓的残差图来扩充图,残差图是通过计算节点对的距离来构造的。尽管AGCN能够捕获互补关系信息,但是以 O ( N 2 ) O(N^2) O(N2)的计算量为代价。自适应图卷积网络(AGCN)通过图的邻接矩阵学习未知的隐藏结构关系。它通过一个以两个节点的特征为输入的可学习的距离函数来构造一个所谓的残差图邻接矩阵。

Dual Graph Convolutional Network(DGCN)

对偶图卷积网络(DGCN)引入了一种对偶图卷积结构,该结构具有两个并行的图卷积层。虽然这些对偶层共享参数,他们使用归一化了的邻接矩阵Ā和归一化了的积极点态互信息(PPMI)的共生矩阵提取节点随机游走。DGCN通过对偶图卷积层的集成输出,无需叠加多个图卷积层即可捕获局部和全局结构信息。

9.2 空间域的GCNs(ConvGNNs)
Neural Network for Graphs (NN4G)

NN4G是第一个提出的基于空间的ConvGNNs。NN4G通过直接累加节点的邻域信息来实现图的卷积。它还应用剩余连接和跳跃连接来记忆每一层的信息。因此,NN4G的下一层节点状态为

h v ( k ) = f ( x v W ( k − 1 ) + ∑ i = 1 k − 1 ∑ u ∈ N ( v ) h u ( k − 1 ) Θ ( k − 1 ) ) \mathbf{h}_{v}^{(k)}=f\left(\mathbf{x}_{v} \mathbf{W}^{(k-1)}+\sum_{i=1}^{k-1} \sum_{u \in N(v)} \mathbf{h}_{u}^{(k-1)} \Theta^{(k-1)}\right) hv(k)=fxvW(k1)+i=1k1uN(v)hu(k1)Θ(k1)

  • f ( ⋅ ) 是 激 活 函 数 f(\cdot)是激活函数 f()
  • h v ( 0 ) = 0 \mathbf{h}_{v}^{(0)}=\mathbf{0} hv(0)=0

上式也可以写出矩阵的形式

H ( k ) = f ( X W ( k − 1 ) + ∑ i = 1 k − 1 A H ( k − 1 ) Θ ( k − 1 ) ) \mathbf{H}^{(k)}=f\left(\mathbf{X} \mathbf{W}^{(k-1)}+\sum_{i=1}^{k-1} \mathbf{A} \mathbf{H}^{(k-1)} \Theta^{(k-1)}\right) H(k)=f(XW(k1)+i=1k1AH(k1)Θ(k1))
可以看出,形式和GCN类似。主要区别在于NN4G使用了非标准化邻接矩阵,这可能会导致数值不稳定问题

Contextual Graph Markov Model (CGMM)

CGMM提出了一种基于NN4G的概率模型。在保持空间局部性的同时,CGMM还具有概率可解释性。

Diffusion Convolutional Neural Network (DCNN)扩散卷积神经网络

DCNN将图卷积看作一个扩散过程。它假设信息以一定的转移概率从一个节点转移到相邻的一个节点,使信息分布在几轮后达到均衡。DCNN将扩散图卷积定义为

H ( k ) = f ( w ( k ) ⊙ P k X ) \mathbf{H}^{(k)}=f\left(\mathbf{w}^{(k)} \odot \mathbf{P}^{k} \mathbf{X}\right) H(k)=f(w(k)PkX)

  • f ( ⋅ ) 是 激 活 函 数 f(\cdot)是激活函数 f()
  • 概率转移矩阵 P ∈ R n × n \mathbf{P} \in \mathbf{R}^{n \times n} PRn×n通过 P = D − 1 A \mathbf{P}=\mathbf{D}^{-1} \mathbf{A} P=D1A来计算
  • 在DCNN中,隐含表示矩阵 H ( k ) \mathbf{H}^{(k)} H(k)和输入特征矩阵 X \mathbf{X} X具有相同的维度,不是前一层隐含表示矩阵 H ( k − 1 ) \mathbf{H}^{(k-1)} H(k1)的函数
  • DCNN将 H ( 1 ) , H ( 2 ) , ⋯   , H ( K ) \mathbf{H}^{(1)}, \mathbf{H}^{(2)}, \cdots, \mathbf{H}^{(K)} H(1),H(2),,H(K)连接起来最为模型最后的输出
Diffusion Graph Convolution(DGC) 扩散图卷积

由于DCNN扩散过程的平稳分布是概率转移矩阵的幂级数的总和,因此扩散图卷积(Diffusion Graph Convolution, DGC)将每个扩散步骤的输出相加,而不是拼接。它定义扩散图卷积为

H = ∑ k = 0 K f ( P k X W ( k ) ) \mathbf{H}=\sum_{k=0}^{K} f\left(\mathbf{P}^{k} \mathbf{X} \mathbf{W}^{(k)}\right) H=k=0Kf(PkXW(k))

  • f ( ⋅ ) 是 激 活 函 数 f(\cdot)是激活函数 f()
  • W ( k ) ∈ R D × F \mathbf{W}^{(k)} \in \mathbf{R}^{D \times F} W(k)RD×F

利用转移概率矩阵的幂意味着,遥远的邻居对中心节点提供的信息非常少。

PGC-DGCNN

PGC-DGCNN(On filter size in graph convolutional networks ,SSCI 2018)增加了基于最短路径的远距离邻居的贡献。它定义了一个最短路径邻接矩阵 S ( j ) \mathbf{S}^{(j)} S(j)。如果从节点 v v v到节点 u u u的最短路径长度为 j j j,则 S v , u ( j ) = 1 \mathbf{S}_{v, u}^{(j)}=1 Sv,u(j)=1,否则为0。PGC-DGCNN使用超参数 r r r控制感受域的大小,引入了一个图卷积操作,如下所示

H ( k ) = ∥ j = 0 r f ( ( D ~ ( j ) ) − 1 S ( j ) H ( k − 1 ) W ( j , k − 1 ) ) \mathbf{H}^{(k)}=\|_{j=0}^{r} f\left(\left(\tilde{\mathbf{D}}^{(j)}\right)^{-1} \mathbf{S}^{(j)} \mathbf{H}^{(k-1)} \mathbf{W}^{(j, k-1)}\right) H(k)=j=0rf((D~(j))1S(j)H(k1)W(j,k1))

  • D ~ i i ( j ) = ∑ l S i , l ( j ) , H ( 0 ) = X \tilde{D}_{i i}^{(j)}=\sum_{l} S_{i, l}^{(j)}, \mathbf{H}^{(0)}=\mathbf{X} D~ii(j)=lSi,l(j),H(0)=X
  • ∣ ∣ || 表示两向量连接操作

计算最短路径邻接矩阵的代价可能很高,最大可能为 O ( n 3 ) O(n^3) O(n3)

Partition Graph Convolution (PGC)

PGC(Spatial temporal graph convolutional networks for skeleton-based action recognition,AAAI 2018)根据不局限于最短路径的特定条件将一个节点的邻居划分为 Q Q Q组。PGC根据每个组定义的邻域构造 Q Q Q邻接矩阵。然后,PGC将不同参数矩阵的GCN应用到每个邻居组,并将结果进行求和:

H ( k ) = ∑ j = 1 Q A ‾ ( j ) H ( k − 1 ) W ( j , k − 1 ) \mathbf{H}^{(k)}=\sum_{j=1}^{Q} \overline{\mathbf{A}}^{(j)} \mathbf{H}^{(k-1)} \mathbf{W}^{(j, k-1)} H(k)=j=1