Auto-Encoder
定义
定义:Auto-Encoder是一种通过无监督的方式来学习一组数据的有效表示。
形式
形式:原始D维样本->Encoder->M维->Decoder->D维
目标
目标:自编码器的学习 目标是最小化重构误差,即经过Decoder还原的向量与原始向量相差最小。
示意图

变形
稀疏自编码器
基本的自编码器通常是学习低维的编码,当需要学习的隐藏维度D大于样本的维度,同时希望编码尽可能的稀疏,这就是稀疏自编码器。
堆叠自编码器
两层神经网络的自编码器不足以获得好的数据表示,使用更深的网络以捕获数据的语义信息,这就是堆叠自编码器。
降噪自编码器
原始数据引入噪声,再送入Encoder,让Decoder的输出还原原始输入。
如何引入噪声:输入的数据随机用0进行mask
特点
- 非监督学习
- 拥有特征提取能力
- 使用神经网络对数据进行降维,这是一种非线性的
变分自编码器
VAE 产生了输入数据中不包含的数据,(可以认为产生了含有某种特定信息的新的数据),而 AE 只能产生尽可能接近或者就是以前的数据(当数据简单时,编码解码损耗少时)。
若给定一个数据集,如果我们想要根据这个来生成新的数据。假如我们知道这个分布是什么样,那么我们就可以在这个分布上进行sample进而便可以生成出新的数据。如下图的宝可梦服从

退而求其次,我们如果知道一个隐变量z的分布,将z的分布和数据分布
一般假设

公式推导
引入一个变分密度函数
在上式中,因为
此时,
此时最大化对数似然可以使用EM算法来求解:
(1)E步:固定
(2)M步:固定

因此最大化ELBO等价于,最小化第一项(Encoder),最大化第二项(Decoder)。
最小化第一项:让
最大化第二项:相当于通过x采样到的隐变量z,用z还原x与原始的x相近。这一步相当于使得重构误差最小。!
本质
VAE的本质相当于为每个样本构造专属的均值和方差,然后重构采样。
与GAN的区别
区别1:loss不同。VAE的loss是pointwise loss即重构损失,对比重构的X和原始输入X的差距,虽然也有KL散度,但是本质是让encoder的输出尽可能与正态分布相近。GAN的loss是衡量分布之间的loss,GAN的loss可以转换为JS散度。
区别2:是否为显式的概率密度函数。VAE中神经网络只是用来拟合假定的分布,这样限制了神经网络的能力。GAN中低维的正态分布P(z),直接用神经网络学习一个映射函数
,这个映射函数便是生成器。 函数,这个映射函数便是生成器。