NIPS 2016图神经网络论文解读VGAE:图变分自编码器 Variational Graph Auto-Encoders(基于图的VAE)

Posted 白马金羁侠少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NIPS 2016图神经网络论文解读VGAE:图变分自编码器 Variational Graph Auto-Encoders(基于图的VAE)相关的知识,希望对你有一定的参考价值。

写在前面

Kipf 与 Welling 16 年发表的「Variational Graph Auto-Encoders」提出了基于图的(变分)自编码器 Variational Graph Auto-Encoder(VGAE),自此开始,图自编码器凭借其简洁的 encoder-decoder 结构和高效的 encode 能力,在很多领域都派上了用场。

Thomas N. Kipf大佬不仅是这篇VGAE的作者,而且还是大名鼎鼎模型GCN的作者。二作是CIFAR10实验室的Max Welling,他是GCNVAE的作者之一,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:

所以图神经网络模型的目的是学习meaningful latent embeddings z z z

类型1:监督学习或半监督学习通过x,y来学习表征z
类型2:当图上没有标签y时,通过无监督学习的方式来学习z,即只通过x学习z

常见的基于图的无监督学习方法有:

  • GAE:图自编码器 Graph Auto-Encoder
  • VGAE:变分图自编码器 Variational Graph Auto-Encoder

一、GAE 图自编码器

简单回顾下经典的Auto-Encoder模型:

GAE是GCN在Auto-Encoders的应用,非常容易理解,隐变量Z就是图上的N个节点经过GCN后的N*F维特征,Encoder就是两层GCN, Decoder就是向量点积。可以将隐变量Z理解为某种意义上图的节点的相似度,通过向量点积得到的两个图节点的相似度越大,则两个节点之间存在边的概率越大


输入 X : N × D X: N\\times D X:N×D,邻接矩阵 A : N × N A: N\\times N A:N×N,隐向量 Z : N × F Z: N\\times F Z:N×F,重构出来的邻接矩阵 A ′ : N × N A': N\\times N A:N×N

  • GAE使用GCN作为encoder来得到节点的latent representations
    • Z = G C N ( X , A ) = A ^ R e L U ( A ^ X W 0 ) W 1 Z=GCN(X,A)=\\hatAReLU(\\hatAXW_0)W_1 Z=GCN(X,A)=A^ReLU(A^XW0)W1, 其中 A ^ = D − 1 2 A D − 1 2 \\hatA=D^-\\frac12 A D^-\\frac12 A^=D21AD21注意VGAE论文中的 A A A已经加上了 I I 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 ′ = σ ( Z Z T ) = s i g m o i d ( Z Z T ) A'=\\sigma(ZZ^T)=sigmoid(ZZ^T) A=σ(ZZT)=sigmoid(ZZT)

GAE是如何训练,它的loss函数是什么?

一个好的Z,就应该使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似。损失函数要能衡量生成图和原始图之间差异:

L o s s ( A , A ′ ) = − 1 N ∑ y log ⁡ y ′ + ( 1 − y ) log ⁡ ( 1 − y ′ ) \\mathcalLoss(A, A')=-\\frac1N \\sum y \\log y'+(1-y) \\log (1-y') Loss(A,A)=N1ylogy+(1y)log(1y)

上式中, y y y代表领接矩阵A(已加上 I I I)中某个元素的值(0或1), y ′ y' y代表重构的领接矩阵 A ′ A' 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.

三、实验结果

任务:链路预测

四、参考资料

[1] VGAE(Variational graph auto-encoders)论文详解
[2] 【GNN】VGAE:利用变分自编码器完成图重构
[3] 【GNN五大类 VGAE】(变分图自编码器):Variational Graph Auto-Encoders
[4] Tutorial on Variational Graph Auto-Encoders

以上是关于NIPS 2016图神经网络论文解读VGAE:图变分自编码器 Variational Graph Auto-Encoders(基于图的VAE)的主要内容,如果未能解决你的问题,请参考以下文章

阿里NIPS 2017论文解读:如何降低TensorFlow训练的显存消耗?

NIPS 2016论文:英特尔中国研究院在神经网络压缩算法上的最新成果

Meta learning paper:Learning to learn by gradient descent by gradient descent (Nips2016)

AlexNet论文解读与代码实现

学界 | 阿里NIPS 2017 Workshop论文:基于TensorFlow的深度模型训练GPU显存优化

KDD2020 深度图神经网络专题论文解读