什么是自编码器有什么用,什么是自编码器

自编码器(Auto Encoder, AE)属于无监督学习的神经网络模型 。目的就是学习到数据的隐含特征,从而实现数据降维和数据生成 。
一个典型的AE模型如下图所示:

什么是自编码器有什么用,什么是自编码器


包括五个部分:输入数据x、编码器f、编码层h、解码器g以及重构层r 。其中h=f(x),r=g(f(x)) 。
【什么是自编码器有什么用,什么是自编码器】其训练过程过程就是最小化重构误差,即重构数据r和输入数据x之间的差距 。
编码层的神经元个数会比较少,也就是呈现两头大中间小的沙漏模型,这样在完成训练之后,就可以用少量的编码层的数据来表示出原始数据 。(因为对编码进行解码就可以得到近似的原始数据)
这就相当于实现了PCA的功能,只不过PCA是线性模型 。而自编码器在加入非线性的激活函数之后,能够实现比PCA更为复杂的模型表示 。
比如下面的这个队MINIST数据集,进行自编码器的降维 。
输入数据是28*28,即784维;编码器和解码器都是用了两个隐含层分别为500维和300维 。可以看到是在不断降低特征的维度了,最终得到隐含的二维编码特征 。
什么是自编码器有什么用,什么是自编码器


此外自编码器通过加入不同的限制条件,出现了许多变种 。如稀疏自编码器(Sparse autoencoder)就是在损失函数中加入编码层权重的L1范式,从而实现编码的稀疏性,相当于能够学习到更加有用的特征,可以用于分类等问题;降噪编码器(Denoising autoencoder,DAE)就是在输入数据时,向数据中加入部分噪声,这样就能够学习到更具鲁棒性的特征 。变分自编码器(VAE)限定编码层大致服从于标准正态分布,那么就可以通过随机采样的方式,再通过解码生成大量的全新数据 。
自编码器(Auto-encoder)是一种无监督学习算法,训练样本集合是没有带类别标签的,即
什么是自编码器有什么用,什么是自编码器


自编码器在机器学习中具有广泛的应用,它的基础是神经网络算法 。
什么是自编码器有什么用,什么是自编码器


在一个神经网络中,当我们设定( a3=x),即输入等于输出时,神经网络相当于模拟了一个输入到自身的映射 。一个自编码器就是这样一种三层的神经网络,如图所示 。
什么是自编码器有什么用,什么是自编码器


从第一层到第二层相当于是一个编码(encode)的过程,从第二层到第三层则相当于是一个解码(decode)的过程 。更形象的表示见下图:
什么是自编码器有什么用,什么是自编码器


在一个自编码器中,由于只有无标签数据,我们将输入信息(input)输入一个编码器(encoder),就会得到一个编码(code),之后再通过一个解码器(decoder),就会得到一个输出信息(output) 。如果这个输出信息和原始的输入信号是一样的,我们就有理由相信,中间得到的编码 code 是输入信息 input的另外一个表示 。通过调整编码器和解码器中的参数,来最小化重构误差,此时就可以得到编码 code 。从第二层(隐含层)到第三层(输出层)是正向运算,因此自编码器的第二层可以完整地描述输入信号,也就是说,我们可以从第二层a2中无损地将输入信号重构出来,也即所谓的自编码 。

    推荐阅读