自编码器是一种人工神经网络,通过训练学会借助中间表征重构输入,这种中间表征通常称为编码或潜在表征。它在机器学习中用于压缩、去噪和表征学习。有用的自编码器并非仅仅复制数据,而是通过约束促使模型捕捉反复出现的结构。其重构任务通常不需要外部提供的标签:输入本身就是目标输出。(deeplearningbook.org)
架构与训练
自编码器采用编码器—解码器架构。编码器将输入 转换为编码 ;解码器生成重构结果 。参数 和 通过联合训练学习。例如,一幅包含数百个像素值的图像可以编码为一个较小的向量,再由该向量重构出来。重构结果是对原始输入的近似,不一定与原始输入完全一致。(deeplearningbook.org)
典型的优化目标为
其中, 是训练数据中的样本, 是重构损失函数, 表示可选的正则化项。均方误差是常用的重构评价准则。训练通常使用反向传播计算梯度,并通过小批量随机梯度下降更新参数。(deeplearningbook.org)
自编码器传统上被归为无监督学习方法,因为它可以从无标签样本中学习。由于目标来自数据本身,其重构目标也可以视为自监督学习。这些分类描述的是监督信号的来源,而不是网络在训练过程中是否具有明确的数值目标。去噪任务同样以受损输入所对应的干净版本作为目标。(deeplearningbook.org)
瓶颈与降维
欠完备自编码器的编码维数少于输入维数。这种瓶颈促使模型保留有助于重构的信息,同时舍弃其他细节,从而实现一种通过学习得到的降维方式。过完备自编码器的编码维数不小于输入维数,因此通常需要额外约束,以避免学到无法提供有用信息的复制操作。如果编码器和解码器网络的容量很大,仅靠低维编码并不能保证学到有用的特征。(deeplearningbook.org)
自编码器与主成分分析(PCA)之间存在严格的联系。对于已中心化的数据,如果欠完备自编码器的编码器和解码器均采用线性变换,并以重构误差的平方为目标达到全局最优,那么它可以恢复主成分子空间。其编码坐标不一定等于常规的 PCA 得分:学习到的基可能与 PCA 的基相差一个可逆变换。非线性激活函数使自编码器能够表示单一线性子空间之外的关系,但非线性模型并不必然优于 PCA。(arxiv.org)
正则化变体
稀疏自编码器对隐藏单元的激活施加惩罚,使每个样本仅有相对较少的单元被强烈激活。稀疏性针对的是激活模式,并不一定要求编码的总维数较少。因此,它无需在架构上设置狭窄的瓶颈,也能约束过完备表征。(deeplearningbook.org)
去噪自编码器接收受损输入 ,但训练目标是重构对应的干净输入 。损坏方式可以是添加噪声,也可以是遮蔽部分数值。这一任务抑制了直接复制输入的行为,并促使模型学习在扰动下仍能保留可预测结构的表征。去噪自编码器还可以堆叠:某一层学习到的表征成为下一层的输入,从而形成层次化的特征。(jmlr.org)
收缩自编码器对编码器面对输入微小变化时的敏感性施加惩罚。具体而言,它惩罚编码器雅可比矩阵的弗罗贝尼乌斯范数的平方。重构项保留还原样本所需的差异,而收缩项则促进局部稳定性。这使其与流形学习产生联系:表征可以对具有实际意义的变化方向保持敏感,同时降低对其他局部方向的敏感性。(icml.cc)
变分自编码器
变分自编码器(VAE)将编码器—解码器结构与概率潜变量模型相结合。其编码器并非只给出一个确定性的编码,而是指定一个近似后验分布 。解码器定义观测分布 ,先验 则指定在观测输入之前潜变量的分布。(arxiv.org)
训练通常以最大化证据下界为目标:
第一项鼓励准确重构;KL散度项则约束近似后验与先验之间的差异。重参数化将潜变量采样表示为适合基于梯度进行优化的形式。从先验分布采样并解码即可生成数据,而仅以重构为目标的普通自编码器本身并未为其编码定义类似的概率模型。(arxiv.org)
应用与局限
自编码器可用于特征提取,并为后续分析或分类提供紧凑表征。去噪模型可以从含噪观测中重构出更干净的图像。过去,堆叠自编码器还曾用于在监督训练之前初始化深度网络,通过重构目标逐层学习中间表征。这些特征是针对训练目标优化得到的,并不保证对应于人类能够理解的类别。(jmlr.org)
在异常检测中,可以使用被视为正常的样本训练自编码器,并将异常偏大的重构误差用作异常分数。阈值决定哪些观测会被标记为异常。然而,模型不熟悉的输入或异常输入有时也能被准确重构,因此低误差并不能证明输入正常。由此可见,重构质量与异常检测质量是不同的属性;模型容量及其在训练分布之外的表现,会影响重构分数能否区分正常样本与异常样本。(tensorflow.org)