自动编码器的目的是什么?

人工智能 机器学习 自动编码器 降维 维数诅咒
2021-11-01 22:02:20

自编码器是神经网络,它学习输入的压缩表示,以便以后重建它,因此它们可以用于降维。它们由编码器和解码器(可以是单独的神经网络)组成。降维可用于处理或减轻与维数灾难相关的问题,其中数据变得稀疏并且更难以获得“统计显着性”。因此,自动编码器(以及诸如 PCA 之类的算法)可用于处理维度灾难。

为什么我们特别关心使用自动编码器的降维?如果目的是降维,为什么我们不能简单地使用 PCA?

如果我们只想执行降维,为什么我们需要解压缩输入的潜在表示,或者为什么我们需要自动编码器中的解码器部分?有哪些用例?一般来说,为什么我们需要压缩输入以便稍后解压呢?只使用原始输入(开始)不是更好吗?

4个回答

重要的是要考虑数据中代表的是哪种模式。

假设您有一个灰度图像数据集,这样每个图像的强度都是均匀的。作为一个人脑,你会意识到这个数据集中的每个元素都可以用一个数字参数来描述,这就是强度值。这是 PCA 可以很好解决的问题,因为每个维度(我们可以将每个像素视为不同的维度)都是完全线性相关的。

相反,假设您有一个包含中心圆的黑白 128x128px 位图图像的数据集。作为一个人脑,你很快就会意识到这个数据集中的每个元素都可以用一个数字参数来完全描述,这个参数就是圆的半径。这是从 16384 个二进制维度减少的一个非常令人印象深刻的水平,也许更重要的是,它是数据的语义上有意义的属性。但是,PCA 可能无法找到该模式。

您的问题是“如果目的是降维,为什么我们不能简单地使用 PCA?” 简单的答案是 PCA 是最简单的降维工具,但它可能会遗漏很多更强大的技术(如自动编码器)可能发现的关系。

自编码器(特别是自编码器的解码器或生成模型)的一个用例是对输入进行去噪。这种类型的自动编码器,称为去噪自动编码器,采用部分损坏的输入,并尝试重建相应的未损坏输入。该模型有多种应用。例如,如果您有一张损坏的图像,您可以使用去噪自动编码器恢复未损坏的图像。

自动编码器和 PCA 相关:

具有单个全连接隐藏层、线性激活函数和平方误差成本函数的自动编码器训练的权重跨越与主成分加载向量所跨越的子空间相同的子空间,但它们与加载向量不同。

有关更多信息,请查看 Elad Plaut 的论文From Principal Subspaces to Principal Components with Linear Autoencoders (2018)。另见这个答案,它也解释了 PCA 和自动编码器之间的关系。

PCA 是一种线性方法,可创建能够更改矢量投影(更改轴)的变换

由于 PCA 寻找最大方差的方向,它通常具有很高的辨别力,它不能保证最大方差的方向就是最具辨别力的方向。

LDA 是一种线性方法,它创建一个变换,该变换能够找到与决定向量属于 A 类还是 B 类最相关的方向。

PCA 和 LDA 具有非线性内核版本,可以克服它们的线性限制。

自编码器可以使用其他类型的损失函数执行降维,可以是非线性的,并且在很多情况下可能比 PCA 和 LDA 表现更好。

可能没有最好的机器学习算法来做任何事情,有时深度学习和神经网络对于简单的问题来说太过分了,而 PCA 和 LDA 可能会在其他更复杂的降维之前尝试。

  1. 为了计算训练网络的损失函数,解码器的一半是必要的。类似于在 GAN 中仍然需要“对手”,即使您只对生成组件感兴趣。
  2. 自动编码器可以学习数据的非线性嵌入,因此比普通 PCA 更强大。
  3. 自动编码器具有降维之外 的应用:
    • 生成新数据点,或执行插值(参见 VAE)
    • 创建去噪滤波器(例如在图像处理中)
    • 压缩/解压数据
    • 链接预测(例如在药物发现中)