2016 NIPS | Variational Graph Auto-Encoders

2016 NIPS | Variational Graph Auto-Encoders

Paper:https://arxiv.org/abs/1611.07308
Code: https://github.com/DaehanKim/vgae_pytorch

变分图自动编码器

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

VGAE是GCN在Variational Graph Auto-Encoders (VAE)的应用。Encoder用两个两层GCN分别得到N个均值和标准差,这两个GCN会共享第一层的参数,从而得到N个正态分布。Decoder仍然是向量点积。

变分图自动编码器(variational graph autoencoder,VGAE),它是基于变分自动编码器(variational auto-encoder,VAE)的无监督学习图结构数据的框架 该模型利用了潜在变量,并且有可能学习无向图的可解释潜在表示。

模型


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

确定均值和方差

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

采样

既然已经得到了均值和方差(准确来说应该是均值向量和协方差矩阵),就可以通过采样得到 Z Z Z了,但是,采样操作无法提供梯度信息,也就是说,反向传播在采样操作无法计算梯度,也就无法更新 W 0 W_0 W0 W 1 W_1 W1

G A E GAE GAE中,一旦 G C N GCN GCN中的 W 0 W_0 W0 W 1 W_1 W1确定了,那么 G C N GCN GCN就是一个确定的函数,给定 X X X A A A,输出的 Z Z Z就是确定的。

这里有两个要注意的地方,第一个是 G C N GCN GCN的下标, G C N μ GCN_{\mu} GCNμ G C N σ GCN_{\sigma} GCNσ中的 W 0 W_0 W0
共享但 W 1 W_1 W1是不同的,因此用下标来作区分;第二个是通过 G C N σ GCN_{\sigma} GCNσ得到的是 l o g σ log_{\sigma} logσ,这样可以方便后续的计算。

两层卷积神经网络定义为:
G C N ( X , A ) = A ~ R e L U ( A ~ X W 0 ) W 1 GCN(X,A)=\tilde{A}ReLU(\tilde{A}XW_0)W_1 GCN(X,A)=A~ReLU(A~XW0)W1
其中, G C N μ ( X , A ) GCN_{\mu}(X,A) GCNμ(X,A) G C N σ ( X , A ) GCN_{\sigma}(X,A) GCNσ(X,A)共享第一层参数 W 0 W_0 W0, 不共享第二层参数 W 1 W_1 W1; A ~ = D − 1 / 2 A D − 1 / 2 \tilde{A}=D^{-1/2}AD^{-1/2} A~=D1/2AD1/2是对称标准化邻接矩阵。

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

损失函数

基本思想与VAE思想相同,这是文中采用的优化目标
损失函数也是包括两部分:
L = E Z ∣ X , A [ l o g ( A ∣ Z ) ] − K L ( q ( Z ∣ X , A ) ∣ ∣ p ( Z ) ) L=\mathbb{E}_{Z|X,A}[log(A|Z)]-KL(q(Z|X,A)||p(Z)) L=EZX,A[log(AZ)]KL(q(ZX,A)∣∣p(Z))
其中, p ( Z ) = ∏ N ( z i ∣ 0 , I ) p(Z)=\prod N(z_i|0,I) p(Z)=N(zi∣0,I)表示

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆的比目鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值