深度神经网络已成为现代人工智能的基石,在图像识别、自然语言处理等领域取得了卓越的成就。但在它们占据主导地位之前,曾有一个巨大的障碍: 训练它们极其困难。网络越深,就越难让它学到任何有用的东西。2000 年代中期,一个关键的突破随之而来,那就是无监督预训练思想的提出,这是一种在对特定任务进行微调之前,逐层初始化深度网络的方法。

这项技术引出了一个根本性的问题: 在无监督阶段,网络学习到的“好”表示应具备什么特征? 正如 Pascal Vincent、Hugo Larochelle、Yoshua Bengio 和 Pierre-Antoine Manzagol 在 2008 年一篇开创性论文中所提出的,答案出人意料地简单而优雅。他们假设,一个好的表示应该具备鲁棒性——即使输入数据部分损坏或缺失,也能够捕捉其本质。

为此,他们在一种经典的神经网络模型上加入了新思路,创造了去噪自编码器。本文将深入探讨他们的工作,揭示添加噪声的这个简单想法如何引出强大的特征学习、更佳的模型性能,以及对机器“学习”含义的更深刻理解。


背景: 标准自编码器

在理解“去噪”部分之前,需要先了解基本的自编码器。自编码器是一种神经网络,它被训练来执行一个看似平淡无奇的任务: 重构其输入本身。这听起来似乎无关紧要,但关键在于中间环节的表示学习。

一个自编码器由两部分组成:

  1. 编码器 (Encoder) : 接收一个输入向量 \(\mathbf{x}\),并将其映射到一个压缩的隐藏表示 \(\mathbf{y}\),通常使用如下映射:

    \[ \mathbf{y} = f_{\theta}(\mathbf{x}) = s(\mathbf{W}\mathbf{x} + \mathbf{b}) \]

    其中 \(s\) 是一个激活函数,例如 sigmoid 函数。

  2. 解码器 (Decoder) : 接收隐藏表示 \(\mathbf{y}\),并将其映射回原始输入空间,得到重构向量 \(\mathbf{z}\)。

目标是让 \(\mathbf{z}\) 尽可能接近 \(\mathbf{x}\)。网络通过最小化一个重构损失来进行训练,该损失衡量输入 \(\mathbf{x}\) 与输出 \(\mathbf{z}\) 之间的差异:

一个基本自编码器的目标函数,旨在最小化原始输入 \\(x\\) 和重构输出 \\(z\\) 之间的重构损失 \\(L\\)。

图: 基本自编码器的重构损失目标。

对于取值在 0 到 1 之间的二进制或实值输入,常用的选择是重构交叉熵:

重构交叉熵损失函数,常用于输入范围在 [0, 1] 的自编码器。

图: 自编码器的重构交叉熵损失。

在经验训练分布上最小化期望重构误差,可以得到:

表示为在经验数据分布上最小化期望交叉熵损失的自编码器训练目标。

图: 在训练集上的自编码器训练目标。

通过迫使数据通过一个压缩的隐藏层 (通常称为瓶颈层) ,编码器学会捕捉数据中最重要和最显著的特征。然而,如果隐藏层不比输入层小,标准自编码器可能会简单地学到恒等映射——精确地复现输入,而没有提取出有意义的特征。


核心方法: 学习去噪

研究人员对自编码器的训练方式提出了一个根本性的改动。他们不再让模型从输入本身重构输入,而是训练它从被破坏的版本中重构出干净、原始的输入

