zoukankan      html  css  js  c++  java
  • 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相似性, 对于衡量两个向量的距离很有效。

  • 相关阅读:
    053(二十五)
    053(二十四)
    053(二十三)
    053(二十二)
    053(二十一)
    053(二十)
    053(十九)
    053(十八)
    053(十七)
    单例设计模式
  • 原文地址:https://www.cnblogs.com/xinyuePhd/p/12720166.html
Copyright © 2011-2022 走看看