写在前面
- 论文题目:Variational Graph Auto-Encoders
- 论文作者:Thomas N. Kipf, Max Welling
- 论文组织:University of Amsterdam
- 论文会议:NIPS Workshop 2016
- 论文地址:https://arxiv.org/pdf/1611.07308.pdf
- 论文代码:https://github.com/zfjsail/gae-pytorch/blob/master/gae/model.py
Kipf 与 Welling 16 年发表的「Variational Graph Auto-Encoders」提出了基于图的(变分)自编码器 Variational Graph Auto-Encoder(VGAE),自此开始,图自编码器凭借其简洁的 encoder-decoder 结构和高效的 encode 能力,在很多领域都派上了用场。
Thomas N. Kipf大佬不仅是这篇VGAE的作者,而且还是大名鼎鼎模型GCN的作者。二作是CIFAR10实验室的Max Welling,他是GCN和VAE的作者之一,Kipf是Max Welling的博士生。
一、引入图神经网络
假设我们的数据集是Cora数据集 (每个样本点都是一篇科学论文,所有样本点被分为8个类别),现在想训练一个模型预测每个样本点对应的类别。(节点分类任务)
样本 特征x 标签y
31336: x=(0,1,0,0,0...0), y=Neural_Networks
10611: x=(0,0,1,0,1...0), y=Rule_Learning
...
12135: x=(0,0,0,0,0...0), y= Reinforcement_Learning
建模方法:
- 方法1:直接对P(y|x)建模(传统监督学习),模型性能一般
- 方法2:先基于图结构的图神经网络模型(如GCN)提取更好的表征(x->z),再进行下游任务建模(P(y|z)),模型性能较好(这种方法就是图神经网络)
图神经网络的模型Pipeline:
所以图神经网络模型的目的是学习有意义的表征向量$z$
- 类型1:监督学习或半监督学习是通过$A,x,y$来学习表征$z$
- 类型2:当图上没有标签$y$时,可以通过无监督学习的方式来学习$z$,即只通过$A,x$学习$z$
常见的基于图的无监督学习方法有:
- GAE:图自编码器 Graph Auto-Encoder(主要用于压缩$A,x\rightarrow z$)
- VGAE:变分图自编码器 Variational Graph Auto-Encoder(主要用于图的生成$z\rightarrow A$)
二、GAE 图自编码器
简单回顾下经典的Auto-Encoder模型:
GAE是GCN在Auto-Encoders的应用,非常容易理解,隐变量Z就是图上的N个节点经过GCN后的N*F维特征,Encoder就是两层GCN, Decoder就是向量点积。可以将隐变量Z理解为某种意义上图的节点的相似度,通过向量点积得到的两个图节点的相似度越大,则两个节点之间存在边的概率越大
输入$X: N\times D$,邻接矩阵$A: N\times N$,隐向量$Z: N\times F$,重构出来的邻接矩阵$A’: N\times N$
- GAE使用
GCN
作为encoder来得到节点的latent representations- $Z=GCN(X,A)=\hat{A}ReLU(\hat{A}XW_0)W_1$, 其中$\hat{A}={D}^{-\frac{1}{2}} {A} {D}^{-\frac{1}{2}}$,注意VGAE论文中的$A$已经加上了$I$
- 原论文的描述:We introduce an adjacency matrix A of G (we assume diagonal elements set to 1, i.e. every node is connected to itself) and its degree matrix D.
- GAE使用
inner-product
作为decoder来reconstruct原始的图- $A’=\sigma(ZZ^T)=sigmoid(ZZ^T)$
GAE是如何训练,它的loss函数是什么?
一个好的Z,就应该使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似。损失函数要能衡量生成图和原始图之间差异:
$$\mathcal{Loss(A, A’)}=-\frac{1}{N} \sum y \log {y’}+(1-y) \log (1-{y’})$$
上式中,$y$代表领接矩阵A(已加上$I$)中某个元素的值(0或1),$y’$代表重构的领接矩阵$A’$中相应元素的值(0到1之间)
下图来自综述《A Comprehensive Survey on Graph Neural
Networks》https://arxiv.org/pdf/1901.00596.pdf
三、VGAE 图变分自编码器
简单回顾下经典的VAE模型:
- VAE训练阶段:
- VAE预测阶段:
VGAE是GCN在Variational Graph Auto-Encoders (VAE)的应用。Encoder用两个两层GCN分别得到N个均值和标准差,这两个GCN会共享第一层的参数,从而得到N个正态分布。Decoder仍然是向量点积。
VGAE是如何训练,它的loss函数是什么?
另外为了使VGAE能进行梯度反向传播,论文采用了和VAE相同的重采样技巧
We perform full-batch gradient descent and make use of the reparameterization trick for training.
四、实验结果
GAE和VGAE在解码的过程中都是在重构领接矩阵A,因此除了可以学习到节点的中间表示Z,它们还很适合链路预测的任务,最终得到的p(A|Z)可以用来预测A中任意未知元素的概率。
任务:链路预测(边上的任务)
五、图的生成与药物发现
上文中提到VGAE可以用于图的生成,那么图的生成在现实生活中有什么实际应用吗?实际上图的生成模型在药物发现领域有着重要的作用。
药物开发是一个耗时、费力的大工程,从最初的药物设计、分子筛选,到后期的安全测试、临床试验,一般会花超过10年的时间而且不能保证成功率。因此,面对COVID-19这种突发的流行病,我们无法立刻研发出有效药物,而只能在已知的药物里寻找可能有效的进行药物重用。为了加快新药开发的进程,人工智能在药物发现领域起到了越来越重要的作用、尤其是在新分子的设计阶段。图神经网络与图生成模型的应用极大地提升了药物发现的效率。虽然分子也可以表征成 SMLLES 字符申的形式(如图B2所示),但是我们很想从这种子餐串中直接获得语法和结构信息,因此更常用的分子生成方法是把分子当成图来生成。——《图神经网络基础与前沿》P109
六、参考资料
[1] VGAE(Variational graph auto-encoders)论文详解