今天学习的是 Thomas N. Kipf 的 2016 年的工作《Variational Graph Auto-Encoders》,目前引用量为 260 多。

VGAE 属于图自编码器,是图神经网络细分类别的一大类。Kipf 同学也非常厉害,其影响力最大的一篇论文莫过于 2017 年提出的 GCN 模型。

VGAE 全称为 Variational Graph Auto-Encoders,翻译过来就是变分图自编码器,从名字中我们也可以看出 VGAE 是应用于图上的变分自编码器,是一种无监督学习框架。

看到这可能不知道大家都没有疑问,至少我会有以下几点疑问:

  1. 自编码器是利用编码与解码对数据进行压缩,加上变分后的 VGAE 是什么?
  2. 自编码器是通过隐藏层节点数小于输入层节点数实现数据压缩,VGAE 如何实现?
  3. 自编码器预测的目标是输入,而 VGAE 要预测的是什么?

1.Introduction

我们知道自编码器的是通过减少隐藏层神经元个数来实现重构样本,自编码器为了尽可能复现输入数据,其隐藏层必须捕捉输入数据的重要特征,从而找到能够代表原数据的主要成分。

变分图自编码器也具有类似的目的,其主要是为图中节点找寻合适的 Embedding 向量,并通过 Embedding 向量实现图重构。其中获取到的节点 Embedding 可以用于支撑下游任务。

2.VGAE

2.1 VAE

在介绍 VGAE 之前,我们先介绍下 VAE(Variational Auto-Encoders)。VAE 了解清楚后,VGAE 也算完成了 80%。

VAE 最早来源于 2014 年 Kingma 的一篇论文《Auto-Encoding Variational Bayes》。该论文目前引用数超 8300 次,作者 Kingma 和 Kipf 都来自于阿姆斯特丹大学。

VAE 是变分贝叶斯(Variational Bayesian)和神经网络的结合。

简单介绍下变分贝叶斯方法:我们知道统计模型由观察变量 x、未知参数 θ\thetaθ 和隐变量 z 组成,生成模型是通过隐变量来估计观察变量:pθ(z)pθ(x∣z)p_{\theta}(z)p_{\theta}(x|z)pθ(z)pθ(xz)。但很多情况下,这个后验概率并容易得到(因变量和参数都不知道),所以我们就需要通过其他的方式来近似估计这个后验概率。贝叶斯统计学传统的推断方法是采用马氏链蒙特卡洛(MCMC)采样方法,通过抽取大量样本给出后验分布的数值近似,但这种方法的计算代价昂贵。而变分贝叶斯是把原本的统计推断问题转换成优化问题(两个分布的距离),并利用一种分析方法来近似隐变量的后验分布,从而达到原本统计推断的问题。

而 VAE 则是利用神经网络学习来学习变分推导的参数,从而得到后验推理的似然估计。下图实线代表贝叶斯推断统计的生成模型 pθ(z)pθ(x∣z)p_{\theta}(z)p_{\theta}(x|z)pθ(z)pθ(xz),虚线代表变分近似 qϕ(z∣x)q_{\phi} (z|x)qϕ(zx)

这篇论文里最重要的就是公式,为了简单起见,不进行公示推导。直接说结论:作者提出了 AEVB(Auto-Encoding Variational Bayesian)算法来让 qϕ(z∣x)q_{\phi} (z|x)qϕ(zx) 近似 pθ(x∣z)p_{\theta}(x|z)pθ(xz),同时把最大似然函数的下界作为目标函数,从而避开了后验概率的计算,并且将问题转换为最优化问题,同时可以利用随机梯度下降来进行参数优化。

VAE 模型中,我们假设 qϕ(z∣x)q_{\phi} (z|x)qϕ(zx) 这个后验分布服从正态分布,并且对于不同样本来说都是独立的,即样本的后验分布是独立同分布的。可能大家会有个疑问:

  1. 为什么是服从正态分布?
  2. 为什么要强调是各样本分布是独立的?

对于第一个问题,这里只是做一个假设,只要是一个神经网络可以学到的分布即可,只是服从正态分布就是 VAE 算法,如果服从其他的分布就是其他的算法;

