如果想了解GAE其实从VAE了解比较好,下面我就先来讲讲VAE自编码器。
VAE
VAE(Variational Auto-encoder)图自编码器,是一种和GAN类似的神经网络。那么VAE有什么作用?它主要的解决问题的场景是,你给我一个向量,我给你一张图片,例如我想生成一个猫的图片,你的输入可以是描述猫长成什么样子的向量,然后VAE会生成这样一个猫。是不是很神奇,下面我就来看看这个VAE。
首先我们来看看下面这个图片。
这里比较重要的是latent attributes这个向量,这个向量其实对这个图片的一些描述。
有人也许会问了,你为什么可以生成从来没有出现过的图片。这里就要介绍一下VAE中的编码器,对于每个隐性参数他不会去只生成固定的一个数,而是会产生一个置信值得分布区间,这是一种连续的表达方式,通过采样,我们就可以获得许多从来没有见过的数据了。下图就能说明白这个问题。
图上的GAE
我们今天主要想讲的是图上的自编码器gaeI(graph Auto-encoder),我们来看下图。
一个图的邻接矩阵,通过GCN编码生成一个embedding向量表达Z,然后通过ZZT来进行解码,从而生成新的重构的图像。
Encoder
在encoder 部分使用GCN作为编码器。
Z=GCN(X,A)(1.1)
GAN(X,A)=ARelu(AXW0)W1(1.2)
A=D21AD−21(1.3)
这里 GCN 就相当于一个以节点特征和邻接矩阵为输入、以节点 embedding 为输出的函数,目的只是为了得到 embedding。
Decoder
GAE采用的是inner-product
A=δ(ZZT)(1.4)
这里的A就是重构好的邻接矩阵。
learning
下面就是如何去学习啦,
一个好的 Z,就应该使重构出的邻接矩阵与原始的邻接矩阵尽可能的相似,因为邻接矩阵决定了图的结构。因此,GAE 在训练过程中,采用交叉熵作为损失函数:
L=N1∑ylogy+(1−y)log(1−y)(1.5)
y包含每个元素的值 0/1,y表示重构后的值。