自编码器(auto-encoder)是一类执行无监督学习任务的神经网络结构,它的目的是学习一组数据的重新表达,也就是编码。
在结构上,自编码器是包含若干隐藏层的深度前馈神经网络,其独特之处是输入层和输出层的单元数目相等;在功能上,自编码器的目的不是根据输入来预测输出,而是重建网络的输入,正是这样的功能将自编码器和其他神经网络区分开来。由于自编码器的图形表示像极了杂技中使用的道具空竹,因而也得了个“空竹网络”的雅号。
自编码器结构由编码映射和解码映射两部分组成。如果将编码映射记作 ϕ,解码映射记作 ψ,自编码器的作用就是将输入 X 改写为 (ψ∘ϕ)(X),这相当于将输入从一个表象下转换到另一个表象下来表示,就像量子力学中粒子不同表象之间的变化一样。如果以均方误差作为网络训练中的损失函数,自编码器的目的就是找到使均方误差最小的编解码映射的组合,即
ϕ,ψ=argϕ,ψmin∣∣X−(ϕ∘ψ)(X)∣∣2
在最简单的情形,也就是只有一个隐藏层的情形下,自编码器隐藏层的输出就是编码映射。当隐藏层的维度小于输入数据的维度时,这就是个欠完备(undercomplete)的自编码器。欠完备自编码器的作用相当于对输入信号做了主成分分析,隐藏层的 k 个线性神经元在均方误差准则下保留贡献最大的 k 个主成分,原始信号就被投影到由这 k 个主成分所展成的新空间上。在自编码器的另一端,输出层将隐藏层的输出转换为自编码器的整体输出,从而实现了解码映射的功能。
如果隐藏神经元的传递函数是非线性的,编码映射就能够捕捉到输入分布中更加复杂的特征,均方误差准则也可以写成对数似然函数 −logp(X∣ϕ(X)) 的形式。当误差 p(X∣ϕ(X)) 满足高斯分布时,均方误差和最大似然是等价的。
从信息论的角度看,编码映射可以看成是对输入信源 X 的有损压缩。有损压缩的特点决定了它不可能对所有输入都具有较小的信息量损失,因而学习的作用就是习得在训练数据集上更加精确的映射,并希望这样的映射在测试数据上同样表现良好,也就是使自编码器具有较好的泛化性能。
当自编码器的隐藏单元数目大于输入信号的维度,也就是编码映射的分量数目大于输入信号的分量数目时,这就是个过度完备(overcomplete)的自编码器。过度完备的自编码器面临的一个严重问题是如果没有额外约束的话,那么它可能只能够习得识别功能,得到的编码映射和解码映射都是恒等映射,这显然是白费功夫。