对于第二个问题,如果我们学到的各变量的分布都是一致的,如:

这样的结构无法保证通过学到的分布进行采样得到的隐变量 ziz_izi 能够与真实样本 xix_ixi 一一对应,所以就无法保证学习效果了。

所以 VAE 的每个样本都有自己的专属正态分布:

这样,我们便能通过每个样本的专属分布来还原出真实样本。

这也是论文中最重要的一点:
log⁡qϕ(z∣x(i))=log⁡N(z;μ(i),σ2(i),I)\log q_{\phi}(\mathbf{z}|\mathbf{x}^{(i)}) = \log N(\mathbf{z} ;\mathbf{\mu}^{(i)},\mathbf{\sigma}^{2(i)},\mathbf{I}) \\ logqϕ(zx(i))=logN(z;μ(i),σ2(i),I)
VAE 通过构建两个神经网络来分别学习均值和方差 μk=f1(Xk),log⁡σk2=f2(Xk)\mu_k = f_1(\mathbf{X}_k),\log \sigma_k^2 = f_2(\mathbf{X}_k)μk=f1(Xk),logσk2=f2(Xk),这样我们便能得到样本 XkX_kXk 的专属均值和方差了,然后从专属分布中采样出 ZkZ_kZk,然后通过生成器得到 X^k=g(Zk)\mathbf{\hat X}_k = g(\mathbf{Z}_k)X^k=g(Zk),并通过最小化重构误差来进行约束 D(X^k,Xk)D(\mathbf{\hat X}_k, \mathbf{X}_k)D(X^k,Xk)

但隐变量是通过采样得到的,而不是经过编码器算出来的。这样的重构过程中免不了受到噪声的影响,噪声会增加重构的难度,不过好在这个噪声的强度可以通过方差反应,方差可以通过一个神经网络得到计算,所以最终模型为了更好的重构会尽量让模型的方差为零,而方差为零时,就不存在随机性了,这样模型最终会是一组均值,便退化成了普通的 AutoEncoder。

为了防止噪声为零不再起作用,VAE 会让所有的后验分布都向标准正态分布看齐,衡量两个分布的距离,我们有 KL 散度:
Lμ,σ2=12∑i=1d(μi2+σi2−logσi2−1)L_{\mu, \sigma^2} = \frac{1}{2}\sum_{i=1}^d \big( \mu_i^2 + \sigma_i^2 - log\; \sigma_i^2 - 1 \big) \\ Lμ,σ2=21i=1d(μi2+σi2logσi21)
其中,d 为隐变量的维度。

变分自编码中的变分是指变分法,用于对泛函 KL(p∣q)KL(p|q)KL(pq) 求极值。

我们将约束两个分布的 KL 散度加入到损失函数中,则有:
L=D(X^k,Xk)+12∑i=1d(μi2+σi2−logσi2−1)L = D(\mathbf{\hat X}_k, \mathbf{X}_k) + \frac{1}{2}\sum_{i=1}^d ( \mu_i^2 + \sigma_i^2 - log\; \sigma_i^2 - 1 ) \\ L=D(X^k,Xk)+21i=1d(μi2+σi2logσi21)
简单来说,VAE 的本质就是利用两个编码器分别计算均值和方差,然后利用解码器来重构真实样本,模型结构大致如下:

2.2 VGAE

我们再来看一下变分图自编码,先来看下框架:

其中,X 为节点的特征矩阵,A 为邻接矩阵,先利用后验概率得到隐变量 Z,再用隐变量重构邻接矩阵 A。

VGAE 的编码器是一个两层的图卷积网络:
q(Z∣X,A)=Πi=1Nq(zi∣X,A)q(\mathbf{Z}|\mathbf{X},\mathbf{A}) = \Pi_{i=1}^N q(z_i|\mathbf{X},\mathbf{A}) \\ q(ZX,A)=Πi=1Nq(ziX,A)
其中,后验概率和 VAE 的解决方案一致:
q(zi∣X,A)=N(zi∣μi,diag(σi2))q(\mathbf{z}_i|\mathbf{X},\mathbf{A})=N(\mathbf{z}_i |\mu_i, diag(\sigma_i^2)) \\ q(ziX,A)=N(ziμi,diag(σi2))
其中,μ=GCNμ(X,A)\mu=GCN_{\mu}(\mathbf{X},\mathbf{A})μ=GCNμ(X,A) 是特征向量的均值;logσ=GCNσ(X,A)log\;\sigma=GCN_{\sigma}(X,A)logσ=GCNσ(X,A) 是节点向量的方差。

