自动编码器作为降维工具..?

机器算法验证 机器学习 降维 自动编码器
2022-03-30 05:30:54

我正在尝试对 AutoEncoders 有一个基本的了解。基本上,它们是神经网络,在某个隐藏层中对原始输入的表示非常低,然后是最后一层,其维度与输入完全相同,但从潜在的低维表示“重建”。我不明白的是,除了去噪或压缩之外,我们应该如何处理自动编码器。例如,是否可以将潜在表示用作原始输入的降维版本,然后用它来训练一些机器学习模型?

非常感谢,

詹姆士

3个回答

是的,降维是使用自动编码器的一种方法。考虑一个前馈全连接自动编码器,具有输入层、1 个具有个单元的隐藏层、1 个输出层和所有线性激活函数。这个自动编码器的潜在空间跨越了原始数据的前个主成分。如果您想用更少的特征表示输入,但不必关心 PCA 中的正交性约束,这可能很有用。(更多信息:PCA 和自动编码器有什么区别?kk

但是自动编码器允许在这个基本主题上进行多种变体,与 PCA 相比,为您提供了更多关于如何构建潜在空间的选择。

  • 与 PCA 相比,使用 CNN 层而不是 FFN 显然是一种不同的模型,因此它将在潜在空间中编码不同类型的信息。
  • 使用非线性激活函数也会产生与 PCA 不同的潜在编码(因为 PCA 是线性的)。
  • 同样,稀疏、收缩或变分自动编码器具有与 PCA 不同的目标,并且会给出不同的结果,这取决于您要解决的问题,这可能会有所帮助。

是的,使用某种形式的自动编码器训练/预训练来创建良好的特征在许多领域都是一种成功的方法。例如,对于表格数据,使用去噪自动编码器是最近 Kaggle 比赛的获胜方法TabNet 论文中使用了自动编码器预训练(恢复被掩蔽的特征),并获得了相当多的关注。前两个示例用于表格数据,但类似的事情早已为视觉应用完成(并且仍然很流行),如此处所讨论的但是,您可能会注意到,用于预训练表示的许多最成功的自动编码器版本似乎都是经过训练以将损坏的输入重建为未损坏的输入。

您可以使用自动编码器的其他想法是文件压缩(例如,对于视频通话,什么是最小的信息仍然可以产生对人类来说看起来不错的视频,但不会占用大量带宽来传输?)。

正如您所提到的,自动编码器可用于降维。它们的优点之一是它们是一种无监督的学习方法。如果您有大量未标记数据和少量标记数据,您可以在大型未标记数据集上训练自动编码器以获得数据的稳健表示,然后在嵌入上训练更轻的重量或使用传输学习你的编码器。

不过,自动编码器还有许多其他应用。例如,自动编码器可用于异常检测。由于自动编码器可以通过稳健地表示常见模式而不是异常模式来正确编码更多数据集,因此“正常”数据的重建误差往往低于“异常”数据的重建误差。然后可以使用重构误差来识别异常数据。

他们的另一个应用程序可以是对相似数据进行分组或聚类。具有相似属性的数据往往具有相似的嵌入,因此具有相似嵌入的两个输入可能具有相似的内容。然后,您可以将传统的聚类方法应用于成对嵌入距离,以查找数据集中的结构或识别推荐系统中的相似实例。缺点是输入之间的“相似性”不一定与对用户重要的特征相关(两件衣服的图像可能是相似的,因为它们都是红色的,而不是因为它们都是衣服)。如果相似性的特定方面很重要,则最好使用三元组损失或连体网络。然而,这两种方法都需要一些额外的标签信息,同样,

我确信还有很多其他应用程序,这些只是我使用它们的应用程序。这是无监督方法的有趣之处之一。您可以利用它们发挥创意,而不会陷入等待注释或清理不良标签的困境。