Auto encoder简介, Variational Autoencoder, 以及Variational Graph Autoencoder详细介绍

1. 传统的Auto-Encoders

 

 

 传统的自动编码机是一个神经网络,它包含一个编码层和一个解码层。编码层将一个点X作为输入,将他转换成一个低维的特征 embedding Z。 解码是将低维的特征表示Z返回成一个重新构建的原始输入 X-hat,尽量使X-hat跟X相似。

下面是手写数字识别的例子:

 

损失函数:

 

为什么我们要将输入转化成一个低维的特征?

以图象为例子,将图像存在低维空间可以节省很多存储空间。对于计算也可以节省计算消耗。

通过加入噪音,增加样本。

 

 。 

 

2. Variational Autoencoders

为什么我们需要Variational Autoencoders?

Variational Avtoencoder的最大好处是特能够通过原始数据产生新的数据。而传统的Auto encoder只能够通过原始数据产生相似的数据。

 

 主要思想:

它先学习所有的样本的分布,然后根据这个分布随机产生新的样本。

 

Encoder 以一个点X作为输入,产生均值  和 。 用 是因为它有正有负。 在得到均值和方差后,我们试着让均值为0方差为1, 因此最终的分布将会接近 N(0,1). 

 

 

最后我们产生新的embedding Z 从均值和标准差上, , ,根据潜在变量Z, 我们可以通过译码产生新的X-hat。

损失函数:

这个损失函数分为两部分。 

第一部分表示产生的新的数据与输入的数据的差别,差别越大,损失函数越大。 

 第二部分表示调节。他表示近似与真实后验的KL散度,也就是输出分布 (qφ(z|x))与真实后验 p(z)的差别。

 

 

3. Variational Graph Autoencoders

 

 

 结构框架

 

 输入是一个邻接矩阵和一个特征矩阵,产生潜变量Z, 最后输出是一个新的邻接矩阵。

第一个gcn层产生一个新的低维得特征矩阵。

 

第二层GCN产生

 

 

将两层合并,得到均值和标准差,

 

然后我们产生Z,

 

 解码是通过潜在变量Z的内积,输出是一个新的邻接矩阵,

, sigmoid函数。

 

总之,编码是:

 

解码是:

 

损失函数:

 

使用内积解码是因为邻接矩阵每一行代表一个个体,内积可以计算两个向量的cosine相似性, 对于衡量两个向量的距离很有效。

 

posted @ 2020-04-17 15:13  CrescentTing  阅读(2199)  评论(0编辑  收藏  举报