使用 PCA 然后使用自动编码器进行预处理有用吗?

机器算法验证 机器学习 深度学习
2022-04-09 12:39:17

我只是在读一篇论文,看到有人在做以下事情:

作为预处理步骤,他们执行了以下操作:

PCA the original data -> Stacked Autoencoder

然后他们将这些预处理数据输入前馈神经网络。但是 - 我有两个问题。

他们为什么要对数据进行 PCA 分析?堆叠的自动编码器不应该能够学习线性表示吗?

其次,我注意到他们使用 SAE 进行预处理。我主要看到 SAE 用于预训练。也就是说,用于初始化前馈神经网络的权重。这些“预处理”和“预训练”步骤会导致不同的结果吗?将 SAE 的“预处理”数据输入到 FF 中,而不是使用 SAE 对 FF 的权重进行“预训练”,这意味着什么?

提前致谢。

1个回答

无论如何,我不是深度学习专家,但我的猜测是 PCA 有两个功能:如果输入维数显着降低,则计算改进,以及优化问题的一种预处理。尽管正常的自动编码器设置当然可以学习线性关系,但如果该步骤有用并使用它进行初始化,它可能会使学习过程更容易。从广义上讲,它应该大约相当于用主成分预训练自动编码器的第一层(如果你在 PCA 中没有下降太多)。

使用自动编码器进行预处理通常用于派生特征以在其他分类器或任何其他分类器中使用。与预训练相比,将预处理器自动编码器特征插入神经网络意味着最终分类器无法针对其特定的学习问题调整学习到的特征。根据您的问题,这可能会在一定程度上损害最终分类器的性能。但这意味着您可以将相同的学习特征重用于多个最终分类/回归/任何任务,这可以节省大量尝试适应特征的训练时间,并且如果您正在运行一个可能会节省大量测试时间一套关于数据的学习方法,因此可以为所有这些方法重用自动编码器的输出。