两层卷积神经网络定义为:
GCN(X,A)=A~ReLU(A~XW0)W1GCN(\mathbf{X},\mathbf{A}) = \mathbf{\widetilde{A}}\; ReLU(\mathbf{\widetilde A}\mathbf{X}\mathbf{W_0})\mathbf{W_1} \\ GCN(X,A)=A

ReLU(A

XW0)W1
其中,GCNμ(X,A)GCN_{\mu}(\mathbf{X},\mathbf{A})GCNμ(X,A)GCNσ(X,A)GCN_{\sigma}(\mathbf{X},\mathbf{A})GCNσ(X,A) 共享第一层参数 W0W_0W0,不共享第二层参数 W1W_1W1A~=D−1/2AD−1/2\mathbf{\widetilde A}=\mathbf{D}^{-1/2}\mathbf{A}\mathbf{D}^{-1/2}A

=
D1/2AD1/2
是对称标准化邻接矩阵。

VGAE 的解码器则是利用隐变量的内积来重构邻接矩阵:
p(A│Z)=∏i=1N∏j=1Np(Aij∣zi,zj)p(\mathbf{A}│\mathbf{Z})=∏_{i=1}^N∏_{j=1}^Np(A_{ij} |\mathbf{z}_i, \mathbf{z}_j) \\ p(AZ)=i=1Nj=1Np(Aijzi,zj)
其中,p(Aij=1∣zi,zj)=σ(ziTzj)p(A_{ij}=1|\mathbf{z}_i,\mathbf{z}_j) = \sigma(\mathbf{z}_i^{T}\mathbf{z}_j)p(Aij=1zi,zj)=σ(ziTzj).

损失函数也是包括两部分:
L=Eq(Z∣X,A))[log⁡p(A│Z)]−KL[q(Z│X,A)∣∣p(Z)]L=\mathbb{E}_{q(\mathbf{Z}|\mathbf{X}, \mathbf{A}))}[log⁡\;p(\mathbf{A}│\mathbf{Z})]-KL[q(\mathbf{Z}│\mathbf{X},\mathbf{A})||p(\mathbf{Z})] \\ L=Eq(ZX,A))[logp(AZ)]KL[q(ZX,A)p(Z)]
其中,p(Z)=ΠiN(zi∣0,I)p(\mathbf{Z})=\Pi_i N(\mathbf{z}_i|0,\mathbf{I})p(Z)=ΠiN(zi0,I) 表示

2.3 GAE

除了变分自编码器外,作者也提出了非概率模型的图自编码器(Graph Auto Encoder),公式如下:
A^=σ(ZZT)\hat {\mathbf{A}} = \sigma(\mathbf{Z}\mathbf{Z}^T) \\ A^=σ(ZZT)
其中,Z=GCN(X,A)\mathbf{Z} = GCN(\mathbf{X},\mathbf{A})Z=GCN(X,A)

此时的损失函数只包括重构损失。

3.Experiment

简单看一下实验部分,主要是边预测问题,我们也可以看到 VGAE 是预测邻接矩阵的。

打星号的是不使用节点的特征。

4.Conclusion

总结:VGAE 利用神经网络学习后验分布从而实现编码过程,同时利用重构误差和 KL 散度进行参数优化,从而得到节点的隐变量作为节点的 Embeding。

5.Reference

  1. 《Variational Graph Auto-Encoders》
  2. 《Auto-Encoding Variational Bayes》
  3. 《变分自编码器(一):原来是这么一回事》

关注公众号跟踪最新内容:阿泽的学习笔记

