自动编码器(Auto-Encoder,AE)入门教程
自编码器是一类功能强大的神经网络模型,其核心在于学习如何将输入数据复制到输出端,但这一过程并非简单照搬,而是通过压缩与重构的机制,提取出数据中最具代表性的关键特征。本教程将带领你系统性地理解自动编码器及其重要变体——降噪自动编码器与堆叠降噪自动编码器的工作原理和训练方法。
自动编码器(Auto-Encoder,AE)
自编码器(autoencoder)作为一种特殊类型的神经网络,经过训练后能够尝试将输入复制到输出。自编码器内部设有一个隐藏层 h,可以生成代表输入的编码(code)。该网络可视为由两部分构成:一个由函数 h = f(x) 表示的编码器,以及一个生成重构结果的解码器 r = g(h)。我们不应将自编码器设计成输入到输出完全等同。通常需要向自编码器施加某些约束,使其只能近似地复制,并且仅能复制与训练数据相似的输入。
自动编码器由三层网络组成,其中输入层神经元数量与输出层神经元数量相等,中间层神经元数量少于输入层和输出层。搭建一个自动编码器需要完成以下三项工作:构建编码器、构建解码器、设定一个损失函数,用以衡量因压缩而损失的信息(自编码器本质上是有损的)。编码器和解码器通常都是参数化的方程,并且关于损失函数可导,典型实现方式是使用神经网络。编码器和解码器的参数可通过最小化损失函数来优化。

自动编码器(Auto-encoder)属于自监督学习算法,而非无监督算法,它不需要对训练样本进行人工标注,其标签直接来源于输入数据本身。因此,自编码器能够轻松地为特定类别的输入训练出专用的编码器,无需额外操作。自动编码器具有数据依赖性,只能有效压缩那些与训练数据相似的输入。例如,用人脸图像训练得到的自动编码器,在压缩树木等不同类型图片时效果会明显下降,因为其学到的特征与人脸高度相关。
自动编码器运算过程:原始输入(记为x)经过加权(W、b)和映射(Sigmoid)后得到y,再对y进行反向加权映射得到z。通过反复迭代训练两组参数(W、b),目标是使输出信号与输入信号尽可能接近。训练完成后,自动编码器可分为两部分:
- 输入层和中间层:可利用这一网络对信号进行压缩
- 中间层和输出层:可将压缩后的信号进行还原