这就是去噪自编码器 (Denoising Autoencoder, DAE) 。其训练过程如下:

  1. 从一个干净的输入 \(\mathbf{x}\) 开始。
  2. 随机破坏输入: 随机破坏一部分输入特征 (在他们的实验中,通过将一部分比例 \(\nu\) 的像素置为零) ,生成 \(\tilde{\mathbf{x}}\)。
  3. 将破坏后的输入 \(\tilde{\mathbf{x}}\) 输入编码器: \[ \mathbf{y} = f_{\theta}(\tilde{\mathbf{x}}) \]
  4. 将 \(\mathbf{y}\) 解码为重构输出 \(\mathbf{z} = g_{\theta'}(\mathbf{y})\)。
  5. 计算 \(\mathbf{z}\) 与干净输入 \(\mathbf{x}\) 之间的损失

图1: 去噪自编码器过程示意图。原始输入 \\(x\\) 被破坏成 \\(\\tilde{x}\\)。自编码器将 \\(\\tilde{x}\\) 映射到隐藏表示 \\(y\\),并重构出原始的 \\(x\\)。

图1: DAE 从破坏版本中重构干净输入。

由于输入和输出不同,网络无法学习一个平凡的恒等函数。为了完成任务,它必须学习数据中潜在的统计依赖和结构——一种类似生成模型的理解,使其能够填补缺失部分。

DAE 的目标函数变为:

去噪自编码器的目标函数。它最小化干净输入 \\(X\\) 与重构结果之间的期望损失,其中重构基于被破坏的输入 \\(\\tilde{X}\\) 进行。

图: 编码器使用破坏输入的 DAE 目标函数。

通过堆叠 DAE——每一层在前一层的干净输出上进行训练,并且仅在训练过程中进行破坏——我们可以用鲁棒的分层特征来预训练深度网络


为什么它有效?三种更深层次的视角

虽然“填补空白”是个直观的解释,但该论文从多个理论视角对 DAE 进行了论证。

1. 流形学习视角

高维数据 (如手写数字图像) 通常位于输入空间的一个低维流形附近。破坏过程会将数据点从这个流形上“击落”。DAE 学习一个投影映射 \(\tilde{X} \mapsto X\),将破坏后的点投回流形。

图2: 流形学习视角。干净的数据点 (\\(\\times\\)) 位于一个流形上。破坏过程产生偏离流形的噪声点 (•)。DAE 学会将它们映射回去,从而建模流形的结构。

图2: 通过去噪实现流形学习。

在这里,隐藏表示 \(\mathbf{y}\) 充当了流形上点的坐标——刻画了数据的主要变化。


2. 生成模型视角

DAE 可以被解释为一种潜变量生成模型:

  1. 从一个简单的先验分布中采样隐藏编码 \(Y\)。
  2. 从 \(Y\) 生成一个干净的 \(X\) (解码) 。
  3. 将 \(X\) 破坏成 \(\tilde{X}\)。

训练过程通过变分下界来最大化观察到破坏样本的似然。DAE 的重构损失在数学上等价于为特定生成模型最大化这一界,从而赋予它坚实的概率基础。


3. 信息论视角

从信息论角度来看,当隐藏编码 \(Y\) 是从一个破坏的 \(\tilde{X}\) 计算得出时,DAE 的训练最大化了干净输入 \(X\) 与其隐藏编码 \(Y\) 之间互信息 \(I(X;Y)\) 的下界。这迫使 \(Y\) 即使在特征缺失情况下,也尽可能保留关于 \(X\) 的信息。


付诸实践: 实验与结果

作者在 MNIST 数据集以及更具挑战性的变体 (包括旋转数字、随机像素背景、图像背景,以及这些失真形式的组合) 上评估了堆叠去噪自编码器 (SdA) 。他们将其与支持向量机 (SVM) 、深度信念网络 (DBN) 以及标准堆叠自编码器 (SAA) 进行了比较。

表1: SdA-3 与其他模型在各种任务上的分类错误率比较。粗体表示最佳或统计上持平的性能。

表1: SdA-3 在大多数任务上取得了最佳或有竞争力的性能。与 SAA-3 (0% 噪声) 相比,引入噪声显著改善了结果。

结果表明,SdA-3 在几乎所有任务上均优于或至少持平于最好的竞争模型,并且常常能明显胜过 SAA-3。


深入观察: 可视化学习到的特征

网络第一层的滤波器揭示了每个神经元的响应模式。将学习到的权重可视化为图像块,直观展现了去噪训练的影响。

图3 (a–c): 随着输入破坏程度增加而学习到的滤波器: (a) 0% 噪声,(b) 25% 噪声,(c) 50% 噪声。

图3a–c: 无噪声时,许多滤波器呈现噪声状,无太大信息量。较高的噪声水平则产生了用于检测边缘、笔画和形状的结构化检测器。

他们还追踪了单个神经元的滤波器在不同破坏水平下的变化:

图3 (d): 神经元 A 的滤波器在 0%、10%、20% 和 50% 破坏率下的演变。

图3d: 神经元 A 从一个均匀的图像块发展成一个独特的细长特征检测器。

图3 (e): 神经元 B 的滤波器在 0%、10%、20% 和 50% 破坏率下的演变。

图3e: 神经元 B 从模糊斑点演变成一个清晰的对角线笔画检测器。

更高的噪声水平鼓励神经元去捕捉更大、更全局的结构,从而形成更鲁棒、更有意义的特征。


结论与启示

去噪自编码器为无监督特征学习提出了一个简单却深刻的原则: 好的表示应当对输入的破坏具备鲁棒性。训练网络去修复受损数据,迫使它去学习深层的统计规律。

本研究的关键启示:

  • 更优的预训练: 相比标准自编码器,DAE 能在下游分类任务中取得更出色的性能。
  • 避免平凡解: 引入破坏过程消除了恒等映射陷阱,使过完备的隐藏层也能学到丰富的表示。
  • 高质量特征: 学到的滤波器富有意义,能够检测边缘、笔画及高层模式。

这项工作改变了我们对无监督学习目标的理解,突出了鲁棒性这一核心标准。它展示了刻意注入噪声可以引导模型学习具备良好泛化能力的特征——这一洞见至今仍在影响着表示学习、生成模型与鲁棒人工智能系统的研究。