图神经网络(七)--GAE神经网络

如果想了解GAE其实从VAE了解比较好,下面我就先来讲讲VAE自编码器。

VAE

VAE(Variational Auto-encoder)图自编码器,是一种和GAN类似的神经网络。那么VAE有什么作用?它主要的解决问题的场景是,你给我一个向量,我给你一张图片,例如我想生成一个猫的图片,你的输入可以是描述猫长成什么样子的向量,然后VAE会生成这样一个猫。是不是很神奇,下面我就来看看这个VAE。

首先我们来看看下面这个图片。

vae_0.jpg

这里比较重要的是latent attributes这个向量,这个向量其实对这个图片的一些描述。

有人也许会问了,你为什么可以生成从来没有出现过的图片。这里就要介绍一下VAE中的编码器,对于每个隐性参数他不会去只生成固定的一个数,而是会产生一个置信值得分布区间,这是一种连续的表达方式,通过采样,我们就可以获得许多从来没有见过的数据了。下图就能说明白这个问题。

vae_1.jpg

图上的GAE

我们今天主要想讲的是图上的自编码器gaeI(graph Auto-encoder),我们来看下图。

vae_2.jpg

一个图的邻接矩阵,通过GCN编码生成一个embedding向量表达Z,然后通过ZZTZ Z^T来进行解码,从而生成新的重构的图像。

Encoder

在encoder 部分使用GCN作为编码器。

Z=GCN(X,A)(1.1)Z=GCN(X,A) \tag{1.1}

GAN(X,A)=ARelu(AXW0)W1(1.2)GAN(X,A)=\vec{A} Relu(\vec{A}XW_0)W_1 \tag{1.2}

A=D12AD12(1.3)\vec{A}=D^{\frac{1}{2}}AD^{-\frac{1}{2}} \tag{1.3}

这里 GCN 就相当于一个以节点特征和邻接矩阵为输入、以节点 embedding 为输出的函数,目的只是为了得到 embedding

Decoder

GAE采用的是inner-product

A=δ(ZZT)(1.4)\vec{A}=\delta(ZZ^T) \tag{1.4}

这里的A\vec{A}就是重构好的邻接矩阵。

learning

下面就是如何去学习啦,

一个好的 Z,就应该使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似,因为邻接矩阵决定了图的结构。因此,GAE 在训练过程中,采用交叉熵作为损失函数:

L=1Nylogy+(1y)log(1y)(1.5)L=\frac{1}{N} \sum y\log \vec{y}+(1-y)\log (1-\vec{y}) \tag{1.5}

yy包含每个元素的值 0/1,y\vec{y}表示重构后的值。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×