自编码器

自编码器（）也称自动编码器，是一种人工神经网络，用于学习无标签数据的有效编码；属一种无监督学习。

自编码（autoencoding）的目的是：学习对高维度数据做低维度“表示”（“表征”或“编码”）；因此，
通常用于降维。最近，自编码的概念广泛地用于数据的生成模型。Auto-Encoding Variational Bayes, Kingma, D.P. and Welling, M., ArXiv e-prints, 2013 Generating Faces with Torch, Boesen A., Larsen L. and Sonderby S.K., 2015  自2010年以来，一些先进的人工智能在深度学习网络中采用了采用堆叠式稀疏自编码。

 基本结构 
自编码器有两个主要部分组成：编码器用于将输入编码，而解码器使用编码重构输入。

实现这个功能最简单的方式就是重复原始信号。然而，自编码器通常被迫近似地重构输入信号，重构结果仅仅包括原信号中最相关的部分。

自编码器的思想已经流行了几十年，其首次应用可以追溯到20世纪80年代。Hinton, G. E., & Zemel, R. S. (1994). Autoencoders, minimum description length and Helmholtz free energy. In Advances in neural information processing systems 6 (pp. 3-10).自编码器最传统的应用是降维或特征学习，现在这个概念已经推广到用于学习数据的生成模型。21世纪10年代的一些最强大的人工智能在深度神经网络中采用了自编码器。

最简单的自编码器形式是一个前馈的、非循环的神经网络，类似于多层感知器（MLP）中的单层感知器，用一层或多层隐藏层链接输入和输出。输出层具有与输入层相同数量的节点（神经元）。输出层节点数和输入层一致。其目的是重构输入（最小化输入和输出之间的差异），而不是在给定输入的情况下预测目标值， 所以自编码器属于无监督学习。

自编码器由编码器和解码器组成，二者可以被分别定义为变换  和 ，使得：

在最简单的情况下，给定一个隐藏层，自编码器的编码阶段接受输入并将其映射到：

像通常表示编码、潜变量或潜在表示。是一个逐元素的激活函数（例如sigmoid函数或线性整流函数）。是权重矩阵，是偏置向量。权重和偏置通常随机初始化，并在训练期间通过反向传播迭代更新。自编码器的解码阶段映射到重构（与形状一致）：

其中解码器部分的 可能与编码器部分的无关。

自编码器被训练来最小化重建误差（如平方误差），通常被称为 "损失"：

其中通常在训练集上平均。

如前所述，和其它前馈神经网络一样，自编码器的训练是通过误差的反向传播进行的。

当特征空间的维度比输入空间低时，特征向量可以看作时输入的压缩表示，这就是不完备自动编码（undercomplete autoencoders）的情况。如果隐藏层大于（过完备）或等于输入层的数量，或者隐藏单元的容量足够大，自编码器就可能学会恒等函数而变得无用。然而，实验结果表明过完备自编码器（overcomplete autoencoders）仍然可能学习到有用的特征。在理想情况下，编码的维度和模型容量可以根据待建模数据分布的复杂性来设定，采用这种方式的一种途径是正则化自编码器。

 另見 
 表征学习

 參考 

Category:神經網路架構
Category:降维