自编码器的理解与应用

  • 什么是自编码器(AutoEncoder)?

自编码器可以认为是一种数据压缩算法,或特征提取算法。是一种无监督学习,基于反向传播算法和最优化方法,利用数据 x 本身作为监督来指导神经网络学习一个映射关系 h, 得到一个重构输出y。这个y近似等于x
自编码器可以理解为试图让输出和输入一样的神经网络。他们通过将输入压缩成一个隐藏空间表示来进行工作,然后通过这种表示重构输出。
自编码器的理解与应用_第1张图片
自编码器的模型如下:
自编码器的理解与应用_第2张图片所以呢,自编码器实际是由两部分组成:Encoder(编码器)和Decoder(解码器)。
编码器的作用:把高维输入x 编码成低维的隐变量h从而强迫神经网络学习最有信息量的特征;它在于把输入变成一个隐藏的空间表示,这也就进行特征提取。h=f(x)
解码器的作用:把隐藏层的隐变量h还原到初始维度,最好的状态就是解码器的输出能够完美地或者近似恢复出原来的输入,即x≈y。g(f(x))=y

  • 为什么要进行自编码呢?

希望通过添加一些限制条件,在训练autoencoder时将输入复制到输出中,同时得到的隐藏表示h 具有了有用的属性。重点是对于隐藏表示h的关注。
从自编码器获得有用特征的一种方法是将h限制为小于x的维度,在这种情况下,自编码器是不完整的。通过训练不完整的表示,我们强制自编码器学习训练数据的最显著特征。
理想情况下,自编码器可以成功地训练任何体系结构,根据要分配的复杂度来选择编码器和解码器的代码维数和容量。

  • 自编码器可以用来干什么?

第一:数据降噪
噪声是测量中的随机误差或偏差,包括错误值或者偏离期望的孤立点。简单来说就是对任务或者模型没有帮助甚至有误导作用的数据。编码器通过学习将潜在空间中的尽可能多的相关信息保留,丢弃不相关部分(噪声)。解码器学习潜在空间信息重建与输入一致的,这样就达到了去噪。
自编码器的理解与应用_第3张图片

第二:可视化降维
设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。因为自编码属于无监督学习,所以只需要训练数据就可以得到较好的特征。
第三:起到特征提取器的作用
自动编码器学习到的特征h,可以作为有监督模型的输入,这样就起到了特征提取器的作用。

  • 自编码器有什么优缺点?

1、是泛化性强的,无监督学习不需要数据标注,这意味着很容易对指定类的输入训练出一种特定的编码器,而不需要完成任何新工作。

2、是数据相关的,这意味着自动编码器只能压缩那些与训练数据类似的数据。比如,使用人脸训练出来的自动编码器在压缩别的图片,比如树木时性能很差,因为它学习到的特征是与人脸相关的。

3、是有损的,意思是解压缩的输出与原来的输入相比是退化的,MP3,JPEG等压缩算法也是如此。这与无损压缩算法不同。

  • 具体有哪些自编码器?
    Building Autoencoders in Keras
    1、自编码器(Anto-encoder)AE
    用Keras建立自动编码器
    2、栈式自编码器(Stacked Auto Encoder)SAE
    Stacked Auto Encoder(栈式自动编码)
    3、卷积自编码器(Convolutional Auto Encoder)CAE
    卷积自编码器
    4、正则自编码器(Regular Autoencoder)RAE
    5、稀疏自编码器(Sparse Autoencoder)SAE
    6、降噪自编码器(Denosing AutoEncoder)DAE
    7、多层自编码器(Multilayer Autoencoder)MAE
    四种不同的自编码器
    8、变分自编码器(variational autoencoder)VAE
    VAE变分自编码器Keras实现
    参考
    1、一文带你了解自编码器(AutoEncoder)
    2、自编码器是什么?有什么用?这里有一份入门指南
    3、深入理解自编码器

你可能感兴趣的:(python,机器学习,数据挖掘)