NIPS 2016图神经网络论文解读VGAE:图变分自编码器 Variational Graph Auto-Encoders(基于图的VAE)
Posted 白马金羁侠少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NIPS 2016图神经网络论文解读VGAE:图变分自编码器 Variational Graph Auto-Encoders(基于图的VAE)相关的知识,希望对你有一定的参考价值。
写在前面
- 论文题目: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:
所以图神经网络模型的目的是学习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^=D−21AD−21,注意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′)=−N1∑ylogy′+(1−y)log(1−y′)
上式中, 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)