【GNN】VGAE:利用变分自编码器完成图重构相关推荐

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

    写在前面 论文题目:Variational Graph Auto-Encoders 论文作者:Thomas N. Kipf, Max Welling 论文组织:University of Amster ...

  2. (脑肿瘤分割笔记:四七)--自编码器和变分自编码介绍具有变分自编码器正则化的U型分割结构

    本文只是记录个人阅读论文的感想与思考!难免存在错误!如若理解有误还请各位大佬指出!感谢! 目录 相关概念 自编码器(AE) 自编码器存在的问题 变分自编码器(VAE) 关于正则化的直观解释 论文一:3 ...

  3. 【生成模型】变分自编码器(VAE)及图变分自编码器(VGAE)

    这段时间在学习机器学习中有关不确定性和概率分布的知识,发现了VAE这样一个有趣的方向,想抓紧时间整理一下VAE的主要思想和方法,然后思考如何迁移应用到自己的研究方向上. 从直观上理解VAE 变分自编码 ...

  4. AVGCN:利用人类注意力引导的图卷积网络进行轨迹预测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 小白导读 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家 ...

  5. 变分自编码器:球面上的VAE(vMF-VAE)

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 在变分自编码器:VAE + BN = 更好的 VAE 中,我们讲到了 NLP 中训练 VAE 时常见的 K ...

  6. 变分自编码器系列:VAE + BN = 更好的VAE

    ©PaperWeekly 原创 · 作者|苏剑林 单位|追一科技 研究方向|NLP.神经网络 本文我们继续之前的变分自编码器系列,分析一下如何防止 NLP 中的 VAE 模型出现"KL 散度 ...

  7. 【TensorFlow-windows】学习笔记六——变分自编码器

    #前言 对理论没兴趣的直接看代码吧,理论一堆,而且还有点复杂,我自己的描述也不一定准确,但是代码就两三句话搞定了. 国际惯例,参考博文 论文:Tutorial on Variational Autoe ...

  8. 变分自编码器(VAE)详解与实现(tensorflow2.x)

    变分自编码器(VAE)详解与实现(tensorflow2.x) VAE介绍 VAE原理 变分推理 VAE核心方程 优化方式 重参数化技巧(Reparameterization trick) VAE实现 ...

  9. 【13】变分自编码器(VAE)的原理介绍与pytorch实现

    文章目录 1.VAE的设计思路 2.VAE的模型架构 3.VAE的作用原理 4.VAE的Pytorch实现 1)参考代码 2)训练结果展示 3)生成结果展示 5.实现VAE中出现的问题 1.VAE的设 ...

最新文章

  1. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书
  2. 华为宣布:免费培养K8s和微服务开发者
  3. 十年维护专家的“秘籍
  4. access mysql 同步,SQLServer2008 同步Access数据库
  5. 机器学习入门(三):神经网络起手式
  6. 初识iptables规则
  7. Python工具——tqdm:进度条
  8. biopython简介
  9. java更新word目录_java aspose.words 生成word目录和更新目录
  10. html 悬浮qq,js悬浮QQ在线客服代码(支持拖动)
  11. three.js 入门详解(一)
  12. 小猪短租陈驰:共享经济不是简单的资本游戏
  13. Wordpress关闭所有评论
  14. 优化 | 浅谈旅行商(TSP)的七种整数规划模型
  15. Chrome浏览器自带翻译功能不能使用了?看我的解决方法
  16. 这一年来在疫情下,作为沪漂的生活
  17. CogCreateSegmentTool工具
  18. 超级计算机紫金,紫金山天文台将用“天河一号”模拟宇宙成长
  19. HTML转为office WORD方案
  20. 查看浏览器的cookie

热门文章

  1. 气象站的技术参数有哪些?
  2. 二战漫画爬虫(爱漫画网)
  3. xm在线转换成mp3_也就索尼敢了!4000多卖QQ音乐还不送会员,安卓MP3咋这么贵?...
  4. 虚拟机配置网络(Linux)
  5. SN74LVCC3245ADBR
  6. 数据安全技术研究国外
  7. 计算机网络:16---因特网标准(IETF、RFC)
  8. 售价80万!高合汽车,流淌法拉第FF的血液?
  9. 初步学习——认识基站、扇区、小区、BBU、RRU、天线、馈线
  10. 【Tesseract-OCR】玩转OCR中文识别