论文标题 | Random Walk Graph Neural Networks
论文来源 | NeurIPS 2020
论文链接 | https://proceedings.neurips.cc/paper/2020/file/Paper.pdf
源码链接 | https://github.com/giannisnik/rwgnn

TL;DR

这篇论文中作者提出了更加直观透明的图神经网络模型 RWNN(Random Walk Graph Neural Network),RWNN 模型的第一层由一系列可训练的 “hidden graphs”组成,这些“hidden graphs”与随机游走核 (random walk kernel) 对应的输入图进行对比,以此来生成 graph-level 的表示,然后经过全连接神经网络来得到最终的分类结果。其中随机游走核是可微的因此模型 RWNN 可以端到端进行训练。实验部分在人工数据集中说明了 RWNN 的透明度(解释性),且在真实图数据集的图分类任务中验证了模型的强大性能。

Problem Definition

为了得到 graph-level 的表示,目前很多 MPNNs (message passing neural networks) 都是采用些 readout functions 来组合 node-level 表示来得到整图表示,但是这些忽略了节点间的 interactions,这些 interactions 特征虽然通过信息传递编码到节点表示中,但是这些过程缺少透明度我们很难了解到有用的信息是否真的编码到节点表示中。

此处解释下常用图中的 readout functions:一般先用平均操作求每一层的图表示,然后将所有层的图表示加权求和得到最终的图表示,如下图所示

Readout 函数

在 GNNs 未流行前,Graph kernel 是图机器学习处理的主流方法,只是现在 GNNs 大热导致利用 Graph kernel 的方法少了而已,例如之前图分类任务较为流行的是 Graph kernel + SVM,模型解释性强但 Graph kernel 的缺点是计算复杂度较大。

目前 MPNNs 主要是将图转为向量表示然后用于下流任务,但是很难解释 MPNN 模型到底学到了什么知识,因此需要模型透明度较好,可以在输入图中先进行函数变换而不是直接将图转为向量表示。

综上所述问题,自然而然就知晓这篇论文会结合 Graph kernel 方法和 MPNN 的优势提出了图表示学习模型 RWNN !👍🏻

定义图分类任务:给定图集合{G1,,GN}G\{G_1,\cdots, G_N\}\subseteq \mathcal{G} 及其对应的标签{y1,,yN}Y\left\{y_{1}, \ldots, y_{N}\right\} \subseteq \mathcal{Y}​​,需要学习图GG​ 的向量表示hG\mathbf{h}_G​ 和映射函数ff​ 以此应用图的分类任务或者回归任务:

yG=f(hG)y_{G}=f\left(\mathbf{h}_{G}\right)

令无向图G=(V,E)G=(V,E) 中节点数nn 边数mm,邻接矩阵ARn×n\mathbf{A}\in \mathbb{R}^{n\times n} 及其对应的节点特征XRn×d\mathbf{X}\in \mathbb{R}^{n\times d}​。

