标准自编码器学习重构其输入。如果隐藏层(瓶颈层)小于输入层,它们会进行降维。然而,如果瓶颈层没有受到充分约束,或者自编码器能力过强(例如,一个隐藏层大于输入的过完备自编码器),它可能只会学习一个微不足道的恒等函数。在这种情况下,提取的特征对于后续任务而言并非特别有用。去噪自编码器(DAE)提供了一种巧妙的改进,以促进学习更有效、更有用的特征,不再局限于简单的重构。
去噪自编码器的核心思路直接而有效:我们训练自编码器从输入的损坏版本中重构原始的、干净的输入,而不是让它从自身重构原始输入。通过强制模型对输入进行“去噪”,它必须学习数据中内在的结构和依赖关系,而不是仅仅记忆训练样本或学习一个简单的直通映射。这通常会生成更有弹性的特征,并捕获数据的更基本方面。
“去噪”过程:如何引入损坏
训练DAE的第一步是故意在干净的输入数据中引入噪声或损坏。这种损坏通常是一个随机过程,即我们对原始数据点 x 应用随机变换以获得其损坏版本 x~。有几种常见的方法来损坏输入,选择哪种方法通常取决于数据类型:
- 添加高斯噪声:对于连续输入数据(如传感器读数或特定类型的表格数据),我们可以将从高斯分布中采样得到的噪声(通常均值为0,并选择一个标准差)添加到每个输入特征中。这会轻微扰动输入值,从而创建一个原始数据的“模糊”版本。
- 掩蔽噪声(或零值噪声):对于每个训练样本,随机选择一部分输入特征,将其值设为零(或有时设为另一个固定的“掩蔽”值)。这类似于随机“丢弃”部分输入,强制模型从剩余特征中推断缺失的信息。这种方法对多种数据类型通常都很有效。
- 椒盐噪声:主要用于图像数据,此方法涉及随机地将一小部分像素设置为其可能最小的值(例如黑色,表示“椒”)并将另一小部分设置为其可能最大的值(例如白色,表示“盐”)。
具体的损坏过程及其强度(例如,高斯噪声的标准差,或要掩蔽的输入比例)是重要的超参数 (parameter) (hyperparameter)。目标是充分损坏数据,以避免自编码器学习一个微不足道的恒等映射,但又不能损坏过多导致原始信号无法挽回地丢失。
去噪为何有效:学习表示
为什么训练自编码器来逆转这种损坏会产生更好的特征?当自编码器被要求从损坏的 x~ 中重构干净的 x 时,它不能简单地学习复制其输入,因为输入 x~ 和目标输出 x 现在是不同的。
为了成功地从 x~ 中重构 x,DAE必须:
- 识别并滤除噪声:它需要学习区分底层信号和人为引入的损坏。
- 捕获输入特征之间的依赖关系:如果某些特征被损坏或缺失(例如,由于掩蔽噪声),模型必须学习从未损坏的特征中推断其可能的值。这会迫使它学习数据内部的统计规律和关系。
- 学习数据流形:通过反复观察相似数据点的各种损坏版本,并被训练将其全部映射回其干净的原始版本,DAE隐式地学习了干净、未损坏数据在高维输入空间中自然存在的形状或流形。
这个过程鼓励自编码器学习更高层次的抽象和特征表示。学到的特征对输入中微小、不相关的变异或噪声变得不那么敏感,因为模型已经明确训练为对此类扰动具有抵抗力。
架构与训练
去噪自编码器的基本架构,由编码器和解码器组成,通常与标准自编码器相同。编码器将输入映射到较低维的潜在表示(瓶颈层),解码器试图从这种潜在表示中重构数据。
主要区别在于训练目标。
设 x 为原始的干净输入样本。
设 x~ 为 x 的随机损坏版本。
编码器函数为 f,生成潜在表示 z=f(x~)。
解码器函数为 g,生成重构输出 x^=g(z)=g(f(x~))。
DAE 通过最小化损失函数 (loss function) L(x,x^) 进行训练,该函数衡量原始干净输入 x 与其重构 x^(由损坏的输入 x~ 生成)之间的差异。
常见的损失函数包括:
- 实数值输入的均方误差(MSE):
L(x,x^)=N1∑i=1N(xi−x^i)2
其中 N 是 x 中的特征数量。
- 二值输入或归一化 (normalization)到 [0,1] 范围的输入(例如图像中的像素值)的二元交叉熵:
L(x,x^)=−N1∑i=1N[xilog(x^i)+(1−xi)log(1−x^i)]
DAE 的训练流程为每个数据批次包含以下步骤:
- 取一个批次的干净输入样本 x。
- 使用所选的噪声处理过程生成其损坏版本 x~。
- 将 x~ 输入到自编码器(先编码器,后解码器)以得到重构结果 x^。
- 计算重构结果 x^ 与原始干净输入 x 之间的损失。
- 使用反向传播 (backpropagation)更新自编码器的权重 (weight)以最小化此损失。
以下图表说明了此训练流程:
去噪自编码器的训练过程。原始数据 x 被随机损坏为 x~。然后,这个带噪声的版本 x~ 被输入到编码器。解码器试图从潜在表示 z 中重构原始的干净数据 x,生成 x^。损失通过比较重构结果 x^ 与原始、未损坏的数据 x 来计算。
特征提取的优势
一旦去噪自编码器训练完成,其编码器部分可以被分离并用于特征提取,这与标准自编码器非常相似。您将数据(可以是干净的或潜在含有噪声的新数据)输入到训练好的编码器中,瓶颈层的激活值 z=f(xinput) 即作为提取的特征。
DAE 提取的特征往往更强健,并提供更好的泛化能力,与基本自编码器提取的特征相比,主要原因在于:
- 对噪声的抵抗力:DAE 已经学会忽略噪声并专注于底层信号。这使得提取的特征对输入数据中存在的微小变异或噪声不那么敏感。
- 泛化能力增强:通过学习从部分或损坏的信息中重构数据,DAE 通常能捕获数据分布中更基本和稳定的方面。这使得特征对可能与训练集略有不同的未见数据具有更好的泛化能力。
- 隐式正则化 (regularization):去噪任务本身就是一种正则化形式。它限制了自编码器的学习内容,阻止其简单地学习恒等映射,这对于能力强的自编码器和有限的数据而言可能存在风险。
这些改进的特征随后可以作为后续机器学习 (machine learning)任务(如分类、回归或聚类)的输入,从而带来更好的表现。例如,如果您正在构建一个图像分类器,并且您的部署图像可能受到不同程度的传感器噪声或轻微遮挡的影响,那么来自DAE(预先在人为添加噪声的类似图像上训练过)的特征可能会比标准自编码器的特征提供明显优势。
这种学习“清理”或“修复”数据的方法,迫使自编码器更透彻地理解数据的内在结构。这使得去噪自编码器成为我们特征提取工具包中一个有价值的补充,特别是在处理不完善、有噪声的数据集,或者当强健性是学习表示的主要考量时。在本章后面的实践环节中,您将可以实际操作一个去噪自编码器,并看到这些原理的实际运用。