Stacked AutoEncoder 如何提高卷积神经网络在图像分类任务中的性能

机器算法验证 神经网络 深度学习 计算机视觉 自动编码器 卷积神经网络
2022-03-25 09:55:18

Stacked Auto-Endocer 提供了一个原始数据版本,其中包含更有希望的特征信息,可用于训练具有特定上下文的分类器,并找到比使用原始数据训练更好的准确性。对于图像分类任务,堆叠式自动编码器如何帮助传统的卷积神经网络?我最近阅读了论文 http://people.idsia.ch/~ciresan/data/icann2011.pdf但不能清楚地理解。

我对 CNN 有一点疑问,第一次卷积操作之前的任何预训练步骤(如降维或 AutoEncoder 输出)都可以用作输入图像而不是 CNN 中的真实图像数据,以及它在上下文中对卷积神经网络性能的影响有多大图像分类任务。

2个回答

对于图像分类任务,堆叠式自动编码器如何帮助传统的卷积神经网络?

正如论文中提到的,我们可以使用预训练的权重来初始化 CNN 层,虽然这基本上不会给 CNN 添加任何内容,但它通常有助于为训练设置一个良好的起点(尤其是在标记数据量不足的情况下) )。

在第一次卷积操作之前的任何预训练步骤(如降维或自动编码器输出)都可以用作输入图像,而不是 CNN 中的真实图像数据

由于 CNN 的局部连通性,如果降维后数据的拓扑结构丢失,那么 CNN 将不再适用。

例如,假设我们的数据是图像,如果我们将每个像素视为一个维度,并使用 PCA 进行降维,那么图像的新表示将是一个向量,不再保留原始的 2D 拓扑(以及相邻图像之间的相关性)像素)。所以在这种情况下,它不能直接与 2D CNN 一起使用(尽管有一些方法可以恢复拓扑)。

使用 AutoEncoder 输出应该可以很好地与 CNN 配合使用,因为它可以看作是在 CNN 和输入之间添加了一个额外的层(具有固定参数)。

在图像分类任务的上下文中它对卷积神经网络的性能有多大影响

我碰巧在大学做过一个相关的项目,在那里我试图将图像的每个部分标记为道路、天空或其他。尽管结果远不能令人满意,但它可能会提供一些关于这些预处理技术如何影响性能的想法。

道路的图像 简单 CNN 的结果 (1) 清晰道路的图像 (2) 简单的两层 CNN 的结果

第一层由 CAE 初始化的简单 CNN 的结果 带有 ZCA 预处理的简单 CNN 的结果 (3) 第一层由预训练 CAE 初始化的 CNN (4) 带有ZCA 白化的 CNN

CNN 使用具有固定学习率的 SGD 进行训练。KITTI道路类别数据集上测试,方法(2)的错误率在14%左右,方法(3)和(4)的错误率在12%左右。

请纠正我哪里错了。:)

正如dontloo 所提到的,自动编码器可用于初始化 CNN 的权重,从而充当 CNN 之前的附加层。特别是,堆叠自动编码器的分层特性允许我们在每个隐藏层中编码不同类型的(逐渐复杂的)特征,类似于 CNN。

斯坦福大学的 UFLDL 对此有很好的解释

堆叠自动编码器的第一层倾向于学习原始输入中的一阶特征(例如图像中的边缘)。堆叠式自动编码器的第二层倾向于学习与一阶特征外观中的模式相对应的二阶特征(例如,就哪些边缘倾向于一起出现而言——例如,形成轮廓或角检测器)。堆叠自动编码器的更高层倾向于学习更高阶的特征。