给定两个图G=(V,E)G=(V,E)G=(V,E)G^{'}=(V^{'},E^{'}) ,图的叉乘表示为G×=(V×,E×)G_{\times} =( V_{\times}, E_{\times}) 其中V×={(v,v):vVvV}V_{\times}=\left\{\left(v, v^{\prime}\right): v \in V \wedge v^{\prime} \in V^{\prime}\right\}E×={{(v,v),(u,u)}:{v,u}E{v,u}E}E_{\times}=\left\{\left\{\left(v, v^{\prime}\right),\left(u, u^{\prime}\right)\right\}:\{v, u\} \in E \wedge\left\{v^{\prime}, u^{\prime}\right\} \in E^{\prime}\right\}​​​,即节点包含两个图中的所有的节点对,边表示节点在两个图中都是相邻的。

Algorithm/Model

首先 GNN 的设计需要解决排列不变性 (permutation invariant) 的问题,即对于任意排列矩阵PΠ\mathbf{P} \in \PiPAP\mathbf{P} \mathbf{A} \mathbf{P}^{\top}​​​ 计算的结果是唯一的。

当前 MPNNs 系列一般是通过排列不变函数例如 sum、max、mean 等来聚合节点特征或者某种启发式策略来固定节点顺序,而这篇文章通过图核的方法来解决这个问题。

论文中提出的 RWNN 模型框架如下

RWNN 模型

从👆🏻图可以看出,RWNN 直接将输入图和 “hidden graphs” 进行对比,然后基于图核计算得到高维特征进行分类。主要问题在于如何得到这些可训练的 “hidden graphs”。

RWNN 包含NN 个 “hidden graphs”G1,...,GNG_1,...,G_N,其节点数量和节点特征不同且是可训练的,例如一个隐藏图GiG_i 包含nn 个节点对应可训练的邻接矩阵为WiRn×n\mathbf{W}_i \in \mathbb{R}^{n\times n},节点特征为ZiRn×d\mathbf{Z}_i \in \mathbb{R}^{n\times d}​​​。

📢 注意隐藏图可有向或者无向,论文中用到的是无向无自环图。在模型训练后通过可视化这些“隐藏图”即可非常直观地了解到模型学习到了哪些子图结构来区分不同的图,这就是论文提到的透明度和可解释性吧~ 👍🏻

为了使模型可以是端到端进行训练的,因此输入图和“hidden graphs”的对比函数需要是可微分的,但是当前很多图对比函数都是不可微分的。因此,作者一大创新点就是提出了基于随机游走核的图对比函数,随机游走核的主要思想就是计算两个图中相同随机游走序列的数量。

首先在叉乘图G×G_{\times} 上进行PP​ 步随机游走,等价于同时在图GGG、G^{\prime} 上进行随机游走,其叉乘图对应的邻接矩阵为A×\mathbf{A}_{\times}​。 那么两个图对应的PP 步随机游走核定义如下:

k(G,G)=i=1V×j=1V×[p=0PλpA×p]ijk\left(G, G^{\prime}\right)=\sum_{i=1}^{\left|V_{\times}\right|} \sum_{j=1}^{\left|V_{\times}\right|}\left[\sum_{p=0}^{P} \lambda_{p} \mathbf{A}_{\times}^{p}\right]_{i j}

其中λp\lambda_p 表示随机游走权重。对于计算第pp​ 步的核函数值如下,📢 论文中将权重参数λ\lambda​ 去掉即变体形式,没什么解释应该是对实验结果影响不大。

k(p)(G,G)=i=1V×j=1V×[A×p]ijk^{(p)}\left(G, G^{\prime}\right)=\sum_{i=1}^{\left|V_{\times}\right|} \sum_{j=1}^{\left|V_{\times}\right|}\left[\mathbf{A}_{\times}^{p}\right]_{i j}

对于每一步pp 可以计算得到核函数值。对于P={0,...,P}\mathcal{P}=\{0,...,P\} 和隐藏图集合Gh={G1,G2,,GN}\mathcal{G}_{h}=\left\{G_{1}, G_{2}, \ldots, G_{N}\right\},得到的输入图的特征即为笛卡尔积P×Gh\mathcal{P}\times \mathcal{G}_h 维度特征,即HRN×P\mathbf{H} \in \mathbb{R}^{N \times P} ,其中Hij=k(j1)(G,Gi)\mathbf{H}_{i j}=k^{(j-1)}\left(G, G_{i}\right)。最后将H\mathbf{H}​ 作为特征输入到 MLP 中进行分类。

很明显上述计算图核的过程中没有采用节点的特征,所以需要对上述函数进行泛化。

对于输入图GG 其节点特征为XRn×d\mathbf{X}\in \mathbb{R}^{n\times d} ,隐藏图GiG_i 及其可训练特征向量为ZiRc×d\mathbf{Z}_i \in \mathbb{R}^{c\times d} 其中cc 表示节点数量。令S=ZiXRc×n\mathbf{S}=\mathbf{Z}_{i} \mathbf{X}^{\top} \in \mathbb{R}^{c\times n} ,矩阵S\mathbf{S} 即表示两个图间的相似性。定义vecvec 表示矩阵向量拼接操作,s=vec(S)Rnc\mathbf{s}=\operatorname{vec}(\mathbf{S}) \in \mathbb{R}^{nc} ,那么上述定义的图核计算可以重写为

k(p)(G,G)=i=1V×j=1V×sisj[A×p]ij=i=1V×j=1V×[(ss)A×p]ij=sA×psk^{(p)}\left(G, G^{\prime}\right)=\sum_{i=1}^{\left|V_{\times}\right|}\sum_{j=1}^{\left|V_{\times}\right|} \mathbf{s}_{i} \mathbf{s}_{j}\left[\mathbf{A}_{\times}^{p}\right]_{i j}=\sum_{i=1}^{\left|V_{\times}\right|} \sum_{j=1}^{\left|V_{\times}\right|}\left[\left(\mathbf{s} \mathbf{s}^{\top}\right) \odot \mathbf{A}_{\times}^{p}\right]_{i j}=\mathbf{s}^{\top} \mathbf{A}_{\times}^{p} \mathbf{s}

上式中如果s\mathbf{s}​​​​ 为单位矩阵就等价于没考虑节点属性的核函数形式。上诉过程即可把核函数近似转换为可微的矩阵计算表示形式,后续论文还提供了 RWNN 实现的计算细节,在此不再细述,感兴趣的同学可以参考原文。

Experiments

实验部分在人工数据集中验证了 RWNN 模型的解释性及其隐图学习效果,在真实网络数据中验证了其性能。

人工数据集

人工生成多种结构的任意图,如下所示

图结构类型

RWNN 模型学习到的隐图结构及其结构如下,设置隐图节点数量为c=6c=6​;

隐图结构

对于学习的隐图结构,论文中解释为

Interestingly, the ”hidden graphs” and their corresponding motifs share some similar properties.

个人感觉有点抽象,没什么意义 🤫

真实网络数据集

真实网络中实验结果如下,在 GNNs 系列对于图分类任务整体而言感觉 GIN 模型效果还要好一点 😂

实验结果

Thoughts

  • 论文结合随机游走核的优势提出了 RWNN 模型,整体而言想法上创新非常强而且模型更加 transparent 👍🏻
  • 主要是论文中提出学习到的 hidden graphs 具有一定的模型可解释性 👍🏻
  • 整篇论文看下来比较通俗易懂,而且记录的较为详细因为很少可以将模型的解释性和性能同时考虑的论文 🤙🏻
  • 缺点很明显就是需要指定随机游走步数,而且需要指定每个 hidden graph 中节点的数量,这个可以学习到就好了 🤔

联系作者