互联网资讯 / 人工智能 · 2023年11月30日 0

自编码器对比:堆叠自编码器在无监督训练中是否过时?

自编码器对比:堆叠自编码器在无监督训练中是否过时?

柏林工业大学深度学习方向的博士生 TilMan KRokotsch 在多项任务中评估了八种自编码器的性能。

尽管许多研究者仍在使用堆叠自编码器进行无监督预训练,KRokotsch 对此表示疑惑:难道堆叠自编码器不是为了解决算力不足时代的深度模型训练问题吗?如今算力已经相对充足,为什么仍然使用这种方法?

因此,他决定在多个不同任务中对比原版深度自编码器(AE)和堆叠自编码器的效果。

KRokotsch 比较了原版深度自编码器的各种变体,这些变体改变了潜在空间的行为或可能改善下游任务的性能,排除了特定应用的损失(如图像领域的 VGG19 损失)和编码器与解码器的类型(如 LSTM 对比 CNN)。最终,他选定了以下八种自编码器进行比较:

  • 浅层自编码器
  • 深度自编码器(原版 AE)
  • 堆叠自编码器
  • 稀疏自编码器
  • 去噪自编码器
  • 变分自编码器(VAE)
  • Beta 变分自编码器(beta-VAE)
  • 向量量化变分自编码器(vq-VAE)

KRokotsch 不仅阐述了这些自编码器的特点,还从以下几个方面进行了比较:

  • 重建质量
  • 从潜在空间样本的解码质量
  • 潜在空间插值质量
  • 利用 UMAP 可视化得到的潜在空间结构
  • 利用重建误差进行异常检测
  • ROC 曲线
  • 拟合自编码器特征的线性层的分类准确率

所有自编码器均采用相同的简单架构,包括全连接编解码器、批归一化和 ReLU 激活函数,输出层使用 sigmoid 激活函数。除了浅层自编码器外,其余自编码器均设有三个编码器和解码器层。

潜在空间的维度和网络参数量基本保持一致。这意味着变分自编码器相较于原版自编码器拥有更多参数,因为它的编码器为维度为 n 的潜在空间生成 2n 个输出。在测试中,每个自编码器进行两次训练:第一次潜在空间维度为 20,第二次为 2。第二次训练的模型用于异常检测,而第一次的模型则用于其他任务。

对比测试所用的数据集为 MNIST。KRokotsch 从训练数据集中随机采样 5000 个样本作为验证集,并将默认的训练/测试分割进一步细分为训练/验证/测试分割。

接下来,我们将逐一探讨这些自编码器变体及其比较结果。

「参赛选手」:8 个自编码器

KRokotsch 详细介绍了这些自编码器的工作原理及其独特性,并尝试为它们的性能做出一些假设。

浅层自编码器

浅层自编码器并不能算作真正的竞争者,因为其能力远低于其他变体。在此,它仅作为基线存在。

深度自编码器

深度自编码器是浅层自编码器的扩展版,二者基本相同,唯独深度自编码器拥有更多层。它们的重建公式也是一致的。

堆叠自编码器

堆叠自编码器是通过逐层贪婪训练浅层自编码器来构建深度自编码器。训练开始时,首先使用第一个编码器和最后一个解码器形成一个浅层自编码器;训练完后,使用编码层编码整个数据集。接下来,基于第二个编码器和倒数第二个解码器层形成另一个浅层自编码器,利用编码得到的数据集进行训练;这一过程反复进行,直到到达最内层,最终构建出由多个浅层自编码器堆叠而成的深度自编码器。

稀疏自编码器

稀疏自编码器在潜码方面施加了稀疏约束,潜码中每个元素的活跃概率为 p。为此,在训练过程中需要添加辅助损失。

去噪自编码器

去噪自编码器的潜在空间没有约束,其目标是通过对输入数据引入噪声来学习更高效的编码。去噪自编码器并不直接馈入输入数据,而是添加了高斯噪声。

变分自编码器

理论上,变分自编码器 (VAE) 与原版 AE 关联不大,但在实践中,其实现和训练方式非常相似。VAE 将重建视为一个随机过程,使其具备不确定性。编码器输出的不是潜码,而是潜码概率分布的参数;解码器则从这一分布中接收样本。默认的分布族选择为高斯 N(Μ;diag⁡(&SigMa;))。

Beta 变分自编码器

beta-VAE 是对 VAE 的一种泛化,主要改变了重建损失与散度损失之间的比率。散度损失的影响因子通过标量 β 表示,因此其损失函数如下:

向量量化变分自编码器

vq-VAE 利用均匀的类别分布生成潜码。编码器输出中的每个元素都被该分布中的类别值取代,后者是其最近邻。这种量化方式意味着潜在空间不再是连续的,而是离散的。

自编码器「大乱斗」

重建质量

首先,我们来看看每种自编码器对输入的重建质量。以下是不同自编码器在 MNIST 测试集中 16 张图像的结果:

浅层自编码器无法准确重建部分测试样本。虽然4和9勉强可辨认,但其他数字则完全不清晰。其他自编码器的表现稍好,但也有不足:去噪自编码器会使一些细线消失;稀疏和堆叠自编码器在重建笔画异常的数字(如5和第一个9)时存在困难。整体的重建结果略显模糊,这对于自编码器来说是正常现象。vq-VAE 的重建结果相对清晰,其作者认为这与离散潜在空间有关。

不同自编码器的重建质量差异不大。下表列出了基于样本集合的二值交叉熵平均值:

不出所料,表现最差的是浅层自编码器,因其无法捕捉 MNIST 的结构。原版自编码器表现良好,与稀疏自编码器和 vq-VAE 并列前茅。然而,稀疏自编码器和 vq-VAE 似乎并未经历潜在空间的约束,而 VAE 和 beta-VAE 则因潜在空间的限制而获得更高的误差。此外,VAE 中的采样过程引入了噪声,进一步损害了重建质量。

采样

该实验仅包括四个可实施无条件采样的自编码器:VAE、宽松和严格版本的 beta-VAE、以及 vq-VAE。对每个自编码器,采样 16 个潜码并进行解码。对于 VAE 和 beta-VAE,样本来自标准高斯分布,而 vq-VAE 的潜码则从其学习到的类别中均匀采样。

上图中最值得注意的生成样本来自严格版 beta-VAE。这是因为其训练重点放在了高斯先验上,编码器输出的结果最接近于标准高斯的样本,成功地使解码器能够解码来自真正标准高斯的潜码。同时,其生成图像的变化较小,例如右侧的数字既可能是5也可能是6。

宽松版 beta-VAE 生成的图像则更具多样性,尽管可识别的图像较少。标准 VAE 的表现介于两者之间。令人略感失望的是 vq-VAE,其采样的图像完全不像 MNIST 数字。

插值

插值任务展示了潜在空间区域的密集程度。KRokotsch 从测试集中编码了两个图像:2 和 7,并进行了线性插值。接着将插值解码,以生成新图像。如果插值潜码生成的图像能够显示有意义的数字,说明自编码器能够有效利用类别区域之间的潜码。

对于所有 VAE 类型,KRokotsch 在瓶颈操作之前进行了插值。这意味着对于 VAE 和 beta-VAE,先插值高斯参数,再进行采样;对于 vq-VAE,则先插值后进行量化。

从上图可以看出,VAE 和 beta-VAE 能够生成相对有意义的插值,而其他自编码器则完全无法做到。

潜在空间结构

KRokotsch 利用 UMAP 算法可视化潜在空间结构,该算法将潜在空间缩减至二维,并保留潜码的近邻关系。下图展示了每个自编码器潜在空间的散点图,每个点代表测试集中一个图像的潜码,颜色则表示图像中的数字。

这些图之间存在明显的相似性。首先,原版、堆叠、稀疏、去噪自编码器和 vq-VAE 的表现相似。数字0(蓝色)、1(橙色)、2(绿色)和6(粉色)的簇被很好地分割,彼此之间区别明显。数字4、7、9和3、5、8的簇也显示出它们之间的联系,比如在3上添加两条直线可以形成8。这些自编码器能够编码数字之间的结构相似性。

然而,浅层自编码器在将数字分类为簇方面表现不佳。VAE 和 beta-VAE 的表现则与其他有所不同,散度损失的影响在其中可见一斑。

分类

潜在空间的可视化表明,许多自编码器在将 MNIST 数字进行分簇方面表现良好,尽管它们并未接收到任何标签。那么,如何利用这一点进行 MNIST 数字分类呢?

KRokotsch 使用 20 维潜码拟合稠密分类层,该层仅在来自训练集的 550 个标注样本上进行训练。这意味着利用这些自编码器进行半监督学习。通过从头训练原版编码器和分类层,获得的准确率为 0.4364。下表展示了这些自编码器的改进效果:

几乎所有自编码器在基线的基础上都有所改善,唯独稀疏自编码器的表现不佳。去噪自编码器获得了最佳结果,其次是原版自编码器和 vq-VAE。去噪自编码器所添加的输入噪声似乎为分类任务生成了最合适的特征。

最有意思的是,即使是浅层自编码器也能略微提升准确率,尽管其参数更少。这再次表明,合理的数据使用往往胜过大规模模型。

VAE 和 beta-VAE 再次证明了散度损失对潜在空间的约束。稀疏自编码器的结果甚至低于基线,似乎是因为其稀疏特征不适合用于 MNIST 数字分类。对于其效果,仍需在其他数据集上进行进一步验证。

异常检测

使用自编码器进行异常检测任务相对简单。通过训练好的模型计算测试样本的重建损失,获得异常分数。如果样本的重建结果良好,则说明其与训练数据相似;反之,如果重建效果不佳,则该样本被视为异常值。自编码器能够利用训练数据之间的关联学习有效的低维表示,只要这些关联存在,测试样本就能得到良好的重建;反之,则自编码器无法有效重建。

这一任务的主要挑战在于确定异常分数的最佳阈值。下图展示了 ROC 曲线及曲线下面积:

浅层自编码器以 0.91 的 AUC 领先于其他自编码器,紧随其后的是堆叠自编码器。此外,对于不同数字和潜在空间维度,各自编码器的排序保持不变。

为何这两种在其他任务中表现不佳的自编码器在异常检测中表现如此优异呢?原因似乎在于其他任务更依赖于潜在空间的泛化能力,而异常检测则对泛化要求较低,甚至不需要良好的泛化能力。

结论

经过对比实验,KRokotsch 并未找到绝对优秀的自编码器。他认为,选择何种自编码器应依据具体任务的需求。如果需要基于噪声生成面孔,使用变分自编码器;若图像模糊,试试 vq-VAE;进行分类任务时,推荐使用去噪自编码器;而对于异常检测任务,或许可以考虑浅层自编码器。

[[[IMG_1]]]

[[[IMG_2]]]

[[[IMG_3]]]

[[[IMG_4]]]

[[[IMG_5]]]