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相似性, 对于衡量两个向量的距离很有效。
转载:https://www.cnblogs.com/xinyuePhd/p/12720166.html