【ESE680 GNN】Lecture 4: Graph Neural Networks


这节课主要是从频域的角度出发介绍GNN,带大家入门GNN。

  • 首先讲解graph filters;

  • 然后通过【graph filter+pointwise nonlinearity】的构造graph perceptron,多个graph perceptron的叠加就是

    the most simplest GNN了。

  • 最后,在最基本的GNN的基础上,我们引入filter banks和multiple-input-multiple-output graph filters,得到MIMO GNNs。而MIMO GNNs就是我们常见的GNN了。

Graph Convolutional Filter

Graph Convolutional Filter的输入

从频域的角度出发,Graph Convolutional Filter的输入和输出是Graph Signals。

Graph Convolutional Filter的优化目标

Empirical Risk Minimization通常包含3个组成成分:

而机器学习的目标就是在function class里面找到损失最小的那个function:

那么,对于GNN来说,它的function class是什么呢?就是graph convolutional filters!

注意啦,在课程中graph convolutional filters和graph filters指的都是同一种东西。

给定GSO(Graph Shift Operator)$S$,其感受野为$K$的graph convolutional filters可以统一表示成下方的形式:

在这个function class里面,$S$和$h$都应该是超参数,但是由于往往$S$都是给定的,所以超参数只剩下h了。所以,GNN的优化目标就是:

Graph Convolutional Filter的输出

从频域的角度出发,Graph Neural Networks的输入和输出是Graph Signals。

但是当我们训练集上的$y$不是graph signal的时候,可以在GNN输出上加一层Readout Layer(其Transformation Matrix为$A$),将GNN输出的graph signal变成和$y$相同的维度,具体的流程图如下:

相应的,优化目标变成了:

那么这个$A$如何定义呢?可能我们的第一想法是将其设置为超参数,但是老师说这是不可取的,$A$最好根据实际情况,自己进行定义,例如可以定义为:

其实在使用PyG的Cora数据集时,里面有使用train_masktest_mask,它们就可以看做是read out specific nodes的操作~

Graph Neural Networks(GNNs)

Graph Perceptron

Simplest GNN是由很多graph perceptron构成的,一个graph perceptron只是在Graph Convolutional Filter之后添加了一些东西,其结构如下:

  • 第一个component是一个graph filter;
  • 第二个component是一个Pointwise Nonlinearties👇

    Pointwise Nonlinearties

    首先是What?

这种Pointwise非线性函数通过下面的操作图就能理解它是什么运作的了:

我们常见的Pointwise Nonlinearities有:

那么Why呢?
老师给出的答案:

  1. Pointwise nonlinearities decrease variability. => They function as demodulators.
  2. Graph lters have limited expressive power because they can only learn linear maps。所以需要引入nonlinearity。
    我没有理解。。。

    Graph Perceptron的优化目标

    正是引入了Pointwise Nonlinearities的概念,所以Graph Perceptron的优化目标和Graph Convolutional Filter有点点不同:

    其中:

GNN的结构

Simplest GNN是由很多graph perceptron构成的,对于一个拥有3层graph perceptron的GNN来说,其结构为:

GNN的优化目标

通过上面的结构我们可以总结出GNN的function class为:


那么它的优化目标,就是找到一组最合适的$\mathcal{H}$使得loss最小

其实想想参数的数量是$K \times L$个。

GNN vs. Graph Filters

比较方面 结果
结构 GNN是在Graph Filter的基础上增加了pointwise nonlinearitieslayer compositions
效果 GNN表现更加优秀
迁移性 两者都具有迁移性,我们可以将$x$和$S$都看作模型的input,那么就可以在多个图之间共享$\mathcal{H}$了。

GNN v.s. CNN

GNNs are proper generalizations of CNNs

GNN vs. FCNN

首先,回顾一下,我们常见的FCNN(Fully Connected Neural Network)的执行流程:

由于GNN可以看作是FCNN的子类,GNN只是对FCNN里面的$\mathcal{H}$增加了限制,因此FCNN的效果一定是不会弱于GNN的:

那为什么我们还要使用GNN呢?

这就回到我们机器学习课上面讲的过拟合模型泛化性了,GNN在这两个方面表现得更好。

Because it exploits internal symmetries of graph signals codified in the graph shift operator,涉及到了Permutation Equivariance of Graph Neural Network的知识,这里就不多讲了。

Graph Filter Banks

A Graph Filter Bank = A Set of Filters

我们用$h^f$表示第$f$个filter,将$x$分别输入多个filter之后可以得到:

上图的结果就是将我们的feature matrix从$N \times 1$变成了$N \times F$大小,扩充了feature matrix的维度。

Output Energy of a Graph Filter in the GFT Domain

接下来介绍一个关于Graph Filter的output energy的定理:

定理的证明如下:

Multiple Feature GNNs

至此,我们所讲的graph signal都是$N \times 1$大小的,也就是每个结点只有一个特征,但是实际生活中的图上,结点的特征通常是多维度的,那么怎么处理多维特征的情况呢?
前面我们介绍了filter bank,引入它的作用就在于实现处理多维特征。

对于输入的特征矩阵$\mathbf{X} \in \mathbb{R}^{N \times F}$,我们的处理思想就是对每一维的feature都进行filter bank操作。

Multiple-Input-Multiple-Output (MIMO) Graph Filters

假设现在有一个Feature Matrix $\mathbf{X} = [\mathbf{x}^1,…,\mathbf{x}^f,…,\mathbf{x}^F]$,对于其中的每一个$\mathbf{x}^f$都使用一个大小为$G$的filter bank。

下面是对某一个$\mathbf{x}^f$使用一个大小为$G$的filter bank的示例:

下面是所有的$\mathbf{x}^f$使用一个大小为$G$的filter bank的结果:
可以想象,如果不做任何的处理,最终将会产生$F \times G$个特征维度,随着网络越来越深,这样的增长会限制我们的运行速度。因此,在这里,我们采用了上图中相加的方式。其公式表示为:

最后的矩阵计算公式也非常的漂亮,只不过要多思考一下为什么是这样的矩阵计算公式:

Tips:上面的矩阵乘法是从列向量线性组合的角度看待的。

MIMO GNN

跟graph perceptron类比,我们将MIMO Graph Filters后面再加一个pointwise nonlinearity,就组成了MIMO perceptron。

再进行类比,叠加MIMO perceptron就构成了MIMO GNN(也就是我们最常用的GNN)了。

对于拥有三个MIMO perceptron的MIMO GNN,它的执行流程图如下所示:

再次总结一下,GNN每一层的操作如下:


文章作者: CarlYoung
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 CarlYoung !
 上一篇
深度长文: 通过最近两年的8篇论文全面分析和总结基于图神经网络GNN的欺诈检测 深度长文: 通过最近两年的8篇论文全面分析和总结基于图神经网络GNN的欺诈检测
文章转载自深度长文: 通过最两年的8篇论文全面分析和总结基于图神经网络GNN 欺诈检测 [TOC] 欺诈检测(风控)是一个近两年业界和学界颇受关注的话题,其应用方向包括金融欺诈检测,风险控制,网络水军识别,黑产灰产识别等。 本公众号之前
2020-12-05
下一篇 
torch.nn 与 torch.nn.functional 的区别 torch.nn 与 torch.nn.functional 的区别
torch.nn可以理解为类,torch.nn.functional可以理解为函数,它们在使用上有一些区别
2020-12-02
  目录