通过算法模型包含两个主要的部分:Encoder(编码器)和Decoder(解码器)。
编码器的作用是把高维输入 X X X 编码成低维的隐变量 h h h 从而强迫神经网络学习最有信息量的特征;解码器的作用是把隐藏层的隐变量 h h h 还原到初始维度,最好的状态就是解码器的输出能够完美地或者近似恢复出原来的输入, 即 X R ≈ X X^R\approx{X} XR≈X .
这个时候就会有人问自编码有什么作用,训练一个神经网络模型,让它输入是 x,然后输出也近似 x,有毛用?
其实自编码可以实现类似于 PCA 等数据降维、数据压缩的特性。从上面自编码的网络结构图,如果输入层神经元的个数 n 大于隐层神经元个数m,那么我们就相当于把数据从 n 维降到了 m 维;然后我们利用这 m 维的特征向量,进行重构原始的数据。这个跟PCA 降维一模一样,只不过 PCA 是通过求解特征向量,进行降维,是一种线性的降维方式,而自编码是一种非线性降维。
深度自编码器被大量应用在图像识别、噪声去除与数据降维领域,并衍生了不同功能的自编码器。它是一种无监督学习算法,模型的期望输入与输出相同
如上图所示,原始数据在瓶颈层的压缩下被提取为紧密的非线性向量,从而达到非线性降维的效果。
此过程在深度学习领域中称为编码阶段。随后的解码阶段将挖掘到的特征输入到解码器以还原数据表示。数据自身的映射过程使深度自编码器可以有效地提取输入数据 X X X 上的复杂分布。
可以利用 DEA 自动学习非线性特征能力取代PCA 的线性降维方法,相对于 PCA, DEA 已经被证明能够得到更好的降维结果。
参考资料
[1] 【深度学习】 自编码器(AutoEncoder)2021.6