目录
1、自编码器的概述
1986年Rumelhart提出自动编码器的概念,顾名思义,即可以使用自身的高阶特征编码自己。自编码器(autoencoder, AE)是一类在半监督学习和非监督学习中使用的人工神经网络(Artificial Neural Networks, ANNs),其功能是通过将输入信息作为学习目标,对输入信息进行表征学习(representation learning)。 自动编码器基本上可以分为三个不同的组件:编码器、瓶颈和解码器。
目前,自编码器的应用主要有两个方面,第一是 数据去噪,第二是 为进行可视化而降维。
自动编码器是神经网络的一种,经过训练后能尝试将输入复制到输出,换句话说,就是使输入的内容和输出的内容一样。自动编码器内部有一个隐含层 h,可以产生编码来表示输入。该网络可以看成有两部分组成:一个编码器 h = f( x )和一个生成重构的解码器 r = g( x ), 使得 x 约等于 g(f( x ))。
2、自编码器的原理
自编码器 (Autoencoder) 是一种旨在将它们的输入复制到输出的神经网络。这种网络有编码器和解码器两部分组成。
全连接层神经网络组成的最简单的自编码器只有三层结构,中间的隐藏层才是我们所需要关注的地方,以隐藏层为界限,左边为编码器 (encoder) ,右边为解码器 (decoder) 。
很明显,如果自编码器只是单纯的将输入复制到输出中,那么他没有用处。所以实际上,希望通过训练自编码器将输入复制到输出中,使隐藏表示的 h 拥有有用的属性。
自编码器其实也是一种神经网络,它的输入和输出是一致的,它借助稀疏编码的思想,目标是使用一些高阶特征重新组合来重构自己,即对所有的自编码器来讲,目标都是 样本重构。自编码器首先通过编码层,将高维空间的向量压缩成低维的向量(潜在变量),然后通过解码层将低维向量解压重构出原始样本。
假如我们通过一组数据训练出了我们的自编码器,然后我们拆掉自编码器的解码器 (decoder) ,就可以用剩下的编码器 (encoder) 来表征我们的数据了。隐藏层的神经元数目远低于输入层,那么就相当于我们用更少的特征(神经元)去表征我们的输入数据,从而达到降维压缩的功能。
如上图所示
(1)从输入层到隐藏层的原始数据X的编码过程:
(2)从隐藏层到输出层的解码过程:
那么算法的优化目标函数就写为:
其中dist为二者的距离度量函数,通常用MSE(均方方差)。
3、自编码器的拓展网络
3.1稀疏自编码
稀疏自编码器通常用于学习诸如分类等任务的特征。稀疏自编码器就是普通自编码器的隐藏层加一个L1正则项,也就是一个训练惩罚项,这样我们训练出的编码器 (encoder) 表征的特征更加的稀疏,从而能得到少且有用的特征项。
限制自编码器重构的一种方式是对其损失施加约束 –>稀疏性约束。可以使用神经元的输出作为神经元的激活度,即对于隐含层的第 j 个神经元,其激活度为:
则对于 m 个样本,其平均激活度为:
是一个 常数,表示的是稀疏性参数,通常可以取一个接近于 0 的常数( =0.05)。我们希望平均激活度能够尽可能接近稀疏性常数,通常可以去相对熵来衡量平均激活度与稀疏性参数之间的差异程度。3.2栈式自编码
栈式自编码神经网络是一个由多层稀疏自编码器组成的神经网络,其前一层自编码器的输出作为其后一层自编码器的输入。
3.3降噪自编码
降噪自编码器就是输入换成了加噪的数据集,输出用原数据集去训练的自编码器,目的是习得降噪功能。
Original: https://blog.csdn.net/weixin_53148422/article/details/125234897
Author: 猪猪的菜牙
Title: 自编码器网络
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622873/
转载文章受原作者版权保护。转载请注明原作者出处!